0

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

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>

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 :

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?

1 Answer 1

2

In your external php script just load Joomla frame work,

then you can use all the Joomla functions and Objects in your external php file.

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..

Sign up to request clarification or add additional context in comments.

6 Comments

can you please give more detailed example for using a function like '<?php $points = RFactory::getPoint($downLine->agentID); ?> <th><?php echo $points['left'].' - '.$points['right']; ?></th>' in the php file, i just added your lines to an external php file in the root of the joomla, but still can't use the function to get result.
your external script path from Joomla installation you have to give define('JPATH_BASE', "here---"); Then top of the page add the script then just use the Joomla functions like below.$points = RFactory::getPoint($downLine->agentID);
403 Forbidden please check that
sorry, kindly check it again
did you create this Factory file ? then that too import on your script, something like require_once ( JPATH_BASE .DS.'includes'.DS.'rfactory.php' ); I thinks its not joomla's default library default one is JFactory
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.