我安装了自定义函数的joomla,我需要在我拥有的另一个PHP脚本中使用这些自定义函数 在joomla网站上我有库中的函数> rvv> factory.php 和组件> com_customs文件夹
<?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文件?
答案 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();
希望它的帮助..