使用joomla函数到外部PHP脚本

时间:2013-12-19 09:58:00

标签: php mysql joomla

我安装了自定义函数的joomla,我需要在我拥有的另一个PHP脚本中使用这些自定义函数 在joomla网站上我有库中的函数> rvv> factory.php 和组件> com_customs文件夹

在view tmpl页面上,其中一个函数显示为<?php $points = RFactory::getPoint($downLine->agentID); ?> <th><?php echo $points['left'].' - '.$points['right']; ?></th>

在组件功能脚本文件

public function getDownLine($agentId)
{
    ini_set('max_execution_time', 600); //300 seconds = 5 minutes

    $this->downLinesRecursion($agentId);

    function cmp( $a, $b )
    { 
      if(  $a->agentID ==  $b->agentID ){ return 0 ; } 
      return ($a->agentID < $b->agentID) ? -1 : 1;
    }

    usort($this->downLine,'cmp');

    $this->_total = count($this->downLine);

    $endDownLine = array_splice($this->downLine, $this->getState('limitstart'), $this->getState('limit'));

    return $endDownLine;
}



protected function downLinesRecursion($agentId) 
{
    $downLineIDs = RFactory::getDownLines($agentId);
    if($downLineIDs){
        foreach ($downLineIDs as $downLineID){
            $agent = RFactory::getAgent($downLineID->id);
            $this->downLine[] = $agent;
            $this->downLinesRecursion($agent->agentID);
        }
    }
}

public function getAgentExisting($agentId)
{
    ini_set('max_execution_time', 300); //300 seconds = 5 minutes
    $this->subAgentID = $agentId;
    $this->existingRecursion($this->agentID);

    return $this->agentExisting;
}

protected function existingRecursion($agentId)
{
    $downLineIDs = RFactory::getDownLines($agentId);
    if($downLineIDs){
        foreach ($downLineIDs as $downLineID){
            if($downLineID->id == $this->subAgentID){
                $this->agentExisting = true;
            }else{
                $this->existingRecursion($downLineID->id);
            }
        }
    }
}


public function getAgentId($username)
{
    $userId = $this->getUserId($username);
    if($userId){
        $agentIds = RFactory::getAgentIds($userId);
        foreach ($agentIds as $AgentId) {
            $agentId = $AgentId->id;
            break;
        }
        return $agentId;
    }else {
        return false;
    }
}

关于工厂文件:

public static function getAgent($agentId)
{
    $db    = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select(' ag.id AS agentID, ag.user_id AS agentUserID, ag.parent_client_id, ag.directe_client_id, ag.position, date(ag.reg_time) AS joinDate, ag.offers_id, ag.cash');
    $query->select(' ofr.* ');
    $query->select(' usrinf.* ');
    $query->select(' usr.name AS agentName, usr.username, usr.email, date(usr.registerDate) AS regDate ');
    $query->select(' stk.value AS stockValue ');
    $query->from(' #__r_clients AS ag ');
    $query->leftJoin(' #__r_offers AS ofr ON ofr.id = ag.offers_id ');
    $query->leftJoin(' #__r_clients_info AS usrinf ON usrinf.user_id = ag.user_id ');
    $query->leftJoin(' #__users AS usr On usr.id = ag.user_id ');
    $query->leftJoin(' #__r_stock AS stk On stk.client_id = ag.id ');
    $query->where(' ag.id = '.$agentId);
    $db->setQuery((string)$query);
    $data = $db->loadObject();
    if (!$db->query()) {
        JError::raiseError(500, $db->getErrorMsg());
        return false;
    }else {
        if ($db->getNumRows() < 1){
            return false;
        }else{
            return $data;
        }
    }
}

public static function getAgents()
{
    $db     = JFactory::getDBO();
    $query  = $db->getQuery(true);
    $query->select(' ag.id AS agentID, ag.user_id AS agentUserID, ag.parent_client_id, ag.directe_client_id, ag.position, date(ag.reg_time) AS joinDate, ag.offers_id, ag.cash');
    $query->select(' ofr.* ');
    $query->select(' usr.name AS agetName, usr.username, usr.email, usr.registerDate ');
    $query->from(' #__r_clients AS ag ');
    $query->leftJoin(' #__r_offers AS ofr ON ofr.id = ag.offers_id ');
    $query->leftJoin(' #__users AS usr On usr.id = ag.user_id ');
    $db->setQuery((string)$query);
    $data = $db->loadObjectList();
    if (!$db->query()) {
        JError::raiseError(500, $db->getErrorMsg());
        return false;
    }else {
        if ($db->getNumRows() < 1){
            return false;
        }else{
            return $data;
        }
    }
}


public static function getDownLines($agentId)
{
    $db    = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select(' id ');
    $query->from(' #__r_clients ');
    $query->where(' parent_client_id = '.$agentId);
    $db->setQuery((string)$query);
    $data = $db->loadObjectList();
    if (!$db->query()) {
        JError::raiseError(500, $db->getErrorMsg());
        return false;
    }else {
        if ($db->getNumRows() < 1){
            return false;
        }else{
            return $data;
        }
    }
}

public static function getPoint($agentId)
{
    $downLines = self::getDownLines($agentId);
    self::$rightPoint = 0;
    self::$leftPoint = 0;
    if($downLines){
        foreach ($downLines as $downLine){
            $agent = self::getAgent($downLine->id);
            if($agent->position == 'R'){
                self::$rightPoint += $agent->point;
                self::rightPointRecursion($agent->agentID);
            }else {
                self::$leftPoint += $agent->point;
                self::leftPointRecursion($agent->agentID);
            }
        }
        return $pointArray = array('right' => self::$rightPoint, 'left' => self::$leftPoint);
    }else {
        return $pointArray = array('right' => 0, 'left' => 0);
    }
}

private function rightPointRecursion($agentId)
{
    $downLines = self::getDownLines($agentId);
    if($downLines){
        foreach ($downLines as $downLine){
            $agent = self::getAgent($downLine->id);
            self::$rightPoint += $agent->point;
            self::rightPointRecursion($agent->agentID);
        }
    }
}

private function leftPointRecursion($agentId)
{
    $downLines = self::getDownLines($agentId);
    if($downLines){
        foreach ($downLines as $downLine){
            $agent = self::getAgent($downLine->id);
            self::$leftPoint += $agent->point;
            self::leftPointRecursion($agent->agentID);
        }
    }
}

自定义joomla代码在组件内部&gt; com_hierarchical&gt; hierarchical.php包含:

JLoader::register('HierarchicalHelper', dirname(__FILE__) . DS . 'helpers'. DS . 'hierarchical.php');

jimport('joomla.application.component.controller');

$document =& JFactory::getDocument();
 $script = JURI::base(true).'/components/com_hierarchical/assist/gscript.js';
 $style = JURI::base(true).'/components/com_hierarchical/assist/gstyle.css';
 $document->addScript($script);
 $document->addStyleSheet($style);

 $controller    = JController::getInstance('Hierarchical');
 $controller->execute(JFactory::getApplication()->input->get('task'));
 $controller->redirect();

如何将这些函数用于joomla脚本之外的另一个php文件?

1 个答案:

答案 0 :(得分:2)

在你的外部php脚本中加载Joomla框架工作,

然后你可以使用外部php文件中的所有Joomla函数和对象。

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

希望它的帮助..