php - 在外部 php 脚本中使用 joomla 函数

标签 php mysql joomla

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

在查看 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 代码位于组件内部>com_hierarchical>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 文件中使用这些函数?

最佳答案

在您的外部 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();

希望有帮助..

关于php - 在外部 php 脚本中使用 joomla 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678438/

相关文章:

javascript - 如何删除图像按钮周围的输入字段?

php - URL 参数设置的记录未从 MySQL 数据库中删除

php - 共享网络驱动器作为 Laravel 5.4 存储

php - 将数据从 MySQL 输出到多行 HTML,在 textarea 中有效,但在 <div> 中无效

php - 简单的 mail() 将从 mysql 生成一个获取的报告

php - 如何打印 4 位数字?

mysql - PDO 准备查询不返回任何内容

mysql - 如何使用查询获取确切的行

seo - Joomla 菜单项别名 SEO 有效,但文章别名 SEO 无效

javascript - Twitter窗口小部件未在Joomla 2.5中显示