简体   繁体   English

使用joomla函数到外部PHP脚本

[英]using joomla function into external php script

I have joomla installed with custom functions, i need to use those custom functions in another php script that i have in the joomla site i have functions in libraries>rvv>factory.php and components>com_customs folder 我有自定义函数安装joomla,我需要在另一个PHP脚本中使用这些自定义函数我在joomla网站我有库中的函数> rvv> factory.php和组件> com_customs文件夹

on the view tmpl page the one of the functions is shown <?php $points = RFactory::getPoint($downLine->agentID); ?> <th><?php echo $points['left'].' - '.$points['right']; ?></th> 在视图tmpl页面上显示了其中一个函数<?php $points = RFactory::getPoint($downLine->agentID); ?> <th><?php echo $points['left'].' - '.$points['right']; ?></th> <?php $points = RFactory::getPoint($downLine->agentID); ?> <th><?php echo $points['left'].' - '.$points['right']; ?></th>

on the component function script file 在组件功能脚本文件上

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;
    }
}

ON THE FACTORY FILE: 在工厂文件:

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);
        }
    }
}

the custom joomla code is inside the components>com_hierarchical>hierarchical.php contains : 自定义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();

How can i use those functions into another php file outside the joomla script? 我怎样才能将这些函数用于joomla脚本之外的另一个php文件?

In your external php script just load Joomla frame work, 在你的外部PHP脚本中加载Joomla框架工作,

then you can use all the Joomla functions and Objects in your external php file. 那么你可以使用外部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();

Hope its helps.. 希望它的帮助..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM