452 lines
15 KiB
PHP
452 lines
15 KiB
PHP
|
|
<?php
|
||
|
|
/*
|
||
|
|
* @component SQL 2 Excel Component
|
||
|
|
* @copyright Copyright (C) Joomla-R-Us, joomla-r-us.com
|
||
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3
|
||
|
|
*/
|
||
|
|
|
||
|
|
// No direct access
|
||
|
|
defined( '_JEXEC' ) or die( 'Restricted access' );
|
||
|
|
|
||
|
|
require_once( JPATH_SITE.DS.'components'.DS.'com_sql2excel'.DS.'helpers'.DS.'excel_writer.php' );
|
||
|
|
require_once ( JPATH_SITE.DS.'components'.DS.'com_sql2excel'.DS.'helpers'.DS.'parms.php');
|
||
|
|
|
||
|
|
|
||
|
|
class Sql2excelControllerDownload extends Sql2excelController
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* constructor (registers additional tasks to methods)
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
function __construct()
|
||
|
|
{
|
||
|
|
parent::__construct();
|
||
|
|
|
||
|
|
// Register Extra tasks
|
||
|
|
$this->registerTask( 'dl' , 'download' );
|
||
|
|
$this->registerTask( 'download' , 'download' );
|
||
|
|
}
|
||
|
|
|
||
|
|
function download()
|
||
|
|
{
|
||
|
|
$useCache = 1;
|
||
|
|
|
||
|
|
global $mainframe;
|
||
|
|
$id = Sql2excelParms::get_parm_value('id', 'int', 0);
|
||
|
|
$wb_id = (int) $id;
|
||
|
|
$preview = Sql2excelParms::get_parm_value('preview', 'int', '-1');
|
||
|
|
$wbParms = $this->getWorkbookParms($wb_id);
|
||
|
|
if ( count($wbParms) ) {
|
||
|
|
//$cmpParms = &$mainframe->getParams();
|
||
|
|
$cmpParms = Sql2excelParms::getParms();
|
||
|
|
$substParms = $this->getSubstParms();
|
||
|
|
$wsParms = $this->getWorksSheetParms($wb_id);
|
||
|
|
$extraParms = array();
|
||
|
|
$substWBParms = Sql2excelParms::get($cmpParms,'subst_wbparms', '1');
|
||
|
|
|
||
|
|
// User Parameters ?
|
||
|
|
if ( $wbParms[0]->parms != '' ) {
|
||
|
|
|
||
|
|
$extraParms = $this->parse_wb_parms($wbParms[0]->parms, $wbParms[0]->parms_prompt,$preview, $substWBParms, $cmpParms, $substParms);
|
||
|
|
if ( count($extraParms) > 0 ) {
|
||
|
|
$substParms = array_merge($substParms,$extraParms);
|
||
|
|
// Don't use cache for Workbooks with Workbook Parameters
|
||
|
|
$useCache = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
} // end User Parameters
|
||
|
|
|
||
|
|
|
||
|
|
// Output XLS, CSV or HTM
|
||
|
|
$dlformat = 1;
|
||
|
|
if ( isset($wbParms[0]->dlformat) ) {
|
||
|
|
$dlformat = $wbParms[0]->dlformat;
|
||
|
|
}
|
||
|
|
|
||
|
|
$sheet = Sql2excelParms::get_parm_value('sheet', 'int', 0);
|
||
|
|
|
||
|
|
// Is the format specified through the URL?
|
||
|
|
$format = Sql2excelParms::get_parm_value('format', 'int', 0);
|
||
|
|
if ( $format < 1 ) {
|
||
|
|
// No - auto-select format based on settings
|
||
|
|
if ( $dlformat == 3 || ( $dlformat == 1 && Sql2excelParms::get($cmpParms,'dlformat', '2') == 3 ) ) {
|
||
|
|
$format = 3;
|
||
|
|
} elseif ( $dlformat == 4 || ( $dlformat == 1 && Sql2excelParms::get($cmpParms,'dlformat', '2') == 4 ) ) {
|
||
|
|
$format = 4;
|
||
|
|
} else {
|
||
|
|
//writeExcel::writeFile($wbParms,$wsParms,$cmpParms,$substParms,$useCache,0);
|
||
|
|
$format = 2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Finally, output in the selected download format
|
||
|
|
if ( $format == 3 ) {
|
||
|
|
require_once( JPATH_COMPONENT.DS.'helpers'.DS.'csv_writer.php' );
|
||
|
|
writeCSV::writeFile($wbParms,$wsParms,$sheet,$cmpParms,$substParms,$useCache,0);
|
||
|
|
} elseif ( $format == 4 ) {
|
||
|
|
require_once( JPATH_COMPONENT.DS.'helpers'.DS.'htm_writer.php' );
|
||
|
|
writeHTM::writeFile($wbParms,$wsParms,$sheet,$cmpParms,$substParms,$useCache,0);
|
||
|
|
} else {
|
||
|
|
writeExcel::writeFile($wbParms,$wsParms,$cmpParms,$substParms,$useCache,0);
|
||
|
|
$format = 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
} else {
|
||
|
|
JError::raiseError(500, JText::_( 'ERROR : Excel Workbook Not Found!' ) );
|
||
|
|
}
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function utf8_strrev($str, $reverse_numbers = true){
|
||
|
|
$pattern = $reverse_numbers ? '/./us' : '/(\d+)?./us';
|
||
|
|
preg_match_all($pattern, $str, $ar);
|
||
|
|
return join('',array_reverse($ar[0]));
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns the Workbook Parameters
|
||
|
|
* @return object with parms
|
||
|
|
*/
|
||
|
|
function getWorkbookParms($id, $preview=0)
|
||
|
|
{
|
||
|
|
$db = & JFactory::getDBO();
|
||
|
|
$user =& JFactory::getUser();
|
||
|
|
$aid = $user->get('aid', 0);
|
||
|
|
|
||
|
|
$wheres[] = " a.id = " . (int) $id;
|
||
|
|
$wheres[] = " a.section = b.id ";
|
||
|
|
$wheres[] = " a.category = c.id ";
|
||
|
|
$wheres[] = " a.published=1 ";
|
||
|
|
$wheres[] = " b.published=1 ";
|
||
|
|
$wheres[] = " c.published=1 ";
|
||
|
|
|
||
|
|
if ($aid !== null) {
|
||
|
|
$wheres[] = "a.access <= " . (int) $aid;
|
||
|
|
$wheres[] = "b.access <= " . (int) $aid;
|
||
|
|
$wheres[] = "c.access <= " . (int) $aid;
|
||
|
|
}
|
||
|
|
|
||
|
|
$query = " SELECT a.* " .
|
||
|
|
" FROM #__sql2excel_workbooks AS a, #__sql2excel_sections AS b, #__sql2excel_categories AS c " .
|
||
|
|
" WHERE " . implode( " AND ", $wheres );
|
||
|
|
|
||
|
|
$db->setQuery( $query );
|
||
|
|
$rows = $db->loadObjectList();
|
||
|
|
|
||
|
|
// Update Workbook Download count
|
||
|
|
if ( count($rows) >= 1 && $preview==0 ) {
|
||
|
|
$query = ' UPDATE #__sql2excel_workbooks ' .
|
||
|
|
' SET count=count+1 ' .
|
||
|
|
' WHERE ID=' . (int) $id;
|
||
|
|
$db->setQuery( $query );
|
||
|
|
$db->query();
|
||
|
|
}
|
||
|
|
|
||
|
|
return $rows;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns worksheet info
|
||
|
|
*/
|
||
|
|
function getWorksSheetParms($id, $ws_id=0)
|
||
|
|
{
|
||
|
|
$db = & JFactory::getDBO();
|
||
|
|
$user =& JFactory::getUser();
|
||
|
|
$aid = $user->get('aid', 0);
|
||
|
|
|
||
|
|
$wheres[] = ' a.id=b.ws_id ';
|
||
|
|
$wheres[] = ' b.wb_id=' . $id . ' ';
|
||
|
|
if ( $ws_id > 0 ) {
|
||
|
|
$wheres[] = ' a.id=' . $ws_id . ' ';
|
||
|
|
}
|
||
|
|
|
||
|
|
$wheres[] = " a.published=1 ";
|
||
|
|
$wheres[] = " b.wb_id=c.id ";
|
||
|
|
$wheres[] = " c.published=1 ";
|
||
|
|
$wheres[] = " c.section=d.id ";
|
||
|
|
$wheres[] = " c.category=e.id ";
|
||
|
|
$wheres[] = " d.published=1 ";
|
||
|
|
$wheres[] = " e.published=1 ";
|
||
|
|
$wheres[] = " f.id = a.database ";
|
||
|
|
|
||
|
|
if ($aid !== null) {
|
||
|
|
$wheres[] = "a.access <= " . (int) $aid;
|
||
|
|
$wheres[] = "c.access <= " . (int) $aid;
|
||
|
|
$wheres[] = "d.access <= " . (int) $aid;
|
||
|
|
$wheres[] = "e.access <= " . (int) $aid;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$query = ' SELECT a.id as key1, c.id as key2, a.*, b.*, f.db_host, f.db_username, f.db_password, f.db_database, f.db_type, f.db_prefix ' .
|
||
|
|
' FROM #__sql2excel_worksheets AS a, #__sql2excel_worksheet2book AS b, #__sql2excel_workbooks AS c, #__sql2excel_sections AS d, #__sql2excel_categories AS e, #__sql2excel_databases AS f' .
|
||
|
|
' WHERE ' . implode(' AND ', $wheres ) .
|
||
|
|
' ORDER BY b.ordering';
|
||
|
|
|
||
|
|
$db->setQuery( $query );
|
||
|
|
$rows = $db->loadObjectList();
|
||
|
|
|
||
|
|
// Update Worksheet Download counts
|
||
|
|
if ( count($rows) >= 1 && $ws_id == 0 ) {
|
||
|
|
$wsIDs = array();
|
||
|
|
foreach ( $rows as $row ) {
|
||
|
|
$wsIDs[] = $row->ws_id;
|
||
|
|
}
|
||
|
|
$wsIDs = implode(',', $wsIDs);
|
||
|
|
|
||
|
|
$updateSQL = ' UPDATE #__sql2excel_worksheets c ' .
|
||
|
|
' SET c.count=c.count+1 ' .
|
||
|
|
' WHERE c.ID IN ( ' . $wsIDs . ')';
|
||
|
|
|
||
|
|
$db->setQuery( $updateSQL );
|
||
|
|
$db->query();
|
||
|
|
}
|
||
|
|
|
||
|
|
return $rows;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Returns Substitution Parameters
|
||
|
|
* @return array with parms/values
|
||
|
|
*/
|
||
|
|
function getSubstParms()
|
||
|
|
{
|
||
|
|
$sparms = array();
|
||
|
|
|
||
|
|
// User Variables
|
||
|
|
$user =& JFactory::getUser();
|
||
|
|
$sparms{'USER_ID'} = $user->id;
|
||
|
|
$sparms{'USERNAME'} = $user->username;
|
||
|
|
$sparms{'USER_NAME'} = $user->name;
|
||
|
|
$sparms{'USER_EMAIL'} = $user->email;
|
||
|
|
$sparms{'USER_TYPE'} = $user->usertype;
|
||
|
|
$sparms{'USER_SEMAIL'} = $user->sendEmail;
|
||
|
|
$sparms{'USER_GID'} = $user->gid;
|
||
|
|
$sparms{'USER_RDATE'} = $user->registerDate;
|
||
|
|
$sparms{'USER_LDATE'} = $user->lastvisitDate;
|
||
|
|
$sparms{'USER_ACTIVATION'} = $user->activation;
|
||
|
|
$sparms{'USER_AID'} = $user->aid;
|
||
|
|
$userParams = $user->params;
|
||
|
|
$userParams = explode("\n",$userParams);
|
||
|
|
foreach ( $userParams as $p ) {
|
||
|
|
$p = explode('=',$p);
|
||
|
|
if ( count($p) == 2 && $p[0] == 'timezone' ) {
|
||
|
|
$sparms{'USER_TZ'} = $p[1];
|
||
|
|
} elseif ( count($p) == 2 && $p[0] == 'language' ) {
|
||
|
|
$sparms{'USER_LANG'} = $p[1];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if ( isset($_SERVER['REMOTE_ADDR']) ) { $sparms{'USER_IP'} = $_SERVER['REMOTE_ADDR']; }
|
||
|
|
if ( isset($_SERVER['USER_AGENT']) ) { $sparms{'USER_AGENT'} = $_SERVER['HTTP_USER_AGENT']; }
|
||
|
|
|
||
|
|
|
||
|
|
// Server Variables
|
||
|
|
$sparms{'SERVER_URL'} = JURI::root();
|
||
|
|
if ( isset($_SERVER['HTTP_HOST']) ) { $sparms{'SERVER_HOST'} = $_SERVER['HTTP_HOST']; }
|
||
|
|
if ( isset($_SERVER['SERVER_ADDR']) ) { $sparms{'SERVER_SERVERIP'} = $_SERVER['SERVER_ADDR']; }
|
||
|
|
if ( isset($_SERVER['SERVER_SOFTWARE']) ) { $sparms{'SERVER_SOFTWARE'} = $_SERVER['SERVER_SOFTWARE']; }
|
||
|
|
if ( isset($_SERVER['HTTP_REFERER']) ) {
|
||
|
|
$referer = $_SERVER['HTTP_REFERER'];
|
||
|
|
$sparms{'SERVER_REFERER'} = $referer;
|
||
|
|
|
||
|
|
$referer_queryString = parse_url($referer);
|
||
|
|
if ( isset($referer_queryString['query']) ) {
|
||
|
|
$referer_queryString = $referer_queryString['query'];
|
||
|
|
parse_str($referer_queryString, $matches);
|
||
|
|
$urlParms = array_keys($matches);
|
||
|
|
foreach ( $urlParms as $parmName ) {
|
||
|
|
if ( !is_array($matches{$parmName}) ) {
|
||
|
|
$parmVal = explode(':', $matches{$parmName});
|
||
|
|
$sparms{'JOOMLA_PARM_' . strtoupper($parmName) } = $parmVal[0];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Joomla Variables
|
||
|
|
$version = new JVersion();
|
||
|
|
$sparms{'JOOMLA_VER_LONG'} = $version->getLongVersion();
|
||
|
|
$sparms{'JOOMLA_VER'} = $version->getShortVersion();
|
||
|
|
|
||
|
|
|
||
|
|
// SQL 2 Excel Variables
|
||
|
|
if ( isset($_SERVER['REQUEST_URI']) ) { $sparms{'SQL2EXCEL_DLURL'} = JURI::root() . substr($_SERVER['REQUEST_URI'],1); }
|
||
|
|
|
||
|
|
|
||
|
|
return $sparms;
|
||
|
|
}
|
||
|
|
|
||
|
|
function parse_wb_parms($parms, $parms_prompt=0, $preview=0, $substWBParms=1, $cmpParms = array(), $substParms = array()) {
|
||
|
|
$extraParms = array();
|
||
|
|
$i=1;
|
||
|
|
$parmsArr = explode('~@~',$parms);
|
||
|
|
foreach ($parmsArr as $parm) {
|
||
|
|
$parmTokens = explode(',', $parm);
|
||
|
|
if ( count($parmTokens) >= 4 ) {
|
||
|
|
$parmID = 'wbparm' . $i;
|
||
|
|
$parmName = $parmTokens[0];
|
||
|
|
$parmVar = $parmTokens[1];
|
||
|
|
$parmType = $parmTokens[2];
|
||
|
|
$parmValue = $parmTokens[3];
|
||
|
|
$parmDB = 1;
|
||
|
|
if ( isset($parmTokens[4]) ) { $parmDB = $parmTokens[4]; }
|
||
|
|
|
||
|
|
if ( $parmType == "Integer" || $parmType == "UnsignedInteger" ) {
|
||
|
|
$parmValue = Sql2excelParms::get_parm_value($parmID, 'int', $parmValue);
|
||
|
|
} elseif ( $parmType == "Real" || $parmType == "UnsignedRealReal") {
|
||
|
|
$parmValue = Sql2excelParms::get_parm_value($parmID, 'float', $parmValue);
|
||
|
|
} elseif ( $parmType == "AlphaNum" ) {
|
||
|
|
$parmValue = Sql2excelParms::get_parm_value($parmID, 'alnum', $parmValue);
|
||
|
|
} elseif ( $parmType == "Username" ) {
|
||
|
|
$parmValue = Sql2excelParms::get_parm_value($parmID, 'username', $parmValue);
|
||
|
|
} elseif ( $parmType == "List" || $parmType == "ListMultiNum" || $parmType == "ListMultiStr" ) {
|
||
|
|
$parmList = Sql2excelParms::get_parm_value($parmID, 'string', $parmValue);
|
||
|
|
if ( $parms_prompt == 0 ) {
|
||
|
|
if ( $parmList != '' ) {
|
||
|
|
$parmList = str_replace('~COMMA~',',',$parmList);
|
||
|
|
$parmList = explode('~NL~',$parmList);
|
||
|
|
$defaultValue = explode(',',$parmList[0]);
|
||
|
|
$defaultValue = $defaultValue[0];
|
||
|
|
$multiStr = '';
|
||
|
|
|
||
|
|
foreach ( $parmList as $lisval ) {
|
||
|
|
$tokens = explode(',',$lisval);
|
||
|
|
if ( sizeof($tokens) > 2 ) {
|
||
|
|
if ( strpos($parmType,'Multi') > 0 ) {
|
||
|
|
if ( $parmType == "ListMultiNum" ) {
|
||
|
|
$pVal = $tokens[0];
|
||
|
|
} else {
|
||
|
|
$pVal = "'" . $tokens[0] . "'";
|
||
|
|
}
|
||
|
|
if ( $multiStr == '' ) {
|
||
|
|
$multiStr = $pVal;
|
||
|
|
} else {
|
||
|
|
$multiStr .= ',' . $pVal;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$defaultValue = $tokens[0];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if ( strpos($parmType,'Multi') > 0 && $multiStr) {
|
||
|
|
$parmValue = $multiStr;
|
||
|
|
} else {
|
||
|
|
$parmValue = $defaultValue;
|
||
|
|
}
|
||
|
|
|
||
|
|
//$parmValue = $defaultValue;
|
||
|
|
} else {
|
||
|
|
$parmValue = '';
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
// Parameter was prompted => getting value directly
|
||
|
|
$parmValue = $parmList;
|
||
|
|
}
|
||
|
|
} elseif ( $parmType == "ListSQL" || $parmType == 'ListSQLMultiNum' || $parmType == 'ListSQLMultiStr' ) {
|
||
|
|
$query = Sql2excelParms::get_parm_value($parmID, 'string', $parmValue);
|
||
|
|
|
||
|
|
if ( $parms_prompt == 0 && !$preview ) {
|
||
|
|
// Parameter not prompted => getting SQL query passed
|
||
|
|
$query = str_replace('~COMMA~',',',$query);
|
||
|
|
$query = str_replace('~NL~',"\n",$query);
|
||
|
|
$query = str_replace('~NL~',"\n",$query);
|
||
|
|
$query = $this->utf8_strrev($query);
|
||
|
|
if ( $substWBParms ) {
|
||
|
|
$query = writeExcel::replace_vars($query, $substParms,$extraParms);
|
||
|
|
}
|
||
|
|
// Get Database Connection
|
||
|
|
$db = null;
|
||
|
|
$dbType = 1;
|
||
|
|
if ( $parmDB == 1 ) {
|
||
|
|
$db = & JFactory::getDBO();
|
||
|
|
} else {
|
||
|
|
$jdb = & JFactory::getDBO();
|
||
|
|
$jdb->setQuery( 'SELECT * FROM #__sql2excel_databases WHERE ID=' . $parmDB );
|
||
|
|
$dbInfo = $jdb->loadObject();
|
||
|
|
if ( $dbInfo ) {
|
||
|
|
$db = writeExcel::getDB($dbInfo);
|
||
|
|
$dbType=$dbInfo->db_type;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if ( $db ) {
|
||
|
|
$rows = writeExcel::getResults($db, $query, $cmpParms, $dbType);
|
||
|
|
if ( is_Array($rows) ) {
|
||
|
|
$colNames = writeExcel::getColumnNames($rows);
|
||
|
|
$firstRow = $rows[0];
|
||
|
|
|
||
|
|
if ( strpos($parmType,'Multi') > 0 ) {
|
||
|
|
if ( count($colNames) > 2 ) {
|
||
|
|
$multiStr = '';
|
||
|
|
foreach ( $rows as $row ) {
|
||
|
|
if ( $row->$colNames[2] != '' ) {
|
||
|
|
if ( $parmType == 'ListSQLMultiStr' ) {
|
||
|
|
$pVal = "'" . $row->$colNames[2] . "'";
|
||
|
|
} else {
|
||
|
|
$pVal = $row->$colNames[2];
|
||
|
|
}
|
||
|
|
if ( $multiStr == '' ) {
|
||
|
|
$multiStr = $pVal;
|
||
|
|
} else {
|
||
|
|
$multiStr .= ',' . $pVal;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if ( $multiStr != '' ) {
|
||
|
|
$parmValue = $multiStr;
|
||
|
|
} else {
|
||
|
|
$parmValue = $firstRow->$colNames[0];
|
||
|
|
if ( $parmType == 'ListSQLMultiStr' ) {
|
||
|
|
$parmValue = "'" . $parmValue . "'";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$parmValue = $firstRow->$colNames[0];
|
||
|
|
if ( $parmType == 'ListSQLMultiStr' ) {
|
||
|
|
$parmValue = "'" . $parmValue . "'";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if ( count($colNames) > 2 ) {
|
||
|
|
//$parmValue = $firstRow[2];
|
||
|
|
$parmValue = $firstRow->$colNames[2];
|
||
|
|
} else {
|
||
|
|
//$parmValue = $firstRow[0];
|
||
|
|
$parmValue = $firstRow->$colNames[0];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$parmValue = '';
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$parmValue = JText::_('ERROR: Workbook Parameter') . ' ' . $parmVar . ' - ' . JText::_('Database Connection Error!');
|
||
|
|
}
|
||
|
|
|
||
|
|
// Save this parameter for further substitutions
|
||
|
|
$extraParms[$parmVar]=$parmValue;
|
||
|
|
} else {
|
||
|
|
// Parameter was prompted or No Prompt Preview => getting value directly
|
||
|
|
$parmValue = $query;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$parmValue = Sql2excelParms::get_parm_value($parmID, 'string', $parmValue);
|
||
|
|
}
|
||
|
|
|
||
|
|
if ( is_string($parmValue) && $substWBParms ) {
|
||
|
|
$parmValue = writeExcel::replace_vars($parmValue, $substParms,$extraParms);
|
||
|
|
}
|
||
|
|
$wbP[$parmVar]=$parmValue;
|
||
|
|
|
||
|
|
// Save this parameter for further substitutions
|
||
|
|
$extraParms[$parmVar]=$parmValue;
|
||
|
|
|
||
|
|
$i++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return $extraParms;
|
||
|
|
}
|
||
|
|
}
|