@my wife Roline van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html Builds Complex Joomla Components /----------------------------------------------------------------------------------------------------------------------------- */ // No direct access to this file defined('_JEXEC') or die('Restricted access'); /** * Compiler class */ class Interpretation extends Fields { /** * The contributors * * @var string */ public $theContributors = ''; /** * The unistall builder * * @var array */ public $uninstallBuilder = array(); /** * The update SQL builder * * @var array */ public $updateSQLBuilder = array(); /** * The List Column Builder * * @var array */ public $listColnrBuilder = array(); /** * The permissions Builder * * @var array */ public $permissionBuilder = array(); /** * The dashboard permissions builder * * @var array */ public $permissionDashboard = array(); /** * The permissions core * * @var array */ public $permissionCore = array(); /** * The customs field builder * * @var array */ public $customFieldBuilder = array(); /** * The category builder * * @var array */ public $buildCategories = array(); /** * The icon builder * * @var array */ public $iconBuilder = array(); /** * The validation fix builder * * @var array */ public $validationFixBuilder = array(); /** * The edit body script builder * * @var array */ public $editBodyViewScriptBuilder = array(); /** * The target relation control * * @var array */ public $targetRelationControl = array(); /** * The target control script checker * * @var array */ public $targetControlsScriptChecker = array(); /** * The router helper * * @var array */ public $setRouterHelpDone = array(); /** * The other where * * @var array */ public $otherWhere = array(); /** * The dashboard get custom data * * @var array */ public $DashboardGetCustomData = array(); /** * The custom admin added * * @var array */ public $customAdminAdded = array(); /** * The extensions params * * @var array */ protected $extensionsParams = array(); /** * The asset rules * * @var array */ public $assetsRules = array(); /** * View Has Category Request * * @var array */ protected $hasCatIdRequest = array(); /** * View Has Id Request * * @var array */ protected $hasIdRequest = array(); protected $libwarning = array(); /** * Constructor */ public function __construct($config = array()) { // first we run the perent constructor if (parent::__construct($config)) { return true; } return false; } /** * Set the line number in comments * * @param int $nr The line number * * @return void * */ private function setLine($nr) { if ($this->debugLinenr) { return ' [Interpretation ' . $nr . ']'; } return ''; } /** * add email helper */ public function addEmailHelper() { if (isset($this->componentData->add_email_helper) && $this->componentData->add_email_helper) { // set email helper in place with component name $component = $this->fileContentStatic['###component###']; $Component = $this->fileContentStatic['###Component###']; $target = array('admin' => 'emailer'); $done = $this->buildDynamique($target, 'emailer', $component); if ($done) { // the text for the file ###BAKING### $this->fileContentDynamic['emailer_' . $component]['###BAKING###'] = ''; // <<-- to insure it gets updated // return the code need to load the abstract class return PHP_EOL . "JLoader::register('" . $Component . "Email', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/" . $component . "email.php'); "; } } return ''; } /** * set the lock license (NOT OKAY) */ public function setLockLicense() { if ($this->componentData->add_license && $this->componentData->license_type == 3) { if (!isset($this->fileContentStatic['###HELPER_SITE_LICENSE_LOCK###'])) { $_VDM = '_' . ComponentbuilderHelper::safeString($this->uniquekey(10), 'U'); // add it to the system $this->fileContentStatic['###HELPER_SITE_LICENSE_LOCK###'] = $this->setHelperLicenseLock($_VDM, 'site'); $this->fileContentStatic['###HELPER_LICENSE_LOCK###'] = $this->setHelperLicenseLock($_VDM, 'admin'); $this->fileContentStatic['###LICENSE_LOCKED_INT###'] = $this->setInitLicenseLock($_VDM); $this->fileContentStatic['###LICENSE_LOCKED_DEFINED###'] = PHP_EOL . PHP_EOL . 'defined(\'' . $_VDM . '\') or die(JText:'.':_(\'NIE_REG_NIE\'));'; } } else { // don't add it to the system $this->fileContentStatic['###HELPER_SITE_LICENSE_LOCK###'] = ''; $this->fileContentStatic['###HELPER_LICENSE_LOCK###'] = ''; $this->fileContentStatic['###LICENSE_LOCKED_INT###'] = ''; $this->fileContentStatic['###LICENSE_LOCKED_DEFINED###'] = ''; } } /** * @param $view */ public function setLockLicensePer(&$view, $target) { if ($this->componentData->add_license && $this->componentData->license_type == 3) { if (!isset($this->fileContentDynamic[$view]['###BOOLMETHOD###'])) { $boolMethod = 'get' . ComponentbuilderHelper::safeString($this->uniquekey(3, false, 'ddd'), 'W'); $globalbool = 'set' . ComponentbuilderHelper::safeString($this->uniquekey(3), 'W'); // add it to the system $this->fileContentDynamic[$view]['###LICENSE_LOCKED_SET_BOOL###'] = $this->setBoolLicenseLock($boolMethod, $globalbool); $this->fileContentDynamic[$view]['###LICENSE_LOCKED_CHECK###'] = $this->checkStatmentLicenseLocked($boolMethod); $this->fileContentDynamic[$view]['###LICENSE_TABLE_LOCKED_CHECK###'] = $this->checkStatmentLicenseLocked($boolMethod, '$table'); $this->fileContentDynamic[$view]['###BOOLMETHOD###'] = $boolMethod; } } else { // don't add it to the system $this->fileContentDynamic[$view]['###LICENSE_LOCKED_SET_BOOL###'] = ''; $this->fileContentDynamic[$view]['###LICENSE_LOCKED_CHECK###'] = ''; $this->fileContentDynamic[$view]['###LICENSE_TABLE_LOCKED_CHECK###'] = ''; } } public function checkStatmentLicenseLocked($boolMethod, $thIIS = '$this') { $statment[] = PHP_EOL . "\t\tif (!" . $thIIS . "->" . $boolMethod . "())"; $statment[] = "\t\t{"; $statment[] = "\t\t\t\$app = JFactory::getApplication();"; $statment[] = "\t\t\t\$app->enqueueMessage(JText:".":_('NIE_REG_NIE'), 'error');"; $statment[] = "\t\t\t\$app->redirect('index.php');"; $statment[] = "\t\t\treturn false;"; $statment[] = "\t\t}"; // return the genuine mentod statement return implode(PHP_EOL, $statment); } public function setBoolLicenseLock($boolMethod, $globalbool) { $bool[] = PHP_EOL . PHP_EOL . "\t/**"; $bool[] = "\t* The private bool."; $bool[] = "\t**/"; $bool[] = "\tprivate $" . $globalbool . ";"; $bool[] = PHP_EOL . "\t/**"; $bool[] = "\t* Check if this install has a license."; $bool[] = "\t**/"; $bool[] = "\tpublic function " . $boolMethod . "()"; $bool[] = "\t{"; $bool[] = "\t\tif(!empty(\$this->" . $globalbool . "))"; $bool[] = "\t\t{"; $bool[] = "\t\t\treturn \$this->" . $globalbool . ";"; $bool[] = "\t\t}"; $bool[] = "\t\t//" . $this->setLine(__LINE__) . " Get the global params"; $bool[] = "\t\t\$params = JComponentHelper::getParams('com_" . $this->fileContentStatic['###component###'] . "', true);"; $bool[] = "\t\t\$license_key = \$params->get('license_key', null);"; $bool[] = "\t\tif (\$license_key)"; $bool[] = "\t\t{"; $bool[] = "\t\t\t//" . $this->setLine(__LINE__) . " load the file"; $bool[] = "\t\t\tJLoader::import( 'vdm', JPATH_ADMINISTRATOR .'/components/com_" . $this->fileContentStatic['###component###'] . "');"; $bool[] = "\t\t\t\$the = new VDM(\$license_key);"; $bool[] = "\t\t\t\$this->" . $globalbool . " = \$the->_is;"; $bool[] = "\t\t\treturn \$this->" . $globalbool . ";"; $bool[] = "\t\t}"; $bool[] = "\t\treturn false;"; $bool[] = "\t}"; // return the genuine mentod statement return implode(PHP_EOL, $bool); } public function setHelperLicenseLock($_VDM, $target) { $helper[] = PHP_EOL . PHP_EOL . "\t/**"; $helper[] = "\t* Check if this install has a license."; $helper[] = "\t**/"; $helper[] = "\tpublic static function isGenuine()"; $helper[] = "\t{"; $helper[] = "\t\t//" . $this->setLine(__LINE__) . " Get the global params"; $helper[] = "\t\t\$params = JComponentHelper::getParams('com_" . $this->fileContentStatic['###component###'] . "', true);"; $helper[] = "\t\t\$license_key = \$params->get('license_key', null);"; $helper[] = "\t\tif (\$license_key)"; $helper[] = "\t\t{"; $helper[] = "\t\t\t//" . $this->setLine(__LINE__) . " load the file"; $helper[] = "\t\t\tJLoader::import( 'vdm', JPATH_ADMINISTRATOR .'/components/com_" . $this->fileContentStatic['###component###'] . "');"; $helper[] = "\t\t\t\$the = new VDM(\$license_key);"; $helper[] = "\t\t\treturn \$the->_is;"; $helper[] = "\t\t}"; $helper[] = "\t\treturn false;"; $helper[] = "\t}"; // return the genuine mentod statement return implode(PHP_EOL, $helper); } public function setInitLicenseLock($_VDM) { $init[] = PHP_EOL . "if (!defined('" . $_VDM . "'))"; $init[] = "{"; $init[] = "\t\$allow = " . $this->fileContentStatic['###Component###'] . "Helper::isGenuine();"; $init[] = "\tif (\$allow)"; $init[] = "\t{"; $init[] = "\t\tdefine('" . $_VDM . "', 1);"; $init[] = "\t}"; $init[] = "}"; // return the initializing statement return implode(PHP_EOL, $init); } public function setWHMCSCryption() { // make sure we have the correct file if (isset($this->componentData->whmcs_key) && ComponentbuilderHelper::checkString($this->componentData->whmcs_key)) { // Get the basic encryption. $basickey = ComponentbuilderHelper::getCryptKey('basic'); // Get the encryption object. $basic = new FOFEncryptAes($basickey); if (!empty($this->componentData->whmcs_key) && $basickey && !is_numeric($this->componentData->whmcs_key) && $this->componentData->whmcs_key === base64_encode(base64_decode($this->componentData->whmcs_key, true))) { // basic decrypt data whmcs_key. $this->componentData->whmcs_key = rtrim($basic->decryptString($this->componentData->whmcs_key), "\0"); // set the needed string to connect to whmcs $key["kasier"] = $this->componentData->whmcs_url; $key["geheim"] = $this->componentData->whmcs_key; $key["onthou"] = 1; // prep the call info $theKey = base64_encode(serialize($key)); // set the script $encrypt[] = "/**"; $encrypt[] = "* " . $this->setLine(__LINE__) . "WHMCS Class "; $encrypt[] = "**/"; $encrypt[] = PHP_EOL . "class WHMCS"; $encrypt[] = "{"; $encrypt[] = "\tpublic \$_key = false;"; $encrypt[] = "\tpublic \$_is = false;"; $encrypt[] = "\t"; $encrypt[] = "\tpublic function __construct(\$Vk5smi0wjnjb)"; $encrypt[] = "\t{"; $encrypt[] = "\t\t// get the session"; $encrypt[] = "\t\t\$session = JFactory::getSession();"; $encrypt[] = "\t\t\$V2uekt2wcgwk = \$session->get(\$Vk5smi0wjnjb, null);"; $encrypt[] = "\t\t\$h4sgrGsqq = \$this->get(\$Vk5smi0wjnjb,\$V2uekt2wcgwk);"; $encrypt[] = "\t\tif (isset(\$h4sgrGsqq['nuut']) && \$h4sgrGsqq['nuut'] && (isset(\$h4sgrGsqq['status']) && 'Active' === \$h4sgrGsqq['status']) && isset(\$h4sgrGsqq['eiegrendel']) && strlen(\$h4sgrGsqq['eiegrendel']) > 300)"; $encrypt[] = "\t\t{"; $encrypt[] = "\t\t\t\$session->set(\$Vk5smi0wjnjb, \$h4sgrGsqq['eiegrendel']);"; $encrypt[] = "\t\t}"; $encrypt[] = "\t\tif ((isset(\$h4sgrGsqq['status']) && 'Active' === \$h4sgrGsqq['status']) && isset(\$h4sgrGsqq['md5hash']) && strlen(\$h4sgrGsqq['md5hash']) == 32 && isset(\$h4sgrGsqq['customfields']) && strlen(\$h4sgrGsqq['customfields']) > 4)"; $encrypt[] = "\t\t{"; $encrypt[] = "\t\t\t\$this->_key = md5(\$h4sgrGsqq['customfields']);"; $encrypt[] = "\t\t}"; $encrypt[] = "\t\tif ((isset(\$h4sgrGsqq['status']) && 'Active' === \$h4sgrGsqq['status']) && isset(\$h4sgrGsqq['md5hash']) && strlen(\$h4sgrGsqq['md5hash']) == 32 )"; $encrypt[] = "\t\t{"; $encrypt[] = "\t\t\t\$this->_is = true;"; $encrypt[] = "\t\t}"; $encrypt[] = "\t}"; $encrypt[] = "\t"; $encrypt[] = "\tprivate function get(\$Vk5smi0wjnjb,\$V2uekt2wcgwk)"; $encrypt[] = "\t{"; $encrypt[] = "\t\t\$Viioj50xuqu2 = unserialize(base64_decode('" . $theKey . "'));"; $encrypt[] = "\t\t\$Visqfrd1caus = time() . md5(mt_rand(1000000000, 9999999999) . \$Vk5smi0wjnjb);"; $encrypt[] = "\t\t\$Vo4tezfgcf3e = date(\"Ymd\");"; $encrypt[] = "\t\t\$Vozblwvfym2f = \$_SERVER['SERVER_NAME'];"; $encrypt[] = "\t\t\$Vozblwvfym2fdie = isset(\$_SERVER['SERVER_ADDR']) ? \$_SERVER['SERVER_ADDR'] : \$_SERVER['LOCAL_ADDR'];"; $encrypt[] = "\t\t\$V343jp03dxco = dirname(__FILE__);"; $encrypt[] = "\t\t\$Vc2rayehw4f0 = unserialize(base64_decode('czozNjoibW9kdWxlcy9zZXJ2ZXJzL2xpY2Vuc2luZy92ZXJpZnkucGhwIjs='));"; $encrypt[] = "\t\t\$Vlpolphukogz = false;"; $encrypt[] = "\t\tif (\$V2uekt2wcgwk) {"; $encrypt[] = "\t\t\t\$V2uekt2wcgwk = str_replace(\"" . '".PHP_EOL."' . "\", '', \$V2uekt2wcgwk);"; $encrypt[] = "\t\t\t\$Vm5cxjdc43g4 = substr(\$V2uekt2wcgwk, 0, strlen(\$V2uekt2wcgwk) - 32);"; $encrypt[] = "\t\t\t\$Vbgx0efeu2sy = substr(\$V2uekt2wcgwk, strlen(\$V2uekt2wcgwk) - 32);"; $encrypt[] = "\t\t\tif (\$Vbgx0efeu2sy == md5(\$Vm5cxjdc43g4 . \$Viioj50xuqu2['geheim'])) {"; $encrypt[] = "\t\t\t\t\$Vm5cxjdc43g4 = strrev(\$Vm5cxjdc43g4);"; $encrypt[] = "\t\t\t\t\$Vbgx0efeu2sy = substr(\$Vm5cxjdc43g4, 0, 32);"; $encrypt[] = "\t\t\t\t\$Vm5cxjdc43g4 = substr(\$Vm5cxjdc43g4, 32);"; $encrypt[] = "\t\t\t\t\$Vm5cxjdc43g4 = base64_decode(\$Vm5cxjdc43g4);"; $encrypt[] = "\t\t\t\t\$Vm5cxjdc43g4finding = unserialize(\$Vm5cxjdc43g4);"; $encrypt[] = "\t\t\t\t\$V3qqz0p00fbq = \$Vm5cxjdc43g4finding['dan'];"; $encrypt[] = "\t\t\t\tif (\$Vbgx0efeu2sy == md5(\$V3qqz0p00fbq . \$Viioj50xuqu2['geheim'])) {"; $encrypt[] = "\t\t\t\t\t\$Vbfbwv2y4kre = date(\"Ymd\", mktime(0, 0, 0, date(\"m\"), date(\"d\") - \$Viioj50xuqu2['onthou'], date(\"Y\")));"; $encrypt[] = "\t\t\t\t\tif (\$V3qqz0p00fbq > \$Vbfbwv2y4kre) {"; $encrypt[] = "\t\t\t\t\t\t\$Vlpolphukogz = true;"; $encrypt[] = "\t\t\t\t\t\t\$Vwasqoybpyed = \$Vm5cxjdc43g4finding;"; $encrypt[] = "\t\t\t\t\t\t\$Vcixw3trerrt = explode(',', \$Vwasqoybpyed['validdomain']);"; $encrypt[] = "\t\t\t\t\t\tif (!in_array(\$_SERVER['SERVER_NAME'], \$Vcixw3trerrt)) {"; $encrypt[] = "\t\t\t\t\t\t\t\$Vlpolphukogz = false;"; $encrypt[] = "\t\t\t\t\t\t\t\$Vm5cxjdc43g4finding['status'] = \"sleg\";"; $encrypt[] = "\t\t\t\t\t\t\t\$Vwasqoybpyed = array();"; $encrypt[] = "\t\t\t\t\t\t}"; $encrypt[] = "\t\t\t\t\t\t\$Vkni3xyhkqzv = explode(',', \$Vwasqoybpyed['validip']);"; $encrypt[] = "\t\t\t\t\t\tif (!in_array(\$Vozblwvfym2fdie, \$Vkni3xyhkqzv)) {"; $encrypt[] = "\t\t\t\t\t\t\t\$Vlpolphukogz = false;"; $encrypt[] = "\t\t\t\t\t\t\t\$Vm5cxjdc43g4finding['status'] = \"sleg\";"; $encrypt[] = "\t\t\t\t\t\t\t\$Vwasqoybpyed = array();"; $encrypt[] = "\t\t\t\t\t\t}"; $encrypt[] = "\t\t\t\t\t\t\$Vckfvnepoaxj = explode(',', \$Vwasqoybpyed['validdirectory']);"; $encrypt[] = "\t\t\t\t\t\tif (!in_array(\$V343jp03dxco, \$Vckfvnepoaxj)) {"; $encrypt[] = "\t\t\t\t\t\t\t\$Vlpolphukogz = false;"; $encrypt[] = "\t\t\t\t\t\t\t\$Vm5cxjdc43g4finding['status'] = \"sleg\";"; $encrypt[] = "\t\t\t\t\t\t\t\$Vwasqoybpyed = array();"; $encrypt[] = "\t\t\t\t\t\t}"; $encrypt[] = "\t\t\t\t\t}"; $encrypt[] = "\t\t\t\t}"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t}"; $encrypt[] = "\t\tif (!\$Vlpolphukogz) {"; $encrypt[] = "\t\t\t\$V1u0c4dl3ehp = array("; $encrypt[] = "\t\t\t\t'licensekey' => \$Vk5smi0wjnjb,"; $encrypt[] = "\t\t\t\t'domain' => \$Vozblwvfym2f,"; $encrypt[] = "\t\t\t\t'ip' => \$Vozblwvfym2fdie,"; $encrypt[] = "\t\t\t\t'dir' => \$V343jp03dxco,"; $encrypt[] = "\t\t\t);"; $encrypt[] = "\t\t\tif (\$Visqfrd1caus) \$V1u0c4dl3ehp['check_token'] = \$Visqfrd1caus;"; $encrypt[] = "\t\t\t\$Vdsjeyjmpq2o = '';"; $encrypt[] = "\t\t\tforeach (\$V1u0c4dl3ehp AS \$V2sgyscukmgi=>\$V1u00zkzmb1d) {"; $encrypt[] = "\t\t\t\t\$Vdsjeyjmpq2o .= \$V2sgyscukmgi.'='.urlencode(\$V1u00zkzmb1d).'&';"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\tif (function_exists('curl_exec')) {"; $encrypt[] = "\t\t\t\t\$Vdathuqgjyf0 = curl_init();"; $encrypt[] = "\t\t\t\tcurl_setopt(\$Vdathuqgjyf0, CURLOPT_URL, \$Viioj50xuqu2['kasier'] . \$Vc2rayehw4f0);"; $encrypt[] = "\t\t\t\tcurl_setopt(\$Vdathuqgjyf0, CURLOPT_POST, 1);"; $encrypt[] = "\t\t\t\tcurl_setopt(\$Vdathuqgjyf0, CURLOPT_POSTFIELDS, \$Vdsjeyjmpq2o);"; $encrypt[] = "\t\t\t\tcurl_setopt(\$Vdathuqgjyf0, CURLOPT_TIMEOUT, 30);"; $encrypt[] = "\t\t\t\tcurl_setopt(\$Vdathuqgjyf0, CURLOPT_RETURNTRANSFER, 1);"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5 = curl_exec(\$Vdathuqgjyf0);"; $encrypt[] = "\t\t\t\tcurl_close(\$Vdathuqgjyf0);"; $encrypt[] = "\t\t\t} else {"; $encrypt[] = "\t\t\t\t\$Vrpmu4bvnmkp = fsockopen(\$Viioj50xuqu2['kasier'], 80, \$Vc0t5kmpwkwk, \$Va3g41fnofhu, 5);"; $encrypt[] = "\t\t\t\tif (\$Vrpmu4bvnmkp) {"; $encrypt[] = "\t\t\t\t\t\$Vznkm0a0me1y = \"\r" . PHP_EOL . "\";"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop = \"POST \".\$Viioj50xuqu2['kasier'] . \$Vc2rayehw4f0 . \" HTTP/1.0\" . \$Vznkm0a0me1y;"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop .= \"Host: \".\$Viioj50xuqu2['kasier'] . \$Vznkm0a0me1y;"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop .= \"Content-type: application/x-www-form-urlencoded\" . \$Vznkm0a0me1y;"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop .= \"Content-length: \".@strlen(\$Vdsjeyjmpq2o) . \$Vznkm0a0me1y;"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop .= \"Connection: close\" . \$Vznkm0a0me1y . \$Vznkm0a0me1y;"; $encrypt[] = "\t\t\t\t\t\$V2sgyscukmgiop .= \$Vdsjeyjmpq2o;"; $encrypt[] = "\t\t\t\t\t\$Vqojefyeohg5 = '';"; $encrypt[] = "\t\t\t\t\t@stream_set_timeout(\$Vrpmu4bvnmkp, 20);"; $encrypt[] = "\t\t\t\t\t@fputs(\$Vrpmu4bvnmkp, \$V2sgyscukmgiop);"; $encrypt[] = "\t\t\t\t\t\$V2czq24pjexf = @socket_get_status(\$Vrpmu4bvnmkp);"; $encrypt[] = "\t\t\t\t\twhile (!@feof(\$Vrpmu4bvnmkp)&&\$V2czq24pjexf) {"; $encrypt[] = "\t\t\t\t\t\t\$Vqojefyeohg5 .= @fgets(\$Vrpmu4bvnmkp, 1024);"; $encrypt[] = "\t\t\t\t\t\t\$V2czq24pjexf = @socket_get_status(\$Vrpmu4bvnmkp);"; $encrypt[] = "\t\t\t\t\t}"; $encrypt[] = "\t\t\t\t\t@fclose (\$Vqojefyeohg5);"; $encrypt[] = "\t\t\t\t}"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\tif (!\$Vqojefyeohg5) {"; $encrypt[] = "\t\t\t\t\$Vbfbwv2y4kre = date(\"Ymd\", mktime(0, 0, 0, date(\"m\"), date(\"d\") - \$Viioj50xuqu2['onthou'], date(\"Y\")));"; $encrypt[] = "\t\t\t\tif (isset(\$V3qqz0p00fbq) && \$V3qqz0p00fbq > \$Vbfbwv2y4kre) {"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed = \$Vm5cxjdc43g4finding;"; $encrypt[] = "\t\t\t\t} else {"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed = array();"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed['status'] = \"sleg\";"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed['description'] = \"Remote Check Failed\";"; $encrypt[] = "\t\t\t\t\treturn \$Vwasqoybpyed;"; $encrypt[] = "\t\t\t\t}"; $encrypt[] = "\t\t\t} else {"; $encrypt[] = "\t\t\t\tpreg_match_all('" . '/<(.*?)>([^<]+)<\/\\1>/i' . "', \$Vqojefyeohg5, \$V1ot20wob03f);"; $encrypt[] = "\t\t\t\t\$Vwasqoybpyed = array();"; $encrypt[] = "\t\t\t\tforeach (\$V1ot20wob03f[1] AS \$V2sgyscukmgi=>\$V1u00zkzmb1d) {"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed[\$V1u00zkzmb1d] = \$V1ot20wob03f[2][\$V2sgyscukmgi];"; $encrypt[] = "\t\t\t\t}"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\tif (!is_array(\$Vwasqoybpyed)) {"; $encrypt[] = "\t\t\t\tdie(\"Invalid License Server Response\");"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\tif (isset(\$Vwasqoybpyed['md5hash']) && \$Vwasqoybpyed['md5hash']) {"; $encrypt[] = "\t\t\t\tif (\$Vwasqoybpyed['md5hash'] != md5(\$Viioj50xuqu2['geheim'] . \$Visqfrd1caus)) {"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed['status'] = \"sleg\";"; $encrypt[] = "\t\t\t\t\t\$Vwasqoybpyed['description'] = \"MD5 Checksum Verification Failed\";"; $encrypt[] = "\t\t\t\t\treturn \$Vwasqoybpyed;"; $encrypt[] = "\t\t\t\t}"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\tif (isset(\$Vwasqoybpyed['status']) && \$Vwasqoybpyed['status'] == \"Active\") {"; $encrypt[] = "\t\t\t\t\$Vwasqoybpyed['dan'] = \$Vo4tezfgcf3e;"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = serialize(\$Vwasqoybpyed);"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = base64_encode(\$Vqojefyeohg5ing);"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = md5(\$Vo4tezfgcf3e . \$Viioj50xuqu2['geheim']) . \$Vqojefyeohg5ing;"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = strrev(\$Vqojefyeohg5ing);"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = \$Vqojefyeohg5ing . md5(\$Vqojefyeohg5ing . \$Viioj50xuqu2['geheim']);"; $encrypt[] = "\t\t\t\t\$Vqojefyeohg5ing = wordwrap(\$Vqojefyeohg5ing, 80, \"" . '".PHP_EOL."' . "\", true);"; $encrypt[] = "\t\t\t\t\$Vwasqoybpyed['eiegrendel'] = \$Vqojefyeohg5ing;"; $encrypt[] = "\t\t\t}"; $encrypt[] = "\t\t\t\$Vwasqoybpyed['nuut'] = true;"; $encrypt[] = "\t\t}"; $encrypt[] = "\t\tunset(\$V1u0c4dl3ehp,\$Vqojefyeohg5,\$V1ot20wob03f,\$Viioj50xuqu2['kasier'],\$Viioj50xuqu2['geheim'],\$Vo4tezfgcf3e,\$Vozblwvfym2fdie,\$Viioj50xuqu2['onthou'],\$Vbgx0efeu2sy);"; $encrypt[] = "\t\treturn \$Vwasqoybpyed;"; $encrypt[] = "\t}"; $encrypt[] = "}"; // return the help methods return implode(PHP_EOL, $encrypt); } } return ''; } public function setGetCryptKey() { // ###ENCRYPT_FILE### $this->fileContentStatic['###ENCRYPT_FILE###'] = ''; if ((isset($this->basicEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->basicEncryptionBuilder)) || (isset($this->mediumEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->mediumEncryptionBuilder)) || (isset($this->whmcsEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->whmcsEncryptionBuilder)) || $this->componentData->add_license) { if (isset($this->whmcsEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->whmcsEncryptionBuilder) || $this->componentData->add_license) { // set whmcs encrypt file into place $target = array('admin' => 'whmcs'); $done = $this->buildDynamique($target, 'whmcs'); // the text for the file ###WHMCS_ENCRYPTION_BODY### $this->fileContentDynamic['whmcs']['###WHMCS_ENCRYPTION_BODY###'] = $this->setWHMCSCryption(); // ###ENCRYPT_FILE### $this->fileContentStatic['###WHMCS_ENCRYPT_FILE###'] = PHP_EOL . "\t\t\twhmcs.php"; } // get component name $component = $this->fileContentStatic['###component###']; // set the getCryptKey function to the helper class $function = array(); // start building the getCryptKey function/class method $function[] = PHP_EOL . PHP_EOL . "\t/**"; $function[] = "\t * Get The Encryption Keys"; $function[] = "\t *"; $function[] = "\t * @param string \$type The type of key"; $function[] = "\t * @param string/bool \$default The return value if no key was found"; $function[] = "\t *"; $function[] = "\t * @return string On success"; $function[] = "\t *"; $function[] = "\t **/"; $function[] = "\tpublic static function getCryptKey(\$type, \$default = false)"; $function[] = "\t{"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Get the global params"; $function[] = "\t\t\$params = JComponentHelper::getParams('com_" . $component . "', true);"; // add the basic option if (isset($this->basicEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->basicEncryptionBuilder)) { $function[] = "\t\t//" . $this->setLine(__LINE__) . " Basic Encryption Type"; $function[] = "\t\tif ('basic' === \$type)"; $function[] = "\t\t{"; $function[] = "\t\t\t\$basic_key = \$params->get('basic_key', \$default);"; $function[] = "\t\t\tif (self::checkString(\$basic_key))"; $function[] = "\t\t\t{"; $function[] = "\t\t\t\treturn \$basic_key;"; $function[] = "\t\t\t}"; $function[] = "\t\t}"; } // add the medium option if (isset($this->mediumEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->mediumEncryptionBuilder)) { $function[] = "\t\t//" . $this->setLine(__LINE__) . " Medium Encryption Type"; $function[] = "\t\tif ('medium' === \$type)"; $function[] = "\t\t{"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " check if medium key is already loaded."; $function[] = "\t\t\tif (self::checkString(self::\$mediumCryptKey))"; $function[] = "\t\t\t{"; $function[] = "\t\t\t\treturn (self::\$mediumCryptKey !== 'none') ? trim(self::\$mediumCryptKey) : \$default;"; $function[] = "\t\t\t}"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " get the path to the medium encryption key."; $function[] = "\t\t\t\$medium_key_path = \$params->get('medium_key_path', null);"; $function[] = "\t\t\tif (self::checkString(\$medium_key_path))"; $function[] = "\t\t\t{"; $function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " load the key from the file."; $function[] = "\t\t\t\tif (self::getMediumCryptKey(\$medium_key_path))"; $function[] = "\t\t\t\t{"; $function[] = "\t\t\t\t\treturn trim(self::\$mediumCryptKey);"; $function[] = "\t\t\t\t}"; $function[] = "\t\t\t}"; $function[] = "\t\t}"; } // add the whmcs option if (isset($this->whmcsEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->whmcsEncryptionBuilder) || $this->componentData->add_license) { $function[] = "\t\t//" . $this->setLine(__LINE__) . " WHMCS Encryption Type"; $function[] = "\t\tif ('whmcs' === \$type || 'advanced' === \$type)"; $function[] = "\t\t{"; $function[] = "\t\t\t\$key = \$params->get('advanced_key', \$default);"; $function[] = "\t\t\tif (self::checkString(\$key))"; $function[] = "\t\t\t{"; $function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " load the file"; $function[] = "\t\t\t\tJLoader::import( 'whmcs', JPATH_COMPONENT_ADMINISTRATOR);"; $function[] = PHP_EOL . "\t\t\t\t\$the = new WHMCS(\$key);"; $function[] = PHP_EOL . "\t\t\t\treturn \$the->_key;"; $function[] = "\t\t\t}"; $function[] = "\t\t}"; } // end the function $function[] = PHP_EOL . "\t\treturn \$default;"; $function[] = "\t}"; // set the getMediumCryptKey class/method if (isset($this->mediumEncryptionBuilder) && ComponentbuilderHelper::checkArray($this->mediumEncryptionBuilder)) { $function[] = PHP_EOL . PHP_EOL . "\t/**"; $function[] = "\t * The Medium Encryption Key"; $function[] = "\t *"; $function[] = "\t * @var string/bool"; $function[] = "\t **/"; $function[] = "\tprotected static \$mediumCryptKey = false;"; $function[] = PHP_EOL . "\t/**"; $function[] = "\t * Get The Medium Encryption Key"; $function[] = "\t *"; $function[] = "\t * @param string \$path The path to the medium crypt key folder"; $function[] = "\t *"; $function[] = "\t * @return string On success"; $function[] = "\t *"; $function[] = "\t **/"; $function[] = "\tpublic static function getMediumCryptKey(\$path)"; $function[] = "\t{"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Prep the path a little"; $function[] = "\t\t\$path = '/'. trim(str_replace('//', '/', \$path), '/');"; $function[] = "\t\tjimport('joomla.filesystem.folder');"; $function[] = "\t\t///" . $this->setLine(__LINE__) . " Check if folder exist"; $function[] = "\t\tif (!JFolder::exists(\$path))"; $function[] = "\t\t{"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Lock key."; $function[] = "\t\t\tself::\$mediumCryptKey = 'none';"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set the error message."; $function[] = "\t\t\tJFactory::getApplication()->enqueueMessage(JText::_('" . $this->langPrefix . "_CONFIG_MEDIUM_KEY_PATH_ERROR'), 'Error');"; $function[] = "\t\t\treturn false;"; $function[] = "\t\t}"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Create FileName and set file path"; $function[] = "\t\t\$filePath = \$path.'/.'.md5('medium_crypt_key_file');"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Check if we already have the file set"; $function[] = "\t\tif ((self::\$mediumCryptKey = @file_get_contents(\$filePath)) !== FALSE)"; $function[] = "\t\t{"; $function[] = "\t\t\treturn true;"; $function[] = "\t\t}"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Set the key for the first time"; $function[] = "\t\tself::\$mediumCryptKey = self::randomkey(128);"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Open the key file"; $function[] = "\t\t\$fh = @fopen(\$filePath, 'w');"; $function[] = "\t\tif (!is_resource(\$fh))"; $function[] = "\t\t{"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Lock key."; $function[] = "\t\t\tself::\$mediumCryptKey = 'none';"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set the error message."; $function[] = "\t\t\tJFactory::getApplication()->enqueueMessage(JText::_('" . $this->langPrefix . "_CONFIG_MEDIUM_KEY_PATH_ERROR'), 'Error');"; $function[] = "\t\t\treturn false;"; $function[] = "\t\t}"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Write to the key file"; $function[] = "\t\tif (!fwrite(\$fh, self::\$mediumCryptKey))"; $function[] = "\t\t{"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Close key file."; $function[] = "\t\t\tfclose(\$fh);"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Lock key."; $function[] = "\t\t\tself::\$mediumCryptKey = 'none';"; $function[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set the error message."; $function[] = "\t\t\tJFactory::getApplication()->enqueueMessage(JText::_('" . $this->langPrefix . "_CONFIG_MEDIUM_KEY_PATH_ERROR'), 'Error');"; $function[] = "\t\t\treturn false;"; $function[] = "\t\t}"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Close key file."; $function[] = "\t\tfclose(\$fh);"; $function[] = "\t\t//" . $this->setLine(__LINE__) . " Key is set."; $function[] = "\t\treturn true;"; $function[] = "\t}"; } // return the help methods return implode(PHP_EOL, $function); } return ''; } public function setVersionController() { if (ComponentbuilderHelper::checkArray($this->componentData->version_update) || ComponentbuilderHelper::checkArray($this->updateSQLBuilder)) { $updateXML = array(); // add the update server if ($this->componentData->add_update_server && $this->componentData->update_server_target != 3) { $updateXML[] = ''; } // add the dynamic sql switch $addDynamicSQL = true; $addActive = true; if (ComponentbuilderHelper::checkArray($this->componentData->version_update)) { foreach ($this->componentData->version_update as $nr => &$update) { $this->setUpdateXMLSQL($update, $updateXML, $addDynamicSQL); if ($update['version'] == $this->componentData->component_version) { $addActive = false; } } } // add the dynamic sql if not already added if ($addDynamicSQL && ComponentbuilderHelper::checkArray($this->updateSQLBuilder)) { // add the dynamic sql $this->setDynamicUpdateXMLSQL($updateXML); } // add the new active version if needed if ($addActive && ComponentbuilderHelper::checkArray($this->updateSQLBuilder)) { // add the dynamic sql $this->setDynamicUpdateXMLSQL($updateXML, $addActive); } // add the update server file if ($this->componentData->add_update_server && $this->componentData->update_server_target != 3) { $updateXML[] = ''; // ###UPDATE_SERVER_XML### $name = str_replace('.xml', '', substr($this->componentData->update_server_url, strrpos($this->componentData->update_server_url, '/') + 1)); $target = array('admin' => $name); $this->buildDynamique($target, 'update_server'); $this->fileContentDynamic[$name]['###UPDATE_SERVER_XML###'] = implode(PHP_EOL, $updateXML); // set the Update server file name $this->updateServerFileName = $name; } } // add the update server link to component XML if ($this->componentData->add_update_server && isset($this->componentData->update_server_url) && ComponentbuilderHelper::checkString($this->componentData->update_server_url)) { // ###UPDATESERVER### $updateServer = array(); $updateServer[] = PHP_EOL . "\t"; $updateServer[] = "\t\t" . '' . $this->componentData->update_server_url . ''; $updateServer[] = "\t"; // return the array to string $updateServer = implode(PHP_EOL, $updateServer); // add update server details to component XML file $this->fileContentStatic['###UPDATESERVER###'] = $updateServer; } else { // add update server details to component XML file $this->fileContentStatic['###UPDATESERVER###'] = ''; } // ensure to update Component version data if (ComponentbuilderHelper::checkArray($this->updateSQLBuilder)) { $buket = array(); $nr = 0; foreach ($this->componentData->version_update as $values) { $buket['version_update' . $nr] = $values; $nr++; } // update the joomla component table $newJ = array(); $newJ['id'] = (int) $this->componentID; $newJ['component_version'] = $this->componentData->component_version; // update the component with the new dynamic SQL $modelJ = ComponentbuilderHelper::getModel('joomla_component'); $modelJ->save($newJ); // <-- to insure the history is also updated // reset the watch here $this->getHistoryWatch('joomla_component', $this->componentID); // update the component update table $newU = array(); if (isset($this->componentData->version_update_id) && $this->componentData->version_update_id > 0) { $newU['id'] = (int) $this->componentData->version_update_id; } else { $newU['joomla_component'] = (int) $this->componentID; } $newU['version_update'] = json_encode($buket); // update the component with the new dynamic SQL $modelU = ComponentbuilderHelper::getModel('component_updates'); $modelU->save($newU); // <-- to insure the history is also updated } } public function setDynamicUpdateXMLSQL(&$updateXML, $current_version = false) { // start building the update $update_ = array(); if ($current_version) { // setup new version $update_['version'] = $this->componentData->component_version; // setup SQL $update_['mysql'] = ''; // setup URL $update_['url'] = 'http://domain.com/demo.zip'; } else { // setup new version $update_['version'] = $this->componentData->old_component_version; // setup SQL $update_['mysql'] = trim(implode(PHP_EOL . PHP_EOL, $this->updateSQLBuilder)); // setup URL if (isset($this->lastupdateURL)) { $paceholders = array( $this->componentData->component_version => $this->componentData->old_component_version, str_replace('.', '-', $this->componentData->component_version) => str_replace('.', '-', $this->componentData->old_component_version), str_replace('.', '_', $this->componentData->component_version) => str_replace('.', '_', $this->componentData->old_component_version), str_replace('.', '', $this->componentData->component_version) => str_replace('.', '', $this->componentData->old_component_version) ); $update_['url'] = $this->setPlaceholders($this->lastupdateURL, $paceholders); } else { // setup URL $update_['url'] = 'http://domain.com/demo.zip'; } } // stop it from being added double $addDynamicSQL = false; $this->componentData->version_update[] = $update_; // add dynamic SQL $this->setUpdateXMLSQL($update_, $updateXML, $addDynamicSQL); } public function setUpdateXMLSQL(&$update, &$updateXML, &$addDynamicSQL) { // ensure version naming is correct $update['version'] = preg_replace('/[^0-9.]+/', '', $update['version']); // setup SQL if (ComponentbuilderHelper::checkString($update['mysql'])) { $update['mysql'] = $this->setPlaceholders($update['mysql'], $this->placeholders); } // add dynamic SQL $force = false; if ($addDynamicSQL && ComponentbuilderHelper::checkArray($this->updateSQLBuilder) && (isset($this->componentData->old_component_version) && $this->componentData->old_component_version == $update['version'])) { $searchMySQL = preg_replace('/\s+/', '', $update['mysql']); // add the updates to the SQL only if not found foreach ($this->updateSQLBuilder as $search => $query) { if (strpos($searchMySQL, $search) === FALSE) { $update['mysql'] .= PHP_EOL . PHP_EOL . $query; } } // make sure no unneeded white space is added $update['mysql'] = trim($update['mysql']); // update has been added $addDynamicSQL = false; } // setup import files if ($update['version'] != $this->componentData->component_version) { $name = ComponentbuilderHelper::safeString($update['version']); $target = array('admin' => $name); $this->buildDynamique($target, 'sql_update', $update['version']); $this->fileContentDynamic[$name . '_' . $update['version']]['###UPDATE_VERSION_MYSQL###'] = $update['mysql']; } elseif (isset($update['url']) && ComponentbuilderHelper::checkString($update['url'])) { $this->lastupdateURL = $update['url']; } // add the update server if ($this->componentData->add_update_server && $this->componentData->update_server_target != 3) { // build update xml $updateXML[] = "\t"; $updateXML[] = "\t\t" . $this->fileContentStatic['###Component_name###'] . ""; $updateXML[] = "\t\t" . $this->fileContentStatic['###SHORT_DESCRIPTION###'] . ""; $updateXML[] = "\t\tcom_" . $this->fileContentStatic['###component###'] . ""; $updateXML[] = "\t\tcomponent"; $updateXML[] = "\t\t" . $update['version'] . ""; $updateXML[] = "\t\t" . '' . $this->fileContentStatic['###AUTHORWEBSITE###'] . ''; $updateXML[] = "\t\t"; if (!isset($update['url']) || !ComponentbuilderHelper::checkString($update['url'])) { $update['url'] = 'http://domain.com/demo.zip'; } $updateXML[] = "\t\t\t" . '' . $update['url'] . ''; $updateXML[] = "\t\t"; $updateXML[] = "\t\t"; $updateXML[] = "\t\t\tstable"; $updateXML[] = "\t\t"; $updateXML[] = "\t\t" . $this->fileContentStatic['###AUTHOR###'] . ""; $updateXML[] = "\t\t" . $this->fileContentStatic['###AUTHORWEBSITE###'] . ""; $updateXML[] = "\t\t" . ''; $updateXML[] = "\t"; } } public function noHelp() { $help = array(); $help[] = PHP_EOL . PHP_EOL . "\t/**"; $help[] = "\t* Can be used to build help urls."; $help[] = "\t**/"; $help[] = "\tpublic static function getHelpUrl(\$view)"; $help[] = "\t{"; $help[] = "\t\treturn false;"; $help[] = "\t}"; // return the no help method return implode(PHP_EOL, $help); } public function checkHelp($viewName_single) { if ($viewName_single == "help_document") { // set help file into admin place $target = array('admin' => 'help'); $admindone = $this->buildDynamique($target, 'help'); // set the help file into site place $target = array('site' => 'help'); $sitedone = $this->buildDynamique($target, 'help'); if ($admindone && $sitedone) { // ###HELP### $this->fileContentStatic['###HELP###'] = $this->setHelp(1); // ###HELP_SITE### $this->fileContentStatic['###HELP_SITE###'] = $this->setHelp(2); // to make sure the file is updated TODO $this->fileContentDynamic['help']['###BLABLA###'] = 'blabla'; return true; } } return false; } public function setHelp($location) { // set hte help function to the helper class $target = 'admin_view'; if ($location == 2) { $target = 'site_view'; } $help = array(); $help[] = PHP_EOL . PHP_EOL . "\t/**"; $help[] = "\t* Load the Component Help URLs."; $help[] = "\t**/"; $help[] = "\tpublic static function getHelpUrl(\$view)"; $help[] = "\t{"; $help[] = "\t\t\$user = JFactory::getUser();"; $help[] = "\t\t\$groups = \$user->get('groups');"; $help[] = "\t\t\$db = JFactory::getDbo();"; $help[] = "\t\t\$query = \$db->getQuery(true);"; $help[] = "\t\t\$query->select(array('a.id','a.groups','a.target','a.type','a.article','a.url'));"; $help[] = "\t\t\$query->from('#__" . $this->fileContentStatic['###component###'] . "_help_document AS a');"; $help[] = "\t\t\$query->where('a." . $target . " = '.\$db->quote(\$view));"; $help[] = "\t\t\$query->where('a.location = " . (int) $location . "');"; $help[] = "\t\t\$query->where('a.published = 1');"; $help[] = "\t\t\$db->setQuery(\$query);"; $help[] = "\t\t\$db->execute();"; $help[] = "\t\tif(\$db->getNumRows())"; $help[] = "\t\t{"; $help[] = "\t\t\t\$helps = \$db->loadObjectList();"; $help[] = "\t\t\tif (self::checkArray(\$helps))"; $help[] = "\t\t\t{"; $help[] = "\t\t\t\tforeach (\$helps as \$nr => \$help)"; $help[] = "\t\t\t\t{"; $help[] = "\t\t\t\t\tif (\$help->target == 1)"; $help[] = "\t\t\t\t\t{"; $help[] = "\t\t\t\t\t\t\$targetgroups = json_decode(\$help->groups, true);"; $help[] = "\t\t\t\t\t\tif (!array_intersect(\$targetgroups, \$groups))"; $help[] = "\t\t\t\t\t\t{"; $help[] = "\t\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " if user not in those target groups then remove the item"; $help[] = "\t\t\t\t\t\t\tunset(\$helps[\$nr]);"; $help[] = "\t\t\t\t\t\t\tcontinue;"; $help[] = "\t\t\t\t\t\t}"; $help[] = "\t\t\t\t\t}"; $help[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " set the return type"; $help[] = "\t\t\t\t\tswitch (\$help->type)"; $help[] = "\t\t\t\t\t{"; $help[] = "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " set joomla article"; $help[] = "\t\t\t\t\t\tcase 1:"; $help[] = "\t\t\t\t\t\t\treturn self::loadArticleLink(\$help->article);"; $help[] = "\t\t\t\t\t\tbreak;"; $help[] = "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " set help text"; $help[] = "\t\t\t\t\t\tcase 2:"; $help[] = "\t\t\t\t\t\t\treturn self::loadHelpTextLink(\$help->id);"; $help[] = "\t\t\t\t\t\tbreak;"; $help[] = "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " set Link"; $help[] = "\t\t\t\t\t\tcase 3:"; $help[] = "\t\t\t\t\t\t\treturn \$help->url;"; $help[] = "\t\t\t\t\t\tbreak;"; $help[] = "\t\t\t\t\t}"; $help[] = "\t\t\t\t}"; $help[] = "\t\t\t}"; $help[] = "\t\t}"; $help[] = "\t\treturn false;"; $help[] = "\t}"; $help[] = PHP_EOL . "\t/**"; $help[] = "\t* Get the Article Link."; $help[] = "\t**/"; $help[] = "\tprotected static function loadArticleLink(\$id)"; $help[] = "\t{"; $help[] = "\t\treturn JURI::root().'index.php?option=com_content&view=article&id='.\$id.'&tmpl=component&layout=modal';"; $help[] = "\t}"; $help[] = PHP_EOL . "\t/**"; $help[] = "\t* Get the Help Text Link."; $help[] = "\t**/"; $help[] = "\tprotected static function loadHelpTextLink(\$id)"; $help[] = "\t{"; $help[] = "\t\t\$token = JSession::getFormToken();"; $help[] = "\t\treturn 'index.php?option=com_" . $this->fileContentStatic['###component###'] . "&task=help.getText&id=' . (int) \$id . '&token=' . \$token;"; $help[] = "\t}"; // return the help methods return implode(PHP_EOL, $help); } public function setExelHelperMethods() { if ($this->addEximport) { $exel = array(); $exel[] = PHP_EOL . PHP_EOL . "\t/**"; $exel[] = "\t * Prepares the xml document"; $exel[] = "\t */"; $exel[] = "\tpublic static function xls(\$rows,\$fileName = null,\$title = null,\$subjectTab = null,\$creator = '" . $this->fileContentStatic['###COMPANYNAME###'] . "',\$description = null,\$category = null,\$keywords = null,\$modified = null)"; $exel[] = "\t{"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set the user"; $exel[] = "\t\t\$user = JFactory::getUser();"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set fieldname if not set"; $exel[] = "\t\tif (!\$fileName)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$fileName = 'exported_'.JFactory::getDate()->format('jS_F_Y');"; $exel[] = "\t\t}"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set modiefied if not set"; $exel[] = "\t\tif (!\$modified)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$modified = \$user->name;"; $exel[] = "\t\t}"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set title if not set"; $exel[] = "\t\tif (!\$title)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$title = 'Book1';"; $exel[] = "\t\t}"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set tab name if not set"; $exel[] = "\t\tif (!\$subjectTab)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$subjectTab = 'Sheet1';"; $exel[] = "\t\t}"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " make sure the file is loaded\t\t"; $exel[] = "\t\tJLoader::import('PHPExcel', JPATH_COMPONENT_ADMINISTRATOR . '/helpers');"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Create new PHPExcel object"; $exel[] = "\t\t\$objPHPExcel = new PHPExcel();"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Set document properties"; $exel[] = "\t\t\$objPHPExcel->getProperties()->setCreator(\$creator)"; $exel[] = "\t\t\t\t\t\t\t\t\t ->setCompany('" . $this->fileContentStatic['###COMPANYNAME###'] . "')"; $exel[] = "\t\t\t\t\t\t\t\t\t ->setLastModifiedBy(\$modified)"; $exel[] = "\t\t\t\t\t\t\t\t\t ->setTitle(\$title)"; $exel[] = "\t\t\t\t\t\t\t\t\t ->setSubject(\$subjectTab);"; $exel[] = "\t\tif (!\$description)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$objPHPExcel->getProperties()->setDescription(\$description);"; $exel[] = "\t\t}"; $exel[] = "\t\tif (!\$keywords)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$objPHPExcel->getProperties()->setKeywords(\$keywords);"; $exel[] = "\t\t}"; $exel[] = "\t\tif (!\$category)"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$objPHPExcel->getProperties()->setCategory(\$category);"; $exel[] = "\t\t}"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Some styles"; $exel[] = "\t\t\$headerStyles = array("; $exel[] = "\t\t\t'font' => array("; $exel[] = "\t\t\t\t'bold' => true,"; $exel[] = "\t\t\t\t'color' => array('rgb' => '1171A3'),"; $exel[] = "\t\t\t\t'size' => 12,"; $exel[] = "\t\t\t\t'name' => 'Verdana'"; $exel[] = "\t\t));"; $exel[] = "\t\t\$sideStyles = array("; $exel[] = "\t\t\t'font' => array("; $exel[] = "\t\t\t\t'bold' => true,"; $exel[] = "\t\t\t\t'color' => array('rgb' => '444444'),"; $exel[] = "\t\t\t\t'size' => 11,"; $exel[] = "\t\t\t\t'name' => 'Verdana'"; $exel[] = "\t\t));"; $exel[] = "\t\t\$normalStyles = array("; $exel[] = "\t\t\t'font' => array("; $exel[] = "\t\t\t\t'color' => array('rgb' => '444444'),"; $exel[] = "\t\t\t\t'size' => 11,"; $exel[] = "\t\t\t\t'name' => 'Verdana'"; $exel[] = "\t\t));"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Add some data"; $exel[] = "\t\tif (self::checkArray(\$rows))"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$i = 1;"; $exel[] = "\t\t\tforeach (\$rows as \$array){"; $exel[] = "\t\t\t\t\$a = 'A';"; $exel[] = "\t\t\t\tforeach (\$array as \$value){"; $exel[] = "\t\t\t\t\t\$objPHPExcel->setActiveSheetIndex(0)->setCellValue(\$a.\$i, \$value);"; $exel[] = "\t\t\t\t\tif (\$i == 1){"; $exel[] = "\t\t\t\t\t\t\$objPHPExcel->getActiveSheet()->getColumnDimension(\$a)->setAutoSize(true);"; $exel[] = "\t\t\t\t\t\t\$objPHPExcel->getActiveSheet()->getStyle(\$a.\$i)->applyFromArray(\$headerStyles);"; $exel[] = "\t\t\t\t\t\t\$objPHPExcel->getActiveSheet()->getStyle(\$a.\$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);"; $exel[] = "\t\t\t\t\t} elseif (\$a === 'A'){"; $exel[] = "\t\t\t\t\t\t\$objPHPExcel->getActiveSheet()->getStyle(\$a.\$i)->applyFromArray(\$sideStyles);"; $exel[] = "\t\t\t\t\t} else {"; $exel[] = "\t\t\t\t\t\t\$objPHPExcel->getActiveSheet()->getStyle(\$a.\$i)->applyFromArray(\$normalStyles);"; $exel[] = "\t\t\t\t\t}"; $exel[] = "\t\t\t\t\t\$a++;"; $exel[] = "\t\t\t\t}"; $exel[] = "\t\t\t\t\$i++;"; $exel[] = "\t\t\t}"; $exel[] = "\t\t}"; $exel[] = "\t\telse"; $exel[] = "\t\t{"; $exel[] = "\t\t\treturn false;"; $exel[] = "\t\t}"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Rename worksheet"; $exel[] = "\t\t\$objPHPExcel->getActiveSheet()->setTitle(\$subjectTab);"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Set active sheet index to the first sheet, so Excel opens this as the first sheet"; $exel[] = "\t\t\$objPHPExcel->setActiveSheetIndex(0);"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " Redirect output to a client's web browser (Excel5)"; $exel[] = "\t\theader('Content-Type: application/vnd.ms-excel');"; $exel[] = "\t\theader('Content-Disposition: attachment;filename=\"'.\$fileName.'.xls\"');"; $exel[] = "\t\theader('Cache-Control: max-age=0');"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " If you're serving to IE 9, then the following may be needed"; $exel[] = "\t\theader('Cache-Control: max-age=1');"; $exel[] = "\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " If you're serving to IE over SSL, then the following may be needed"; $exel[] = "\t\theader ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past"; $exel[] = "\t\theader ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified"; $exel[] = "\t\theader ('Cache-Control: cache, must-revalidate'); // HTTP/1.1"; $exel[] = "\t\theader ('Pragma: public'); // HTTP/1.0"; $exel[] = "\t\t"; $exel[] = "\t\t\$objWriter = PHPExcel_IOFactory::createWriter(\$objPHPExcel, 'Excel5');"; $exel[] = "\t\t\$objWriter->save('php://output');"; $exel[] = "\t\tjexit();"; $exel[] = "\t}"; $exel[] = "\t"; $exel[] = "\t/**"; $exel[] = "\t* Get CSV Headers"; $exel[] = "\t*/"; $exel[] = "\tpublic static function getFileHeaders(\$dataType)"; $exel[] = "\t{\t\t"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " make sure these files are loaded\t\t"; $exel[] = "\t\tJLoader::import('PHPExcel', JPATH_COMPONENT_ADMINISTRATOR . '/helpers');"; $exel[] = "\t\tJLoader::import('ChunkReadFilter', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/PHPExcel/Reader');"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " get session object"; $exel[] = "\t\t\$session\t= JFactory::getSession();"; $exel[] = "\t\t\$package\t= \$session->get('package', null);"; $exel[] = "\t\t\$package\t= json_decode(\$package, true);"; $exel[] = "\t\t//" . $this->setLine(__LINE__) . " set the headers"; $exel[] = "\t\tif(isset(\$package['dir']))"; $exel[] = "\t\t{"; $exel[] = "\t\t\t\$chunkFilter = new PHPExcel_Reader_chunkReadFilter();"; $exel[] = "\t\t\t//" . $this->setLine(__LINE__) . " only load first three rows"; $exel[] = "\t\t\t\$chunkFilter->setRows(2,1);"; $exel[] = "\t\t\t//" . $this->setLine(__LINE__) . " identify the file type"; $exel[] = "\t\t\t\$inputFileType = PHPExcel_IOFactory::identify(\$package['dir']);"; $exel[] = "\t\t\t//" . $this->setLine(__LINE__) . " create the reader for this file type"; $exel[] = "\t\t\t\$excelReader = PHPExcel_IOFactory::createReader(\$inputFileType);"; $exel[] = "\t\t\t//" . $this->setLine(__LINE__) . " load the limiting filter"; $exel[] = "\t\t\t\$excelReader->setReadFilter(\$chunkFilter);"; $exel[] = "\t\t\t\$excelReader->setReadDataOnly(true);"; $exel[] = "\t\t\t//" . $this->setLine(__LINE__) . " load the rows (only first three)"; $exel[] = "\t\t\t\$excelObj = \$excelReader->load(\$package['dir']);"; $exel[] = "\t\t\t\$headers = array();"; $exel[] = "\t\t\tforeach (\$excelObj->getActiveSheet()->getRowIterator() as \$row)"; $exel[] = "\t\t\t{"; $exel[] = "\t\t\t\tif(\$row->getRowIndex() == 1)"; $exel[] = "\t\t\t\t{"; $exel[] = "\t\t\t\t\t\$cellIterator = \$row->getCellIterator();"; $exel[] = "\t\t\t\t\t\$cellIterator->setIterateOnlyExistingCells(false);"; $exel[] = "\t\t\t\t\tforeach (\$cellIterator as \$cell)"; $exel[] = "\t\t\t\t\t{"; $exel[] = "\t\t\t\t\t\tif (!is_null(\$cell))"; $exel[] = "\t\t\t\t\t\t{"; $exel[] = "\t\t\t\t\t\t\t\$headers[\$cell->getColumn()] = \$cell->getValue();"; $exel[] = "\t\t\t\t\t\t}"; $exel[] = "\t\t\t\t\t}"; $exel[] = "\t\t\t\t\t\$excelObj->disconnectWorksheets();"; $exel[] = "\t\t\t\t\tunset(\$excelObj);"; $exel[] = "\t\t\t\t\tbreak;"; $exel[] = "\t\t\t\t}"; $exel[] = "\t\t\t}"; $exel[] = "\t\t\treturn \$headers;"; $exel[] = "\t\t}"; $exel[] = "\t\treturn false;"; $exel[] = "\t}"; // return the help methods return implode(PHP_EOL, $exel); } return ''; } public function setCreateUserHelperMethod($add) { if ($add) { $method = array(); $method[] = PHP_EOL . PHP_EOL . "\t/**"; $method[] = "\t* Greate user and update given table"; $method[] = "\t*/"; $method[] = "\tpublic static function createUser(\$new)"; $method[] = "\t{"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " load the user component language files if there is an error."; $method[] = "\t\t\$lang = JFactory::getLanguage();"; $method[] = "\t\t\$extension = 'com_users';"; $method[] = "\t\t\$base_dir = JPATH_SITE;"; $method[] = "\t\t\$language_tag = 'en-GB';"; $method[] = "\t\t\$reload = true;"; $method[] = "\t\t\$lang->load(\$extension, \$base_dir, \$language_tag, \$reload);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " load the user regestration model"; $method[] = "\t\t\$model = self::getModel('registration', JPATH_ROOT. '/components/com_users', 'Users');"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " make sure no activation is needed"; $method[] = "\t\t\$useractivation = self::setParams('com_users','useractivation',0);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " make sure password is send"; $method[] = "\t\t\$sendpassword = self::setParams('com_users','sendpassword',1);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Check if password was set"; $method[] = "\t\tif (isset(\$new['password']) && isset(\$new['password2']) && self::checkString(\$new['password']) && self::checkString(\$new['password2']))"; $method[] = "\t\t{"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Use the users passwords"; $method[] = "\t\t\t\$password = \$new['password'];"; $method[] = "\t\t\t\$password2 = \$new['password2'];"; $method[] = "\t\t}"; $method[] = "\t\telse"; $method[] = "\t\t{"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set random password"; $method[] = "\t\t\t\$password = self::randomkey(8);"; $method[] = "\t\t\t\$password2 = \$password;"; $method[] = "\t\t}"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " set username if not set"; $method[] = "\t\tif (!isset(\$new['username']) || !self::checkString(\$new['username']))"; $method[] = "\t\t{"; $method[] = "\t\t\t\$new['username'] = self::safeString(\$new['name']);"; $method[] = "\t\t}"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " linup new user data"; $method[] = "\t\t\$data = array("; $method[] = "\t\t\t'username' => \$new['username'],"; $method[] = "\t\t\t'name' => \$new['name'],"; $method[] = "\t\t\t'email1' => \$new['email'],"; $method[] = "\t\t\t'password1' => \$password, // First password field"; $method[] = "\t\t\t'password2' => \$password2, // Confirm password field"; $method[] = "\t\t\t'block' => 0 );"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " register the new user"; $method[] = "\t\t\$userId = \$model->register(\$data);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " set activation back to default"; $method[] = "\t\tself::setParams('com_users','useractivation',\$useractivation);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " set send password back to default"; $method[] = "\t\tself::setParams('com_users','sendpassword',\$sendpassword);"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " if user is created"; $method[] = "\t\tif (\$userId > 0)"; $method[] = "\t\t{"; $method[] = "\t\t\treturn \$userId;"; $method[] = "\t\t}"; $method[] = "\t\treturn \$model->getError();"; $method[] = "\t}"; $method[] = PHP_EOL . "\tprotected static function setParams(\$component,\$target,\$value)"; $method[] = "\t{"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Get the params and set the new values"; $method[] = "\t\t\$params = JComponentHelper::getParams(\$component);"; $method[] = "\t\t\$was = \$params->get(\$target, null);"; $method[] = "\t\tif (\$was != \$value)"; $method[] = "\t\t{"; $method[] = "\t\t\t\$params->set(\$target, \$value);"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Get a new database query instance"; $method[] = "\t\t\t\$db = JFactory::getDBO();"; $method[] = "\t\t\t\$query = \$db->getQuery(true);"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Build the query"; $method[] = "\t\t\t\$query->update('#__extensions AS a');"; $method[] = "\t\t\t\$query->set('a.params = ' . \$db->quote((string)\$params));"; $method[] = "\t\t\t\$query->where('a.element = ' . \$db->quote((string)\$component));"; $method[] = "\t\t\t"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Execute the query"; $method[] = "\t\t\t\$db->setQuery(\$query);"; $method[] = "\t\t\t\$db->query();"; $method[] = "\t\t}"; $method[] = "\t\treturn \$was;"; $method[] = "\t}"; $method[] = PHP_EOL . "\t/**"; $method[] = "\t* Update user values"; $method[] = "\t*/"; $method[] = "\tpublic static function updateUser(\$new)"; $method[] = "\t{"; $method[] = "\t\t// load the user component language files if there is an error."; $method[] = "\t\t\$lang = JFactory::getLanguage();"; $method[] = "\t\t\$extension = 'com_users';"; $method[] = "\t\t\$base_dir = JPATH_ADMINISTRATOR;"; $method[] = "\t\t\$language_tag = 'en-GB';"; $method[] = "\t\t\$reload = true;"; $method[] = "\t\t\$lang->load(\$extension, \$base_dir, \$language_tag, \$reload);"; $method[] = "\t\t// load the user model"; $method[] = "\t\t\$model = self::getModel('user', JPATH_ADMINISTRATOR . '/components/com_users', 'Users');"; $method[] = "\t\t// Check if password was set"; $method[] = "\t\tif (isset(\$new['password']) && isset(\$new['password2']) && self::checkString(\$new['password']) && self::checkString(\$new['password2']))"; $method[] = "\t\t{"; $method[] = "\t\t\t// Use the users passwords"; $method[] = "\t\t\t\$password = \$new['password'];"; $method[] = "\t\t\t\$password2 = \$new['password2'];"; $method[] = "\t\t}"; $method[] = "\t\t// set username"; $method[] = "\t\tif (isset(\$new['username']) && self::checkString(\$new['username']))"; $method[] = "\t\t{"; $method[] = "\t\t\t\$new['username'] = self::safeString(\$new['username']);"; $method[] = "\t\t}"; $method[] = "\t\telse"; $method[] = "\t\t{"; $method[] = "\t\t\t\$new['username'] = self::safeString(\$new['name']);\t\t\t"; $method[] = "\t\t}"; $method[] = "\t\t// linup update user data"; $method[] = "\t\t\$data = array("; $method[] = "\t\t\t'id' => \$new['id'],"; $method[] = "\t\t\t'username' => \$new['username'],"; $method[] = "\t\t\t'name' => \$new['name'],"; $method[] = "\t\t\t'email' => \$new['email'],"; $method[] = "\t\t\t'password1' => \$password, // First password field"; $method[] = "\t\t\t'password2' => \$password2, // Confirm password field"; $method[] = "\t\t\t'block' => 0 );"; $method[] = "\t\t// register the new user"; $method[] = "\t\t\$done = \$model->save(\$data);"; $method[] = "\t\t// if user is updated"; $method[] = "\t\tif (\$done)"; $method[] = "\t\t{"; $method[] = "\t\t\treturn \$new['id'];"; $method[] = "\t\t}"; $method[] = "\t\treturn \$model->getError();"; $method[] = "\t}"; // return the help method return implode(PHP_EOL, $method); } return ''; } public function setCustomViewMenu(&$view) { $xml = ''; // build the file $target = array('site' => $view['settings']->code); $done = $this->buildDynamique($target, 'menu'); if ($done) { // set the lang $lang = ComponentbuilderHelper::safeString('com_' . $this->fileContentStatic['###component###'] . '_menu_' . $view['settings']->code, 'U'); $this->langContent['adminsys'][$lang . '_TITLE'] = $view['settings']->name; $this->langContent['adminsys'][$lang . '_OPTION'] = $view['settings']->name; $this->langContent['adminsys'][$lang . '_DESC'] = $view['settings']->description; //start loading xml $xml = ''; $xml .= PHP_EOL . ''; $xml .= PHP_EOL . "\t" . ''; $xml .= PHP_EOL . "\t\t" . ''; $xml .= PHP_EOL . "\t\t\t" . ''; $xml .= PHP_EOL . "\t\t" . ''; $xml .= PHP_EOL . "\t" . ''; if (isset($this->hasIdRequest[$view['settings']->code]) || isset($this->hasCatIdRequest[$view['settings']->code])) { $xml .= PHP_EOL . "\t" . ''; $xml .= PHP_EOL . "\t" . ''; $xml .= PHP_EOL . "\t\t" . '
'; if (isset($this->hasIdRequest[$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->hasIdRequest[$view['settings']->code])) { foreach ($this->hasIdRequest[$view['settings']->code] as $requestFieldXML) { $xml .= PHP_EOL . "\t\t\t" . $requestFieldXML; } } if (isset($this->hasCatIdRequest[$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->hasCatIdRequest[$view['settings']->code])) { foreach ($this->hasCatIdRequest[$view['settings']->code] as $requestFieldXML) { $xml .= PHP_EOL . "\t\t\t" . $requestFieldXML; } } $xml .= PHP_EOL . "\t\t" . '
'; $xml .= PHP_EOL . "\t" . '
'; } if (isset($this->frontEndParams) && isset($this->frontEndParams[$view['settings']->name])) { // first we must setup the fields for the page use $params = $this->setupFrontendParamFields($this->frontEndParams[$view['settings']->name], $view['settings']->code); // now load the fields if (ComponentbuilderHelper::checkArray($params)) { $xml .= PHP_EOL . "\t" . ''; $xml .= PHP_EOL . "\t" . ''; $xml .= PHP_EOL . "\t\t" . '
'; $xml .= implode("\t\t\t", $params); $xml .= PHP_EOL . "\t\t" . '
'; $xml .= PHP_EOL . "\t" . '
'; } } $xml .= PHP_EOL . '
'; } return $xml; } public function setupFrontendParamFields($params, $view) { $keep = array(); $menuSetter = $view . '_menu'; foreach ($params as $field) { // some switch to see if it should be added to front end params $target = ComponentbuilderHelper::getBetween($field, 'display="', '"'); if (!ComponentbuilderHelper::checkString($target) || $target === 'menu') { $field = str_replace('display="menu"', '', $field); // we load fields that have options if (strpos($field, 'Option Set. -->') !== false && strpos($field, $menuSetter) === false && !ComponentbuilderHelper::checkString($target)) { // we add the global option $field = str_replace('Option Set. -->', $this->setLine(__LINE__) . ' Global & Option Set. -->' . PHP_EOL . "\t\t\t" . '', $field); // update the default to be global $field = preg_replace('/default=".+"/', 'default=""', $field); // update the default to be filter $field = preg_replace('/filter=".+"/', 'filter="string"', $field); // update required $field = str_replace('required="true"', 'required="false"', $field); // add to keeper array $keep[] = $field; } else { $keep[] = $field; } } } return $keep; } public function setCustomViewQuery(&$gets, &$code, $tab = '', $type = 'main') { $query = ''; if (ComponentbuilderHelper::checkArray($gets)) { $mainAsArray = array(); $check = 'zzz'; foreach ($gets as $nr => $the_get) { // to insure that there be no double entries of a call $checker = md5(serialize($the_get) . $code); if (!isset($this->customViewQueryChecker[$this->target]) || !in_array($checker, $this->customViewQueryChecker[$this->target])) { // load this unuiqe key $this->customViewQueryChecker[$this->target][] = $checker; if (ComponentbuilderHelper::checkString($the_get['selection']['type'])) { $getItem = PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get from " . $the_get['selection']['table'] . " as " . $the_get['as']; } else { $getItem = PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get data"; } // set the selection $getItem .= PHP_EOL . "\t" . $tab . "\t" . $the_get['selection']['select']; if (($nr == 0 && (!isset($the_get['join_field']) || !ComponentbuilderHelper::checkString($the_get['join_field'])) && (isset($the_get['selection']['type']) && ComponentbuilderHelper::checkString($the_get['selection']['type']))) || ($type === 'custom' && (isset($the_get['selection']['type']) && ComponentbuilderHelper::checkString($the_get['selection']['type'])))) { $getItem .= PHP_EOL . "\t" . $tab . "\t" . '$query->from(' . $the_get['selection']['from'] . ');'; } elseif (isset($the_get['join_field']) && ComponentbuilderHelper::checkString($the_get['join_field']) && isset($the_get['selection']['type']) && ComponentbuilderHelper::checkString($the_get['selection']['type'])) { $getItem .= PHP_EOL . "\t" . $tab . "\t\$query->join('" . $the_get['type']; $getItem .= "', (" . $the_get['selection']['from']; $getItem .= ") . ' ON (' . \$db->quoteName('" . $the_get['on_field']; $getItem .= "') . ' " . $the_get['operator']; $getItem .= " ' . \$db->quoteName('" . $the_get['join_field'] . "') . ')');"; $check = current(explode(".", $the_get['on_field'])); } // set the method defaults $default = $this->setCustomViewMethodDefaults($the_get, $code); if (isset($this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]) && ComponentbuilderHelper::checkString($this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]) && !in_array($check, $mainAsArray)) { // load to other query if (!isset($this->otherQuery[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']])) { $this->otherQuery[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']] = ''; } $this->otherQuery[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']] .= $getItem; } else { $mainAsArray[] = $default['as']; $query .= $getItem; } } } } return $query; } public function setCustomViewFieldDecodeFilter(&$get, &$filters, $string, $removeString, $code, $tab) { $filter = ''; // check if filter is set for this field if (ComponentbuilderHelper::checkArray($filters)) { foreach ($filters as $field => $ter) { if (strpos($get['selection']['select'], $ter['table_key']) !== false) { $as = ''; $felt = ''; list($as, $felt) = array_map('trim', explode('.', $ter['table_key'])); if ($get['as'] == $as) { switch ($ter['filter_type']) { case 4: // COM_COMPONENTBUILDER_DYNAMIC_GET_USER_GROUPS $filter .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " filter " . $as . " based on user groups"; $filter .= PHP_EOL . "\t" . $tab . "\t\$remove = (count(array_intersect((array) \$this->groups, (array) " . $string . "->" . $field . "))) ? false : true;"; $filter .= PHP_EOL . "\t" . $tab . "\tif (\$remove)"; $filter .= PHP_EOL . "\t" . $tab . "\t{"; if ($removeString == $string) { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Remove " . $string . " if user not in groups"; $filter .= PHP_EOL . "\t" . $tab . "\t\t" . $string . " = null;"; $filter .= PHP_EOL . "\t" . $tab . "\t\treturn false;"; } else { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Unset " . $string . " if user not in groups"; $filter .= PHP_EOL . "\t" . $tab . "\t\tunset(" . $removeString . ");"; $filter .= PHP_EOL . "\t" . $tab . "\t\tcontinue;"; } $filter .= PHP_EOL . "\t" . $tab . "\t}"; break; case 9: // COM_COMPONENTBUILDER_DYNAMIC_GET_ARRAY_VALUE $filter .= PHP_EOL . PHP_EOL . "\t" . $tab . "\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(" . $string . "->" . $field . "))"; $filter .= PHP_EOL . "\t" . $tab . "\t{"; $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " do your thing here"; $filter .= PHP_EOL . "\t" . $tab . "\t}"; $filter .= PHP_EOL . "\t" . $tab . "\telse"; $filter .= PHP_EOL . "\t" . $tab . "\t{"; if ($removeString == $string) { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Remove " . $string . " if not array."; $filter .= PHP_EOL . "\t" . $tab . "\t\t" . $string . " = null;"; } else { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Unset " . $string . " if not array."; $filter .= PHP_EOL . "\t" . $tab . "\t\tunset(" . $removeString . ");"; $filter .= PHP_EOL . "\t" . $tab . "\t\tcontinue;"; } $filter .= PHP_EOL . "\t" . $tab . "\t}"; break; case 10: // COM_COMPONENTBUILDER_DYNAMIC_GET_REPEATABLE_VALUE $filter .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " filter " . $as . " based on repeatable value"; $filter .= PHP_EOL . "\t" . $tab . "\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkString(" . $string . "->" . $field . "))"; $filter .= PHP_EOL . "\t" . $tab . "\t{"; $filter .= PHP_EOL . "\t\t" . $tab . "\t\$array = json_decode(" . $string . "->" . $field . ",true);"; $filter .= PHP_EOL . "\t\t" . $tab . "\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$array))"; $filter .= PHP_EOL . "\t\t" . $tab . "\t{"; $filter .= PHP_EOL . "\t\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " do your thing here"; $filter .= PHP_EOL . "\t\t" . $tab . "\t}"; $filter .= PHP_EOL . "\t" . $tab . "\t\telse"; $filter .= PHP_EOL . "\t" . $tab . "\t\t{"; if ($removeString == $string) { $filter .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $string . " if not array."; $filter .= PHP_EOL . "\t" . $tab . "\t\t\t" . $string . " = null;"; } else { $filter .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " Unset " . $string . " if not array."; $filter .= PHP_EOL . "\t" . $tab . "\t\t\tunset(" . $removeString . ");"; $filter .= PHP_EOL . "\t" . $tab . "\t\t\tcontinue;"; } $filter .= PHP_EOL . "\t" . $tab . "\t\t}"; $filter .= PHP_EOL . "\t" . $tab . "\t}"; $filter .= PHP_EOL . "\t" . $tab . "\telse"; $filter .= PHP_EOL . "\t" . $tab . "\t{"; if ($removeString == $string) { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Remove " . $string . " if not string."; $filter .= PHP_EOL . "\t" . $tab . "\t\t" . $string . " = null;"; } else { $filter .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Unset " . $string . " if not string."; $filter .= PHP_EOL . "\t" . $tab . "\t\tunset(" . $removeString . ");"; $filter .= PHP_EOL . "\t" . $tab . "\t\tcontinue;"; } $filter .= PHP_EOL . "\t" . $tab . "\t}"; break; } } } } } return $filter; } public function setCustomViewFieldDecode(&$get, $checker, $string, $code, $tab = '') { $fieldDecode = ''; foreach ($checker as $field => $array) { if (strpos($get['selection']['select'], $field) !== false) { if ('json' === $array['decode']) { $if = PHP_EOL . "\t" . $tab . "\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkJson(" . $string . "->" . $field . "))" . PHP_EOL . "\t" . $tab . "\t{"; // json_decode $decoder = $string . "->" . $field . " = json_decode(" . $string . "->" . $field . ", true);"; } elseif ('base64' === $array['decode']) { $if = PHP_EOL . "\t" . $tab . "\tif (!empty(" . $string . "->" . $field . ") && " . $string . "->" . $field . " === base64_encode(base64_decode(" . $string . "->" . $field . ")))" . PHP_EOL . "\t" . $tab . "\t{"; // base64_decode $decoder = $string . "->" . $field . " = base64_decode(" . $string . "->" . $field . ");"; } elseif (strpos($array['decode'], '_encryption') !== false) { foreach ($this->cryptionTypes as $cryptionType) { if ($cryptionType.'_encryption' === $array['decode']) { $if = PHP_EOL . "\t" . $tab . "\tif (!empty(" . $string . "->" . $field . ") && \$".$cryptionType."key && !is_numeric(" . $string . "->" . $field . ") && " . $string . "->" . $field . " === base64_encode(base64_decode(" . $string . "->" . $field . ", true)))" . PHP_EOL . "\t" . $tab . "\t{"; // set decryption $decoder = $string . "->" . $field . " = rtrim(\$".$cryptionType."->decryptString(" . $string . "->" . $field . "), " . '"\0"' . ");"; $this->siteDecrypt[$cryptionType][$code] = true; } } } // build decoder string $fieldDecode .= $if . PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " Decode " . $field; $fieldDecode .= PHP_EOL . "\t" . $tab . "\t\t" . $decoder . PHP_EOL . "\t" . $tab . "\t}"; } } return $fieldDecode; } public function setCustomViewFieldonContentPrepareChecker(&$get, $checker, $string, $code, $tab = '') { $fieldPrepare = ''; $runplugins = false; $context = 'com_' . $this->fileContentStatic['###component###'] . '.' . $code; foreach ($checker as $field => $array) { if (strpos($get['selection']['select'], $field) !== false) { // build decoder string if (!$runplugins) { $runplugins = PHP_EOL . $tab . "\t//" . $this->setLine(__LINE__) . " Load the JEvent Dispatcher"; $runplugins .= PHP_EOL . $tab . "\tJPluginHelper::importPlugin('content');"; $runplugins .= PHP_EOL . $tab . "\t" . '$this->_dispatcher = JEventDispatcher::getInstance();'; } $fieldPrepare .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Make sure the content prepare plugins fire on " . $field; $fieldPrepare .= PHP_EOL . "\t" . $tab . "\t\$_" . $field . " = new stdClass();"; $fieldPrepare .= PHP_EOL . "\t" . $tab . "\t\$_" . $field . '->text =& ' . $string . '->' . $field . '; //' . $this->setLine(__LINE__) . ' value must be in text'; $fieldPrepare .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Since all values are now in text (Joomla Limitation), we also add the field name (" . $field . ") to context"; $fieldPrepare .= PHP_EOL . "\t" . $tab . "\t" . '$this->_dispatcher->trigger("onContentPrepare", array(\'' . $context . '.' . $field . '\', &$_' . $field . ', &$this->params, 0));'; // we can improve the params later (TODO) } } // load dispatcher $this->JEventDispatcher = array('###DISPATCHER###' => ($runplugins ?: '')); // return content prepare fix return $fieldPrepare; } public function setCustomViewFieldUikitChecker(&$get, $checker, $string, $code, $tab = '') { $fieldUikit = ''; foreach ($checker as $field => $array) { if (strpos($get['selection']['select'], $field) !== false) { // only load for uikit version 2 (TODO) we may need to add another check here if (2 == $this->uikit || 1 == $this->uikit) { $fieldUikit .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Checking if " . $field . " has uikit components that must be loaded."; $fieldUikit .= PHP_EOL . "\t" . $tab . "\t\$this->uikitComp = " . $this->fileContentStatic['###Component###'] . "Helper::getUikitComp(" . $string . "->" . $field . ",\$this->uikitComp);"; } } } // return UIKIT fix return $fieldUikit; } public function setCustomViewCustomJoin(&$gets, $string, $code, &$asBucket, $tab = '') { if (ComponentbuilderHelper::checkArray($gets)) { $customJoin = ''; foreach ($gets as $get) { // set the value name $default $default = $this->setCustomViewMethodDefaults($get, $code); if ($this->checkJoint($default, $get, $asBucket)) { // build custom join string $otherJoin = PHP_EOL . "\t###TAB###\t//" . $this->setLine(__LINE__) . " set " . $default['valueName'] . " to the ###STRING### object."; $otherJoin .= PHP_EOL . "\t###TAB###\t###STRING###->" . $default['valueName'] . " = \$this->get" . $default['methodName'] . "(###STRING###->" . $this->getAsLookup[$get['key']][$get['on_field']] . ");"; // load to other join if (!isset($this->otherJoin[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']])) { $this->otherJoin[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']] = ''; } $this->otherJoin[$this->target][$default['code']][$this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]][$default['valueName']] .= $otherJoin; } else { // build custom join string $customJoin .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set " . $default['valueName'] . " to the " . $string . " object."; $customJoin .= PHP_EOL . "\t" . $tab . "\t" . $string . "->" . $default['valueName'] . " = \$this->get" . $default['methodName'] . "(" . $string . "->" . $this->getAsLookup[$get['key']][$get['on_field']] . ");"; } } return $customJoin; } return ''; } public function checkJoint(&$default, &$get, &$asBucket) { // check if this function is not linked to the main call list($aJoin) = explode('.', $get['on_field']); if (ComponentbuilderHelper::checkArray($asBucket) && in_array($aJoin, $asBucket)) { return false; } // default fallback elseif (isset($this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']]) && ComponentbuilderHelper::checkString($this->siteDynamicGet[$this->target][$default['code']][$default['as']][$default['join_field']])) { return true; } return false; } public function setCustomViewFilter(&$filter, &$code, $tab = '') { $filters = ''; if (ComponentbuilderHelper::checkArray($filter)) { foreach ($filter as $ter) { $as = ''; $field = ''; $string = ''; if (strpos($ter['table_key'], '.') !== false) { list($as, $field) = array_map('trim', explode('.', $ter['table_key'])); } switch ($ter['filter_type']) { case 1: // COM_COMPONENTBUILDER_DYNAMIC_GET_ID $string = PHP_EOL . "\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " ' . (int) \$pk);"; break; case 2: // COM_COMPONENTBUILDER_DYNAMIC_GET_USER $string = PHP_EOL . "\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " ' . (int) \$this->userId);"; break; case 3: // COM_COMPONENTBUILDER_DYNAMIC_GET_ACCESS_LEVEL $string = PHP_EOL . "\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " (' . implode(',', \$this->levels) . ')');"; break; case 4: // COM_COMPONENTBUILDER_DYNAMIC_GET_USER_GROUPS $decodeChecker = $this->siteFieldData['decode'][$code][$ter['key']][$as][$field]; if (ComponentbuilderHelper::checkArray($decodeChecker) || $ter['state_key'] === 'array') { // set needed fields to filter after query $this->siteFieldDecodeFilter[$this->target][$code][$ter['key']][$as][$field] = $ter; } else { $string = PHP_EOL . "\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " (' . implode(',', \$this->groups) . ')');"; } break; case 5: // COM_COMPONENTBUILDER_DYNAMIC_GET_CATEGORIES $string = PHP_EOL . "\t\t" . $tab . "//" . $this->setLine(__LINE__) . " (TODO) The dynamic category filter is not ready."; break; case 6: // COM_COMPONENTBUILDER_DYNAMIC_GET_TAGS $string = PHP_EOL . "\t\t" . $tab . "//" . $this->setLine(__LINE__) . " (TODO) The dynamic tags filter is not ready."; break; case 7: // COM_COMPONENTBUILDER_DYNAMIC_GET_DATE $string = PHP_EOL . "\t\t" . $tab . "//" . $this->setLine(__LINE__) . " (TODO) The dynamic date filter is not ready."; break; case 8: // COM_COMPONENTBUILDER_DYNAMIC_GET_FUNCTIONVAR if ($ter['operator'] === 'IN' || $ter['operator'] === 'NOT IN') { $string = PHP_EOL . "\t\t" . $tab . "//" . $this->setLine(__LINE__) . " Check if " . $ter['state_key'] . " is an array with values."; $string .= PHP_EOL . "\t\t" . $tab . "\$array = " . $ter['state_key'] . ";"; $string .= PHP_EOL . "\t\t" . $tab . "if (isset(\$array) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$array))"; $string .= PHP_EOL . "\t\t" . $tab . "{"; $string .= PHP_EOL . "\t\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " (' . implode(',', \$array) . ')');"; $string .= PHP_EOL . "\t\t" . $tab . "}"; $string .= PHP_EOL . "\t\t" . $tab . "else"; $string .= PHP_EOL . "\t\t" . $tab . "{"; $string .= PHP_EOL . "\t\t" . $tab . "\treturn false;"; $string .= PHP_EOL . "\t\t" . $tab . "}"; } else { $string = PHP_EOL . "\t\t" . $tab . "//" . $this->setLine(__LINE__) . " Check if " . $ter['state_key'] . " is a string or numeric value."; $string .= PHP_EOL . "\t\t" . $tab . "\$checkValue = " . $ter['state_key'] . ";"; $string .= PHP_EOL . "\t\t" . $tab . "if (isset(\$checkValue) && " . $this->fileContentStatic['###Component###'] . "Helper::checkString(\$checkValue))"; $string .= PHP_EOL . "\t\t" . $tab . "{"; $string .= PHP_EOL . "\t\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " ' . \$db->quote(\$checkValue));"; $string .= PHP_EOL . "\t\t" . $tab . "}"; $string .= PHP_EOL . "\t\t" . $tab . "elseif (is_numeric(\$checkValue))"; $string .= PHP_EOL . "\t\t" . $tab . "{"; $string .= PHP_EOL . "\t\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " ' . \$checkValue);"; $string .= PHP_EOL . "\t\t" . $tab . "}"; $string .= PHP_EOL . "\t\t" . $tab . "else"; $string .= PHP_EOL . "\t\t" . $tab . "{"; $string .= PHP_EOL . "\t\t" . $tab . "\treturn false;"; $string .= PHP_EOL . "\t\t" . $tab . "}"; } break; case 9: // COM_COMPONENTBUILDER_DYNAMIC_GET_ARRAY_VALUE $string = ""; // set needed fields to filter after query $this->siteFieldDecodeFilter[$this->target][$code][$ter['key']][$as][$field] = $ter; break; case 10: // COM_COMPONENTBUILDER_DYNAMIC_GET_REPEATABLE_VALUE $string = ""; // set needed fields to filter after query $this->siteFieldDecodeFilter[$this->target][$code][$ter['key']][$as][$field] = $ter; break; case 11: // COM_COMPONENTBUILDER_DYNAMIC_GET_OTHER if (strpos($as, '(') !== false) { // TODO (for now we only fix extra sql methods here) list($dump, $as) = array_map('trim', explode('(', $as)); $field = trim(str_replace(')', '', $field)); } $string = PHP_EOL . "\t" . $tab . "\t\$query->where('" . $ter['table_key'] . " " . $ter['operator'] . " " . $ter['state_key'] . "');"; break; } // only add if the filter is set if (ComponentbuilderHelper::checkString($string)) { // sort where if ($as === 'a' || (isset($this->siteMainGet[$this->target][$code][$as]) && ComponentbuilderHelper::checkString($this->siteMainGet[$this->target][$code][$as]))) { $filters .= $string; } elseif ($as !== 'a') { $this->otherFilter[$this->target][$code][$as][$field] = $string; } } } } return $filters; } public function setCustomViewOrder(&$order, &$code, $tab = '') { $ordering = ''; if (ComponentbuilderHelper::checkArray($order)) { foreach ($order as $or) { list($as, $field) = array_map('trim', explode('.', $or['table_key'])); // set the string $string = "\$query->order('" . $or['table_key'] . " " . $or['direction'] . "');"; // sort where if ($as === 'a' || (isset($this->siteMainGet[$this->target][$code][$as]) && ComponentbuilderHelper::checkString($this->siteMainGet[$this->target][$code][$as]))) { $ordering .= PHP_EOL . "\t" . $tab . "\t" . $string; } else { $this->otherOrder[$this->target][$code][$as][$field] = PHP_EOL . "\t\t" . $string; } } } return $ordering; } public function setCustomViewWhere(&$where, &$code, $tab = '') { $wheres = ''; if (ComponentbuilderHelper::checkArray($where)) { foreach ($where as $whe) { $as = ''; $field = ''; $value = ''; list($as, $field) = array_map('trim', explode('.', $whe['table_key'])); if (is_numeric($whe['value_key'])) { $value = " " . $whe['value_key'] . "');"; } elseif (strpos($whe['value_key'], '$') !== false) { if ($whe['operator'] === 'IN' || $whe['operator'] === 'NOT IN') { $value = " (' . implode(',', " . $whe['value_key'] . ") . ')');"; } else { $value = " ' . \$db->quote(" . $whe['value_key'] . "));"; } } elseif (strpos($whe['value_key'], '.') !== false) { if (strpos($whe['value_key'], "'") !== false) { $value = " ' . \$db->quote(" . $whe['value_key'] . "));"; } else { $value = " " . $whe['value_key'] . "');"; } } elseif (ComponentbuilderHelper::checkString($whe['value_key'])) { $value = " " . $whe['value_key'] . "');"; } // only load if there is a value if (ComponentbuilderHelper::checkString($value)) { $tabe = ''; if ($as === 'a') { $tabe = $tab; } // set the string if ($whe['operator'] === 'IN' || $whe['operator'] === 'NOT IN') { $string = "if (isset(" . $whe['value_key'] . ") && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(" . $whe['value_key'] . "))"; $string .= PHP_EOL . "\t" . $tabe . "\t{"; $string .= PHP_EOL . "\t" . $tabe . "\t\t//" . $this->setLine(__LINE__) . " Get where " . $whe['table_key'] . " is " . $whe['value_key']; $string .= PHP_EOL . "\t" . $tabe . "\t\t\$query->where('" . $whe['table_key'] . " " . $whe['operator'] . $value; $string .= PHP_EOL . "\t" . $tabe . "\t}"; $string .= PHP_EOL . "\t" . $tabe . "\telse"; $string .= PHP_EOL . "\t" . $tabe . "\t{"; $string .= PHP_EOL . "\t" . $tabe . "\t\treturn false;"; $string .= PHP_EOL . "\t" . $tabe . "\t}"; } else { $string = "//" . $this->setLine(__LINE__) . " Get where " . $whe['table_key'] . " is " . $whe['value_key']; $string .= PHP_EOL . "\t" . $tabe . "\t\$query->where('" . $whe['table_key'] . " " . $whe['operator'] . $value; } // sort where if ($as === 'a' || (isset($this->siteMainGet[$this->target][$code][$as]) && ComponentbuilderHelper::checkString($this->siteMainGet[$this->target][$code][$as]))) { $wheres .= PHP_EOL . "\t" . $tab . "\t" . $string; } elseif ($as !== 'a') { $this->otherWhere[$this->target][$code][$as][$field] = PHP_EOL . "\t\t" . $string; } } } } return $wheres; } public function setCustomViewGlobals(&$global, $string, $as, $tab = '') { $globals = ''; if (ComponentbuilderHelper::checkArray($global)) { $as = array_unique($as); foreach ($global as $glo) { if (in_array($glo['as'], $as)) { switch ($glo['type']) { case 1: // SET STATE $value = "\$this->setState('" . $glo['as'] . "." . $glo['name'] . "', " . $string . "->" . $glo['key'] . ");"; break; case 2: // SET THIS $value = "\$this->" . $glo['as'] . "_" . $glo['name'] . " = " . $string . "->" . $glo['key'] . ";"; break; } // only add if the filter is set if (ComponentbuilderHelper::checkString($value)) { $globals .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set the global " . $glo['name'] . " value." . PHP_EOL . "\t" . $tab . "\t" . $value; } } } } return $globals; } /** * @param $string * @param string $type * @return mixed */ public function removeAsDot($string, $type = '') { if (strpos($string, '.') !== false) { list($dump, $field) = array_map('trim', explode('.', $string)); } else { $field = $string; } return $field; } /** * @param type $view * @param type $type */ public function setUserPermissionCheckAccess($view, $type) { if (isset($view['access']) && $view['access'] == 1) { switch ($type) { case 1: $userString = '$this->user'; break; default: $userString = '$user'; break; } // check that the default and the redirect page is not the same if (isset($this->fileContentStatic['###SITE_DEFAULT_VIEW###']) && $this->fileContentStatic['###SITE_DEFAULT_VIEW###'] != $view['settings']->code) { $redirectMessage = "\t\t\t//" . $this->setLine(__LINE__) . " redirect away to the default view if no access allowed."; $redirectString = "JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $this->fileContentStatic['###SITE_DEFAULT_VIEW###'] . "')"; } else { $redirectMessage = "\t\t\t//" . $this->setLine(__LINE__) . " redirect away to the home page if no access allowed."; $redirectString = 'JURI::root()'; } $accessCheck[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " check if this user has permission to access item"; $accessCheck[] = "\t\tif (!" . $userString . "->authorise('site." . $view['settings']->code . ".access', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $accessCheck[] = "\t\t{"; $accessCheck[] = "\t\t\t\$app = JFactory::getApplication();"; // set lang $langKeyWord = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Not authorised to view ' . $view['settings']->code . '!', 'U'); if (!isset($this->langContent['site'][$langKeyWord])) { $this->langContent['site'][$langKeyWord] = 'Not authorised to view ' . $view['settings']->code . '!'; } $accessCheck[] = "\t\t\t\$app->enqueueMessage(JText:".":_('" . $langKeyWord . "'), 'error');"; $accessCheck[] = $redirectMessage; $accessCheck[] = "\t\t\t\$app->redirect(" . $redirectString . ");"; $accessCheck[] = "\t\t\treturn false;"; $accessCheck[] = "\t\t}"; // return the access check return implode(PHP_EOL, $accessCheck); } return ''; } /** * @param $get * @param $code * @param string $tab * @param string $type * @return string */ public function setCustomViewGetItem(&$get, &$code, $tab = '', $type = 'main') { if (ComponentbuilderHelper::checkObject($get)) { // set the site decription switches foreach ($this->cryptionTypes as $cryptionType) { $this->siteDecrypt[$cryptionType][$code] = false; } // start the get Item $getItem = ''; // set before item php if (isset($get->add_php_before_getitem) && $get->add_php_before_getitem == 1 && isset($get->php_before_getitem) && ComponentbuilderHelper::checkString($get->php_before_getitem)) { $getItem .= $this->setPlaceholders($get->php_before_getitem, $this->placeholders); } // start loadin the get Item $getItem .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get a db connection."; $getItem .= PHP_EOL . "\t" . $tab . "\t\$db = JFactory::getDbo();"; $getItem .= PHP_EOL . PHP_EOL . $tab . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $getItem .= PHP_EOL . "\t" . $tab . "\t\$query = \$db->getQuery(true);"; // set main get query $getItem .= $this->setCustomViewQuery($get->main_get, $code, $tab); // setup filters $getItem .= $this->setCustomViewFilter($get->filter, $code, $tab); // setup Where $getItem .= $this->setCustomViewWhere($get->where, $code, $tab); // setup ordering $getItem .= $this->setCustomViewOrder($get->order, $code, $tab); // get ready to get query $getItem .= PHP_EOL . PHP_EOL . $tab . "\t\t//" . $this->setLine(__LINE__) . " Reset the query using our newly populated query object."; $getItem .= PHP_EOL . "\t" . $tab . "\t\$db->setQuery(\$query);"; $getItem .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Load the results as a stdClass object."; $getItem .= PHP_EOL . "\t" . $tab . "\t\$data = \$db->loadObject();"; $getItem .= PHP_EOL . PHP_EOL . $tab . "\t\tif (empty(\$data))"; $getItem .= PHP_EOL . "\t" . $tab . "\t{"; if ($type === 'main') { $getItem .= PHP_EOL . "\t" . $tab . "\t\t\$app = JFactory::getApplication();"; $langKeyWoord = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Not found or access denied', 'U'); if (!isset($this->langContent[$this->lang][$langKeyWoord])) { $this->langContent[$this->lang][$langKeyWoord] = 'Not found, or access denied.'; } $getItem .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " If no data is found redirect to default page and show warning."; $getItem .= PHP_EOL . "\t" . $tab . "\t\t\$app->enqueueMessage(JText:".":_('" . $langKeyWoord . "'), 'warning');"; if ('site' === $this->target) { // check that the default and the redirect page is not the same if (isset($this->fileContentStatic['###SITE_DEFAULT_VIEW###']) && $this->fileContentStatic['###SITE_DEFAULT_VIEW###'] != $code) { $redirectString = "JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $this->fileContentStatic['###SITE_DEFAULT_VIEW###'] . "')"; } else { $redirectString = 'JURI::root()'; } $getItem .= PHP_EOL . "\t" . $tab . "\t\t\$app->redirect(" . $redirectString . ");"; } else { $getItem .= PHP_EOL . "\t" . $tab . "\t\t\$app->redirect('index.php?option=com_" . $this->fileContentStatic['###component###'] . "');"; } $getItem .= PHP_EOL . "\t" . $tab . "\t\treturn false;"; } else { $getItem .= PHP_EOL . "\t" . $tab . "\t\treturn false;"; } $getItem .= PHP_EOL . "\t" . $tab . "\t}"; // dispatcher placholder $getItem .= "###DISPATCHER###"; if (ComponentbuilderHelper::checkArray($get->main_get)) { $asBucket = array(); foreach ($get->main_get as $main_get) { if (isset($this->siteFieldData['decode'][$code][$main_get['key']][$main_get['as']])) { $decodeChecker = $this->siteFieldData['decode'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($decodeChecker)) { // set decoding of needed fields $getItem .= $this->setCustomViewFieldDecode($main_get, $decodeChecker, '$data', $code, $tab); } } if (isset($this->siteFieldDecodeFilter[$this->target][$code][$main_get['key']][$main_get['as']])) { $decodeFilter = $this->siteFieldDecodeFilter[$this->target][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($decodeFilter)) { // also filter fields if needed $getItem .= $this->setCustomViewFieldDecodeFilter($main_get, $decodeFilter, '$data', '$data', $code, $tab); } } if (isset($this->siteFieldData['textareas'][$code][$main_get['key']][$main_get['as']])) { $contentprepareChecker = $this->siteFieldData['textareas'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($contentprepareChecker)) { // set contentprepare checkers on needed fields $getItem .= $this->setCustomViewFieldonContentPrepareChecker($main_get, $contentprepareChecker, '$data', $code, $tab); } } if (isset($this->siteFieldData['uikit'][$code][$main_get['key']][$main_get['as']])) { $uikitChecker = $this->siteFieldData['uikit'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($uikitChecker)) { // set uikit checkers on needed fields $getItem .= $this->setCustomViewFieldUikitChecker($main_get, $uikitChecker, '$data', $code, $tab); } } $asBucket[] = $main_get['as']; } } // set the scripts $Component = $this->fileContentStatic['###Component###']; $script = ''; foreach ($this->cryptionTypes as $cryptionType) { if (isset($this->siteDecrypt[$cryptionType][$code]) && $this->siteDecrypt[$cryptionType][$code]) { $script .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get the ".$cryptionType." encryption."; $script .= PHP_EOL . "\t" . $tab . "\t\$".$cryptionType."key = ".$Component."Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t" . $tab . "\t//".$this->setLine(__LINE__)." Get the encryption object."; $script .= PHP_EOL . "\t" . $tab . "\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);"; } } $getItem = $script . $getItem; // setup Globals $getItem .= $this->setCustomViewGlobals($get->global, '$data', $asBucket, $tab); // setup the custom gets that returns multipal values $getItem .= $this->setCustomViewCustomJoin($get->custom_get, '$data', $code, $asBucket, $tab); // set after item php if (isset($get->add_php_after_getitem) && $get->add_php_after_getitem == 1 && isset($get->php_after_getitem) && ComponentbuilderHelper::checkString($get->php_after_getitem)) { $getItem .= $this->setPlaceholders($get->php_after_getitem, $this->placeholders); } // set calculations if ($get->addcalculation == 1) { $get->php_calculation = (array) explode(PHP_EOL, $this->setPlaceholders($get->php_calculation, $this->placeholders)); $getItem .= PHP_EOL . "\t" . $tab . "\t" . implode(PHP_EOL . "\t" . $tab . "\t", $get->php_calculation); } if ($type === 'custom') { // return the object $getItem .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " return data object."; $getItem .= PHP_EOL . "\t" . $tab . "\treturn \$data;"; } else { // set the object $getItem .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set data object to item."; $getItem .= PHP_EOL . "\t" . $tab . "\t\$this->_item[\$pk] = \$data;"; } // only update if dispacher placholder is found if (strpos($getItem, '###DISPATCHER###') !== false) { // check if the dispather should be added if (!isset($this->JEventDispatcher) || !ComponentbuilderHelper::checkArray($this->JEventDispatcher)) { $this->JEventDispatcher = array('###DISPATCHER###' => ''); } $getItem = str_replace(array_keys($this->JEventDispatcher), array_values($this->JEventDispatcher), $getItem); } return $getItem; } return PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . "add your custom code here."; } public function setCustomViewCustomMethods($main_view, $code) { $methods = ''; // then set the needed custom methods if (ComponentbuilderHelper::checkArray($main_view['settings']->custom_get)) { // start dynamic build foreach ($main_view['settings']->custom_get as $view) { // fix alias to use in code $view->code = ComponentbuilderHelper::safeString($code); $view->Code = ComponentbuilderHelper::safeString($view->code, 'F'); $view->CODE = ComponentbuilderHelper::safeString($view->code, 'U'); $main = ''; if ($view->gettype == 3) { // ###SITE_GET_ITEM### <<>> $main .= PHP_EOL . PHP_EOL . "\t\tif (!isset(\$this->initSet) || !\$this->initSet)"; $main .= PHP_EOL . "\t\t{"; $main .= PHP_EOL . "\t\t\t\$this->user\t\t= JFactory::getUser();"; $main .= PHP_EOL . "\t\t\t\$this->userId\t\t= \$this->user->get('id');"; $main .= PHP_EOL . "\t\t\t\$this->guest\t\t= \$this->user->get('guest');"; $main .= PHP_EOL . "\t\t\t\$this->groups\t\t= \$this->user->get('groups');"; $main .= PHP_EOL . "\t\t\t\$this->authorisedGroups\t= \$this->user->getAuthorisedGroups();"; $main .= PHP_EOL . "\t\t\t\$this->levels\t\t= \$this->user->getAuthorisedViewLevels();"; $main .= PHP_EOL . "\t\t\t\$this->initSet\t\t= true;"; $main .= PHP_EOL . "\t\t}"; $main .= $this->setCustomViewGetItem($view, $view->code, '', 'custom'); $type = 'mixed item data object on success, false on failure.'; } elseif ($view->gettype == 4) { $main .= PHP_EOL . PHP_EOL . "\t\tif (!isset(\$this->initSet) || !\$this->initSet)"; $main .= PHP_EOL . "\t\t{"; $main .= PHP_EOL . "\t\t\t\$this->user\t\t= JFactory::getUser();"; $main .= PHP_EOL . "\t\t\t\$this->userId\t\t= \$this->user->get('id');"; $main .= PHP_EOL . "\t\t\t\$this->guest\t\t= \$this->user->get('guest');"; $main .= PHP_EOL . "\t\t\t\$this->groups\t\t= \$this->user->get('groups');"; $main .= PHP_EOL . "\t\t\t\$this->authorisedGroups\t= \$this->user->getAuthorisedGroups();"; $main .= PHP_EOL . "\t\t\t\$this->levels\t\t= \$this->user->getAuthorisedViewLevels();"; $main .= PHP_EOL . "\t\t\t\$this->initSet\t\t= true;"; $main .= PHP_EOL . "\t\t}"; $main .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the global params"; $main .= PHP_EOL . "\t\t\$globalParams = JComponentHelper::getParams('com_" . $this->fileContentStatic['###component###'] . "', true);"; // set php before listquery if (isset($view->add_php_getlistquery) && $view->add_php_getlistquery == 1 && isset($view->php_getlistquery) && ComponentbuilderHelper::checkString($view->php_getlistquery)) { $main .= $this->setPlaceholders($view->php_getlistquery, $this->placeholders); } // ###SITE_GET_LIST_QUERY### <<>> $main .= $this->setCustomViewListQuery($view, $view->code, false); // load the object list $main .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Reset the query using our newly populated query object."; $main .= PHP_EOL . "\t\t\$db->setQuery(\$query);"; // set before items php if (isset($view->add_php_before_getitems) && $view->add_php_before_getitems == 1 && isset($view->php_before_getitems) && ComponentbuilderHelper::checkString($view->php_before_getitems)) { $main .= $this->setPlaceholders($view->php_before_getitems, $this->placeholders); } $main .= PHP_EOL . "\t\t\$items = \$db->loadObjectList();"; $main .= PHP_EOL . PHP_EOL . "\t\tif (empty(\$items))"; $main .= PHP_EOL . "\t\t{"; $main .= PHP_EOL . "\t\t\treturn false;"; $main .= PHP_EOL . "\t\t}"; // ###SITE_GET_ITEMS### <<>> $main .= $this->setCustomViewGetItems($view, $view->code); $main .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " return items"; $main .= PHP_EOL . "\t\treturn \$items;"; $type = 'mixed An array of objects on success, false on failure.'; } // load the main mehtod $methods .= $this->setMainCustomMehtod($main, $view->getcustom, $type); // ###SITE_CUSTOM_METHODS### <<>> $methods .= $this->setCustomViewCustomItemMethods($view, $view->code); } } // load uikit get method $methods .= $this->setUikitGetMethod(); return $methods; } public function setUikitHelperMethods() { // only load for uikit version 2 if (2 == $this->uikit || 1 == $this->uikit) { // build uikit get method $ukit = array(); $ukit[] = PHP_EOL . PHP_EOL . "\t/**"; $ukit[] = "\t* \tUIKIT Component Classes"; $ukit[] = "\t**/"; $ukit[] = "\tpublic static \$uk_components = array("; $ukit[] = "\t\t\t'data-uk-grid' => array("; $ukit[] = "\t\t\t\t'grid' ),"; $ukit[] = "\t\t\t'uk-accordion' => array("; $ukit[] = "\t\t\t\t'accordion' ),"; $ukit[] = "\t\t\t'uk-autocomplete' => array("; $ukit[] = "\t\t\t\t'autocomplete' ),"; $ukit[] = "\t\t\t'data-uk-datepicker' => array("; $ukit[] = "\t\t\t\t'datepicker' ),"; $ukit[] = "\t\t\t'uk-form-password' => array("; $ukit[] = "\t\t\t\t'form-password' ),"; $ukit[] = "\t\t\t'uk-form-select' => array("; $ukit[] = "\t\t\t\t'form-select' ),"; $ukit[] = "\t\t\t'data-uk-htmleditor' => array("; $ukit[] = "\t\t\t\t'htmleditor' ),"; $ukit[] = "\t\t\t'data-uk-lightbox' => array("; $ukit[] = "\t\t\t\t'lightbox' ),"; $ukit[] = "\t\t\t'uk-nestable' => array("; $ukit[] = "\t\t\t\t'nestable' ),"; $ukit[] = "\t\t\t'UIkit.notify' => array("; $ukit[] = "\t\t\t\t'notify' ),"; $ukit[] = "\t\t\t'data-uk-parallax' => array("; $ukit[] = "\t\t\t\t'parallax' ),"; $ukit[] = "\t\t\t'uk-search' => array("; $ukit[] = "\t\t\t\t'search' ),"; $ukit[] = "\t\t\t'uk-slider' => array("; $ukit[] = "\t\t\t\t'slider' ),"; $ukit[] = "\t\t\t'uk-slideset' => array("; $ukit[] = "\t\t\t\t'slideset' ),"; $ukit[] = "\t\t\t'uk-slideshow' => array("; $ukit[] = "\t\t\t\t'slideshow',"; $ukit[] = "\t\t\t\t'slideshow-fx' ),"; $ukit[] = "\t\t\t'uk-sortable' => array("; $ukit[] = "\t\t\t\t'sortable' ),"; $ukit[] = "\t\t\t'data-uk-sticky' => array("; $ukit[] = "\t\t\t\t'sticky' ),"; $ukit[] = "\t\t\t'data-uk-timepicker' => array("; $ukit[] = "\t\t\t\t'timepicker' ),"; $ukit[] = "\t\t\t'data-uk-tooltip' => array("; $ukit[] = "\t\t\t\t'tooltip' ),"; $ukit[] = "\t\t\t'uk-placeholder' => array("; $ukit[] = "\t\t\t\t'placeholder' ),"; $ukit[] = "\t\t\t'uk-dotnav' => array("; $ukit[] = "\t\t\t\t'dotnav' ),"; $ukit[] = "\t\t\t'uk-slidenav' => array("; $ukit[] = "\t\t\t\t'slidenav' ),"; $ukit[] = "\t\t\t'uk-form' => array("; $ukit[] = "\t\t\t\t'form-advanced' ),"; $ukit[] = "\t\t\t'uk-progress' => array("; $ukit[] = "\t\t\t\t'progress' ),"; $ukit[] = "\t\t\t'upload-drop' => array("; $ukit[] = "\t\t\t\t'upload', 'form-file' )"; $ukit[] = "\t\t\t);"; $ukit[] = "\t"; $ukit[] = "\t/**"; $ukit[] = "\t* \tAdd UIKIT Components"; $ukit[] = "\t**/"; $ukit[] = "\tpublic static \$uikit = false;"; $ukit[] = ""; $ukit[] = "\t/**"; $ukit[] = "\t* \tGet UIKIT Components"; $ukit[] = "\t**/"; $ukit[] = "\tpublic static function getUikitComp(\$content,\$classes = array())"; $ukit[] = "\t{"; $ukit[] = "\t\tif (strpos(\$content,'class=\"uk-') !== false)"; $ukit[] = "\t\t{"; $ukit[] = "\t\t\t//" . $this->setLine(__LINE__) . " reset"; $ukit[] = "\t\t\t\$temp = array();"; $ukit[] = "\t\t\tforeach (self::\$uk_components as \$looking => \$add)"; $ukit[] = "\t\t\t{"; $ukit[] = "\t\t\t\tif (strpos(\$content,\$looking) !== false)"; $ukit[] = "\t\t\t\t{"; $ukit[] = "\t\t\t\t\t\$temp[] = \$looking;"; $ukit[] = "\t\t\t\t}"; $ukit[] = "\t\t\t}"; $ukit[] = "\t\t\t//" . $this->setLine(__LINE__) . " make sure uikit is loaded to config"; $ukit[] = "\t\t\tif (strpos(\$content,'class=\"uk-') !== false)"; $ukit[] = "\t\t\t{"; $ukit[] = "\t\t\t\tself::\$uikit = true;"; $ukit[] = "\t\t\t}"; $ukit[] = "\t\t\t//" . $this->setLine(__LINE__) . " sorter"; $ukit[] = "\t\t\tif (self::checkArray(\$temp))"; $ukit[] = "\t\t\t{"; $ukit[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " merger"; $ukit[] = "\t\t\t\tif (self::checkArray(\$classes))"; $ukit[] = "\t\t\t\t{"; $ukit[] = "\t\t\t\t\t\$newTemp = array_merge(\$temp,\$classes);"; $ukit[] = "\t\t\t\t\t\$temp = array_unique(\$newTemp);"; $ukit[] = "\t\t\t\t}"; $ukit[] = "\t\t\t\treturn \$temp;"; $ukit[] = "\t\t\t}"; $ukit[] = "\t\t}\t"; $ukit[] = "\t\tif (self::checkArray(\$classes))"; $ukit[] = "\t\t{"; $ukit[] = "\t\t\treturn \$classes;"; $ukit[] = "\t\t}"; $ukit[] = "\t\treturn false;"; $ukit[] = "\t}"; // return the help methods return implode(PHP_EOL, $ukit); } return ''; } public function setUikitGetMethod() { $method = ''; // only load for uikit version 2 if (2 == $this->uikit || 1 == $this->uikit) { // build uikit get method $method .= PHP_EOL . PHP_EOL . "\t/**"; $method .= PHP_EOL . "\t* Get the uikit needed components"; $method .= PHP_EOL . "\t*"; $method .= PHP_EOL . "\t* @return mixed An array of objects on success."; $method .= PHP_EOL . "\t*"; $method .= PHP_EOL . "\t*/"; $method .= PHP_EOL . "\tpublic function getUikitComp()"; $method .= PHP_EOL . "\t{"; $method .= PHP_EOL . "\t\tif (isset(\$this->uikitComp) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$this->uikitComp))"; $method .= PHP_EOL . "\t\t{"; $method .= PHP_EOL . "\t\t\treturn \$this->uikitComp;"; $method .= PHP_EOL . "\t\t}"; $method .= PHP_EOL . "\t\treturn false;"; $method .= PHP_EOL . "\t}"; } return $method; } public function setMainCustomMehtod(&$body, $nAme, $type) { $method = ''; if (ComponentbuilderHelper::checkString($body)) { // build custom method $method .= PHP_EOL . PHP_EOL . "\t/**"; $method .= PHP_EOL . "\t* Custom Method"; $method .= PHP_EOL . "\t*"; $method .= PHP_EOL . "\t* @return " . $type; $method .= PHP_EOL . "\t*"; $method .= PHP_EOL . "\t*/"; $method .= PHP_EOL . "\tpublic function " . $nAme . "()"; $method .= PHP_EOL . "\t{" . $body; $method .= PHP_EOL . "\t}"; } return $method; } public function setCustomViewCustomItemMethods(&$main_get, $code) { $methods = ''; // first set the needed item/s methods if (ComponentbuilderHelper::checkObject($main_get)) { if (isset($main_get->custom_get) && ComponentbuilderHelper::checkArray($main_get->custom_get)) { foreach ($main_get->custom_get as $get) { // set the site decription switch foreach ($this->cryptionTypes as $cryptionType) { $this->siteDecrypt[$cryptionType][$code] = false; } // set the method defaults $default = $this->setCustomViewMethodDefaults($get, $code); // build custom method $methods .= PHP_EOL . PHP_EOL . "\t/**"; $methods .= PHP_EOL . "\t* Method to get an array of " . $default['name'] . " Objects."; $methods .= PHP_EOL . "\t*"; $methods .= PHP_EOL . "\t* @return mixed An array of " . $default['name'] . " Objects on success, false on failure."; $methods .= PHP_EOL . "\t*"; $methods .= PHP_EOL . "\t*/"; $methods .= PHP_EOL . "\tpublic function get" . $default['methodName'] . "(\$" . $default['on_field'] . ")"; $methods .= PHP_EOL . "\t{###CRYPT###"; $methods .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get a db connection."; $methods .= PHP_EOL . "\t\t\$db = JFactory::getDbo();"; $methods .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $methods .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; $methods .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get from " . $get['selection']['table'] . " as " . $default['as']; $methods .= PHP_EOL . "\t\t" . $get['selection']['select']; $methods .= PHP_EOL . "\t\t" . '$query->from(' . $get['selection']['from'] . ');'; // set the string if ($get['operator'] === 'IN' || $get['operator'] === 'NOT IN') { $methods .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check if \$" . $default['on_field'] . " is an array with values."; $methods .= PHP_EOL . "\t\t\$array = \$" . $default['on_field'] . ";"; $methods .= PHP_EOL . "\t\tif (isset(\$array) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$array, true))"; $methods .= PHP_EOL . "\t\t{"; $methods .= PHP_EOL . "\t\t\t\$query->where('" . $get['join_field'] . " " . $get['operator'] . " (' . implode(',', \$array) . ')');"; $methods .= PHP_EOL . "\t\t}"; $methods .= PHP_EOL . "\t\telse"; $methods .= PHP_EOL . "\t\t{"; $methods .= PHP_EOL . "\t\t\treturn false;"; $methods .= PHP_EOL . "\t\t}"; } else { $methods .= PHP_EOL . "\t\t\$query->where('" . $get['join_field'] . " " . $get['operator'] . " ' . \$db->quote(\$" . $default['on_field'] . "));"; } // check if other queries should be loaded $queryChecker = (isset($this->otherQuery[$this->target][$default['code']][$default['as']]) && ComponentbuilderHelper::checkArray($this->otherQuery[$this->target][$default['code']][$default['as']])) ? $this->otherQuery[$this->target][$default['code']][$default['as']] : ''; if (ComponentbuilderHelper::checkArray($queryChecker)) { foreach ($queryChecker as $query) { $methods .= $query; } } // add any other filter that was set if (isset($this->otherFilter[$this->target][$default['code']][$default['as']]) && ComponentbuilderHelper::checkArray($this->otherFilter[$this->target][$default['code']][$default['as']])) { foreach ($this->otherFilter[$this->target][$default['code']][$default['as']] as $field => $string) { $methods .= $string; } } // add any other where that was set if (isset($this->otherWhere[$this->target][$default['code']][$default['as']]) && ComponentbuilderHelper::checkArray($this->otherWhere[$this->target][$default['code']][$default['as']])) { foreach ($this->otherWhere[$this->target][$default['code']][$default['as']] as $field => $string) { $methods .= $string; } } // add any other order that was set if (isset($this->otherOrder[$this->target][$default['code']][$default['as']]) && ComponentbuilderHelper::checkArray($this->otherOrder[$this->target][$default['code']][$default['as']])) { foreach ($this->otherOrder[$this->target][$default['code']][$default['as']] as $field => $string) { $methods .= $string; } } $methods .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Reset the query using our newly populated query object."; $methods .= PHP_EOL . "\t\t\$db->setQuery(\$query);"; $methods .= PHP_EOL . "\t\t\$db->execute();"; $methods .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " check if there was data returned"; $methods .= PHP_EOL . "\t\tif (\$db->getNumRows())"; $methods .= PHP_EOL . "\t\t{"; // set dispatcher placeholder $methods .= "###DISPATCHER###"; // set decoding of needed fields if (isset($this->siteFieldData['decode'][$default['code']][$get['key']][$default['as']])) { $decodeChecker = $this->siteFieldData['decode'][$default['code']][$get['key']][$default['as']]; } // also filter fields if needed if (isset($this->siteFieldDecodeFilter[$this->target][$default['code']][$get['key']][$default['as']])) { $decodeFilter = $this->siteFieldDecodeFilter[$this->target][$default['code']][$get['key']][$default['as']]; } // set uikit checkers on needed fields if (isset($this->siteFieldData['uikit'][$default['code']][$get['key']][$default['as']])) { $uikitChecker = $this->siteFieldData['uikit'][$default['code']][$get['key']][$default['as']]; } // set contnetprepare on needed fields if (isset($this->siteFieldData['textareas'][$default['code']][$get['key']][$default['as']])) { $contentprepareChecker = $this->siteFieldData['textareas'][$default['code']][$get['key']][$default['as']]; } // set joined values $placeholders = array('###TAB###' => "\t\t", '###STRING###' => '$item'); $joinedChecker = (isset($this->otherJoin[$this->target][$default['code']][$default['as']]) && ComponentbuilderHelper::checkArray($this->otherJoin[$this->target][$default['code']][$default['as']])) ? $this->otherJoin[$this->target][$default['code']][$default['as']] : ''; if ((isset($decodeChecker) && ComponentbuilderHelper::checkArray($decodeChecker)) || (isset($uikitChecker) && ComponentbuilderHelper::checkArray($uikitChecker)) || (isset($decodeFilter) && ComponentbuilderHelper::checkArray($decodeFilter)) || (isset($contentprepareChecker) && ComponentbuilderHelper::checkArray($contentprepareChecker)) || ComponentbuilderHelper::checkArray($joinedChecker)) { $decoder = ''; if (isset($decodeChecker) && ComponentbuilderHelper::checkArray($decodeChecker)) { // also filter fields if needed $decoder = $this->setCustomViewFieldDecode($get, $decodeChecker, '$item', $default['code'], "\t\t"); } $decoder_filter = ''; if (isset($decodeFilter) && ComponentbuilderHelper::checkArray($decodeFilter)) { $decoder_filter = $this->setCustomViewFieldDecodeFilter($get, $decodeFilter, '$item', '$items[$nr]', $default['code'], "\t\t"); } $contentprepare = ''; if (isset($contentprepareChecker) && ComponentbuilderHelper::checkArray($contentprepareChecker)) { $contentprepare = $this->setCustomViewFieldonContentPrepareChecker($get, $contentprepareChecker, '$item', $default['code'], "\t\t"); } $uikit = ''; if (isset($uikitChecker) && ComponentbuilderHelper::checkArray($uikitChecker)) { $uikit = $this->setCustomViewFieldUikitChecker($get, $uikitChecker, '$item', $default['code'], "\t\t"); } $joine = ''; if (ComponentbuilderHelper::checkArray($joinedChecker)) { foreach ($joinedChecker as $joinedString) { $joine .= $this->setPlaceholders($joinedString, $placeholders); } } if (ComponentbuilderHelper::checkString($decoder) || ComponentbuilderHelper::checkString($contentprepare) || ComponentbuilderHelper::checkString($uikit) || ComponentbuilderHelper::checkString($decoder_filter) || ComponentbuilderHelper::checkString($joine)) { $methods .= PHP_EOL . "\t\t\t\$items = \$db->loadObjectList();"; $methods .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Convert the parameter fields into objects."; $methods .= PHP_EOL . "\t\t\tforeach (\$items as \$nr => &\$item)"; $methods .= PHP_EOL . "\t\t\t{"; if (ComponentbuilderHelper::checkString($decoder)) { $methods .= $decoder; } if (ComponentbuilderHelper::checkString($decoder_filter)) { $methods .= $decoder_filter; } if (ComponentbuilderHelper::checkString($contentprepare)) { $methods .= $contentprepare; } if (ComponentbuilderHelper::checkString($uikit)) { $methods .= $uikit; } if (ComponentbuilderHelper::checkString($joine)) { $methods .= $joine; } $methods .= PHP_EOL . "\t\t\t}"; $methods .= PHP_EOL . "\t\t\treturn \$items;"; } else { $methods .= PHP_EOL . "\t\t\treturn \$db->loadObjectList();"; } } else { $methods .= PHP_EOL . "\t\t\treturn \$db->loadObjectList();"; } $methods .= PHP_EOL . "\t\t}"; $methods .= PHP_EOL . "\t\treturn false;"; $methods .= PHP_EOL . "\t}"; // set the script if it was found $Component = $this->fileContentStatic['###Component###']; $script = ''; foreach ($this->cryptionTypes as $cryptionType) { if (isset($this->siteDecrypt[$cryptionType][$code]) && $this->siteDecrypt[$cryptionType][$code]) { $script .= PHP_EOL . "\t\t//".$this->setLine(__LINE__)." Get the ".$cryptionType." encryption."; $script .= PHP_EOL . "\t\t\$".$cryptionType."key = ".$Component."Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t\t//".$this->setLine(__LINE__)." Get the encryption object."; $script .= PHP_EOL . "\t\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);".PHP_EOL; } } $methods = str_replace('###CRYPT###', $script, $methods); } // insure the crypt placeholder is removed $methods = str_replace('###CRYPT###', '', $methods); } } // only update if dispacher placholder is found if (strpos($methods, '###DISPATCHER###') !== false) { // check if the dispather should be added if (!isset($this->JEventDispatcher) || !ComponentbuilderHelper::checkArray($this->JEventDispatcher)) { $this->JEventDispatcher = array('###DISPATCHER###' => ''); } $methods = str_replace(array_keys($this->JEventDispatcher), array_values($this->JEventDispatcher), $methods); } return $methods . PHP_EOL; } public function setCustomViewMethodDefaults($get, $code) { $key = substr(ComponentbuilderHelper::safeString(preg_replace('/[0-9]+/', '', md5($get['key'])), 'F'), 0, 4); $method['on_field'] = (isset($get['on_field'])) ? $this->removeAsDot($get['on_field']) : null; $method['join_field'] = (isset($get['join_field'])) ? ComponentbuilderHelper::safeString($this->removeAsDot($get['join_field'])) : null; $method['Join_field'] = (isset($method['join_field'])) ? ComponentbuilderHelper::safeString($method['join_field'], 'F') : null; $method['name'] = ComponentbuilderHelper::safeString($get['selection']['name'], 'F'); $method['code'] = ComponentbuilderHelper::safeString($code); $method['AS'] = ComponentbuilderHelper::safeString($get['as'], 'U'); $method['as'] = ComponentbuilderHelper::safeString($get['as']); $method['valueName'] = $method['on_field'] . $method['Join_field'] . $method['name'] . $method['AS']; $method['methodName'] = ComponentbuilderHelper::safeString($method['on_field'], 'F') . $method['Join_field'] . $method['name'] . $key . '_' . $method['AS']; // return return $method; } public function getCustomScriptBuilder($first, $second, $prefix = '', $note = null, $unset = null, $default = null, $sufix = '') { // check if there is any custom script $script = ''; if (isset($this->customScriptBuilder[$first][$second]) && ComponentbuilderHelper::checkString($this->customScriptBuilder[$first][$second])) { // add not if set if ($note) { $script .= $note; } $script .= $prefix . str_replace(array_keys($this->placeholders), array_values($this->placeholders), $this->customScriptBuilder[$first][$second]) . $sufix; // clear some memory if ($unset) { unset($this->customScriptBuilder[$first][$second]); } } // if not found return default if (!ComponentbuilderHelper::checkString($script) && $default) { return $default; } return $script; } public function setCustomViewListQuery(&$get, $code, $return = true) { if (ComponentbuilderHelper::checkObject($get)) { if ($get->pagination == 1) { $getItem = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get a db connection."; } else { $getItem = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Make sure all records load, since no pagination allowed."; $getItem .= PHP_EOL . "\t\t\$this->setState('list.limit', 0);"; $getItem .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get a db connection."; } $getItem .= PHP_EOL . "\t\t\$db = JFactory::getDbo();"; $getItem .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $getItem .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; // check if there is any custom script $getItem .= $this->getCustomScriptBuilder($this->target . '_php_getlistquery', $code, '', PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filtering.", true); // set main get query $getItem .= $this->setCustomViewQuery($get->main_get, $code); // setup filters $getItem .= $this->setCustomViewFilter($get->filter, $code); // setup where $getItem .= $this->setCustomViewWhere($get->where, $code); // setup ordering $getItem .= $this->setCustomViewOrder($get->order, $code); if ($return) { // return the query object $getItem .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " return the query object" . PHP_EOL . "\t\treturn \$query;"; } return $getItem; } return PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . "add your custom code here."; } /** * @param $get * @param $code * @return string */ public function setCustomViewGetItems(&$get, $code) { $getItem = ''; // set the site decrypt switch foreach ($this->cryptionTypes as $cryptionType) { $this->siteDecrypt[$cryptionType][$code] = false; } // set the component name $Component = $this->fileContentStatic['###Component###']; // start load the get item if (ComponentbuilderHelper::checkObject($get)) { $getItem .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Insure all item fields are adapted where needed."; $getItem .= PHP_EOL . "\t\tif (" . $Component . "Helper::checkArray(\$items))"; $getItem .= PHP_EOL . "\t\t{"; $getItem .= "###DISPATCHER###"; $getItem .= PHP_EOL . "\t\t\tforeach (\$items as \$nr => &\$item)"; $getItem .= PHP_EOL . "\t\t\t{"; $getItem .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Always create a slug for sef URL's"; $getItem .= PHP_EOL . "\t\t\t\t\$item->slug = (isset(\$item->alias) && isset(\$item->id)) ? \$item->id.':'.\$item->alias : \$item->id;"; if (isset($get->main_get) && ComponentbuilderHelper::checkArray($get->main_get)) { $asBucket = array(); foreach ($get->main_get as $main_get) { if (isset($this->siteFieldData['decode'][$code][$main_get['key']][$main_get['as']])) { $decodeChecker = $this->siteFieldData['decode'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($decodeChecker)) { // set decoding of needed fields $getItem .= $this->setCustomViewFieldDecode($main_get, $decodeChecker, "\$item", $code, "\t\t"); } } // also filter fields if needed if (isset($this->siteFieldDecodeFilter[$this->target][$code][$main_get['key']][$main_get['as']])) { $decodeFilter = $this->siteFieldDecodeFilter[$this->target][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($decodeFilter)) { $getItem .= $this->setCustomViewFieldDecodeFilter($main_get, $decodeFilter, "\$item", '$items[$nr]', $code, "\t\t"); } } if (isset($this->siteFieldData['textareas'][$code][$main_get['key']][$main_get['as']])) { $contentprepareChecker = $this->siteFieldData['textareas'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($contentprepareChecker)) { // set contentprepare checkers on needed fields $getItem .= $this->setCustomViewFieldonContentPrepareChecker($main_get, $contentprepareChecker, "\$item", $code, "\t\t"); } } if (isset($this->siteFieldData['uikit'][$code][$main_get['key']][$main_get['as']])) { $uikitChecker = $this->siteFieldData['uikit'][$code][$main_get['key']][$main_get['as']]; if (ComponentbuilderHelper::checkArray($uikitChecker)) { // set uikit checkers on needed fields $getItem .= $this->setCustomViewFieldUikitChecker($main_get, $uikitChecker, "\$item", $code, "\t\t"); } } $asBucket[] = $main_get['as']; } } // only update if dispacher placholder is found if (strpos($getItem, '###DISPATCHER###') !== false) { // check if the dispather should be added if (!isset($this->JEventDispatcher) || !ComponentbuilderHelper::checkArray($this->JEventDispatcher)) { $this->JEventDispatcher = array('###DISPATCHER###' => ''); } $getItem = str_replace(array_keys($this->JEventDispatcher), array_values($this->JEventDispatcher), $getItem); } // setup Globals $getItem .= $this->setCustomViewGlobals($get->global, '$item', $asBucket, "\t\t"); // setup the custom gets that returns multipal values $getItem .= $this->setCustomViewCustomJoin($get->custom_get, "\$item", $code, $asBucket, "\t\t"); // set calculations if ($get->addcalculation == 1) { $get->php_calculation = (array) explode(PHP_EOL, $get->php_calculation); if (ComponentbuilderHelper::checkArray($get->php_calculation)) { $_tmp = PHP_EOL . "\t\t\t\t" . implode(PHP_EOL . "\t\t\t\t", $get->php_calculation); $getItem .= $this->setPlaceholders($_tmp, $this->placeholders); } } $getItem .= PHP_EOL . "\t\t\t}"; $getItem .= PHP_EOL . "\t\t}"; // set after items php if (isset($get->add_php_after_getitems) && $get->add_php_after_getitems == 1 && isset($get->php_after_getitems) && ComponentbuilderHelper::checkString($get->php_after_getitems)) { $getItem .= $this->setPlaceholders($get->php_after_getitems, $this->placeholders); } // remove empty foreach if (strlen($getItem) <= 100) { $getItem = PHP_EOL; } } // set the script if found $script = ''; foreach ($this->cryptionTypes as $cryptionType) { if ($this->siteDecrypt[$cryptionType][$code]) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the ".$cryptionType." encryption."; $script .= PHP_EOL . "\t\t\$".$cryptionType."key = " . $Component . "Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the encryption object."; $script .= PHP_EOL . "\t\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);"; } } return $script.$getItem; } public function setCustomViewDisplayMethod(&$view) { $method = ''; if (isset($view['settings']->main_get) && ComponentbuilderHelper::checkObject($view['settings']->main_get)) { if ($view['settings']->main_get->gettype == 1) { // for single views $method .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Initialise variables."; $method .= PHP_EOL . "\t\t\$this->item = \$this->get('Item');"; } elseif ($view['settings']->main_get->gettype == 2) { // for list views $method .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Initialise variables."; $method .= PHP_EOL . "\t\t\$this->items = \$this->get('Items');"; // only add if pagination is requered if ($view['settings']->main_get->pagination == 1) { $method .= PHP_EOL . "\t\t\$this->pagination = \$this->get('Pagination');"; } // add id to list view if (isset($this->customAdminViewListId[$view['settings']->code])) { // ###HIDDEN_INPUT_VALUES### $this->fileContentDynamic[$view['settings']->code]['###HIDDEN_INPUT_VALUES###'] = PHP_EOL . "\t" . ''; } else { // also set the input value ###HIDDEN_INPUT_VALUES### $this->fileContentDynamic[$view['settings']->code]['###HIDDEN_INPUT_VALUES###'] = ''; } } // add the custom get methods if (isset($view['settings']->custom_get) && ComponentbuilderHelper::checkArray($view['settings']->custom_get)) { foreach ($view['settings']->custom_get as $custom_get) { $custom_get_name = str_replace('get', '', $custom_get->getcustom); $method .= PHP_EOL . "\t\t\$this->" . ComponentbuilderHelper::safeString($custom_get_name) . " = \$this->get('" . $custom_get_name . "');"; } } // add custom script if ($view['settings']->add_php_jview_display == 1) { $view['settings']->php_jview_display = (array) explode(PHP_EOL, $view['settings']->php_jview_display); if (ComponentbuilderHelper::checkArray($view['settings']->php_jview_display)) { $_tmp = PHP_EOL . "\t\t" . implode(PHP_EOL . "\t\t", $view['settings']->php_jview_display); $method .= $this->setPlaceholders($_tmp, $this->placeholders); } } if ('site' === $this->target) { $method .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the toolbar"; $method .= PHP_EOL . "\t\t\$this->addToolBar();"; $method .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " set the document"; $method .= PHP_EOL . "\t\t\$this->_prepareDocument();"; } elseif ('custom_admin' === $this->target) { $method .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " We don't need toolbar in the modal window."; $method .= PHP_EOL . "\t\tif (\$this->getLayout() !== 'modal')"; $method .= PHP_EOL . "\t\t{"; $method .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " add the tool bar"; $method .= PHP_EOL . "\t\t\t\$this->addToolBar();"; $method .= PHP_EOL . "\t\t}"; $method .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " set the document"; $method .= PHP_EOL . "\t\t\$this->setDocument();"; } $method .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check for errors."; $method .= PHP_EOL . "\t\tif (count(\$errors = \$this->get('Errors')))"; $method .= PHP_EOL . "\t\t{"; $method .= PHP_EOL . "\t\t\tthrow new Exception(implode(" . '"\n", $errors), 500);'; $method .= PHP_EOL . "\t\t}"; $method .= PHP_EOL . PHP_EOL . "\t\tparent::display(\$tpl);"; } return $method; } public function setPrepareDocument(&$view) { // ensure correct target is set $TARGET = ComponentbuilderHelper::safeString($this->target, 'U'); // set libraries ###'.$TARGET.'_LIBRARIES_LOADER### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_LIBRARIES_LOADER###'] = $this->setLibrariesLoader($view); // set uikit ###'.$TARGET.'_UIKIT_LOADER### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_UIKIT_LOADER###'] = $this->setUikitLoader($view); // set Google Charts ###'.$TARGET.'_GOOGLECHART_LOADER### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_GOOGLECHART_LOADER###'] = $this->setGoogleChartLoader($view); // set Footable ###FOOTABLE_LOADER### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_FOOTABLE_LOADER###'] = $this->setFootableScriptsLoader($view); // set metadata ###DOCUMENT_METADATA### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_DOCUMENT_METADATA###'] = $this->setDocumentMetadata($view); // set custom php scripting ###DOCUMENT_CUSTOM_PHP### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_DOCUMENT_CUSTOM_PHP###'] = $this->setDocumentCustomPHP($view); // set custom css ###DOCUMENT_CUSTOM_CSS### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_DOCUMENT_CUSTOM_CSS###'] = $this->setDocumentCustomCSS($view); // set custom javascript ###DOCUMENT_CUSTOM_JS### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_DOCUMENT_CUSTOM_JS###'] = $this->setDocumentCustomJS($view); // set custom css file ###VIEWCSS### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_VIEWCSS###'] = $this->setCustomCSS($view); // set the custom buttons ###CUSTOM_BUTTONS### $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_CUSTOM_BUTTONS###'] = $this->setCustomButtons($view); // only set the custom get form method if site target if ('site' === $this->target) { // set the custom get form method ###SITE_CUSTOM_GET_FORM_METHOD### $this->fileContentDynamic[$view['settings']->code]['###SITE_CUSTOM_GET_FORM_METHOD###'] = $this->setCustomGetForm($view); } // see if we should add get modules to the view.html $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_GET_MODULE###'] = $this->setGetModules($view, $TARGET); // set a JavaScript file if needed $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_LIBRARIES_LOADER###'] .= $this->setJavaScriptFile($view, $TARGET); } public function setGetModules($view, $TARGET) { if (isset($this->getModule[$this->target][$view['settings']->code]) && $this->getModule[$this->target][$view['settings']->code]) { $addModule = array(); $addModule[] = PHP_EOL . PHP_EOL . "\t/**"; $addModule[] = "\t * Get the modules published in a position"; $addModule[] = "\t */"; $addModule[] = "\tpublic function getModules(\$position, \$seperator = '', \$class = '')"; $addModule[] = "\t{"; $addModule[] = "\t\t//" . $this->setLine(__LINE__) . " set default"; $addModule[] = "\t\t\$found = false;"; $addModule[] = "\t\t//" . $this->setLine(__LINE__) . " check if we aleady have these modules loaded"; $addModule[] = "\t\tif (isset(\$this->setModules[\$position]))"; $addModule[] = "\t\t{"; $addModule[] = "\t\t\t\$found = true;"; $addModule[] = "\t\t}"; $addModule[] = "\t\telse"; $addModule[] = "\t\t{"; $addModule[] = "\t\t\t//" . $this->setLine(__LINE__) . " this is where you want to load your module position"; $addModule[] = "\t\t\t\$modules = JModuleHelper::getModules(\$position);"; $addModule[] = "\t\t\tif (\$modules)"; $addModule[] = "\t\t\t{"; $addModule[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " set the place holder"; $addModule[] = "\t\t\t\t\$this->setModules[\$position] = array();"; $addModule[] = "\t\t\t\tforeach(\$modules as \$module)"; $addModule[] = "\t\t\t\t{"; $addModule[] = "\t\t\t\t\t\$this->setModules[\$position][] = JModuleHelper::renderModule(\$module);"; $addModule[] = "\t\t\t\t}"; $addModule[] = "\t\t\t\t\$found = true;"; $addModule[] = "\t\t\t}"; $addModule[] = "\t\t}"; $addModule[] = "\t\t//" . $this->setLine(__LINE__) . " check if modules were found"; $addModule[] = "\t\tif (\$found && isset(\$this->setModules[\$position]) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$this->setModules[\$position]))"; $addModule[] = "\t\t{"; $addModule[] = "\t\t\t//" . $this->setLine(__LINE__) . " set class"; $addModule[] = "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkString(\$class))"; $addModule[] = "\t\t\t{"; $addModule[] = "\t\t\t\t\$class = ' class=\"'.\$class.'\" ';"; $addModule[] = "\t\t\t}"; $addModule[] = "\t\t\t//" . $this->setLine(__LINE__) . " set seperating return values"; $addModule[] = "\t\t\tswitch(\$seperator)"; $addModule[] = "\t\t\t{"; $addModule[] = "\t\t\t\tcase 'none':"; $addModule[] = "\t\t\t\t\treturn implode('', \$this->setModules[\$position]);"; $addModule[] = "\t\t\t\t\tbreak;"; $addModule[] = "\t\t\t\tcase 'div':"; $addModule[] = "\t\t\t\t\treturn ''.implode('', \$this->setModules[\$position]).'';"; $addModule[] = "\t\t\t\t\tbreak;"; $addModule[] = "\t\t\t\tcase 'list':"; $addModule[] = "\t\t\t\t\treturn '
  • '.implode('
  • ', \$this->setModules[\$position]).'
  • ';"; $addModule[] = "\t\t\t\t\tbreak;"; $addModule[] = "\t\t\t\tcase 'array':"; $addModule[] = "\t\t\t\tcase 'Array':"; $addModule[] = "\t\t\t\t\treturn \$this->setModules[\$position];"; $addModule[] = "\t\t\t\t\tbreak;"; $addModule[] = "\t\t\t\tdefault:"; $addModule[] = "\t\t\t\t\treturn implode('
    ', \$this->setModules[\$position]);"; $addModule[] = "\t\t\t\t\tbreak;"; $addModule[] = "\t\t\t\t"; $addModule[] = "\t\t\t}"; $addModule[] = "\t\t}"; $addModule[] = "\t\treturn false;"; $addModule[] = "\t}"; $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_GET_MODULE_JIMPORT###'] = PHP_EOL . "jimport('joomla.application.module.helper');"; return implode(PHP_EOL, $addModule); } $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_GET_MODULE_JIMPORT###'] = ''; return ''; } public function setCustomGetForm(&$view) { return ''; } public function setDocumentCustomPHP(&$view) { if ($view['settings']->add_php_document == 1) { $view['settings']->php_document = (array) explode(PHP_EOL, $view['settings']->php_document); if (ComponentbuilderHelper::checkArray($view['settings']->php_document)) { $_tmp = PHP_EOL . "\t\t" . implode(PHP_EOL . "\t\t", $view['settings']->php_document); return $this->setPlaceholders($_tmp, $this->placeholders); } } return ''; } public function setCustomButtons(&$view, $type = 1, $tab = '') { // ensure correct target is set $TARGET = ComponentbuilderHelper::safeString($this->target, 'U'); if (1 == $type || 2 == $type) { if (1 == $type) { $viewName = $view['settings']->code; } if (2 == $type) { $viewName = ComponentbuilderHelper::safeString($view['settings']->name_single); } // set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER### $this->fileContentDynamic[$viewName]['###' . $TARGET . '_CUSTOM_BUTTONS_CONTROLLER###'] = ''; // set the custom buttons ###CUSTOM_BUTTONS_METHOD### $this->fileContentDynamic[$viewName]['###' . $TARGET . '_CUSTOM_BUTTONS_METHOD###'] = ''; } elseif (3 == $type) { // set the names $viewName = ComponentbuilderHelper::safeString($view['settings']->name_single); $viewsName = ComponentbuilderHelper::safeString($view['settings']->name_list); // set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER_LIST### $this->fileContentDynamic[$viewsName]['###' . $TARGET . '_CUSTOM_BUTTONS_CONTROLLER_LIST###'] = ''; // set the custom buttons ###CUSTOM_BUTTONS_METHOD_LIST### $this->fileContentDynamic[$viewsName]['###' . $TARGET . '_CUSTOM_BUTTONS_METHOD_LIST###'] = ''; } // if site add buttons to view if ($this->target === 'site') { // set the custom buttons ###SITE_TOP_BUTTON### $this->fileContentDynamic[$viewName]['###SITE_TOP_BUTTON###'] = ''; // set the custom buttons ###SITE_BOTTOM_BUTTON### $this->fileContentDynamic[$viewName]['###SITE_BOTTOM_BUTTON###'] = ''; // load into place switch ($view['settings']->button_position) { case 1: // set buttons to top right of the view $this->fileContentDynamic[$viewName]['###SITE_TOP_BUTTON###'] = '
    toolbar->render(); ?>
    '; break; case 2: // set buttons to top left of the view $this->fileContentDynamic[$viewName]['###SITE_TOP_BUTTON###'] = 'toolbar->render(); ?>'; break; case 3: // set buttons to buttom right of the view $this->fileContentDynamic[$viewName]['###SITE_BOTTOM_BUTTON###'] = '
    toolbar->render(); ?>
    '; break; case 4: // set buttons to buttom left of the view $this->fileContentDynamic[$viewName]['###SITE_BOTTOM_BUTTON###'] = 'toolbar->render(); ?>'; break; case 5: // set buttons to buttom left of the view $this->placeholders['[[[SITE_TOOLBAR]]]'] = 'toolbar->render(); ?>'; break; } } // check if custom button should be added if (isset($view['settings']->add_custom_button) && $view['settings']->add_custom_button == 1) { $buttons = array(); $this->onlyFunctionButton = array(); $functionNames = array(); if (isset($view['settings']->custom_buttons) && ComponentbuilderHelper::checkArray($view['settings']->custom_buttons)) { foreach ($view['settings']->custom_buttons as $custom_button) { if (3 !== $type && ($custom_button['target'] != 2 || $this->target === 'site')) { // Load to lang $keyLang = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($custom_button['name'], 'U'); $keyCode = ComponentbuilderHelper::safeString($custom_button['name']); $this->langContent[$this->lang][$keyLang] = trim($custom_button['name']); // add cpanel button TODO does not work well on site with permissions if ($custom_button['target'] == 2) { $buttons[] = "\t" . $tab . "\tif (\$this->user->authorise('" . $viewName . "." . $keyCode . "'))"; } else { $buttons[] = "\t" . $tab . "\tif (\$this->canDo->get('" . $viewName . "." . $keyCode . "'))"; } $buttons[] = "\t" . $tab . "\t{"; $buttons[] = "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " add " . $custom_button['name'] . " button."; $buttons[] = "\t" . $tab . "\t\tJToolBarHelper::custom('" . $viewName . "." . $custom_button['method'] . "', '" . $custom_button['icomoon'] . "', '', '" . $keyLang . "', false);"; $buttons[] = "\t" . $tab . "\t}"; } // load the list button elseif (3 == $type && $custom_button['target'] != 1) { // Load to lang $keyLang = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($custom_button['name'], 'U'); $keyCode = ComponentbuilderHelper::safeString($custom_button['name']); $this->langContent[$this->lang][$keyLang] = trim($custom_button['name']); // add cpanel button TODO does not work well on site with permissions if (isset($custom_button['type']) && $custom_button['type'] == 2) { if (!isset($this->onlyFunctionButton[$viewsName])) { $this->onlyFunctionButton[$viewsName] = array(); } $this->onlyFunctionButton[$viewsName][] = "\t" . $tab . "if (\$this->user->authorise('" . $viewName . "." . $keyCode . "', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $this->onlyFunctionButton[$viewsName][] = "\t" . $tab . "{"; $this->onlyFunctionButton[$viewsName][] = "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " add " . $custom_button['name'] . " button."; $this->onlyFunctionButton[$viewsName][] = "\t" . $tab . "\tJToolBarHelper::custom('" . $viewsName . "." . $custom_button['method'] . "', '" . $custom_button['icomoon'] . "', '', '" . $keyLang . "', false);"; $this->onlyFunctionButton[$viewsName][] = "\t" . $tab . "}"; } else { $buttons[] = "\t" . $tab . "\tif (\$this->user->authorise('" . $viewName . "." . $keyCode . "', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $buttons[] = "\t" . $tab . "\t{"; $buttons[] = "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " add " . $custom_button['name'] . " button."; $buttons[] = "\t" . $tab . "\t\tJToolBarHelper::custom('" . $viewsName . "." . $custom_button['method'] . "', '" . $custom_button['icomoon'] . "', '', '" . $keyLang . "', false);"; $buttons[] = "\t" . $tab . "\t}"; } } } } // load the model and controller if (3 == $type) { // insure the controller and model strings are added if (isset($view['settings']->php_controller_list) && ComponentbuilderHelper::checkString($view['settings']->php_controller_list) && $view['settings']->php_controller_list != '//') { // set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER### $this->fileContentDynamic[$viewsName]['###' . $TARGET . '_CUSTOM_BUTTONS_CONTROLLER_LIST###'] = PHP_EOL . PHP_EOL . $this->setPlaceholders($view['settings']->php_controller_list, $this->placeholders); } // load the model if (isset($view['settings']->php_model_list) && ComponentbuilderHelper::checkString($view['settings']->php_model_list) && $view['settings']->php_model_list != '//') { // set the custom buttons ###CUSTOM_BUTTONS_METHOD### $this->fileContentDynamic[$viewsName]['###' . $TARGET . '_CUSTOM_BUTTONS_METHOD_LIST###'] = PHP_EOL . PHP_EOL . $this->setPlaceholders($view['settings']->php_model_list, $this->placeholders); } } else { // insure the controller and model strings are added if (ComponentbuilderHelper::checkString($view['settings']->php_controller) && $view['settings']->php_controller != '//') { // set the custom buttons ###CUSTOM_BUTTONS_CONTROLLER### $this->fileContentDynamic[$viewName]['###' . $TARGET . '_CUSTOM_BUTTONS_CONTROLLER###'] = PHP_EOL . PHP_EOL . $this->setPlaceholders($view['settings']->php_controller, $this->placeholders); if ('site' === $this->target) { // add the controller for this view // build the file $target = array($this->target => $viewName); $this->buildDynamique($target, 'custom_form'); ###GET_FORM_CUSTOM### } } // load the model if (ComponentbuilderHelper::checkString($view['settings']->php_model) && $view['settings']->php_model != '//') { // set the custom buttons ###CUSTOM_BUTTONS_METHOD### $this->fileContentDynamic[$viewName]['###' . $TARGET . '_CUSTOM_BUTTONS_METHOD###'] = PHP_EOL . PHP_EOL . $this->setPlaceholders($view['settings']->php_model, $this->placeholders); } } // return buttons if they were build if (ComponentbuilderHelper::checkArray($buttons)) { return PHP_EOL . implode(PHP_EOL, $buttons); } } return ''; } public function setFunctionOnlyButtons($viewName_list) { // return buttons if they were build if (isset($this->onlyFunctionButton[$viewName_list]) && ComponentbuilderHelper::checkArray($this->onlyFunctionButton[$viewName_list])) { return PHP_EOL . implode(PHP_EOL, $this->onlyFunctionButton[$viewName_list]); } return ''; } public function setCustomCSS(&$view) { if ($view['settings']->add_css == 1) { if (ComponentbuilderHelper::checkString($view['settings']->css)) { return $this->setPlaceholders($view['settings']->css, $this->placeholders); } } return ''; } public function setDocumentCustomCSS(&$view) { if ($view['settings']->add_css_document == 1) { $view['settings']->css_document = (array) explode(PHP_EOL, $view['settings']->css_document); if (ComponentbuilderHelper::checkArray($view['settings']->css_document)) { $script = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the Custom CSS script to view" . PHP_EOL . "\t\t" . '$this->document->addStyleDeclaration("'; $cssDocument = PHP_EOL . "\t\t\t" . str_replace('"', '\"', implode(PHP_EOL . "\t\t\t", $view['settings']->css_document)); return $script . $this->setPlaceholders($cssDocument, $this->placeholders) . PHP_EOL . "\t\t" . '");'; } } return ''; } public function setJavaScriptFile(&$view, $TARGET) { if ($view['settings']->add_javascript_file == 1 && ComponentbuilderHelper::checkString($view['settings']->javascript_file)) { // get dates $created = $this->getCreatedDate($view); $modified = $this->getLastModifiedDate($view); // add file to view $target = array($this->target => $view['settings']->code); $config = array('###CREATIONDATE###' => $created, '###BUILDDATE###' => $modified, '###VERSION###' => $view['settings']->version); $this->buildDynamique($target, 'javascript_file', false, $config); // set path if ('site' === $this->target) { $path = '/components/com_' . $this->fileContentStatic['###component###'] . '/assets/js/' . $view['settings']->code . '.js'; } else { $path = '/administrator/components/com_' . $this->fileContentStatic['###component###'] . '/assets/js/' . $view['settings']->code . '.js'; } // add script to file $this->fileContentDynamic[$view['settings']->code]['###' . $TARGET . '_JAVASCRIPT_FILE###'] = $this->setPlaceholders($view['settings']->javascript_file, $this->placeholders); // add script to view return PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add View JavaScript File" . PHP_EOL . "\t\t" . $this->setIncludeLibScript($path); } return ''; } public function setDocumentCustomJS(&$view) { if ($view['settings']->add_js_document == 1) { $view['settings']->js_document = (array) explode(PHP_EOL, $view['settings']->js_document); if (ComponentbuilderHelper::checkArray($view['settings']->js_document)) { $script = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the Custom JS script to view" . PHP_EOL . "\t\t" . '$this->document->addScriptDeclaration("'; $jsDocument = PHP_EOL . "\t\t\t" . str_replace('"', '\"', implode(PHP_EOL . "\t\t\t", $view['settings']->js_document)); return $script . $this->setPlaceholders($jsDocument, $this->placeholders) . PHP_EOL . "\t\t" . '");'; } } return ''; } public function setFootableScriptsLoader(&$view) { if (isset($this->footableScripts[$this->target][$view['settings']->code]) && $this->footableScripts[$this->target][$view['settings']->code]) { return $this->setFootableScripts(false); } return ''; } public function setDocumentMetadata(&$view) { if ($view['settings']->main_get->gettype == 1 && isset($view['metadata']) && $view['metadata'] == 1) { return $this->setMetadataItem(); } elseif (isset($view['metadata']) && $view['metadata'] == 1) { // lets check if we have a custom get method that has the same name as the view // if we do then it posibly can be that the metadata is loaded via that method // and we can load the full metadata structure with its vars if (isset($view['settings']->custom_get) && ComponentbuilderHelper::checkArray($view['settings']->custom_get)) { $found = false; $searchFor = 'get' . $view['settings']->Code; foreach ($view['settings']->custom_get as $custom_get) { if ($searchFor == $custom_get->getcustom) { $found = true; break; } } // now lets see if ($found) { return $this->setMetadataItem($view['settings']->code); } else { return $this->setMetadataList(); } } else { return $this->setMetadataList(); } } return ''; } public function setMetadataItem($item = 'item') { $meta = array(); $meta[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " load the meta description"; $meta[] = "\t\tif (isset(\$this->" . $item . "->metadesc) && \$this->" . $item . "->metadesc)"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setDescription(\$this->" . $item . "->metadesc);"; $meta[] = "\t\t}"; $meta[] = "\t\telseif (\$this->params->get('menu-meta_description'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setDescription(\$this->params->get('menu-meta_description'));"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " load the key words if set"; $meta[] = "\t\tif (isset(\$this->" . $item . "->metakey) && \$this->" . $item . "->metakey)"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('keywords', \$this->" . $item . "->metakey);"; $meta[] = "\t\t}"; $meta[] = "\t\telseif (\$this->params->get('menu-meta_keywords'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('keywords', \$this->params->get('menu-meta_keywords'));"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " check the robot params"; $meta[] = "\t\tif (isset(\$this->" . $item . "->robots) && \$this->" . $item . "->robots)"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('robots', \$this->" . $item . "->robots);"; $meta[] = "\t\t}"; $meta[] = "\t\telseif (\$this->params->get('robots'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('robots', \$this->params->get('robots'));"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " check if autor is to be set"; $meta[] = "\t\tif (isset(\$this->" . $item . "->created_by) && \$this->params->get('MetaAuthor') == '1')"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetaData('author', \$this->" . $item . "->created_by);"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " check if metadata is available"; $meta[] = "\t\tif (isset(\$this->" . $item . "->metadata) && \$this->" . $item . "->metadata)"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$mdata = json_decode(\$this->" . $item . "->metadata,true);"; $meta[] = "\t\t\tforeach (\$mdata as \$k => \$v)"; $meta[] = "\t\t\t{"; $meta[] = "\t\t\t\tif (\$v)"; $meta[] = "\t\t\t\t{"; $meta[] = "\t\t\t\t\t\$this->document->setMetadata(\$k, \$v);"; $meta[] = "\t\t\t\t}"; $meta[] = "\t\t\t}"; $meta[] = "\t\t}"; return implode(PHP_EOL, $meta); } public function setMetadataList() { $meta = array(); $meta[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " load the meta description"; $meta[] = "\t\tif (\$this->params->get('menu-meta_description'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setDescription(\$this->params->get('menu-meta_description'));"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " load the key words if set"; $meta[] = "\t\tif (\$this->params->get('menu-meta_keywords'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('keywords', \$this->params->get('menu-meta_keywords'));"; $meta[] = "\t\t}"; $meta[] = "\t\t//" . $this->setLine(__LINE__) . " check the robot params"; $meta[] = "\t\tif (\$this->params->get('robots'))"; $meta[] = "\t\t{"; $meta[] = "\t\t\t\$this->document->setMetadata('robots', \$this->params->get('robots'));"; $meta[] = "\t\t}"; return implode(PHP_EOL, $meta); } public function setGoogleChartLoader(&$view) { if (isset($this->googleChart[$this->target][$view['settings']->code]) && $this->googleChart[$this->target][$view['settings']->code]) { $chart = array(); $chart[] = PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " add the google chart builder class."; $chart[] = "\t\trequire_once JPATH_COMPONENT_ADMINISTRATOR.'/helpers/chartbuilder.php';"; $chart[] = "\t\t//" . $this->setLine(__LINE__) . " load the google chart js."; $chart[] = "\t\t\$this->document->addScript(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/js/google.jsapi.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $chart[] = "\t\t\$this->document->addScript('https://canvg.googlecode.com/svn/trunk/rgbcolor.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $chart[] = "\t\t\$this->document->addScript('https://canvg.googlecode.com/svn/trunk/canvg.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; return implode(PHP_EOL, $chart); } return ''; } public function setLibrariesLoader($view) { // reset bucket $setter = ''; // allways load these in $setter .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " always make sure jquery is loaded."; $setter .= PHP_EOL . "\t\tJHtml::_('jquery.framework');"; $setter .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Load the header checker class."; if ($this->target === 'site') { $setter .= PHP_EOL . "\t\trequire_once( JPATH_COMPONENT_SITE.'/helpers/headercheck.php' );"; } else { $setter .= PHP_EOL . "\t\trequire_once( JPATH_COMPONENT_ADMINISTRATOR.'/helpers/headercheck.php' );"; } $setter .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Initialize the header checker."; $setter .= PHP_EOL . "\t\t\$HeaderCheck = new " . $this->fileContentStatic['###component###'] . "HeaderCheck;"; // check if this view should get libraries if (isset($this->libManager[$this->target][$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->libManager[$this->target][$view['settings']->code])) { foreach ($this->libManager[$this->target][$view['settings']->code] as $id => $true) { if (isset($this->libraries[$id]) && ComponentbuilderHelper::checkObject($this->libraries[$id]) && isset($this->libraries[$id]->document) && ComponentbuilderHelper::checkString($this->libraries[$id]->document)) { $setter .= PHP_EOL . PHP_EOL . $this->setPlaceholders( str_replace('$document->', '$this->document->', $this->libraries[$id]->document), $this->placeholders); } elseif (isset($this->libraries[$id]) && ComponentbuilderHelper::checkObject($this->libraries[$id]) && isset($this->libraries[$id]->how)) { $setter .= $this->setLibraryDocument($id); } } } return $setter; } protected function setLibraryDocument($id) { if (2 == $this->libraries[$id]->how && isset($this->libraries[$id]->conditions) && ComponentbuilderHelper::checkArray($this->libraries[$id]->conditions)) { // build document with the conditions values $this->setLibraryDocConditions($id, $this->setLibraryScripts($id, false)); } elseif (1 == $this->libraries[$id]->how) { // build document to allways add all files and urls $this->setLibraryScripts($id); } // check if the document was build if (isset($this->libraries[$id]->document) && ComponentbuilderHelper::checkString($this->libraries[$id]->document)) { return PHP_EOL . PHP_EOL . $this->libraries[$id]->document; } return ''; } protected function setLibraryDocConditions($id, $scripts) { $document = ''; // Start script builder for library files if (!isset($this->libwarning[$id])) { $this->app->enqueueMessage(JText::sprintf('The conditional script builder for %s is not ready, sorry!', $this->libraries[$id]->name), 'warning'); // set the warning only once $this->libwarning[$id] = true; } // if there was any code added to document then set globaly if (ComponentbuilderHelper::checkString($document)) { $this->libraries[$id]->document = $document; } } protected function setLibraryScripts($id, $buildDoc = true) { $scripts = array(); // load the urls if found if (isset($this->libraries[$id]->urls) && ComponentbuilderHelper::checkArray($this->libraries[$id]->urls)) { // set all the files foreach ($this->libraries[$id]->urls as $url) { // if local path is set, then use it first if (isset($url['path'])) { // update the root path $path = $this->getScriptRootPath($url['path']); // load document script $scripts[md5($url['path'])] = $this->setIncludeLibScript($path); // load url also if not building document if (!$buildDoc) { // load document script $scripts[md5($url['url'])] = $this->setIncludeLibScript($url['url'], false); } } else { // load document script $scripts[md5($url['url'])] = $this->setIncludeLibScript($url['url'], false); } } } // load the local files if found if (isset($this->libraries[$id]->files) && ComponentbuilderHelper::checkArray($this->libraries[$id]->files)) { // set all the files foreach ($this->libraries[$id]->files as $file) { $path = '/' . trim($file['path'], '/'); // check if path has new file name (has extetion) $pathInfo = pathinfo($path); // update the root path $_path = $this->getScriptRootPath($path); if (isset($pathInfo['extension']) && $pathInfo['extension']) { // load document script $scripts[md5($path)] = $this->setIncludeLibScript($_path, false, $pathInfo); } else { // load document script $scripts[md5($path . '/' . trim($file['file'], '/'))] = $this->setIncludeLibScript($_path . '/' . trim($file['file'], '/')); } } } // load the local folders if found if (isset($this->libraries[$id]->folders) && ComponentbuilderHelper::checkArray($this->libraries[$id]->folders)) { // get all the file paths foreach ($this->libraries[$id]->folders as $folder) { if (isset($folder['path']) && isset($folder['folder'])) { $path = '/' . trim($folder['path'], '/'); if (isset($folder['rename']) && 1 == $folder['rename']) { if ($_paths = ComponentbuilderHelper::getAllFilePaths($this->componentPath . $path)) { $files[$path] = $_paths; } } else { $path = $path . '/' . trim($folder['folder'], '/'); if ($_paths = ComponentbuilderHelper::getAllFilePaths($this->componentPath . $path)) { $files[$path] = $_paths; } } } } // now load the script foreach ($files as $root => $paths) { // update the root path $_root = $this->getScriptRootPath($root); // load per path foreach ($paths as $path) { $scripts[md5($root . '/' . trim($path, '/'))] = $this->setIncludeLibScript($_root . '/' . trim($path, '/')); } } } // if there was any code added to document then set globaly if ($buildDoc && ComponentbuilderHelper::checkArray($scripts)) { $this->libraries[$id]->document = "\t\t//" . $this->setLine(__LINE__) . " always load these files." . PHP_EOL . "\t\t" . implode(PHP_EOL . "\t\t", $scripts); // success return true; } elseif (ComponentbuilderHelper::checkArray($scripts)) { return $scripts; } return false; } protected function setIncludeLibScript($path, $local = true, $pathInfo = false) { // insure we have the path info if (!$pathInfo) { $pathInfo = pathinfo($path); } // set the local string $JURI = ''; if ($local) { $JURI = 'JURI::root(true) . '; } // use the path info to build the script if (isset($pathInfo['extension']) && $pathInfo['extension']) { switch ($pathInfo['extension']) { case 'js': return '$this->document->addScript(' . $JURI . '"' . $path . '", (' . $this->fileContentStatic['###Component###'] . 'Helper::jVersion()->isCompatible("3.8.0")) ? array("version" => "auto") : "text/javascript");'; break; case 'css': case 'less': return '$this->document->addStyleSheet(' . $JURI . '"' . $path . '", (' . $this->fileContentStatic['###Component###'] . 'Helper::jVersion()->isCompatible("3.8.0")) ? array("version" => "auto") : "text/css");'; break; case 'php': if (strpos($path, 'http') === false) { return 'require_once("' . $path . '");'; } break; } } return ''; } protected function getScriptRootPath($root) { if (strpos($root, '/media/') !== false && strpos($root, '/admin/') === false && strpos($root, '/site/') === false) { return str_replace('/media/', '/media/com_' . $this->fileContentStatic['###component###'] . '/', $root); } elseif (strpos($root, '/media/') === false && strpos($root, '/admin/') !== false && strpos($root, '/site/') === false) { return str_replace('/admin/', '/administrator/components/com_' . $this->fileContentStatic['###component###'] . '/', $root); } elseif (strpos($root, '/media/') === false && strpos($root, '/admin/') === false && strpos($root, '/site/') !== false) { return str_replace('/site/', '/components/com_' . $this->fileContentStatic['###component###'] . '/', $root); } return $root; } public function setUikitLoader(&$view) { // reset setter $setter = ''; // load the defaults needed if ($this->uikit > 0) { $setter .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Load uikit options."; $setter .= PHP_EOL . "\t\t\$uikit = \$this->params->get('uikit_load');"; $setter .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set script size."; $setter .= PHP_EOL . "\t\t\$size = \$this->params->get('uikit_min');"; $tabV = ""; // if both versions should be loaded then add some more logic if (2 == $this->uikit) { $setter .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Load uikit version."; $setter .= PHP_EOL . "\t\t\$uikitVersion = \$this->params->get('uikit_version', 2);"; $setter .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Use Uikit Version 2"; $setter .= PHP_EOL . "\t\tif (2 == \$uikitVersion)"; $setter .= PHP_EOL . "\t\t{"; $tabV = "\t"; } } // load the defaults needed if (2 == $this->uikit || 1 == $this->uikit) { $setter .= PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " Set css style."; $setter .= PHP_EOL . $tabV . "\t\t\$style = \$this->params->get('uikit_style');"; $setter .= PHP_EOL . PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " The uikit css."; $setter .= PHP_EOL . $tabV . "\t\tif ((!\$HeaderCheck->css_loaded('uikit.min') || \$uikit == 1) && \$uikit != 2 && \$uikit != 3)"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\$this->document->addStyleSheet(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/css/uikit'.\$style.\$size.'.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $setter .= PHP_EOL . $tabV . "\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " The uikit js."; $setter .= PHP_EOL . $tabV . "\t\tif ((!\$HeaderCheck->js_loaded('uikit.min') || \$uikit == 1) && \$uikit != 2 && \$uikit != 3)"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\$this->document->addScript(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/js/uikit'.\$size.'.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $setter .= PHP_EOL . $tabV . "\t\t}"; } // load the components need if ((2 == $this->uikit || 1 == $this->uikit) && isset($this->uikitComp[$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->uikitComp[$view['settings']->code])) { $setter .= PHP_EOL . PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " Load the script to find all uikit components needed."; $setter .= PHP_EOL . $tabV . "\t\tif (\$uikit != 2)"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " Set the default uikit components in this view."; $setter .= PHP_EOL . $tabV . "\t\t\t\$uikitComp = array();"; foreach ($this->uikitComp[$view['settings']->code] as $class) { $setter .= PHP_EOL . $tabV . "\t\t\t\$uikitComp[] = '" . $class . "';"; } // check content for more needed components if (isset($this->siteFieldData['uikit'][$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->siteFieldData['uikit'][$view['settings']->code])) { $setter .= PHP_EOL . PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " Get field uikit components needed in this view."; $setter .= PHP_EOL . $tabV . "\t\t\t\$uikitFieldComp = \$this->get('UikitComp');"; $setter .= PHP_EOL . $tabV . "\t\t\tif (isset(\$uikitFieldComp) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$uikitFieldComp))"; $setter .= PHP_EOL . $tabV . "\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\tif (isset(\$uikitComp) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$uikitComp))"; $setter .= PHP_EOL . $tabV . "\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\$uikitComp = array_merge(\$uikitComp, \$uikitFieldComp);"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\$uikitComp = array_unique(\$uikitComp);"; $setter .= PHP_EOL . $tabV . "\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t\telse"; $setter .= PHP_EOL . $tabV . "\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\$uikitComp = \$uikitFieldComp;"; $setter .= PHP_EOL . $tabV . "\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t}"; } $setter .= PHP_EOL . $tabV . "\t\t}"; $setter .= PHP_EOL . PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " Load the needed uikit components in this view."; $setter .= PHP_EOL . $tabV . "\t\tif (\$uikit != 2 && isset(\$uikitComp) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$uikitComp))"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " load just in case."; $setter .= PHP_EOL . $tabV . "\t\t\tjimport('joomla.filesystem.file');"; $setter .= PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " loading..."; $setter .= PHP_EOL . $tabV . "\t\t\tforeach (\$uikitComp as \$class)"; $setter .= PHP_EOL . $tabV . "\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\tforeach (" . $this->fileContentStatic['###Component###'] . "Helper::\$uk_components[\$class] as \$name)"; $setter .= PHP_EOL . $tabV . "\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " check if the CSS file exists."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\tif (JFile::exists(JPATH_ROOT.'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/css/components/'.\$name.\$style.\$size.'.css'))"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " load the css."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t\$this->document->addStyleSheet(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/css/components/'.\$name.\$style.\$size.'.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " check if the JavaScript file exists."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\tif (JFile::exists(JPATH_ROOT.'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/js/components/'.\$name.\$size.'.js'))"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " load the js."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t\$this->document->addScript(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/js/components/'.\$name.\$size.'.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('type' => 'text/javascript', 'async' => 'async') : true);"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t}"; } elseif ((2 == $this->uikit || 1 == $this->uikit) && isset($this->siteFieldData['uikit'][$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->siteFieldData['uikit'][$view['settings']->code])) { $setter .= PHP_EOL . PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " Load the needed uikit components in this view."; $setter .= PHP_EOL . $tabV . "\t\t\$uikitComp = \$this->get('UikitComp');"; $setter .= PHP_EOL . $tabV . "\t\tif (\$uikit != 2 && isset(\$uikitComp) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$uikitComp))"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " load just in case."; $setter .= PHP_EOL . $tabV . "\t\t\tjimport('joomla.filesystem.file');"; $setter .= PHP_EOL . $tabV . "\t\t\t//" . $this->setLine(__LINE__) . " loading..."; $setter .= PHP_EOL . $tabV . "\t\t\tforeach (\$uikitComp as \$class)"; $setter .= PHP_EOL . $tabV . "\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\tforeach (" . $this->fileContentStatic['###Component###'] . "Helper::\$uk_components[\$class] as \$name)"; $setter .= PHP_EOL . $tabV . "\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " check if the CSS file exists."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\tif (JFile::exists(JPATH_ROOT.'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/css/components/'.\$name.\$style.\$size.'.css'))"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " load the css."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t\$this->document->addStyleSheet(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/css/components/'.\$name.\$style.\$size.'.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " check if the JavaScript file exists."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\tif (JFile::exists(JPATH_ROOT.'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/js/components/'.\$name.\$size.'.js'))"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " load the js."; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t\t\$this->document->addScript(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v2/js/components/'.\$name.\$size.'.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('type' => 'text/javascript', 'async' => 'async') : true);"; $setter .= PHP_EOL . $tabV . "\t\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t}"; } // now set the version 3 if (2 == $this->uikit || 3 == $this->uikit) { if (2 == $this->uikit) { $setter .= PHP_EOL . "\t\t}"; $setter .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Use Uikit Version 3"; $setter .= PHP_EOL . "\t\telseif (3 == \$uikitVersion)"; $setter .= PHP_EOL . "\t\t{"; } // add version 3 fiels to page $setter .= PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " The uikit css."; $setter .= PHP_EOL . $tabV . "\t\tif ((!\$HeaderCheck->css_loaded('uikit.min') || \$uikit == 1) && \$uikit != 2 && \$uikit != 3)"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\$this->document->addStyleSheet(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v3/css/uikit'.\$size.'.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $setter .= PHP_EOL . $tabV . "\t\t}"; $setter .= PHP_EOL . $tabV . "\t\t//" . $this->setLine(__LINE__) . " The uikit js."; $setter .= PHP_EOL . $tabV . "\t\tif ((!\$HeaderCheck->js_loaded('uikit.min') || \$uikit == 1) && \$uikit != 2 && \$uikit != 3)"; $setter .= PHP_EOL . $tabV . "\t\t{"; $setter .= PHP_EOL . $tabV . "\t\t\t\$this->document->addScript(JURI::root(true) .'/media/com_" . $this->fileContentStatic['###component###'] . "/uikit-v3/js/uikit'.\$size.'.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $setter .= PHP_EOL . $tabV . "\t\t}"; if (2 == $this->uikit) { $setter .= PHP_EOL . "\t\t}"; } } return $setter; } public function setCustomViewExtraDisplayMethods(&$view) { if ($view['settings']->add_php_jview == 1) { return PHP_EOL . PHP_EOL . $this->setPlaceholders($view['settings']->php_jview, $this->placeholders); } return ''; } public function setCustomViewBody(&$view) { if (ComponentbuilderHelper::checkString($view['settings']->default)) { if ($view['settings']->main_get->gettype == 2 && $view['settings']->main_get->pagination == 1) { // build body $body = array(); // add limit box if (strpos($view['settings']->default, '[[[LIMITBOX]]]') !== false) { $this->placeholders['[[[LIMITBOX]]]'] = 'pagination->getLimitBox(); ?>'; } $body[] = $this->setPlaceholders($view['settings']->default, $this->placeholders); $body[] = PHP_EOL . 'items) && isset($this->pagination) && isset($this->pagination->pagesTotal) && $this->pagination->pagesTotal > 1): ?>'; $body[] = '
    '; $body[] = "\t" . ''; $body[] = '
    '; $body[] = ''; return implode(PHP_EOL, $body); } else { return PHP_EOL . $this->setPlaceholders($view['settings']->default, $this->placeholders); } } return ''; } public function setCustomViewSubmitButtonScript(&$view) { if (ComponentbuilderHelper::checkString($view['settings']->default)) { // add the script only if there is none set if (strpos($view['settings']->default, 'Joomla.submitbutton = function(task)') === false) { $script = array(); $script[] = PHP_EOL . ""; return implode(PHP_EOL, $script); } } return ''; } public function setCustomViewCodeBody(&$view) { if ($view['settings']->add_php_view == 1) { $view['settings']->php_view = (array) explode(PHP_EOL, $view['settings']->php_view); if (ComponentbuilderHelper::checkArray($view['settings']->php_view)) { $_tmp = PHP_EOL . PHP_EOL . implode(PHP_EOL, $view['settings']->php_view); return $this->setPlaceholders($_tmp, $this->placeholders); } } return ''; } public function setCustomViewTemplateBody(&$view) { if (isset($this->templateData[$this->target][$view['settings']->code]) && ComponentbuilderHelper::checkArray($this->templateData[$this->target][$view['settings']->code])) { $created = $this->getCreatedDate($view); $modified = $this->getLastModifiedDate($view); foreach ($this->templateData[$this->target][$view['settings']->code] as $template => $data) { // build the file $target = array($this->target => $view['settings']->code); $config = array('###CREATIONDATE###' => $created, '###BUILDDATE###' => $modified, '###VERSION###' => $view['settings']->version); $this->buildDynamique($target, 'template', $template, $config); // set the file data $TARGET = ComponentbuilderHelper::safeString($this->target, 'U'); // ###SITE_TEMPLATE_BODY### <<>> $this->fileContentDynamic[$view['settings']->code . '_' . $template]['###' . $TARGET . '_TEMPLATE_BODY###'] = PHP_EOL . $this->setPlaceholders($data['html'], $this->placeholders); // ###SITE_TEMPLATE_CODE_BODY### <<>> $this->fileContentDynamic[$view['settings']->code . '_' . $template]['###' . $TARGET . '_TEMPLATE_CODE_BODY###'] = $this->setCustomViewTemplateCode($data['php_view']); } } } public function setCustomViewTemplateCode(&$php) { if (ComponentbuilderHelper::checkString($php)) { $php_view = (array) explode(PHP_EOL, $php); if (ComponentbuilderHelper::checkArray($php_view)) { $php_view = PHP_EOL . PHP_EOL . implode(PHP_EOL, $php_view); return $this->setPlaceholders($php_view, $this->placeholders); } } return ''; } public function setCustomViewLayouts() { if (isset($this->layoutData[$this->target]) && ComponentbuilderHelper::checkArray($this->layoutData[$this->target])) { foreach ($this->layoutData[$this->target] as $layout => $data) { // build the file $target = array($this->target => $layout); $this->buildDynamique($target, 'layout'); // set the file data $TARGET = ComponentbuilderHelper::safeString($this->target, 'U'); // ###SITE_LAYOUT_CODE### <<>> $php_view = (array) explode(PHP_EOL, $data['php_view']); if (ComponentbuilderHelper::checkArray($php_view)) { $php_view = PHP_EOL . PHP_EOL . implode(PHP_EOL, $php_view); $this->fileContentDynamic[$layout]['###' . $TARGET . '_LAYOUT_CODE###'] = $this->setPlaceholders($php_view, $this->placeholders); } else { $this->fileContentDynamic[$layout]['###' . $TARGET . '_LAYOUT_CODE###'] = ''; } // ###SITE_LAYOUT_BODY### <<>> $this->fileContentDynamic[$layout]['###' . $TARGET . '_LAYOUT_BODY###'] = PHP_EOL . $this->setPlaceholders($data['html'], $this->placeholders); } } } public function getReplacementNames() { foreach ($this->newFiles as $type => $files) { foreach ($files as $view => $file) { if (isset($file['path']) && ComponentbuilderHelper::checkArray($file)) { if (JFile::exists($file['path'])) { $string = ComponentbuilderHelper::getFileContents($file['path']); $buket['static'][] = $this->getInbetweenStrings($string); } } elseif (ComponentbuilderHelper::checkArray($file)) { foreach ($file as $nr => $doc) { if (ComponentbuilderHelper::checkArray($doc)) { if (JFile::exists($doc['path'])) { $string = ComponentbuilderHelper::getFileContents($doc['path']); $buket[$view][] = $this->getInbetweenStrings($string); } } } } } } foreach ($buket as $type => $array) { foreach ($array as $replacments) { $replacments = array_unique($replacments); foreach ($replacments as $replacment) { if ($type !== 'static') { //var_dump($replacment); echo PHP_EOL; $echos[$replacment] = "###" . $replacment . "###
    "; } elseif ($type === 'static') { //var_dump($replacment); echo PHP_EOL; $echos[$replacment] = "###" . $replacment . "###
    "; } } } } foreach ($echos as $echo) { echo $echo . '
    '; } } public function setMethodGetItem(&$view) { $script = ''; // go from json to array if (isset($this->jsonItemBuilder[$view]) && ComponentbuilderHelper::checkArray($this->jsonItemBuilder[$view])) { foreach ($this->jsonItemBuilder[$view] as $jsonItem) { $script .= PHP_EOL . PHP_EOL . "\t\t\tif (!empty(\$item->" . $jsonItem . "))"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Convert the " . $jsonItem . " field to an array."; $script .= PHP_EOL . "\t\t\t\t\$" . $jsonItem . " = new Registry;"; $script .= PHP_EOL . "\t\t\t\t\$" . $jsonItem . "->loadString(\$item->" . $jsonItem . ");"; $script .= PHP_EOL . "\t\t\t\t\$item->" . $jsonItem . " = \$" . $jsonItem . "->toArray();"; $script .= PHP_EOL . "\t\t\t}"; } } // go from json to string if (isset($this->jsonStringBuilder[$view]) && ComponentbuilderHelper::checkArray($this->jsonStringBuilder[$view])) { $makeArray = ''; foreach ($this->jsonStringBuilder[$view] as $jsonString) { $script .= PHP_EOL . PHP_EOL . "\t\t\tif (!empty(\$item->" . $jsonString . "))"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " JSON Decode " . $jsonString . "."; if (isset($this->jsonItemBuilderArray[$view]) && ComponentbuilderHelper::checkArray($this->jsonItemBuilderArray[$view]) && in_array($jsonString, $this->jsonItemBuilderArray[$view])) { $makeArray = ',true'; } elseif (strpos($jsonString, 'group') !== false) { $makeArray = ',true'; } $script .= PHP_EOL . "\t\t\t\t\$item->" . $jsonString . " = json_decode(\$item->" . $jsonString . $makeArray . ");"; $script .= PHP_EOL . "\t\t\t}"; } } // go from base64 to string if (isset($this->base64Builder[$view]) && ComponentbuilderHelper::checkArray($this->base64Builder[$view])) { foreach ($this->base64Builder[$view] as $baseString) { $script .= PHP_EOL . PHP_EOL . "\t\t\tif (!empty(\$item->" . $baseString . "))"; // TODO && base64_encode(base64_decode(\$item->".$baseString.", true)) === \$item->".$baseString.")"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " base64 Decode " . $baseString . "."; $script .= PHP_EOL . "\t\t\t\t\$item->" . $baseString . " = base64_decode(\$item->" . $baseString . ");"; $script .= PHP_EOL . "\t\t\t}"; } } // get the component name $Component = $this->fileContentStatic['###Component###']; // decryption foreach ($this->cryptionTypes as $cryptionType) { if (isset($this->{$cryptionType.'EncryptionBuilder'}[$view]) && ComponentbuilderHelper::checkArray($this->{$cryptionType.'EncryptionBuilder'}[$view])) { $script .= PHP_EOL . PHP_EOL."\t\t\t//".$this->setLine(__LINE__)." Get the ".$cryptionType." encryption."; $script .= PHP_EOL . "\t\t\t\$".$cryptionType."key = ".$Component."Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t\t\t//".$this->setLine(__LINE__)." Get the encryption object."; $script .= PHP_EOL . "\t\t\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);"; foreach ($this->{$cryptionType.'EncryptionBuilder'}[$view] as $baseString) { $script .= PHP_EOL . PHP_EOL."\t\t\tif (!empty(\$item->".$baseString.") && \$".$cryptionType."key && !is_numeric(\$item->".$baseString.") && \$item->".$baseString." === base64_encode(base64_decode(\$item->".$baseString.", true)))"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//".$this->setLine(__LINE__)." ".$cryptionType." decrypt data ".$baseString."."; $script .= PHP_EOL . "\t\t\t\t\$item->".$baseString." = rtrim(\$".$cryptionType."->decryptString(\$item->".$baseString."), " . '"\0"' . ");"; $script .= PHP_EOL . "\t\t\t}"; } } } // add custom php to getitem method $script .= $this->getCustomScriptBuilder('php_getitem', $view, PHP_EOL . PHP_EOL); return $script; } public function setCheckboxSave(&$view) { $script = ''; if (isset($this->checkboxBuilder[$view]) && ComponentbuilderHelper::checkArray($this->checkboxBuilder[$view])) { foreach ($this->checkboxBuilder[$view] as $checkbox) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the empty " . $checkbox . " item to data"; $script .= PHP_EOL . "\t\tif (!isset(\$data['" . $checkbox . "']))"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t\$data['" . $checkbox . "'] = '';"; $script .= PHP_EOL . "\t\t}"; } } return $script; } public function setMethodItemSave(&$view) { $script = ''; // check if there was script added before modeling of data $script .= $this->getCustomScriptBuilder('php_before_save', $view, PHP_EOL . PHP_EOL); // turn array into JSON string if (isset($this->jsonItemBuilder[$view]) && ComponentbuilderHelper::checkArray($this->jsonItemBuilder[$view])) { foreach ($this->jsonItemBuilder[$view] as $jsonItem) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the " . $jsonItem . " items to data."; $script .= PHP_EOL . "\t\tif (isset(\$data['" . $jsonItem . "']) && is_array(\$data['" . $jsonItem . "']))"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t\$" . $jsonItem . " = new JRegistry;"; $script .= PHP_EOL . "\t\t\t\$" . $jsonItem . "->loadArray(\$data['" . $jsonItem . "']);"; $script .= PHP_EOL . "\t\t\t\$data['" . $jsonItem . "'] = (string) \$" . $jsonItem . ";"; $script .= PHP_EOL . "\t\t}"; $script .= PHP_EOL . "\t\telseif (!isset(\$data['" . $jsonItem . "']))"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Set the empty " . $jsonItem . " to data"; $script .= PHP_EOL . "\t\t\t\$data['" . $jsonItem . "'] = '';"; $script .= PHP_EOL . "\t\t}"; } } // turn string into json string if (isset($this->jsonStringBuilder[$view]) && ComponentbuilderHelper::checkArray($this->jsonStringBuilder[$view])) { foreach ($this->jsonStringBuilder[$view] as $jsonString) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the " . $jsonString . " string to JSON string."; $script .= PHP_EOL . "\t\tif (isset(\$data['" . $jsonString . "']))"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t\$data['" . $jsonString . "'] = (string) json_encode(\$data['" . $jsonString . "']);"; $script .= PHP_EOL . "\t\t}"; } } // turn string into base 64 string if (isset($this->base64Builder[$view]) && ComponentbuilderHelper::checkArray($this->base64Builder[$view])) { foreach ($this->base64Builder[$view] as $baseString) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set the " . $baseString . " string to base64 string."; $script .= PHP_EOL . "\t\tif (isset(\$data['" . $baseString . "']))"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t\$data['" . $baseString . "'] = base64_encode(\$data['" . $baseString . "']);"; $script .= PHP_EOL . "\t\t}"; } } // turn string into encrypted string $Component = $this->fileContentStatic['###Component###']; foreach ($this->cryptionTypes as $cryptionType) { if (isset($this->{$cryptionType.'EncryptionBuilder'}[$view]) && ComponentbuilderHelper::checkArray($this->{$cryptionType.'EncryptionBuilder'}[$view])) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the ".$cryptionType." encryption key."; $script .= PHP_EOL . "\t\t\$".$cryptionType."key = " . $Component . "Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the encryption object"; $script .= PHP_EOL . "\t\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);"; foreach ($this->{$cryptionType.'EncryptionBuilder'}[$view] as $baseString) { $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Encrypt data " . $baseString . "."; $script .= PHP_EOL . "\t\tif (isset(\$data['" . $baseString . "']) && \$".$cryptionType."key)"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t\$data['" . $baseString . "'] = \$".$cryptionType."->encryptString(\$data['" . $baseString . "']);"; $script .= PHP_EOL . "\t\t}"; } } } // add custom PHP to the save method $script .= $this->getCustomScriptBuilder('php_save', $view, PHP_EOL . PHP_EOL); return $script; } public function setJtableConstructor(&$view) { // reset $oserver = ""; // set component name $component = $this->fileContentStatic['###component###']; // add the tags observer if (isset($this->tagsBuilder[$view]) && ComponentbuilderHelper::checkString($this->tagsBuilder[$view])) { $oserver .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Adding Tag Options"; $oserver .= PHP_EOL . "\t\tJTableObserverTags::createObserver(\$this, array('typeAlias' => 'com_" . $component . "." . $view . "'));"; } // add the history/version observer if (isset($this->historyBuilder[$view]) && ComponentbuilderHelper::checkString($this->historyBuilder[$view])) { $oserver .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Adding History Options"; $oserver .= PHP_EOL . "\t\tJTableObserverContenthistory::createObserver(\$this, array('typeAlias' => 'com_" . $component . "." . $view . "'));"; } return $oserver; } public function setJtableAliasCategory(&$view) { // only add Observers if both title, alias and category is availabe in view if (array_key_exists($view, $this->catCodeBuilder)) { $code = $this->catCodeBuilder[$view]['code']; return ", '" . $code . "' => \$this->" . $code; } return ''; } public function setComponentToContentTypes($action) { $script = ''; if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { // set component name $component = $this->fileContentStatic['###component###']; // reset $dbStuff = array(); // start loading the content type data foreach ($this->componentData->admin_views as $viewData) { // set main keys $view = ComponentbuilderHelper::safeString($viewData['settings']->name_single); // set list view keys $views = ComponentbuilderHelper::safeString($viewData['settings']->name_list); // get this views content type data $dbStuff[$view] = $this->getContentType($view, $component); // get the correct views name $checkViews = (isset($this->catCodeBuilder[$view]['views']) && ComponentbuilderHelper::checkString($this->catCodeBuilder[$view]['views'])) ? $this->catCodeBuilder[$view]['views'] : $views; if (ComponentbuilderHelper::checkArray($dbStuff[$view]) && array_key_exists($view, $this->catCodeBuilder) && ($checkViews == $views)) { $dbStuff[$view . ' category'] = $this->getCategoryContentType($view, $views, $component); } elseif (!isset($dbStuff[$view]) || !ComponentbuilderHelper::checkArray($dbStuff[$view])) { // remove if not array unset($dbStuff[$view]); } } // build the db insert query if (ComponentbuilderHelper::checkArray($dbStuff)) { $taabb = ''; if ($action === 'update') { $taabb = "\t"; } $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Get The Database object"; $script .= PHP_EOL . "\t\t\t\$db = JFactory::getDbo();"; foreach ($dbStuff as $name => $tables) { if (ComponentbuilderHelper::checkArray($tables)) { $code = ComponentbuilderHelper::safeString($name); $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Create the " . $name . " content type object."; $script .= PHP_EOL . "\t\t\t\$" . $code . " = new stdClass();"; foreach ($tables as $table => $data) { $script .= PHP_EOL . "\t\t\t\$" . $code . "->" . $table . " = '" . $data . "';"; } if ($action === 'update') { // we first load script to check if data exist $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Check if " . $name . " type is already in content_type DB."; $script .= PHP_EOL . "\t\t\t\$" . $code . "_id = null;"; $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\$query->select(\$db->quoteName(array('type_id')));"; $script .= PHP_EOL . "\t\t\t\$query->from(\$db->quoteName('#__content_types'));"; $script .= PHP_EOL . "\t\t\t\$query->where(\$db->quoteName('type_alias') . ' LIKE '. \$db->quote($" . $code . "->type_alias));"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t\$db->execute();"; } $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Set the object into the content types table."; if ($action === 'update') { $script .= PHP_EOL . "\t\t\tif (\$db->getNumRows())"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t\$" . $code . "->type_id = \$db->loadResult();"; $script .= PHP_EOL . "\t\t\t\t\$" . $code . "_Updated = \$db->updateObject('#__content_types', \$" . $code . ", 'type_id');"; $script .= PHP_EOL . "\t\t\t}"; $script .= PHP_EOL . "\t\t\telse"; $script .= PHP_EOL . "\t\t\t{"; } $script .= PHP_EOL . "\t\t\t" . $taabb . "\$" . $code . "_Inserted = \$db->insertObject('#__content_types', \$" . $code . ");"; if ($action === 'update') { $script .= PHP_EOL . "\t\t\t}"; } } } $script .= PHP_EOL . PHP_EOL; } } return $script; } public function setPostInstallScript() { // reset script $script = $this->setComponentToContentTypes('install'); // set the component name $component = $this->fileContentStatic['###component###']; // add the assets table update for permissions rules if (isset($this->assetsRules) && ComponentbuilderHelper::checkArray($this->assetsRules)) { if (ComponentbuilderHelper::checkString($script)) { $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Install the global extenstion assets permission."; } else { $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Install the global extenstion assets permission."; $script .= PHP_EOL . "\t\t\t\$db = JFactory::getDbo();"; } $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Field to update."; $script .= PHP_EOL . "\t\t\t\$fields = array("; $script .= PHP_EOL . "\t\t\t\t\$db->quoteName('rules') . ' = ' . \$db->quote('{" . implode(',', $this->assetsRules) . "}'),"; $script .= PHP_EOL . "\t\t\t);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Condition."; $script .= PHP_EOL . "\t\t\t\$conditions = array("; $script .= PHP_EOL . "\t\t\t\t\$db->quoteName('name') . ' = ' . \$db->quote('com_" . $component . "')"; $script .= PHP_EOL . "\t\t\t);"; $script .= PHP_EOL . "\t\t\t\$query->update(\$db->quoteName('#__assets'))->set(\$fields)->where(\$conditions);"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t\$allDone = \$db->execute();" . PHP_EOL; } // add the global params for the component global settings if (isset($this->extensionsParams) && ComponentbuilderHelper::checkArray($this->extensionsParams)) { if (ComponentbuilderHelper::checkString($script)) { $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Install the global extenstion params."; } else { $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Install the global extenstion params."; $script .= PHP_EOL . "\t\t\t\$db = JFactory::getDbo();"; } $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Field to update."; $script .= PHP_EOL . "\t\t\t\$fields = array("; $script .= PHP_EOL . "\t\t\t\t\$db->quoteName('params') . ' = ' . \$db->quote('{" . implode(',', $this->extensionsParams) . "}'),"; $script .= PHP_EOL . "\t\t\t);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Condition."; $script .= PHP_EOL . "\t\t\t\$conditions = array("; $script .= PHP_EOL . "\t\t\t\t\$db->quoteName('element') . ' = ' . \$db->quote('com_" . $component . "')"; $script .= PHP_EOL . "\t\t\t);"; $script .= PHP_EOL . "\t\t\t\$query->update(\$db->quoteName('#__extensions'))->set(\$fields)->where(\$conditions);"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t\$allDone = \$db->execute();" . PHP_EOL; } // add the custom script $script .= $this->getCustomScriptBuilder('php_postflight', 'install', PHP_EOL . PHP_EOL, null, true); // add the component install notice if (ComponentbuilderHelper::checkString($script)) { $script .= PHP_EOL . "\t\t\t" . 'echo \''; $script .= PHP_EOL . "\t\t\t\t" . ''; $script .= PHP_EOL . "\t\t\t\t" . '\';'; return $script; } return PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " noting to install."; } public function setPostUpdateScript() { // reset script $script = $this->setComponentToContentTypes('update'); // add the custom script $script .= $this->getCustomScriptBuilder('php_postflight', 'update', PHP_EOL . PHP_EOL, null, true); if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { $script .= PHP_EOL . "\t\t\t" . 'echo \''; $script .= PHP_EOL . "\t\t\t\t" . ''; $script .= PHP_EOL . "\t\t\t\t" . ''; $script .= PHP_EOL . "\t\t\t\t

    Upgrade to Version " . $this->fileContentStatic['###ACTUALVERSION###'] . " Was Successful! Let us know if anything is not working as expected.

    ';"; } if (ComponentbuilderHelper::checkString($script)) { return $script; } return PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " noting to update."; } public function setUninstallScript() { // reset script $script = ''; if (isset($this->uninstallScriptBuilder) && ComponentbuilderHelper::checkArray($this->uninstallScriptBuilder)) { $component = $this->fileContentStatic['###component###']; // start loading the data to delet $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get Application object"; $script .= PHP_EOL . "\t\t\$app = JFactory::getApplication();"; $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get The Database object"; $script .= PHP_EOL . "\t\t\$db = JFactory::getDbo();"; foreach ($this->uninstallScriptBuilder as $viewName => $typeAlias) { // set a var value $view = ComponentbuilderHelper::safeString($viewName); // First check if data is till in table $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Select id from content type table"; $script .= PHP_EOL . "\t\t\$query->select(\$db->quoteName('type_id'));"; $script .= PHP_EOL . "\t\t\$query->from(\$db->quoteName('#__content_types'));"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Where " . $viewName . " alias is found"; $script .= PHP_EOL . "\t\t\$query->where( \$db->quoteName('type_alias') . ' = '. \$db->quote('" . $typeAlias . "') );"; $script .= PHP_EOL . "\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Execute query to see if alias is found"; $script .= PHP_EOL . "\t\t\$db->execute();"; $script .= PHP_EOL . "\t\t\$" . $view . "_found = \$db->getNumRows();"; $script .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Now check if there were any rows"; $script .= PHP_EOL . "\t\tif (\$" . $view . "_found)"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Since there are load the needed " . $view . " type ids"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_ids = \$db->loadColumn();"; // Now remove the actual type entry $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $viewName . " from the content type table"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_condition = array( \$db->quoteName('type_alias') . ' = '. \$db->quote('" . $typeAlias . "') );"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\$query->delete(\$db->quoteName('#__content_types'));"; $script .= PHP_EOL . "\t\t\t\$query->where(\$" . $view . "_condition);"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Execute the query to remove " . $viewName . " items"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_done = \$db->execute();"; $script .= PHP_EOL . "\t\t\tif (\$" . $view . "_done);"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " If succesfully remove " . $viewName . " add queued success message."; // TODO lang is not translated $script .= PHP_EOL . "\t\t\t\t\$app->enqueueMessage(JText:".":_('The (" . $typeAlias . ") type alias was removed from the #__content_type table'));"; $script .= PHP_EOL . "\t\t\t}"; // Now remove the related items from contentitem tag map table $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $viewName . " items from the contentitem tag map table"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_condition = array( \$db->quoteName('type_alias') . ' = '. \$db->quote('" . $typeAlias . "') );"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\$query->delete(\$db->quoteName('#__contentitem_tag_map'));"; $script .= PHP_EOL . "\t\t\t\$query->where(\$" . $view . "_condition);"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Execute the query to remove " . $viewName . " items"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_done = \$db->execute();"; $script .= PHP_EOL . "\t\t\tif (\$" . $view . "_done);"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " If succesfully remove " . $viewName . " add queued success message."; // TODO lang is not translated $script .= PHP_EOL . "\t\t\t\t\$app->enqueueMessage(JText:".":_('The (" . $typeAlias . ") type alias was removed from the #__contentitem_tag_map table'));"; $script .= PHP_EOL . "\t\t\t}"; // Now remove the related items from ucm content table $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $viewName . " items from the ucm content table"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_condition = array( \$db->quoteName('core_type_alias') . ' = ' . \$db->quote('" . $typeAlias . "') );"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\$query->delete(\$db->quoteName('#__ucm_content'));"; $script .= PHP_EOL . "\t\t\t\$query->where(\$" . $view . "_condition);"; $script .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Execute the query to remove " . $viewName . " items"; $script .= PHP_EOL . "\t\t\t\$" . $view . "_done = \$db->execute();"; $script .= PHP_EOL . "\t\t\tif (\$" . $view . "_done);"; $script .= PHP_EOL . "\t\t\t{"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " If succesfully remove " . $viewName . " add queued success message."; // TODO lang is not translated $script .= PHP_EOL . "\t\t\t\t\$app->enqueueMessage(JText:".":_('The (" . $typeAlias . ") type alias was removed from the #__ucm_content table'));"; $script .= PHP_EOL . "\t\t\t}"; // setup the foreach loop of ids $script .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Make sure that all the " . $viewName . " items are cleared from DB"; $script .= PHP_EOL . "\t\t\tforeach (\$" . $view . "_ids as \$" . $view . "_id)"; $script .= PHP_EOL . "\t\t\t{"; // Now remove the related items from ucm base table $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $viewName . " items from the ucm base table"; $script .= PHP_EOL . "\t\t\t\t\$" . $view . "_condition = array( \$db->quoteName('ucm_type_id') . ' = ' . \$" . $view . "_id);"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\t\$query->delete(\$db->quoteName('#__ucm_base'));"; $script .= PHP_EOL . "\t\t\t\t\$query->where(\$" . $view . "_condition);"; $script .= PHP_EOL . "\t\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Execute the query to remove " . $viewName . " items"; $script .= PHP_EOL . "\t\t\t\t\$db->execute();"; // Now remove the related items from ucm history table $script .= PHP_EOL . PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Remove " . $viewName . " items from the ucm history table"; $script .= PHP_EOL . "\t\t\t\t\$" . $view . "_condition = array( \$db->quoteName('ucm_type_id') . ' = ' . \$" . $view . "_id);"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\t\t\$query->delete(\$db->quoteName('#__ucm_history'));"; $script .= PHP_EOL . "\t\t\t\t\$query->where(\$" . $view . "_condition);"; $script .= PHP_EOL . "\t\t\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Execute the query to remove " . $viewName . " items"; $script .= PHP_EOL . "\t\t\t\t\$db->execute();"; $script .= PHP_EOL . "\t\t\t}"; $script .= PHP_EOL . "\t\t}"; } $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " If All related items was removed queued success message."; // TODO lang is not translated $script .= PHP_EOL . "\t\t\$app->enqueueMessage(JText:".":_('All related items was removed from the #__ucm_base table'));"; $script .= PHP_EOL . "\t\t\$app->enqueueMessage(JText:".":_('All related items was removed from the #__ucm_history table'));"; // finaly remove the assets from the assets table $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Remove " . $component . " assets from the assets table"; $script .= PHP_EOL . "\t\t\$" . $component . "_condition = array( \$db->quoteName('name') . ' LIKE ' . \$db->quote('com_" . $component . "%') );"; $script .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $script .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; $script .= PHP_EOL . "\t\t\$query->delete(\$db->quoteName('#__assets'));"; $script .= PHP_EOL . "\t\t\$query->where(\$" . $component . "_condition);"; $script .= PHP_EOL . "\t\t\$db->setQuery(\$query);"; $script .= PHP_EOL . "\t\t\$" . $view . "_done = \$db->execute();"; $script .= PHP_EOL . "\t\tif (\$" . $view . "_done);"; $script .= PHP_EOL . "\t\t{"; $script .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " If succesfully remove " . $component . " add queued success message."; // TODO lang is not translated $script .= PHP_EOL . "\t\t\t\$app->enqueueMessage(JText:".":_('All related items was removed from the #__assets table'));"; $script .= PHP_EOL . "\t\t}"; // done $script .= PHP_EOL; } // add the custom uninstall script $script .= $this->getCustomScriptBuilder('php_method', 'uninstall', "", null, true, null, PHP_EOL); return $script; } public function setMoveFolderScript() { if ($this->setMoveFolders) { // reset script $script = array(); $script[] = "\t\t//" . $this->setLine(__LINE__) . " We check if we have dynamic folders to copy"; $script[] = "\t\t\$this->setDynamicF0ld3rs(\$app, \$parent);"; // done return PHP_EOL.implode(PHP_EOL, $script); } return ''; } public function setMoveFolderMethod() { if ($this->setMoveFolders) { // reset script $script = array(); $script[] = "\t/**"; $script[] = "\t * Method to set/copy dynamic folders into place (use with caution)"; $script[] = "\t *"; $script[] = "\t * @return void"; $script[] = "\t */"; $script[] = "\tprotected function setDynamicF0ld3rs(\$app, \$parent)"; $script[] = "\t{"; $script[] = "\t\t//" . $this->setLine(__LINE__) . " get the instalation path"; $script[] = "\t\t\$installer = \$parent->getParent();"; $script[] = "\t\t\$installPath = \$installer->getPath('source');"; $script[] = "\t\t//" . $this->setLine(__LINE__) . " get all the folders"; $script[] = "\t\t\$folders = JFolder::folders(\$installPath);"; $script[] = "\t\t//" . $this->setLine(__LINE__) . " check if we have folders we may want to copy"; $script[] = "\t\t\$doNotCopy = array('media','admin','site'); // Joomla already deals with these"; $script[] = "\t\tif (count(\$folders) > 1)"; $script[] = "\t\t{"; $script[] = "\t\t\tforeach (\$folders as \$folder)"; $script[] = "\t\t\t{"; $script[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Only copy if not a standard folders"; $script[] = "\t\t\t\tif (!in_array(\$folder, \$doNotCopy))"; $script[] = "\t\t\t\t{"; $script[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " set the source path"; $script[] = "\t\t\t\t\t\$src = \$installPath.'/'.\$folder;"; $script[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " set the destination path"; $script[] = "\t\t\t\t\t\$dest = JPATH_ROOT.'/'.\$folder;"; $script[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " now try to copy the folder"; $script[] = "\t\t\t\t\tif (!JFolder::copy(\$src, \$dest, '', true))"; $script[] = "\t\t\t\t\t{"; $script[] = "\t\t\t\t\t\t\$app->enqueueMessage('Could not copy '.\$folder.' folder into place, please make sure destination is writable!', 'error');"; $script[] = "\t\t\t\t\t}"; $script[] = "\t\t\t\t}"; $script[] = "\t\t\t}"; $script[] = "\t\t}"; $script[] = "\t}"; // done return PHP_EOL.PHP_EOL.implode(PHP_EOL, $script); } return ''; } public function getContentType($view, $component) { // add if history is to be kept or if tags is added if ((isset($this->historyBuilder[$view]) && ComponentbuilderHelper::checkString($this->historyBuilder[$view])) || (isset($this->tagsBuilder[$view]) && ComponentbuilderHelper::checkString($this->tagsBuilder[$view]))) { // reset array $array = array(); // set needed defaults $alias = (array_key_exists($view, $this->aliasBuilder)) ? $this->aliasBuilder[$view] : 'null'; $title = (array_key_exists($view, $this->titleBuilder)) ? $this->titleBuilder[$view] : 'null'; $category = (array_key_exists($view, $this->catCodeBuilder)) ? $this->catCodeBuilder[$view]['code'] : 'null'; $categoryHistory = (array_key_exists($view, $this->catCodeBuilder)) ? '{"sourceColumn": "' . $category . '","targetTable": "#__categories","targetColumn": "id","displayColumn": "title"},' : ''; $Component = ComponentbuilderHelper::safeString($component, 'F'); $View = ComponentbuilderHelper::safeString($view, 'F'); $maintext = (isset($this->maintextBuilder[$view]) && ComponentbuilderHelper::checkString($this->maintextBuilder[$view])) ? $this->maintextBuilder[$view] : 'null'; $hiddenFields = (isset($this->hiddenFieldsBuilder[$view]) && ComponentbuilderHelper::checkString($this->hiddenFieldsBuilder[$view])) ? $this->hiddenFieldsBuilder[$view] : ''; $dynamicfields = (isset($this->dynamicfieldsBuilder[$view]) && ComponentbuilderHelper::checkString($this->dynamicfieldsBuilder[$view])) ? $this->dynamicfieldsBuilder[$view] : ''; $intFields = (isset($this->intFieldsBuilder[$view]) && ComponentbuilderHelper::checkString($this->intFieldsBuilder[$view])) ? $this->intFieldsBuilder[$view] : ''; $customfieldlinks = (isset($this->customFieldLinksBuilder[$view]) && ComponentbuilderHelper::checkString($this->customFieldLinksBuilder[$view])) ? $this->customFieldLinksBuilder[$view] : ''; // build uninstall script for content types $this->uninstallScriptBuilder[$View] = 'com_' . $component . '.' . $view; // check if this view has metadata if (isset($this->metadataBuilder[$view]) && ComponentbuilderHelper::checkString($this->metadataBuilder[$view])) { $core_metadata = 'metadata'; $core_metakey = 'metakey'; $core_metadesc = 'metadesc'; } else { $core_metadata = 'null'; $core_metakey = 'null'; $core_metadesc = 'null'; } // check if view has access if (isset($this->accessBuilder[$view]) && ComponentbuilderHelper::checkString($this->accessBuilder[$view])) { $core_access = 'access'; $accessHistory = ',{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"}'; } else { $core_access = 'null'; $accessHistory = ''; } // set the title $array['type_title'] = $Component . ' ' . $View; // set the alias $array['type_alias'] = 'com_' . $component . '.' . $view; // set the table $array['table'] = '{"special": {"dbtable": "#__' . $component . '_' . $view . '","key": "id","type": "' . $View . '","prefix": "' . $component . 'Table","config": "array()"},"common": {"dbtable": "#__ucm_content","key": "ucm_id","type": "Corecontent","prefix": "JTable","config": "array()"}}'; // set field map $array['field_mappings'] = '{"common": {"core_content_item_id": "id","core_title": "' . $title . '","core_state": "published","core_alias": "' . $alias . '","core_created_time": "created","core_modified_time": "modified","core_body": "' . $maintext . '","core_hits": "hits","core_publish_up": "null","core_publish_down": "null","core_access": "' . $core_access . '","core_params": "params","core_featured": "null","core_metadata": "' . $core_metadata . '","core_language": "null","core_images": "null","core_urls": "null","core_version": "version","core_ordering": "ordering","core_metakey": "' . $core_metakey . '","core_metadesc": "' . $core_metadesc . '","core_catid": "' . $category . '","core_xreference": "null","asset_id": "asset_id"},"special": {' . $dynamicfields . '}}'; // set the router class method $array['router'] = $Component . 'HelperRoute::get' . $View . 'Route'; // set content history $array['content_history_options'] = '{"formFile": "administrator/components/com_' . $component . '/models/forms/' . $view . '.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"' . $hiddenFields . '],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"' . $intFields . '],"displayLookup": [' . $categoryHistory . '{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}' . $accessHistory . ',{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}' . $customfieldlinks . ']}'; return $array; } return false; } public function getCategoryContentType($view, $views, $component) { $category = $this->catCodeBuilder[$view]['code']; $Component = ComponentbuilderHelper::safeString($component, 'F'); $View = ComponentbuilderHelper::safeString($view, 'F'); // build uninstall script for content types $this->uninstallScriptBuilder[$View . ' ' . $category] = 'com_' . $component . '.' . $views . '.category'; // set the title $array['type_title'] = $Component . ' ' . $View . ' ' . ComponentbuilderHelper::safeString($category, 'F'); // set the alias $array['type_alias'] = 'com_' . $component . '.' . $views . '.category'; // set the table $array['table'] = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}'; // set field map $array['field_mappings'] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}'; // set the router class method $array['router'] = $Component . 'HelperRoute::getCategoryRoute'; // set content history $array['content_history_options'] = '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'; return $array; } public function setRouterHelp($viewName_single, $viewName_list, $front = false) { // add if tags is added, also for all front item views if (((isset($this->tagsBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->tagsBuilder[$viewName_single])) || $front) && (!in_array($viewName_single, $this->setRouterHelpDone))) { // insure we load a view only once $this->setRouterHelpDone[] = $viewName_single; // build view route helper $View = ComponentbuilderHelper::safeString($viewName_single, 'F'); $routeHelper = array(); $routeHelper[] = PHP_EOL . PHP_EOL . "\t/**"; $routeHelper[] = "\t* @param int The route of the " . $View; $routeHelper[] = "\t*/"; if ('category' === $viewName_single || 'categories' === $viewName_single) { $routeHelper[] = "\tpublic static function get" . $View . "Route(\$id = 0)"; } else { $routeHelper[] = "\tpublic static function get" . $View . "Route(\$id = 0, \$catid = 0)"; } $routeHelper[] = "\t{"; $routeHelper[] = "\t\tif (\$id > 0)"; $routeHelper[] = "\t\t{"; $routeHelper[] = "\t\t\t//" . $this->setLine(__LINE__) . " Initialize the needel array."; $routeHelper[] = "\t\t\t\$needles = array("; $routeHelper[] = "\t\t\t\t'" . $viewName_single . "' => array((int) \$id)"; $routeHelper[] = "\t\t\t);"; $routeHelper[] = "\t\t\t//" . $this->setLine(__LINE__) . " Create the link"; $routeHelper[] = "\t\t\t\$link = 'index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $viewName_single . "&id='. \$id;"; $routeHelper[] = "\t\t}"; $routeHelper[] = "\t\telse"; $routeHelper[] = "\t\t{"; $routeHelper[] = "\t\t\t//" . $this->setLine(__LINE__) . " Initialize the needel array."; $routeHelper[] = "\t\t\t\$needles = array();"; $routeHelper[] = "\t\t\t//" . $this->setLine(__LINE__) . "Create the link but don't add the id."; $routeHelper[] = "\t\t\t\$link = 'index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $viewName_single . "';"; $routeHelper[] = "\t\t}"; if ('category' != $viewName_single && 'categories' != $viewName_single) { $routeHelper[] = "\t\tif (\$catid > 1)"; $routeHelper[] = "\t\t{"; $routeHelper[] = "\t\t\t\$categories = JCategories::getInstance('" . $this->fileContentStatic['###component###'] . "." . $viewName_list . "');"; $routeHelper[] = "\t\t\t\$category = \$categories->get(\$catid);"; $routeHelper[] = "\t\t\tif (\$category)"; $routeHelper[] = "\t\t\t{"; $routeHelper[] = "\t\t\t\t\$needles['category'] = array_reverse(\$category->getPath());"; $routeHelper[] = "\t\t\t\t\$needles['categories'] = \$needles['category'];"; $routeHelper[] = "\t\t\t\t\$link .= '&catid='.\$catid;"; $routeHelper[] = "\t\t\t}"; $routeHelper[] = "\t\t}"; } if (isset($this->hasMenuGlobal[$viewName_single])) { $routeHelper[] = PHP_EOL . "\t\tif (\$item = self::_findItem(\$needles, '" . $viewName_single . "'))"; } else { $routeHelper[] = PHP_EOL . "\t\tif (\$item = self::_findItem(\$needles))"; } $routeHelper[] = "\t\t{"; $routeHelper[] = "\t\t\t\$link .= '&Itemid='.\$item;"; $routeHelper[] = "\t\t}"; $routeHelper[] = PHP_EOL . "\t\treturn \$link;"; $routeHelper[] = "\t}"; return implode(PHP_EOL, $routeHelper); } return ''; } public function routerParseSwitch(&$view, $viewArray = null, $aliasView = true, $idView = true) { // reset buckets $routerSwitch = array(); $isCategory = ''; $viewTable = false; if ($viewArray && ComponentbuilderHelper::checkArray($viewArray) && isset($viewArray['settings']) && isset($viewArray['settings']->main_get)) { // check if we have custom script for this router parse switch case if (isset($viewArray['settings']->main_get->add_php_router_parse) && $viewArray['settings']->main_get->add_php_router_parse == 1 && isset($viewArray['settings']->main_get->php_router_parse) && ComponentbuilderHelper::checkString($viewArray['settings']->main_get->php_router_parse)) { // load the custom script for the switch based on dynamic get $routerSwitch[] = PHP_EOL . "\t\t\tcase '" . $view . "':"; $routerSwitch[] = $this->setPlaceholders($this->setDynamicValues(base64_decode($viewArray['settings']->main_get->php_router_parse)), $this->placeholders); $routerSwitch[] = "\t\t\t\tbreak;"; return implode(PHP_EOL, $routerSwitch); } // is this a catogory elseif (isset($viewArray['settings']->main_get->db_table_main) && $viewArray['settings']->main_get->db_table_main === 'categories') { $isCategory = ', true'; // TODO we will keep an eye on this.... } // get the main table name elseif (isset($viewArray['settings']->main_get->main_get) && ComponentbuilderHelper::checkArray($viewArray['settings']->main_get->main_get)) { foreach ($viewArray['settings']->main_get->main_get as $get) { if ($get['as'] === 'a') { if (isset($get['selection']) && ComponentbuilderHelper::checkArray($get['selection']) && isset($get['selection']['select_gets']) && ComponentbuilderHelper::checkArray($get['selection']['select_gets'])) { if (isset($get['selection']['table'])) { $viewTable = str_replace('#__' . $this->fileContentStatic['###component###'] . '_', '', $get['selection']['table']); } } break; } } } } // add if tags is added, also for all front item views if ($aliasView) { $routerSwitch[] = PHP_EOL . "\t\t\tcase '" . $view . "':"; $routerSwitch[] = "\t\t\t\t\$vars['view'] = '" . $view . "';"; $routerSwitch[] = "\t\t\t\tif (is_numeric(\$segments[\$count-1]))"; $routerSwitch[] = "\t\t\t\t{"; $routerSwitch[] = "\t\t\t\t\t\$vars['id'] = (int) \$segments[\$count-1];"; $routerSwitch[] = "\t\t\t\t}"; $routerSwitch[] = "\t\t\t\telseif (\$segments[\$count-1])"; $routerSwitch[] = "\t\t\t\t{"; // we need to get from the table of this views main get the alias so we need the table name if ($viewTable) { $routerSwitch[] = "\t\t\t\t\t\$id = \$this->getVar('" . $viewTable . "', \$segments[\$count-1], 'alias', 'id'" . $isCategory . ");"; } else { $routerSwitch[] = "\t\t\t\t\t\$id = \$this->getVar('" . $view . "', \$segments[\$count-1], 'alias', 'id'" . $isCategory . ");"; } $routerSwitch[] = "\t\t\t\t\tif(\$id)"; $routerSwitch[] = "\t\t\t\t\t{"; $routerSwitch[] = "\t\t\t\t\t\t\$vars['id'] = \$id;"; $routerSwitch[] = "\t\t\t\t\t}"; $routerSwitch[] = "\t\t\t\t}"; $routerSwitch[] = "\t\t\t\tbreak;"; } elseif ($idView) { $routerSwitch[] = PHP_EOL . "\t\t\tcase '" . $view . "':"; $routerSwitch[] = "\t\t\t\t\$vars['view'] = '" . $view . "';"; $routerSwitch[] = "\t\t\t\tif (is_numeric(\$segments[\$count-1]))"; $routerSwitch[] = "\t\t\t\t{"; $routerSwitch[] = "\t\t\t\t\t\$vars['id'] = (int) \$segments[\$count-1];"; $routerSwitch[] = "\t\t\t\t}"; $routerSwitch[] = "\t\t\t\tbreak;"; } else { $routerSwitch[] = PHP_EOL . "\t\t\tcase '" . $view . "':"; $routerSwitch[] = "\t\t\t\t\$vars['view'] = '" . $view . "';"; $routerSwitch[] = "\t\t\t\tbreak;"; } return implode(PHP_EOL, $routerSwitch); } public function routerBuildViews(&$view) { if (isset($this->fileContentStatic['###ROUTER_BUILD_VIEWS###']) && ComponentbuilderHelper::checkString($this->fileContentStatic['###ROUTER_BUILD_VIEWS###'])) { return " || \$view === '" . $view . "'"; } else { return "\$view === '" . $view . "'"; } } public function setBatchMove($viewName_single) { // set needed defaults $title = false; $alias = false; $category = false; $batchmove = array(); $VIEW = ComponentbuilderHelper::safeString($viewName_single, 'U'); // component helper name $Helper = $this->fileContentStatic['###Component###'] . 'Helper'; // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } // only load category if set in this view if (array_key_exists($viewName_single, $this->catCodeBuilder)) { $category = $this->catCodeBuilder[$viewName_single]['code']; } // only load alias if set in this view if (array_key_exists($viewName_single, $this->aliasBuilder)) { $alias = $this->aliasBuilder[$viewName_single]; } // only load title if set in this view if (array_key_exists($viewName_single, $this->titleBuilder)) { $title = $this->titleBuilder[$viewName_single]; } // prepare custom script $customScript = $this->getCustomScriptBuilder('php_batchmove', $viewName_single, PHP_EOL . PHP_EOL, null, true); $batchmove[] = PHP_EOL . "\t/**"; $batchmove[] = "\t * Batch move items to a new category"; $batchmove[] = "\t *"; $batchmove[] = "\t * @param integer \$value The new category ID."; $batchmove[] = "\t * @param array \$pks An array of row IDs."; $batchmove[] = "\t * @param array \$contexts An array of item contexts."; $batchmove[] = "\t *"; $batchmove[] = "\t * @return boolean True if successful, false otherwise and internal error is set."; $batchmove[] = "\t *"; $batchmove[] = "\t * @since\t12.2"; $batchmove[] = "\t */"; $batchmove[] = "\tprotected function batchMove(\$values, \$pks, \$contexts)"; $batchmove[] = "\t{"; $batchmove[] = "\t\tif (empty(\$this->batchSet))"; $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set some needed variables."; $batchmove[] = "\t\t\t\$this->user = JFactory::getUser();"; $batchmove[] = "\t\t\t\$this->table = \$this->getTable();"; $batchmove[] = "\t\t\t\$this->tableClassName = get_class(\$this->table);"; $batchmove[] = "\t\t\t\$this->canDo = " . $Helper . "::getActions('" . $viewName_single . "');"; $batchmove[] = "\t\t}"; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']])) { $batchmove[] = PHP_EOL . "\t\tif (!\$this->canDo->get('" . $core['core.edit'] . "') && !\$this->canDo->get('" . $core['core.batch'] . "'))"; } else { $batchmove[] = PHP_EOL . "\t\tif (!\$this->canDo->get('core.edit') && !\$this->canDo->get('core.batch'))"; } $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\t\$this->setError(JText:".":_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));"; $batchmove[] = "\t\t\treturn false;"; $batchmove[] = "\t\t}" . $customScript; $batchmove[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " make sure published only updates if user has the permission."; if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']])) { $batchmove[] = "\t\tif (isset(\$values['published']) && !\$this->canDo->get('" . $core['core.edit.state'] . "'))"; } else { $batchmove[] = "\t\tif (isset(\$values['published']) && !\$this->canDo->get('core.edit.state'))"; } $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\tunset(\$values['published']);"; $batchmove[] = "\t\t}"; $batchmove[] = "\t\t//" . $this->setLine(__LINE__) . " remove move_copy from array"; $batchmove[] = "\t\tunset(\$values['move_copy']);"; if ($category) { $batchmove[] = PHP_EOL . "\t\tif (isset(\$values['category']) && (int) \$values['category'] > 0 && !static::checkCategoryId(\$values['category']))"; $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\treturn false;"; $batchmove[] = "\t\t}"; $batchmove[] = "\t\telseif (isset(\$values['category']) && (int) \$values['category'] > 0)"; $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\t//" . $this->setLine(__LINE__) . " move the category value to correct field name"; $batchmove[] = "\t\t\t\$values['" . $category . "'] = \$values['category'];"; $batchmove[] = "\t\t\tunset(\$values['category']);"; $batchmove[] = "\t\t}"; $batchmove[] = "\t\telseif (isset(\$values['category']))"; $batchmove[] = "\t\t{"; $batchmove[] = "\t\t\tunset(\$values['category']);"; $batchmove[] = "\t\t}" . PHP_EOL; } $batchmove[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Parent exists so we proceed"; $batchmove[] = "\t\tforeach (\$pks as \$pk)"; $batchmove[] = "\t\t{"; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder[$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit']])) { $batchmove[] = "\t\t\tif (!\$this->user->authorise('" . $core['core.edit'] . "', \$contexts[\$pk]))"; } else { $batchmove[] = "\t\t\tif (!\$this->user->authorise('core.edit', \$contexts[\$pk]))"; } $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\t\$this->setError(JText:".":_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));"; $batchmove[] = "\t\t\t\treturn false;"; $batchmove[] = "\t\t\t}"; $batchmove[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Check that the row actually exists"; $batchmove[] = "\t\t\tif (!\$this->table->load(\$pk))"; $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\tif (\$error = \$this->table->getError())"; $batchmove[] = "\t\t\t\t{"; $batchmove[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Fatal error"; $batchmove[] = "\t\t\t\t\t\$this->setError(\$error);"; $batchmove[] = "\t\t\t\t\treturn false;"; $batchmove[] = "\t\t\t\t}"; $batchmove[] = "\t\t\t\telse"; $batchmove[] = "\t\t\t\t{"; $batchmove[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Not fatal error"; $batchmove[] = "\t\t\t\t\t\$this->setError(JText:".":sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', \$pk));"; $batchmove[] = "\t\t\t\t\tcontinue;"; $batchmove[] = "\t\t\t\t}"; $batchmove[] = "\t\t\t}"; $batchmove[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " insert all set values."; $batchmove[] = "\t\t\tif (" . $Helper . "::checkArray(\$values))"; $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\tforeach (\$values as \$key => \$value)"; $batchmove[] = "\t\t\t\t{"; $batchmove[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Do special action for access."; $batchmove[] = "\t\t\t\t\tif ('access' === \$key && strlen(\$value) > 0)"; $batchmove[] = "\t\t\t\t\t{"; $batchmove[] = "\t\t\t\t\t\t\$this->table->\$key = \$value;"; $batchmove[] = "\t\t\t\t\t}"; $batchmove[] = "\t\t\t\t\telseif (strlen(\$value) > 0 && isset(\$this->table->\$key))"; $batchmove[] = "\t\t\t\t\t{"; $batchmove[] = "\t\t\t\t\t\t\$this->table->\$key = \$value;"; $batchmove[] = "\t\t\t\t\t}"; $batchmove[] = "\t\t\t\t}"; $batchmove[] = "\t\t\t}" . PHP_EOL; $batchmove[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Check the row."; $batchmove[] = "\t\t\tif (!\$this->table->check())"; $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\t\$this->setError(\$this->table->getError());"; $batchmove[] = PHP_EOL . "\t\t\t\treturn false;"; $batchmove[] = "\t\t\t}"; $batchmove[] = PHP_EOL . "\t\t\tif (!empty(\$this->type))"; $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\t\$this->createTagsHelper(\$this->tagsObserver, \$this->type, \$pk, \$this->typeAlias, \$this->table);"; $batchmove[] = "\t\t\t}"; $batchmove[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Store the row."; $batchmove[] = "\t\t\tif (!\$this->table->store())"; $batchmove[] = "\t\t\t{"; $batchmove[] = "\t\t\t\t\$this->setError(\$this->table->getError());"; $batchmove[] = PHP_EOL . "\t\t\t\treturn false;"; $batchmove[] = "\t\t\t}"; $batchmove[] = "\t\t}"; $batchmove[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Clean the cache"; $batchmove[] = "\t\t\$this->cleanCache();"; $batchmove[] = PHP_EOL . "\t\treturn true;"; $batchmove[] = "\t}"; return PHP_EOL . implode(PHP_EOL, $batchmove); } public function setBatchCopy($viewName_single) { // set needed defaults $title = false; $alias = false; $category = false; $batchcopy = array(); $VIEW = ComponentbuilderHelper::safeString($viewName_single, 'U'); // component helper name $Helper = $this->fileContentStatic['###Component###'] . 'Helper'; // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } // only load category if set in this view if (array_key_exists($viewName_single, $this->catCodeBuilder)) { $category = $this->catCodeBuilder[$viewName_single]['code']; } // only load alias if set in this view if (array_key_exists($viewName_single, $this->aliasBuilder)) { $alias = $this->aliasBuilder[$viewName_single]; } // only load title if set in this view if (array_key_exists($viewName_single, $this->titleBuilder)) { $title = $this->titleBuilder[$viewName_single]; } // prepare custom script $customScript = $this->getCustomScriptBuilder('php_batchcopy', $viewName_single, PHP_EOL . PHP_EOL, null, true); $batchcopy[] = PHP_EOL . "\t/**"; $batchcopy[] = "\t * Batch copy items to a new category or current."; $batchcopy[] = "\t *"; $batchcopy[] = "\t * @param integer \$values The new values."; $batchcopy[] = "\t * @param array \$pks An array of row IDs."; $batchcopy[] = "\t * @param array \$contexts An array of item contexts."; $batchcopy[] = "\t *"; $batchcopy[] = "\t * @return mixed An array of new IDs on success, boolean false on failure."; $batchcopy[] = "\t *"; $batchcopy[] = "\t * @since\t12.2"; $batchcopy[] = "\t */"; $batchcopy[] = "\tprotected function batchCopy(\$values, \$pks, \$contexts)"; $batchcopy[] = "\t{"; $batchcopy[] = "\t\tif (empty(\$this->batchSet))"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set some needed variables."; $batchcopy[] = "\t\t\t\$this->user = JFactory::getUser();"; $batchcopy[] = "\t\t\t\$this->table = \$this->getTable();"; $batchcopy[] = "\t\t\t\$this->tableClassName = get_class(\$this->table);"; $batchcopy[] = "\t\t\t\$this->canDo = " . $Helper . "::getActions('" . $viewName_single . "');"; $batchcopy[] = "\t\t}"; if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.create']])) { $batchcopy[] = PHP_EOL . "\t\tif (!\$this->canDo->get('" . $core['core.create'] . "') && !\$this->canDo->get('" . $core['core.batch'] . "'))"; } else { $batchcopy[] = PHP_EOL . "\t\tif (!\$this->canDo->get('core.create') || !\$this->canDo->get('core.batch'))"; } $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\treturn false;"; $batchcopy[] = "\t\t}" . $customScript; $batchcopy[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " get list of uniqe fields"; $batchcopy[] = "\t\t\$uniqeFields = \$this->getUniqeFields();"; $batchcopy[] = "\t\t//" . $this->setLine(__LINE__) . " remove move_copy from array"; $batchcopy[] = "\t\tunset(\$values['move_copy']);"; $batchcopy[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " make sure published is set"; $batchcopy[] = "\t\tif (!isset(\$values['published']))"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\t\$values['published'] = 0;"; $batchcopy[] = "\t\t}"; if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']])) { $batchcopy[] = "\t\telseif (isset(\$values['published']) && !\$this->canDo->get('" . $core['core.edit.state'] . "'))"; } else { $batchcopy[] = "\t\telseif (isset(\$values['published']) && !\$this->canDo->get('core.edit.state'))"; } $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\t\t\$values['published'] = 0;"; $batchcopy[] = "\t\t}"; if ($category) { $batchcopy[] = PHP_EOL . "\t\tif (isset(\$values['category']) && (int) \$values['category'] > 0 && !static::checkCategoryId(\$values['category']))"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\treturn false;"; $batchcopy[] = "\t\t}"; $batchcopy[] = "\t\telseif (isset(\$values['category']) && (int) \$values['category'] > 0)"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\t//" . $this->setLine(__LINE__) . " move the category value to correct field name"; $batchcopy[] = "\t\t\t\$values['" . $category . "'] = \$values['category'];"; $batchcopy[] = "\t\t\tunset(\$values['category']);"; $batchcopy[] = "\t\t}"; $batchcopy[] = "\t\telseif (isset(\$values['category']))"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\tunset(\$values['category']);"; $batchcopy[] = "\t\t}"; } $batchcopy[] = PHP_EOL . "\t\t\$newIds = array();"; $batchcopy[] = "\t\t//" . $this->setLine(__LINE__) . " Parent exists so let's proceed"; $batchcopy[] = "\t\twhile (!empty(\$pks))"; $batchcopy[] = "\t\t{"; $batchcopy[] = "\t\t\t//" . $this->setLine(__LINE__) . " Pop the first ID off the stack"; $batchcopy[] = "\t\t\t\$pk = array_shift(\$pks);"; $batchcopy[] = PHP_EOL . "\t\t\t\$this->table->reset();"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " only allow copy if user may edit this item."; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder[$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit']])) { $batchcopy[] = "\t\t\tif (!\$this->user->authorise('" . $core['core.edit'] . "', \$contexts[\$pk]))"; } else { $batchcopy[] = "\t\t\tif (!\$this->user->authorise('core.edit', \$contexts[\$pk]))"; } $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Not fatal error"; $batchcopy[] = "\t\t\t\t\$this->setError(JText:".":sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', \$pk));"; $batchcopy[] = "\t\t\t\tcontinue;"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Check that the row actually exists"; $batchcopy[] = "\t\t\tif (!\$this->table->load(\$pk))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tif (\$error = \$this->table->getError())"; $batchcopy[] = "\t\t\t\t{"; $batchcopy[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Fatal error"; $batchcopy[] = "\t\t\t\t\t\$this->setError(\$error);"; $batchcopy[] = "\t\t\t\t\treturn false;"; $batchcopy[] = "\t\t\t\t}"; $batchcopy[] = "\t\t\t\telse"; $batchcopy[] = "\t\t\t\t{"; $batchcopy[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Not fatal error"; $batchcopy[] = "\t\t\t\t\t\$this->setError(JText:".":sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', \$pk));"; $batchcopy[] = "\t\t\t\t\tcontinue;"; $batchcopy[] = "\t\t\t\t}"; $batchcopy[] = "\t\t\t}"; if ($category && $alias === 'alias' && $title === 'title') { $batchcopy[] = PHP_EOL . "\t\t\tif (isset(\$values['" . $category . "']))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tstatic::generateTitle((int) \$values['" . $category . "'], \$this->table);"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = "\t\t\telse"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tstatic::generateTitle((int) \$this->table->" . $category . ", \$this->table);"; $batchcopy[] = "\t\t\t}"; } elseif ($category && $alias && $title) { $batchcopy[] = PHP_EOL . "\t\t\tif (isset(\$values['" . $category . "']))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tlist(\$this->table->" . $title . ", \$this->table->" . $alias . ") = \$this->generateNewTitle(\$values['" . $category . "'], \$this->table->" . $alias . ", \$this->table->" . $title . ");"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = "\t\t\telse"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tlist(\$this->table->" . $title . ", \$this->table->" . $alias . ") = \$this->generateNewTitle(\$this->table->" . $category . ", \$this->table->" . $alias . ", \$this->table->" . $title . ");"; $batchcopy[] = "\t\t\t}"; } elseif (!$category && $alias && $title) { $batchcopy[] = "\t\t\tlist(\$this->table->" . $title . ", \$this->table->" . $alias . ") = \$this->_generateNewTitle(\$this->table->" . $alias . ", \$this->table->" . $title . ");"; } elseif (!$category && !$alias && $title && $title != 'user' && $title != 'jobnumber') // TODO [jobnumber] just for one project (not ideal) { $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Only for strings"; $batchcopy[] = "\t\t\tif (" . $Helper . "::checkString(\$this->table->" . $title . ") && !is_numeric(\$this->table->" . $title . "))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\t\$this->table->" . $title . " = \$this->generateUniqe('" . $title . "',\$this->table->" . $title . ");"; $batchcopy[] = "\t\t\t}"; } $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " insert all set values"; $batchcopy[] = "\t\t\tif (" . $Helper . "::checkArray(\$values))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tforeach (\$values as \$key => \$value)"; $batchcopy[] = "\t\t\t\t{"; $batchcopy[] = "\t\t\t\t\tif (strlen(\$value) > 0 && isset(\$this->table->\$key))"; $batchcopy[] = "\t\t\t\t\t{"; $batchcopy[] = "\t\t\t\t\t\t\$this->table->\$key = \$value;"; $batchcopy[] = "\t\t\t\t\t}"; $batchcopy[] = "\t\t\t\t}"; $batchcopy[] = "\t\t\t}" . PHP_EOL; $batchcopy[] = "\t\t\t//" . $this->setLine(__LINE__) . " update all uniqe fields"; $batchcopy[] = "\t\t\tif (" . $Helper . "::checkArray(\$uniqeFields))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\tforeach (\$uniqeFields as \$uniqeField)"; $batchcopy[] = "\t\t\t\t{"; $batchcopy[] = "\t\t\t\t\t\$this->table->\$uniqeField = \$this->generateUniqe(\$uniqeField,\$this->table->\$uniqeField);"; $batchcopy[] = "\t\t\t\t}"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Reset the ID because we are making a copy"; $batchcopy[] = "\t\t\t\$this->table->id = 0;"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " TODO: Deal with ordering?"; $batchcopy[] = "\t\t\t//" . $this->setLine(__LINE__) . " \$this->table->ordering\t= 1;"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Check the row."; $batchcopy[] = "\t\t\tif (!\$this->table->check())"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\t\$this->setError(\$this->table->getError());"; $batchcopy[] = PHP_EOL . "\t\t\t\treturn false;"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = PHP_EOL . "\t\t\tif (!empty(\$this->type))"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\t\$this->createTagsHelper(\$this->tagsObserver, \$this->type, \$pk, \$this->typeAlias, \$this->table);"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Store the row."; $batchcopy[] = "\t\t\tif (!\$this->table->store())"; $batchcopy[] = "\t\t\t{"; $batchcopy[] = "\t\t\t\t\$this->setError(\$this->table->getError());"; $batchcopy[] = PHP_EOL . "\t\t\t\treturn false;"; $batchcopy[] = "\t\t\t}"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Get the new item ID"; $batchcopy[] = "\t\t\t\$newId = \$this->table->get('id');"; $batchcopy[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Add the new ID to the array"; $batchcopy[] = "\t\t\t\$newIds[\$pk] = \$newId;"; $batchcopy[] = "\t\t}"; $batchcopy[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Clean the cache"; $batchcopy[] = "\t\t\$this->cleanCache();"; $batchcopy[] = PHP_EOL . "\t\treturn \$newIds;"; $batchcopy[] = "\t}"; return PHP_EOL . implode(PHP_EOL, $batchcopy); } public function setAliasTitleFix($viewName_single) { $fixUniqe = array(); // only load this if these two items are set if (array_key_exists($viewName_single, $this->aliasBuilder) && array_key_exists($viewName_single, $this->titleBuilder)) { // set needed defaults $setCategory = false; $alias = $this->aliasBuilder[$viewName_single]; $title = $this->titleBuilder[$viewName_single]; $VIEW = ComponentbuilderHelper::safeString($viewName_single, 'U'); if (array_key_exists($viewName_single, $this->catCodeBuilder)) { $category = $this->catCodeBuilder[$viewName_single]['code']; $setCategory = true; } // start building the fix $fixUniqe[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Alter the " . $title . " for save as copy"; $fixUniqe[] = "\t\tif (\$input->get('task') === 'save2copy')"; $fixUniqe[] = "\t\t{"; $fixUniqe[] = "\t\t\t\$origTable = clone \$this->getTable();"; $fixUniqe[] = "\t\t\t\$origTable->load(\$input->getInt('id'));"; $fixUniqe[] = PHP_EOL . "\t\t\tif (\$data['" . $title . "'] == \$origTable->" . $title . ")"; $fixUniqe[] = "\t\t\t{"; if ($setCategory) { $fixUniqe[] = "\t\t\t\tlist(\$" . $title . ", \$" . $alias . ") = \$this->generateNewTitle(\$data['" . $category . "'], \$data['" . $alias . "'], \$data['" . $title . "']);"; } else { $fixUniqe[] = "\t\t\t\tlist(\$" . $title . ", \$" . $alias . ") = \$this->_generateNewTitle(\$data['" . $alias . "'], \$data['" . $title . "']);"; } $fixUniqe[] = "\t\t\t\t\$data['" . $title . "'] = \$" . $title . ";"; $fixUniqe[] = "\t\t\t\t\$data['" . $alias . "'] = \$" . $alias . ";"; $fixUniqe[] = "\t\t\t}"; $fixUniqe[] = "\t\t\telse"; $fixUniqe[] = "\t\t\t{"; $fixUniqe[] = "\t\t\t\tif (\$data['" . $alias . "'] == \$origTable->" . $alias . ")"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$data['" . $alias . "'] = '';"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = "\t\t\t}"; $fixUniqe[] = PHP_EOL . "\t\t\t\$data['published'] = 0;"; $fixUniqe[] = "\t\t}"; $fixUniqe[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Automatic handling of " . $alias . " for empty fields"; $fixUniqe[] = "\t\tif (in_array(\$input->get('task'), array('apply', 'save', 'save2new')) && (int) \$input->get('id') == 0)"; $fixUniqe[] = "\t\t{"; $fixUniqe[] = "\t\t\tif (\$data['" . $alias . "'] == null)"; $fixUniqe[] = "\t\t\t{"; $fixUniqe[] = "\t\t\t\tif (JFactory::getConfig()->get('unicodeslugs') == 1)"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$data['" . $alias . "'] = JFilterOutput::stringURLUnicodeSlug(\$data['" . $title . "']);"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = "\t\t\t\telse"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$data['" . $alias . "'] = JFilterOutput::stringURLSafe(\$data['" . $title . "']);"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = PHP_EOL . "\t\t\t\t\$table = JTable::getInstance('" . $viewName_single . "', '" . $this->fileContentStatic['###component###'] . "Table');"; if ($setCategory) { $fixUniqe[] = PHP_EOL . "\t\t\t\tif (\$table->load(array('" . $alias . "' => \$data['" . $alias . "'], '" . $category . "' => \$data['" . $category . "'])) && (\$table->id != \$data['id'] || \$data['id'] == 0))"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$msg = JText:".":_('COM_" . $this->fileContentStatic['###COMPONENT###'] . "_" . $VIEW . "_SAVE_WARNING');"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = PHP_EOL . "\t\t\t\tlist(\$" . $title . ", \$" . $alias . ") = \$this->generateNewTitle(\$data['" . $category . "'], \$data['" . $alias . "'], \$data['" . $title . "']);"; } else { $fixUniqe[] = PHP_EOL . "\t\t\t\tif (\$table->load(array('" . $alias . "' => \$data['" . $alias . "'])) && (\$table->id != \$data['id'] || \$data['id'] == 0))"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$msg = JText:".":_('COM_" . $this->fileContentStatic['###COMPONENT###'] . "_" . $VIEW . "_SAVE_WARNING');"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = PHP_EOL . "\t\t\t\tlist(\$" . $title . ", \$" . $alias . ") = \$this->_generateNewTitle(\$data['" . $alias . "'], \$data['" . $title . "']);"; } $fixUniqe[] = "\t\t\t\t\$data['" . $alias . "'] = \$" . $alias . ";"; $fixUniqe[] = PHP_EOL . "\t\t\t\tif (isset(\$msg))"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\tJFactory::getApplication()->enqueueMessage(\$msg, 'warning');"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = "\t\t\t}"; $fixUniqe[] = "\t\t}"; } // handel other uniqe fields $fixUniqe[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Alter the uniqe field for save as copy"; $fixUniqe[] = "\t\tif (\$input->get('task') === 'save2copy')"; $fixUniqe[] = "\t\t{"; $fixUniqe[] = "\t\t\t//" . $this->setLine(__LINE__) . " Automatic handling of other uniqe fields"; $fixUniqe[] = "\t\t\t\$uniqeFields = \$this->getUniqeFields();"; $fixUniqe[] = "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$uniqeFields))"; $fixUniqe[] = "\t\t\t{"; $fixUniqe[] = "\t\t\t\tforeach (\$uniqeFields as \$uniqeField)"; $fixUniqe[] = "\t\t\t\t{"; $fixUniqe[] = "\t\t\t\t\t\$data[\$uniqeField] = \$this->generateUniqe(\$uniqeField,\$data[\$uniqeField]);"; $fixUniqe[] = "\t\t\t\t}"; $fixUniqe[] = "\t\t\t}"; $fixUniqe[] = "\t\t}"; return PHP_EOL . implode(PHP_EOL, $fixUniqe); } public function setGenerateNewTitle($viewName_single) { // if category is added to this view then do nothing if (array_key_exists($viewName_single, $this->aliasBuilder) && array_key_exists($viewName_single, $this->titleBuilder)) { $newFunction = array(); $newFunction[] = PHP_EOL . PHP_EOL . "\t/**"; $newFunction[] = "\t* Method to change the title & alias."; $newFunction[] = "\t*"; $newFunction[] = "\t* @param string \$alias The alias."; $newFunction[] = "\t* @param string \$title The title."; $newFunction[] = "\t*"; $newFunction[] = "\t* @return array Contains the modified title and alias."; $newFunction[] = "\t*"; $newFunction[] = "\t*/"; $newFunction[] = "\tprotected function _generateNewTitle(\$alias, \$title)"; $newFunction[] = "\t{"; $newFunction[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Alter the title & alias"; $newFunction[] = "\t\t\$table = \$this->getTable();"; $newFunction[] = PHP_EOL . "\t\twhile (\$table->load(array('alias' => \$alias)))"; $newFunction[] = "\t\t{"; $newFunction[] = "\t\t\t\$title = JString::increment(\$title);"; $newFunction[] = "\t\t\t\$alias = JString::increment(\$alias, 'dash');"; $newFunction[] = "\t\t}"; $newFunction[] = PHP_EOL . "\t\treturn array(\$title, \$alias);"; $newFunction[] = "\t}"; return implode(PHP_EOL, $newFunction); } elseif (array_key_exists($viewName_single, $this->titleBuilder)) { $newFunction = array(); $newFunction[] = PHP_EOL . PHP_EOL . "\t/**"; $newFunction[] = "\t* Method to change the title & alias."; $newFunction[] = "\t*"; $newFunction[] = "\t* @param string \$title The title."; $newFunction[] = "\t*"; $newFunction[] = "\t* @return array Contains the modified title and alias."; $newFunction[] = "\t*"; $newFunction[] = "\t*/"; $newFunction[] = "\tprotected function _generateNewTitle(\$title)"; $newFunction[] = "\t{"; $newFunction[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Alter the title"; $newFunction[] = "\t\t\$table = \$this->getTable();"; $newFunction[] = PHP_EOL . "\t\twhile (\$table->load(array('title' => \$title)))"; $newFunction[] = "\t\t{"; $newFunction[] = "\t\t\t\$title = JString::increment(\$title);"; $newFunction[] = "\t\t}"; $newFunction[] = PHP_EOL . "\t\treturn \$title;"; $newFunction[] = "\t}"; return implode(PHP_EOL, $newFunction); } return ''; } public function setInstall() { if (isset($this->queryBuilder) && ComponentbuilderHelper::checkArray($this->queryBuilder)) { // set the main db prefix $component = $this->fileContentStatic['###component###']; // start building the db $db = ''; foreach ($this->queryBuilder as $view => $fields) { // build the uninstall array $this->uninstallBuilder[] = "DROP TABLE IF EXISTS `#__" . $component . "_" . $view . "`;"; // setup the table DB string $db_ = ''; $db_ .= "CREATE TABLE IF NOT EXISTS `#__" . $component . "_" . $view . "` ("; // check if the table name has changed if (isset($this->updateSQL['table_name']) && isset($this->updateSQL['table_name'][$view])) { $old_table_name = $this->updateSQL['table_name'][$view]['old']; $this->updateSQLBuilder["RENAMETABLE`#__" . $component . "_" . $old_table_name . "`"] = "RENAME TABLE `#__" . $component . "_" . $old_table_name . "` to `#__" . $component . "_" . $view . "`;"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['id'])) { $db_ .= PHP_EOL . "\t`id` INT(11) NOT NULL AUTO_INCREMENT,"; } $db_ .= PHP_EOL . "\t`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',"; ksort($fields); $last_name = 'asset_id'; foreach ($fields as $field => $data) { // set default $default = $data['default']; if ($default === 'Other') { $default = $data['other']; } if ($default === 'EMPTY') { $default = $data['null_switch']; } elseif ($default === 'DATETIME' || $default === 'CURRENT_TIMESTAMP') { $default = $default . ' ' . $data['null_switch']; } elseif ($default == 0 || $default) { if (is_numeric($default)) { $default = $data['null_switch'] . " DEFAULT " . $default; } else { $default = $data['null_switch'] . " DEFAULT '" . $default . "'"; } } elseif ($data['null_switch'] === 'NULL') { $default = "DEFAULT NULL"; } else { $default = $data['null_switch'] . " DEFAULT ''"; } // set the lenght $lenght = ''; if (isset($data['lenght']) && $data['lenght'] === 'Other' && isset($data['lenght_other']) && $data['lenght_other'] > 0) { $lenght = '(' . $data['lenght_other'] . ')'; } elseif (isset($data['lenght']) && $data['lenght'] > 0) { $lenght = '(' . $data['lenght'] . ')'; } // set the field to db $db_ .= PHP_EOL . "\t`" . $field . "` " . $data['type'] . $lenght . " " . $default . ","; // check if this a new field that should be added via SQL update if (isset($this->addSQL['field']) && isset($this->addSQL['field'][$view]) && ComponentbuilderHelper::checkArray($this->addSQL['field'][$view]) && in_array($data['ID'], $this->addSQL['field'][$view])) { $this->updateSQLBuilder["ALTERTABLE`#__" . $component . "_" . $view . "`ADD`" . $field . "`"] = "ALTER TABLE `#__" . $component . "_" . $view . "` ADD `" . $field . "` " . $data['type'] . $lenght . " " . $default . " AFTER `" . $last_name . "`;"; } // check if the field has changed name and/or data type and lenght elseif ((isset($this->updateSQL['field.datatype']) && isset($this->updateSQL['field.datatype'][$view.'.'.$field])) || (isset($this->updateSQL['field.lenght']) && isset($this->updateSQL['field.lenght'][$view.'.'.$field])) || (isset($this->updateSQL['field.name']) && isset($this->updateSQL['field.name'][$view.'.'.$field]))) { // if the name changed if (isset($this->updateSQL['field.name']) && isset($this->updateSQL['field.name'][$view.'.'.$field])) { $oldName = $this->updateSQL['field.name'][$view.'.'.$field]['old']; } else { $oldName = $field; } // now set the update SQL $this->updateSQLBuilder["ALTERTABLE`#__" . $component . "_" . $view . "`CHANGE`" . $oldName . "``" . $field . "`"] = "ALTER TABLE `#__" . $component . "_" . $view . "` CHANGE `" . $oldName . "` `" . $field . "` " . $data['type'] . $lenght . " " . $default . ";"; } // be sure to track the last name used :) $last_name = $field; } // check if default field was over written if (!isset($this->fieldsNames[$view]['params'])) { $db_ .= PHP_EOL . "\t`params` text NOT NULL DEFAULT '',"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['published'])) { $db_ .= PHP_EOL . "\t`published` TINYINT(3) NOT NULL DEFAULT 1,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['created_by'])) { $db_ .= PHP_EOL . "\t`created_by` INT(10) unsigned NOT NULL DEFAULT 0,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['modified_by'])) { $db_ .= PHP_EOL . "\t`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['created'])) { $db_ .= PHP_EOL . "\t`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['modified'])) { $db_ .= PHP_EOL . "\t`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['checked_out'])) { $db_ .= PHP_EOL . "\t`checked_out` int(11) unsigned NOT NULL DEFAULT 0,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['checked_out_time'])) { $db_ .= PHP_EOL . "\t`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['version'])) { $db_ .= PHP_EOL . "\t`version` INT(10) unsigned NOT NULL DEFAULT 1,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['hits'])) { $db_ .= PHP_EOL . "\t`hits` INT(10) unsigned NOT NULL DEFAULT 0,"; } // check if view has access if (isset($this->accessBuilder[$view]) && ComponentbuilderHelper::checkString($this->accessBuilder[$view])) { $db_ .= PHP_EOL . "\t`access` INT(10) unsigned NOT NULL DEFAULT 0,"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['ordering'])) { $db_ .= PHP_EOL . "\t`ordering` INT(11) NOT NULL DEFAULT 0,"; } // check if metadata is added to this view if (isset($this->metadataBuilder[$view]) && ComponentbuilderHelper::checkString($this->metadataBuilder[$view])) { $db_ .= PHP_EOL . "\t`metakey` TEXT NOT NULL DEFAULT '',"; $db_ .= PHP_EOL . "\t`metadesc` TEXT NOT NULL DEFAULT '',"; $db_ .= PHP_EOL . "\t`metadata` TEXT NOT NULL DEFAULT '',"; } $db_ .= PHP_EOL . "\tPRIMARY KEY (`id`)"; if (isset($this->dbUniqueKeys[$view]) && ComponentbuilderHelper::checkArray($this->dbUniqueKeys[$view])) { foreach ($this->dbUniqueKeys[$view] as $nr => $key) { $db_ .= "," . PHP_EOL . "\tUNIQUE KEY `idx_" . $key . "` (`" . $key . "`)"; } } // check if view has access if (isset($this->accessBuilder[$view]) && ComponentbuilderHelper::checkString($this->accessBuilder[$view])) { $db_ .= "," . PHP_EOL . "\tKEY `idx_access` (`access`)"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['checked_out'])) { $db_ .= "," . PHP_EOL . "\tKEY `idx_checkout` (`checked_out`)"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['created_by'])) { $db_ .= "," . PHP_EOL . "\tKEY `idx_createdby` (`created_by`)"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['modified_by'])) { $db_ .= "," . PHP_EOL . "\tKEY `idx_modifiedby` (`modified_by`)"; } // check if default field was over written if (!isset($this->fieldsNames[$view]['published'])) { $db_ .= "," . PHP_EOL . "\tKEY `idx_state` (`published`)"; } if (isset($this->dbKeys[$view]) && ComponentbuilderHelper::checkArray($this->dbKeys[$view])) { foreach ($this->dbKeys[$view] as $nr => $key) { $db_ .= "," . PHP_EOL . "\tKEY `idx_" . $key . "` (`" . $key . "`)"; } } $db_ .= PHP_EOL . ") ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;"; // check if this is a new table that should be added via update SQL if (isset($this->addSQL['adminview']) && ComponentbuilderHelper::checkArray($this->addSQL['adminview']) && in_array($view, $this->addSQL['adminview'])) { // build the update array $this->updateSQLBuilder["CREATETABLEIFNOTEXISTS`#__" . $component . "_" . $view . "`"] = $db_; } // add to main DB string $db .= $db_ . PHP_EOL . PHP_EOL; } // add custom sql dump to the file if (isset($this->customScriptBuilder['sql']) && ComponentbuilderHelper::checkArray($this->customScriptBuilder['sql'])) { foreach ($this->customScriptBuilder['sql'] as $for => $customSql) { $placeholders = array('[[[component]]]' => $component, '[[[view]]]' => $for); $db .= $this->setPlaceholders($customSql, $placeholders) . PHP_EOL . PHP_EOL; } } return $db; } return ''; } public function setUninstall() { if (isset($this->queryBuilder) && ComponentbuilderHelper::checkArray($this->queryBuilder)) { $bd = ''; foreach ($this->uninstallBuilder as $line) { $bd .= $line . PHP_EOL; } return $bd; } return ''; } public function setLangAdmin() { // add final list of needed lang strings $componentName = JFilterOutput::cleanText($this->componentData->name); $this->langContent['adminsys'][$this->langPrefix] = $componentName; $this->langContent['adminsys'][$this->langPrefix . '_CONFIGURATION'] = $componentName . ' Configuration'; $this->langContent['admin'][$this->langPrefix] = $componentName; $this->langContent['admin'][$this->langPrefix . '_BACK'] = 'Back'; $this->langContent['admin'][$this->langPrefix . '_DASH'] = 'Dashboard'; $this->langContent['admin'][$this->langPrefix . '_VERSION'] = 'Version'; $this->langContent['admin'][$this->langPrefix . '_DATE'] = 'Date'; $this->langContent['admin'][$this->langPrefix . '_AUTHOR'] = 'Author'; $this->langContent['admin'][$this->langPrefix . '_WEBSITE'] = 'Website'; $this->langContent['admin'][$this->langPrefix . '_LICENSE'] = 'License'; $this->langContent['admin'][$this->langPrefix . '_CONTRIBUTORS'] = 'Contributors'; $this->langContent['admin'][$this->langPrefix . '_CONTRIBUTOR'] = 'Contributor'; $this->langContent['admin'][$this->langPrefix . '_DASHBOARD'] = $componentName . ' Dashboard'; $this->langContent['admin'][$this->langPrefix . '_SAVE_SUCCESS'] = "Great! Item successfully saved."; $this->langContent['admin'][$this->langPrefix . '_SAVE_WARNING'] = "The value already existed so please select another."; $this->langContent['admin'][$this->langPrefix . '_HELP_MANAGER'] = "Help"; $this->langContent['admin'][$this->langPrefix . '_NEW'] = "New"; $this->langContent['admin'][$this->langPrefix . '_CLOSE_NEW'] = "Close & New"; $this->langContent['admin'][$this->langPrefix . '_CREATE_NEW_S'] = "Create New %s"; $this->langContent['admin'][$this->langPrefix . '_EDIT_S'] = "Edit %s"; $this->langContent['admin'][$this->langPrefix . '_KEEP_ORIGINAL_STATE'] = "- Keep Original State -"; $this->langContent['admin'][$this->langPrefix . '_KEEP_ORIGINAL_ACCESS'] = "- Keep Original Access -"; $this->langContent['admin'][$this->langPrefix . '_KEEP_ORIGINAL_CATEGORY'] = "- Keep Original Category -"; $this->langContent['admin'][$this->langPrefix . '_PUBLISHED'] = 'Published'; $this->langContent['admin'][$this->langPrefix . '_INACTIVE'] = 'Inactive'; $this->langContent['admin'][$this->langPrefix . '_ARCHIVED'] = 'Archived'; $this->langContent['admin'][$this->langPrefix . '_TRASHED'] = 'Trashed'; $this->langContent['admin'][$this->langPrefix . '_NO_ACCESS_GRANTED'] = "No Access Granted!"; $this->langContent['admin'][$this->langPrefix . '_NOT_FOUND_OR_ACCESS_DENIED'] = "Not found or access denied!"; if ($this->componentData->add_license && $this->componentData->license_type == 3) { $this->langContent['admin']['NIE_REG_NIE'] = "

    License not set for " . $componentName . ".

    Notify your administrator!
    The license can be obtained from " . $this->componentData->companyname . ".

    "; } // add the langug files needed to import and export data if ($this->addEximport) { $this->langContent['admin'][$this->langPrefix . '_EXPORT_FAILED'] = "Export Failed"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FAILED'] = "Import Failed"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_TITLE'] = "Data Importer"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_NO_IMPORT_TYPE_FOUND'] = "Import type not found."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE'] = "Package to import not found."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_ERROR'] = "Import error."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_SUCCESS'] = "Great! Import successful."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_WARNIMPORTFILE'] = "Warning, import file error."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_NO_FILE_SELECTED'] = "No import file selected."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_PLEASE_SELECT_A_FILE'] = "Please select a file to import."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_PLEASE_SELECT_ALL_COLUMNS'] = "Please link all columns."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_PLEASE_SELECT_A_DIRECTORY'] = "Please enter the file directory."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_WARNIMPORTUPLOADERROR'] = "Warning, import upload error."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'] = "Please enter the file directory."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'] = "Path does not have a valid file."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'] = "Does not have a valid file type."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_ENTER_A_URL'] = "Please enter a url."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_MSG_INVALID_URL'] = "Invalid url."; $this->langContent['admin'][$this->langPrefix . '_IMPORT_CONTINUE'] = "Continue"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FROM_UPLOAD'] = "Upload"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_SELECT_FILE'] = "Select File"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_UPLOAD_BOTTON'] = "Upload File"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FROM_DIRECTORY'] = "Directory"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_SELECT_FILE_DIRECTORY'] = "Set the path to file"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_GET_BOTTON'] = "Get File"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FROM_URL'] = "URL"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_SELECT_FILE_URL'] = "Enter file URL"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_UPDATE_DATA'] = "Import Data"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FORMATS_ACCEPTED'] = "formats accepted"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_LINK_FILE_TO_TABLE_COLUMNS'] = "Link File to Table Columns"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_TABLE_COLUMNS'] = "Table Columns"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_FILE_COLUMNS'] = "File Columns"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_PLEASE_SELECT_COLUMN'] = "-- Please Select Column --"; $this->langContent['admin'][$this->langPrefix . '_IMPORT_IGNORE_COLUMN'] = "-- Ignore This Column --"; } // check if the both array is set if (isset($this->langContent['both']) && ComponentbuilderHelper::checkArray($this->langContent['both'])) { foreach ($this->langContent['both'] as $keylang => $langval) { $this->langContent['admin'][$keylang] = $langval; } } // check if the both admin array is set if (isset($this->langContent['bothadmin']) && ComponentbuilderHelper::checkArray($this->langContent['bothadmin'])) { foreach ($this->langContent['bothadmin'] as $keylang => $langval) { $this->langContent['admin'][$keylang] = $langval; } } if (isset($this->langContent['admin']) && ComponentbuilderHelper::checkArray($this->langContent['admin'])) { ksort($this->langContent['admin']); // load to global languages $this->languages['en-GB']['admin'] = $this->langContent['admin']; // remove tmp array unset($this->langContent['admin']); return true; } return false; } public function setLangSite() { // add final list of needed lang strings $this->langContent['site'][$this->langPrefix] = ComponentbuilderHelper::safeString($this->componentData->name, 'W'); // some more defaults $this->langContent['site']['JTOOLBAR_APPLY'] = "Save"; $this->langContent['site']['JTOOLBAR_SAVE_AS_COPY'] = "Save as Copy"; $this->langContent['site']['JTOOLBAR_SAVE'] = "Save & Close"; $this->langContent['site']['JTOOLBAR_SAVE_AND_NEW'] = "Save & New"; $this->langContent['site']['JTOOLBAR_CANCEL'] = "Cancel"; $this->langContent['site']['JTOOLBAR_CLOSE'] = "Close"; $this->langContent['site']['JTOOLBAR_HELP'] = "Help"; $this->langContent['site']['JGLOBAL_FIELD_ID_LABEL'] = "ID"; $this->langContent['site']['JGLOBAL_FIELD_ID_DESC'] = "Record number in the database."; $this->langContent['site']['JGLOBAL_FIELD_MODIFIED_LABEL'] = "Modified Date"; $this->langContent['site']['COM_CONTENT_FIELD_MODIFIED_DESC'] = "The last date this item was modified."; $this->langContent['site']['JGLOBAL_FIELD_MODIFIED_BY_LABEL'] = "Modified By"; $this->langContent['site']['JGLOBAL_FIELD_MODIFIED_BY_DESC'] = "The user who did the last modification."; $this->langContent['site'][$this->langPrefix . '_NEW'] = "New"; $this->langContent['site'][$this->langPrefix . '_CREATE_NEW_S'] = "Create New %s"; $this->langContent['site'][$this->langPrefix . '_EDIT_S'] = "Edit %s"; $this->langContent['site'][$this->langPrefix . '_NO_ACCESS_GRANTED'] = "No Access Granted!"; $this->langContent['site'][$this->langPrefix . '_NOT_FOUND_OR_ACCESS_DENIED'] = "Not found or access denied!"; // check if the both array is set if (isset($this->langContent['both']) && ComponentbuilderHelper::checkArray($this->langContent['both'])) { foreach ($this->langContent['both'] as $keylang => $langval) { $this->langContent['site'][$keylang] = $langval; } } // check if the both site array is set if (isset($this->langContent['bothsite']) && ComponentbuilderHelper::checkArray($this->langContent['bothsite'])) { foreach ($this->langContent['bothsite'] as $keylang => $langval) { $this->langContent['site'][$keylang] = $langval; } } if (isset($this->langContent['site']) && ComponentbuilderHelper::checkArray($this->langContent['site'])) { ksort($this->langContent['site']); // load to global languages $this->languages['en-GB']['site'] = $this->langContent['site']; // remove tmp array unset($this->langContent['site']); return true; } return false; } public function setLangSiteSys() { // add final list of needed lang strings $this->langContent['sitesys'][$this->langPrefix] = ComponentbuilderHelper::safeString($this->componentData->name, 'W'); $this->langContent['sitesys'][$this->langPrefix . '_NO_ACCESS_GRANTED'] = "No Access Granted!"; $this->langContent['sitesys'][$this->langPrefix . '_NOT_FOUND_OR_ACCESS_DENIED'] = "Not found or access denied!"; // check if the both site array is set if (isset($this->langContent['bothsite']) && ComponentbuilderHelper::checkArray($this->langContent['bothsite'])) { foreach ($this->langContent['bothsite'] as $keylang => $langval) { $this->langContent['sitesys'][$keylang] = $langval; } } if (isset($this->langContent['sitesys']) && ComponentbuilderHelper::checkArray($this->langContent['sitesys'])) { ksort($this->langContent['sitesys']); // load to global languages $this->languages['en-GB']['sitesys'] = $this->langContent['sitesys']; // remove tmp array unset($this->langContent['sitesys']); return true; } return false; } public function setLangAdminSys() { // check if the both admin array is set if (isset($this->langContent['bothadmin']) && ComponentbuilderHelper::checkArray($this->langContent['bothadmin'])) { foreach ($this->langContent['bothadmin'] as $keylang => $langval) { $this->langContent['adminsys'][$keylang] = $langval; } } if (isset($this->langContent['adminsys']) && ComponentbuilderHelper::checkArray($this->langContent['adminsys'])) { ksort($this->langContent['adminsys']); // load to global languages $this->languages['en-GB']['adminsys'] = $this->langContent['adminsys']; // remove tmp array unset($this->langContent['adminsys']); return true; } return false; } public function setCustomAdminViewListLink($view, $viewName_list) { if (isset($this->componentData->custom_admin_views) && ComponentbuilderHelper::checkArray($this->componentData->custom_admin_views)) { foreach ($this->componentData->custom_admin_views as $custom_admin_view) { if (isset($custom_admin_view['adminviews']) && ComponentbuilderHelper::checkArray($custom_admin_view['adminviews'])) { foreach ($custom_admin_view['adminviews'] as $adminview) { if (isset($view['adminview']) && $view['adminview'] == $adminview) { // set the needed keys $setId = false; if (ComponentbuilderHelper::checkArray($custom_admin_view['settings']->main_get->filter)) { foreach ($custom_admin_view['settings']->main_get->filter as $filter) { if ($filter['filter_type'] == 1 || '$id' == $filter['state_key']) { $setId = true; } } } // set the needed array values $set = array( 'icon' => $custom_admin_view['icomoon'], 'link' => $custom_admin_view['settings']->code, 'NAME' => $custom_admin_view['settings']->CODE, 'name' => $custom_admin_view['settings']->name); // only load to list if it has id filter if ($setId) { // now load it to the global object for items list $this->customAdminViewListLink[$viewName_list][] = $set; // add to set id for list view if needed $this->customAdminViewListId[$custom_admin_view['settings']->code] = true; } else { // now load it to the global object for tool bar $this->customAdminDynamicButtons[$viewName_list][] = $set; } // log that it has been added already $this->customAdminAdded[$custom_admin_view['settings']->code] = $adminview; } } } } } } public function setListBody($viewName_single, $viewName_list) { if (isset($this->listBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->listBuilder[$viewName_list])) { // component helper name $Helper = $this->fileContentStatic['###Component###'] . 'Helper'; // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } // make sure the custom links are only added once $firstTimeBeingAdded = true; // add the default $body = "items as \$i => \$item): ?>"; $body .= PHP_EOL . "\tuser->authorise('core.manage', 'com_checkin') || \$item->checked_out == \$this->user->id || \$item->checked_out == 0;"; $body .= PHP_EOL . "\t\t\$userChkOut = JFactory::getUser(\$item->checked_out);"; $body .= PHP_EOL . "\t\t\$canDo = " . $Helper . "::getActions('" . $viewName_single . "',\$item,'" . $viewName_list . "');"; $body .= PHP_EOL . "\t?>"; $body .= PHP_EOL . "\t" . ''; // only load if not over written if (!isset($this->fieldsNames[$viewName_single]['ordering'])) { $body .= PHP_EOL . "\t\t" . ''; // check if the item has permissions. if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']])) { $body .= PHP_EOL . "\t\tget('" . $core['core.edit.state'] . "')): ?>"; } else { $body .= PHP_EOL . "\t\tget('core.edit.state')): ?>"; } $body .= PHP_EOL . "\t\t\tsaveOrder)"; $body .= PHP_EOL . "\t\t\t\t{"; $body .= PHP_EOL . "\t\t\t\t\t\$iconClass = ' inactive';"; $body .= PHP_EOL . "\t\t\t\t}"; $body .= PHP_EOL . "\t\t\t\telse"; $body .= PHP_EOL . "\t\t\t\t{"; $body .= PHP_EOL . "\t\t\t\t\t\$iconClass = ' inactive tip-top" . '" hasTooltip" title="' . "' . JHtml::tooltipText('JORDERINGDISABLED');"; $body .= PHP_EOL . "\t\t\t\t}"; $body .= PHP_EOL . "\t\t\t?>"; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\tsaveOrder) : ?>"; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\t⋮"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t"; } $body .= PHP_EOL . "\t\t" . ''; // check if the item has permissions. if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']])) { $body .= PHP_EOL . "\t\tget('" . $core['core.edit'] . "')): ?>"; } else { $body .= PHP_EOL . "\t\tget('core.edit')): ?>"; } $body .= PHP_EOL . "\t\t\t\tchecked_out) : ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\t\tid); ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\t\t□"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\tid); ?>"; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\t□"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t"; // check if this view has fields that should not be escaped $doNotEscape = false; if (isset($this->doNotEscape[$viewName_list])) { $doNotEscape = true; } // start adding the dynamic foreach ($this->listBuilder[$viewName_list] as $item) { $checkoutTriger = false; if (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && isset($item['custom']['table']) && ComponentbuilderHelper::checkString($item['custom']['table'])) { $item['id'] = $item['code']; if (!$item['multiple']) { $item['code'] = $item['code'] . '_' . $item['custom']['text']; } } // check if translated value is used if (isset($this->selectionTranslationFixBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->selectionTranslationFixBuilder[$viewName_list]) && array_key_exists($item['code'], $this->selectionTranslationFixBuilder[$viewName_list])) { $itemCode = '' . $item['code'] . '); ?>'; } elseif (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['text'] === 'user') { $itemCode = '' . $item['code'] . ')->name; ?>'; } elseif ($doNotEscape) { if (in_array($item['code'], $this->doNotEscape[$viewName_list])) { $itemCode = '' . $item['code'] . '; ?>'; } else { $itemCode = 'escape($item->' . $item['code'] . '); ?>'; } } else { $itemCode = 'escape($item->' . $item['code'] . '); ?>'; } if ($item['link']) { // allways rest custom links $customAdminView = ''; // if to be linked if ($item['type'] === 'category' && !$item['title']) { $otherViews = $this->catCodeBuilder[$viewName_single]['views']; // category and linked $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tuser->authorise('core.edit', 'com_" . $this->fileContentStatic['###component###'] . "." . $otherViews . ".category.' . (int)\$item->" . $item['code'] . ")): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'escape($item->category_title); ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tescape(\$item->category_title); ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } elseif ($item['type'] === 'user' && !$item['title']) { // user and linked $body .= PHP_EOL . "\t\t" . $item['code'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tuser->authorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } else { $add = true; if (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] != 'user' && !$item['title']) { // link to that item instead $link = 'index.php?option=' . $item['custom']['component'] . '&view=' . $item['custom']['views'] . '&task=' . $item['custom']['view'] . '.edit&id=' . $item['id'] . '; ?>&ref=' . $viewName_list; $coreLoadLink = false; if (isset($this->permissionCore[$item['custom']['view']])) { $coreLink = $this->permissionCore[$item['custom']['view']]; $coreLoadLink = true; } // check if the item has permissions. if ($coreLoadLink && (isset($coreLink['core.edit']) && isset($this->permissionBuilder[$coreLink['core.edit']])) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$coreLink['core.edit']]) && in_array($item['custom']['view'], $this->permissionBuilder[$coreLink['core.edit']])) { $accessCheck = "\$this->user->authorise('" . $coreLink['core.edit'] . "', 'com_" . $this->fileContentStatic['###component###'] . "." . $item['custom']['view'] . ".' . (int)\$item->" . $item['id'] . ")"; } else { $accessCheck = "\$this->user->authorise('core.edit', 'com_" . $this->fileContentStatic['###component###'] . "." . $item['custom']['view'] . ".' . (int)\$item->" . $item['id'] . ")"; } } elseif (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] === 'user' && !$item['title']) { // user and linked $body .= PHP_EOL . "\t\t" . $item['id'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tuser->authorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; $add = false; } else { // start building the links $link = '&id=id; ?>'; // check if custom links should be added to this list views if (isset($this->customAdminViewListLink[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customAdminViewListLink[$viewName_list]) && $firstTimeBeingAdded) { // make sure the custom links are only added once $firstTimeBeingAdded = false; // start building the links $customAdminView = PHP_EOL . "\t\t\t" . '
    '; foreach ($this->customAdminViewListLink[$viewName_list] as $customLinkView) { $customAdminView .= PHP_EOL . "\t\t\tget('" . $customLinkView['link'] . ".access')): ?>"; $customAdminView .= PHP_EOL . "\t\t\t\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>" >'; $customAdminView .= PHP_EOL . "\t\t\t"; $customAdminView .= PHP_EOL . "\t\t\t\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>">'; $customAdminView .= PHP_EOL . "\t\t\t"; } $customAdminView .= PHP_EOL . "\t\t\t" . '
    '; } // check if the item has permissions. if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']])) { // set permissions. $accessCheck = "\$canDo->get('" . $core['core.edit'] . "')"; } else { // set permissions. $accessCheck = "\$canDo->get('core.edit')"; } // triger the checked out script to be added $checkoutTriger = true; } if ($add) { // set as linked $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\t" . '
    ' . PHP_EOL . "\t\t\t\t\t" . '' . $itemCode . ''; if ($checkoutTriger) { $body .= PHP_EOL . "\t\t\t\t\tchecked_out): ?>"; $body .= PHP_EOL . "\t\t\t\t\t\tname, \$item->checked_out_time, '" . $viewName_list . ".', \$canCheckin); ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; } $body .= PHP_EOL . "\t\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\t" . '
    ' . $itemCode . '
    '; $body .= PHP_EOL . "\t\t\t"; $body .= $customAdminView; $body .= PHP_EOL . "\t\t"; } } } else { if ($item['type'] === 'category') { $body .= PHP_EOL . "\t\tsetListFieldClass($item['code'], $viewName_list, 'hidden-phone')."\">"; $body .= PHP_EOL . "\t\t\tescape(\$item->category_title); ?>"; $body .= PHP_EOL . "\t\t"; } elseif (ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] === 'user') { // custom user and linked $body .= PHP_EOL . "\t\t" . $item['id'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tuser->authorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } elseif ($item['type'] === 'user') { // user name only $body .= PHP_EOL . "\t\t" . $item['code'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t"; } else { // normal not linked $body .= PHP_EOL . "\t\tsetListFieldClass($item['code'], $viewName_list, 'hidden-phone')."\">"; $body .= PHP_EOL . "\t\t\t" . $itemCode; $body .= PHP_EOL . "\t\t"; } } } // add the defaults if (!isset($this->fieldsNames[$viewName_single]['published'])) { $body .= PHP_EOL . "\t\t" . ''; // check if the item has permissions. if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']])) { $body .= PHP_EOL . "\t\tget('" . $core['core.edit.state'] . "')) : ?>"; } else { $body .= PHP_EOL . "\t\tget('core.edit.state')) : ?>"; } $body .= PHP_EOL . "\t\t\t\tchecked_out) : ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\t\tpublished, \$i, '" . $viewName_list . ".', true, 'cb'); ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\t\tpublished, \$i, '" . $viewName_list . ".', false, 'cb'); ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\tpublished, \$i, '" . $viewName_list . ".', true, 'cb'); ?>"; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\tpublished, \$i, '" . $viewName_list . ".', false, 'cb'); ?>"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t"; } if (!isset($this->fieldsNames[$viewName_single]['id'])) { $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tid; ?>"; $body .= PHP_EOL . "\t\t"; } $body .= PHP_EOL . "\t"; $body .= PHP_EOL . ""; // return the build return $body; } return ''; } protected function setListFieldClass($name, $listViewName, $default = '') { return (isset($this->listFieldClass[$listViewName]) && isset($this->listFieldClass[$listViewName][$name])) ? $this->listFieldClass[$listViewName][$name] : $default; } public function setListHead($viewName_single, $viewName_list) { if (isset($this->listBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->listBuilder[$viewName_list])) { // main lang prefix $langView = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($viewName_single, 'U'); // set status lang $statusLangName = $langView . '_STATUS'; // set id lang $idLangName = $langView . '_ID'; // add to lang array if (!isset($this->langContent[$this->lang][$statusLangName])) { $this->langContent[$this->lang][$statusLangName] = 'Status'; } // add to lang array if (!isset($this->langContent[$this->lang][$idLangName])) { $this->langContent[$this->lang][$idLangName] = 'Id'; } // set default $head = ''; $head .= PHP_EOL . "\tcanEdit&& \$this->canState): ?>"; if (!isset($this->fieldsNames[$viewName_single]['ordering'])) { $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\t' . "', 'ordering', \$this->listDirn, \$this->listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>"; $head .= PHP_EOL . "\t\t"; } $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\t▾"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\t■"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; // set footer Column number $this->listColnrBuilder[$viewName_list] = 4; // build the dynamic fields foreach ($this->listBuilder[$viewName_list] as $item) { if (ComponentbuilderHelper::checkArray($item['custom'])) { $item['code'] = $item['code'] . '_' . $item['custom']['text']; } $class = 'nowrap hidden-phone'; if ($item['link']) { $class = 'nowrap'; } $title = ""; if ($item['sort']) { $title = "listDirn, \$this->listOrder); ?>"; } $head .= PHP_EOL . "\t" . ''; $head .= PHP_EOL . "\t\t\t" . $title; $head .= PHP_EOL . "\t"; $this->listColnrBuilder[$viewName_list] ++; } // set default if (!isset($this->fieldsNames[$viewName_single]['published'])) { $head .= PHP_EOL . "\tcanState): ?>"; $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\tlistDirn, \$this->listOrder); ?>"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; $head .= PHP_EOL . "\t\t" . ''; $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; } if (!isset($this->fieldsNames[$viewName_single]['id'])) { $head .= PHP_EOL . "\t" . ''; $head .= PHP_EOL . "\t\t\tlistDirn, \$this->listOrder); ?>"; $head .= PHP_EOL . "\t"; } $head .= PHP_EOL . ""; return $head; } return ''; } public function setListColnr($viewName_list) { if (isset($this->listColnrBuilder[$viewName_list])) { return $this->listColnrBuilder[$viewName_list]; } return ''; } public function setEditBody(&$view) { // set view name $viewName_single = ComponentbuilderHelper::safeString($view['settings']->name_single); // alignment $alignmentNames = array(1 => 'left', 2 => 'right', 3 => 'fullwidth', 4 => 'above', 5 => 'under', 6 => 'leftside', 7 => 'rightside'); // main lang prefix $langView = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($viewName_single, 'U'); if (isset($this->layoutBuilder[$viewName_single]) && ComponentbuilderHelper::checkArray($this->layoutBuilder[$viewName_single])) { // set the linked view tabs $linkedTab = array(); $keys = array(); // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } if (isset($this->linkedAdminViews[$viewName_single]) && ComponentbuilderHelper::checkArray($this->linkedAdminViews[$viewName_single])) { foreach ($this->linkedAdminViews[$viewName_single] as $linkedView) { $tabName = $view['settings']->tabs[(int) $linkedView['tab']]; $this->tabCounter[$viewName_single][$linkedView['tab']] = $tabName; $linkedTab[$linkedView['adminview']] = $linkedView['tab']; if (ComponentbuilderHelper::checkString($linkedView['key']) && ComponentbuilderHelper::checkString($linkedView['parentkey'])) { $keys[$linkedView['adminview']] = array('key' => $linkedView['key'], 'parentKey' => $linkedView['parentkey']); } else { $keys[$linkedView['adminview']] = array('key' => null, 'parentKey' => null); } if (isset($linkedView['addnew'])) { $keys[$linkedView['adminview']]['addNewButton'] = (int) $linkedView['addnew']; } else { $keys[$linkedView['adminview']]['addNewButton'] = 0; } } } // start tab set $bucket = array(); $leftside = ''; $rightside = ''; $footer = ''; $header = ''; $mainwidth = 12; $sidewidth = 0; ksort($this->tabCounter[$viewName_single]); foreach ($this->tabCounter[$viewName_single] as $tabNr => $tabName) { $tabWidth = 12; $lrCounter = 0; // set tab lang $tabLangName = $langView . '_' . ComponentbuilderHelper::safeString($tabName, 'U'); // set tab code name $tabCodeName = ComponentbuilderHelper::safeString($tabName); // add to lang array if (!isset($this->langContent[$this->lang][$tabLangName])) { $this->langContent[$this->lang][$tabLangName] = $tabName; } // check if linked view belongs to this tab $buildLayout = true; $linkedViewId = ''; if (ComponentbuilderHelper::checkArray($linkedTab)) { if (($linkedViewId = array_search($tabNr, $linkedTab)) !== false) { // don't build $buildLayout = false; } } if ($buildLayout) { // sort to make sure it loads left first $alignments = $this->layoutBuilder[$viewName_single][$tabName]; ksort($alignments); foreach ($alignments as $alignment => $names) { // set layout code name $layoutCodeName = $tabCodeName . '_' . $alignmentNames[$alignment]; // reset each time $items = ''; $itemCounter = 0; ksort($names); foreach ($names as $nr => $name) { if ($itemCounter == 0) { $items .= "'" . $name . "'"; } else { $items .= "," . PHP_EOL . "\t'" . $name . "'"; } $itemCounter++; } switch ($alignment) { case 1: // left case 2: // right // count $lrCounter++; // set as items layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layoutitems'); // set the lang to tab $bucket[$tabCodeName]['lang'] = $tabLangName; // load the body if (!isset($bucket[$tabCodeName][(int) $alignment])) { $bucket[$tabCodeName][(int) $alignment] = ''; } $bucket[$tabCodeName][(int) $alignment] .= ""; break; case 3: // fullwidth // set as items layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layoutfull'); // set the lang to tab $bucket[$tabCodeName]['lang'] = $tabLangName; // load the body if (!isset($bucket[$tabCodeName][(int) $alignment])) { $bucket[$tabCodeName][(int) $alignment] = ''; } $bucket[$tabCodeName][(int) $alignment] .= ""; break; case 4: // above // set as title layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layouttitle'); // load to header $header .= PHP_EOL . "\t"; break; case 5: // under // set as title layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layouttitle'); // load to footer $footer .= PHP_EOL . PHP_EOL . "
    " . PHP_EOL . ""; break; case 6: // left side $tabWidth = $tabWidth - 2; // set as items layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layoutitems'); // load the body $leftside .= PHP_EOL . "\t"; break; case 7: // right side $tabWidth = $tabWidth - 2; // set as items layout $this->setLayout($viewName_single, $layoutCodeName, $items, 'layoutitems'); // load the body $rightside .= PHP_EOL . "\t"; break; } } } else { // set layout code name $layoutCodeName = $tabCodeName . '_fullwidth'; // set identifiers $linkedViewIdentifier[$linkedViewId] = $tabCodeName; //set function name $codeName = ComponentbuilderHelper::safeString($this->uniquekey(3) . $tabCodeName); // set as items layout $this->setLayout($viewName_single, $layoutCodeName, $codeName, 'layoutlinkedview'); // set the lang to tab $bucket[$tabCodeName]['lang'] = $tabLangName; // set all the linked view stuff $this->secondRunAdmin['setLinkedView'][] = array( 'viewId' => $linkedViewId, 'viewName_single' => $viewName_single, 'codeName' => $codeName, 'layoutCodeName' => $layoutCodeName, 'key' => $keys[$linkedViewId]['key'], 'parentKey' => $keys[$linkedViewId]['parentKey'], 'addNewButon' => $keys[$linkedViewId]['addNewButton']); // load the body if (!isset($bucket[$tabCodeName][3])) { $bucket[$tabCodeName][3] = ''; } $bucket[$tabCodeName][3] .= ""; } // width calculator :) if ($tabWidth == 8) { $mainwidth = 8; $sidewidth = 2; } elseif ($tabWidth == 10 && $mainwidth != 8) { $mainwidth = 9; $sidewidth = 3; } $bucket[$tabCodeName]['lr'] = $lrCounter; } // tab counter $tabCounter = 0; // check if width is still 12 $span = ''; if ($mainwidth != 12) { $span = 'span' . $mainwidth; } // start building body $body = PHP_EOL . '
    '; if (ComponentbuilderHelper::checkString($span)) { $body .= PHP_EOL . "\t" . '
    '; } // now build the template foreach ($bucket as $tabCodeName => $posions) { // check main if both left and right is set $lrCounter = $posions['lr']; // get lang string $tabLangName = $posions['lang']; // build main center $main = ''; $mainbottom = ''; foreach ($posions as $posion => $string) { if ($lrCounter == 2) { switch ($posion) { case 1: // left case 2: // right $main .= PHP_EOL . "\t\t\t" . '
    '; $main .= PHP_EOL . "\t\t\t\t" . $string; $main .= PHP_EOL . "\t\t\t" . '
    '; break; } } else { switch ($posion) { case 1: // left case 2: // right $main .= PHP_EOL . "\t\t\t" . '
    '; $main .= PHP_EOL . "\t\t\t\t" . $string; $main .= PHP_EOL . "\t\t\t" . '
    '; break; } } switch ($posion) { case 3: // fullwidth $mainbottom .= PHP_EOL . "\t\t\t" . '
    '; $mainbottom .= PHP_EOL . "\t\t\t\t" . $string; $mainbottom .= PHP_EOL . "\t\t\t" . '
    '; break; } } // set acctive tab if ($tabCounter == 0) { $body .= PHP_EOL . PHP_EOL . "\t '" . $tabCodeName . "')); ?>"; } // if this is a linked view set permissions $closeIT = false; if (isset($linkedViewIdentifier) && ComponentbuilderHelper::checkArray($linkedViewIdentifier) && in_array($tabCodeName, $linkedViewIdentifier)) { // get view name $linkedViewId = array_search($tabCodeName, $linkedViewIdentifier); $linkedViewData = $this->getAdminViewData($linkedViewId); $linkedCodeName = ComponentbuilderHelper::safeString($linkedViewData->name_single); // setup correct core target $coreLoadLinked = false; if (isset($this->permissionCore[$linkedCodeName])) { $coreLinked = $this->permissionCore[$linkedCodeName]; $coreLoadLinked = true; } // check if the item has permissions. if ($coreLoadLinked && isset($coreLinked['core.access']) && isset($this->permissionBuilder['global'][$coreLinked['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$coreLinked['core.access']]) && in_array($linkedCodeName, $this->permissionBuilder['global'][$coreLinked['core.access']])) { $body .= PHP_EOL . PHP_EOL . "\tcanDo->get('" . $coreLinked['core.access'] . "')) : ?>"; $closeIT = true; } else { $body .= PHP_EOL; } // insure clear unset($coreLoadLinked, $coreLinked, $linkedViewData); } else { $body .= PHP_EOL; } // start tab $body .= PHP_EOL . "\t"; // add the main $body .= PHP_EOL . "\t\t" . '
    '; $body .= $main; $body .= PHP_EOL . "\t\t
    "; if (strlen($mainbottom) > 0) { // add the main bottom $body .= PHP_EOL . "\t\t" . '
    '; $body .= $mainbottom; $body .= PHP_EOL . "\t\t
    "; } $body .= PHP_EOL . "\t"; if ($closeIT) { $body .= PHP_EOL . "\t"; } // set counter $tabCounter++; } // set default publishing tab lang $tabLangName = $langView . '_PUBLISHING'; // add to lang array if (!isset($this->langContent[$this->lang][$tabLangName])) { $this->langContent[$this->lang][$tabLangName] = 'Publishing'; } // the default publishing items $items = array('left' => array(), 'right' => array()); // Setup the default (custom) fields // only load (1 => 'left', 2 => 'right') $fieldsAddedRight = false; if (isset($this->newPublishingFields[$viewName_single])) { foreach ($this->newPublishingFields[$viewName_single] as $df_alignment => $df_items) { foreach ($df_items as $df_order => $df_name) { if ($df_alignment == 2 || $df_alignment == 1) { $items[$alignmentNames[$df_alignment]][$df_order] = $df_name; } else { $this->app->enqueueMessage(JText::sprintf('Your %s field could not be added, since the %s alignment position is not available in the %s (publishing) tab. Please only target Left or right in the publishing tab.', $df_name, $alignmentNames[$df_alignment], $viewName_single), 'warning'); } } } // set switch to trigger notice if custom fields added to right if (ComponentbuilderHelper::checkArray($items['right'])) { $fieldsAddedRight = true; } } // load all defaults $loadDefaultFields = array( 'left' => array('created', 'created_by', 'modified', 'modified_by'), 'right' => array('published', 'ordering', 'access', 'version', 'hits', 'id') ); foreach ($loadDefaultFields as $d_alignment => $defaultFields) { foreach ($defaultFields as $defaultField) { if (!isset($this->movedPublishingFields[$viewName_single][$defaultField])) { if ($defaultField != 'access') { $items[$d_alignment][] = $defaultField; } elseif ($defaultField === 'access' && isset($this->accessBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->accessBuilder[$viewName_single])) { $items[$d_alignment][] = $defaultField; } } } } // check if metadata is added to this view if (isset($this->metadataBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->metadataBuilder[$viewName_single])) { // set default publishing tab code name $tabCodeNameLeft = 'publishing'; $tabCodeNameRight = 'metadata'; // the default publishing tiems if (ComponentbuilderHelper::checkArray($items['left']) || ComponentbuilderHelper::checkArray($items['right'])) { $items_one = ''; // load the items into one side if (ComponentbuilderHelper::checkArray($items['left'])) { $items_one .= "'" . implode("'," . PHP_EOL . "\t'", $items['left']) . "'"; } if (ComponentbuilderHelper::checkArray($items['right'])) { // there is already fields just add these if (strlen($items_one) > 3) { $items_one .= "," . PHP_EOL . "\t'" . implode("'," . PHP_EOL . "\t'", $items['right']) . "'"; } // no fields has been added yet else { $items_one .= "'" . implode("'," . PHP_EOL . "\t'", $items['right']) . "'"; } } // only triger the info notice if there were custom fields targeted to the right alignment position. if ($fieldsAddedRight) { $this->app->enqueueMessage(JText::sprintf('Your field/s added to the right alignment position in the %s (publishing) tab was added to the left. Since we have metadata fields on the right. Fields can only be loaded to the right of the publishing tab if there is no metadata fields.', $viewName_single), 'Notice'); } // set the publishing layout $this->setLayout($viewName_single, $tabCodeNameLeft, $items_one, 'layoutpublished'); $items_one = true; } else { $items_one = false; } // set the metadata layout $this->setLayout($viewName_single, $tabCodeNameRight, false, 'layoutmetadata'); $items_two = true; } else { // set default publishing tab code name $tabCodeNameLeft = 'publishing'; $tabCodeNameRight = 'publlshing'; // the default publishing tiems if (ComponentbuilderHelper::checkArray($items['left']) || ComponentbuilderHelper::checkArray($items['right'])) { // load left items that remain if (ComponentbuilderHelper::checkArray($items['left'])) { // load all items $items_one = "'" . implode("'," . PHP_EOL . "\t'", $items['left']) . "'"; // set the publishing layout $this->setLayout($viewName_single, $tabCodeNameLeft, $items_one, 'layoutpublished'); $items_one = true; } // load right items that remain if (ComponentbuilderHelper::checkArray($items['right'])) { // load all items $items_two = "'" . implode("'," . PHP_EOL . "\t'", $items['right']) . "'"; // set the publishing layout $this->setLayout($viewName_single, $tabCodeNameRight, $items_two, 'layoutpublished'); $items_two = true; } } else { $items_one = false; $items_two = false; } } if ($items_one && $items_two) { $classs = "span6"; } elseif ($items_one || $items_two) { $classs = "span12"; } // only load this if needed if ($items_one || $items_two) { // check if the item has permissions. $publishingPer = array(); $allToBeChekced = array('core.delete', 'core.edit.created_by', 'core.edit.state', 'core.edit.created'); foreach ($allToBeChekced as $core_permission) { if ($coreLoad && isset($core[$core_permission]) && isset($this->permissionBuilder['global'][$core[$core_permission]]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core[$core_permission]]) && in_array($viewName_single, $this->permissionBuilder['global'][$core[$core_permission]])) { // set permissions. $publishingPer[] = "\$this->canDo->get('" . $core[$core_permission] . "')"; } else { // set permissions. $publishingPer[] = "\$this->canDo->get('" . $core_permission . "')"; } } $body .= PHP_EOL . PHP_EOL . "\t"; // set the default publishing tab $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t\t" . '
    '; if ($items_one) { $body .= PHP_EOL . "\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t\t
    "; } if ($items_two) { $body .= PHP_EOL . "\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t"; $body .= PHP_EOL . "\t\t\t
    "; } $body .= PHP_EOL . "\t\t
    "; $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t"; } // make sure we dont load it to a view with the name component if ($viewName_single != 'component') { // set permissions tab lang $tabLangName = $langView . '_PERMISSION'; // set permissions tab code name $tabCodeName = 'permissions'; // add to lang array if (!isset($this->langContent[$this->lang][$tabLangName])) { $this->langContent[$this->lang][$tabLangName] = 'Permissions'; } // set the permissions tab $body .= PHP_EOL . PHP_EOL . "\tcanDo->get('core.admin')) : ?>"; $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t\tform->getFieldset('accesscontrol') as \$field): ?>"; $body .= PHP_EOL . "\t\t\t\t\t\t
    "; $body .= PHP_EOL . "\t\t\t\t\t\t\tlabel; echo \$field->input;?>"; $body .= PHP_EOL . "\t\t\t\t\t\t
    "; $body .= PHP_EOL . "\t\t\t\t\t\t" . '
    '; $body .= PHP_EOL . "\t\t\t\t\t"; $body .= PHP_EOL . "\t\t\t\t\t
    "; $body .= PHP_EOL . "\t\t\t\t
    "; $body .= PHP_EOL . "\t\t\t
    "; $body .= PHP_EOL . "\t\t
    "; $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t"; } // end the tab set $body .= PHP_EOL . PHP_EOL . "\t"; $body .= PHP_EOL . PHP_EOL . "\t
    "; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t
    "; $body .= PHP_EOL . "\t
    "; $body .= PHP_EOL . "
    "; // check if left has been set if (strlen($leftside) > 0) { $left = '
    ' . $leftside . PHP_EOL . "
    "; } else { $left = ''; } // check if right has been set if (strlen($rightside) > 0) { $right = '
    ' . $rightside . PHP_EOL . "
    "; } else { $right = ''; } // set active tab and return return $header . $left . $body . $right . $footer; } return ''; } public function setFadeInEfect(&$view) { // check if we should load the fade in affect if ($view['settings']->add_fadein == 1) { // set view name $fadein[] = ""; $fadein[] = "
    fileContentStatic['###component###'] . "_loader\" style=\"display: none;\">"; return implode(PHP_EOL, $fadein); } return "
    fileContentStatic['###component###'] . "_loader\">"; } /** * @param $viewName_single * @param $layoutName * @param $items * @param $type */ public function setLayout($viewName_single, $layoutName, $items, $type) { // first build the layout file $target = array('admin' => $viewName_single); $this->buildDynamique($target, $type, $layoutName); // add to front if needed if ($this->lang === 'both') { $target = array('site' => $viewName_single); $this->buildDynamique($target, $type, $layoutName); } if (ComponentbuilderHelper::checkString($items)) { // ###LAYOUTITEMS### <<>> $this->fileContentDynamic[$viewName_single . '_' . $layoutName]['###LAYOUTITEMS###'] = $items; } else { // ###LAYOUTITEMS### <<>> $this->fileContentDynamic[$viewName_single . '_' . $layoutName]['###bogus###'] = 'boom'; } } /** * @param $args */ public function setLinkedView($args) { /** * @var $viewId * @var $viewName_single * @var $codeName * @var $layoutCodeName * @var $key * @var $parentKey * @var $addNewButon */ extract($args, EXTR_PREFIX_SAME, "oops"); $single = ''; $list = ''; foreach ($this->componentData->admin_views as $array) { if ($array['adminview'] == $viewId) { $single = ComponentbuilderHelper::safeString($array['settings']->name_single); $list = ComponentbuilderHelper::safeString($array['settings']->name_list); break; } } if (ComponentbuilderHelper::checkString($single) && ComponentbuilderHelper::checkString($list)) { $head = $this->setListHeadLinked($single, $list, $addNewButon, $viewName_single); $body = $this->setListBodyLinked($single, $list, $viewName_single); $functionName = ComponentbuilderHelper::safeString($codeName, 'F'); // ###LAYOUTITEMSTABLE### <<>> $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName]['###LAYOUTITEMSTABLE###'] = $head . $body; // ###LAYOUTITEMSHEADER### <<>> $headerscript = '$edit = "index.php?option=com_' . $this->fileContentStatic['###component###'] . '&view=' . $list . '&task=' . $single . '.edit";'; if ($addNewButon > 0) { // add the link for new if ($addNewButon == 1 || $addNewButon == 2) { $headerscript .= PHP_EOL . '$ref = ($id) ? "&ref=' . $viewName_single . '&refid=".$id : "";'; $headerscript .= PHP_EOL . '$new = "index.php?option=com_' . $this->fileContentStatic['###component###'] . '&view=' . $single . '&layout=edit".$ref;'; } // and the link for close and new if ($addNewButon == 2 || $addNewButon == 3) { $headerscript .= PHP_EOL . '$close_new = "index.php?option=com_' . $this->fileContentStatic['###component###'] . '&view=' . $single . '&layout=edit";'; } $headerscript .= PHP_EOL . '$can = ' . $this->fileContentStatic['###Component###'] . 'Helper::getActions(' . "'" . $single . "'" . ');'; } $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName]['###LAYOUTITEMSHEADER###'] = $headerscript; // ###LINKEDVIEWITEMS### <<>> $this->fileContentDynamic[$viewName_single]['###LINKEDVIEWITEMS###'] .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get Linked view data" . PHP_EOL . "\t\t\$this->" . $codeName . " = \$this->get('" . $functionName . "');"; // ###LINKEDVIEWTABLESCRIPTS### <<>> $this->fileContentDynamic[$viewName_single]['###LINKEDVIEWTABLESCRIPTS###'] = $this->setFootableScripts(); if (strpos($parentKey, '-R>') !== false || strpos($parentKey, '-A>') !== false) { list($parent_key) = explode('-', $parentKey); } elseif (strpos($parentKey, '-OR>') !== false) { // this is not good... (TODO) $parent_keys = explode('-OR>', $parentKey); } else { $parent_key = $parentKey; } if (strpos($key, '-R>') !== false || strpos($key, '-A>') !== false) { list($_key) = explode('-', $key); } elseif (strpos($key, '-OR>') !== false) { $_key = str_replace('-OR>', '', $key); } else { $_key = $key; } // ###LINKEDVIEWGLOBAL### <<>> if (isset($parent_keys) && ComponentbuilderHelper::checkArray($parent_keys)) { $globalKey = array(); foreach ($parent_keys as $parent_key) { $globalKey[$parent_key] = ComponentbuilderHelper::safeString($_key . $this->uniquekey(4)); $this->fileContentDynamic[$viewName_single]['###LINKEDVIEWGLOBAL###'] .= PHP_EOL . "\t\t\$this->" . $globalKey[$parent_key] . " = \$item->" . $parent_key . ";"; } } else { // set the global key $globalKey = ComponentbuilderHelper::safeString($_key . $this->uniquekey(4)); $this->fileContentDynamic[$viewName_single]['###LINKEDVIEWGLOBAL###'] .= PHP_EOL . "\t\t\$this->" . $globalKey . " = \$item->" . $parent_key . ";"; } // ###LINKEDVIEWMETHODS### <<>> $this->fileContentDynamic[$viewName_single]['###LINKEDVIEWMETHODS###'] .= $this->setListQueryLinked($single, $list, $functionName, $key, $_key, $parentKey, $parent_key, $globalKey); } else { $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName]['###LAYOUTITEMSTABLE###'] = 'oops! error.....'; $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName]['###LAYOUTITEMSHEADER###'] = ''; } } /** * @param bool $init * @return string */ public function setFootableScripts($init = true) { if (!isset($this->footableVersion) || 2 == $this->footableVersion) // loading version 2 { $foo = PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add the CSS for Footable."; $foo .= PHP_EOL . "\t\t\$this->document->addStyleSheet(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/css/footable.core.min.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $foo .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Use the Metro Style"; $foo .= PHP_EOL . "\t\tif (!isset(\$this->fooTableStyle) || 0 == \$this->fooTableStyle)"; $foo .= PHP_EOL . "\t\t{"; $foo .= PHP_EOL . "\t\t\t\$this->document->addStyleSheet(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/css/footable.metro.min.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $foo .= PHP_EOL . "\t\t}"; $foo .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Use the Legacy Style."; $foo .= PHP_EOL . "\t\telseif (isset(\$this->fooTableStyle) && 1 == \$this->fooTableStyle)"; $foo .= PHP_EOL . "\t\t{"; $foo .= PHP_EOL . "\t\t\t\$this->document->addStyleSheet(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/css/footable.standalone.min.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $foo .= PHP_EOL . "\t\t}"; $foo .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add the JavaScript for Footable"; $foo .= PHP_EOL . "\t\t\$this->document->addScript(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/js/footable.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $foo .= PHP_EOL . "\t\t\$this->document->addScript(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/js/footable.sort.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $foo .= PHP_EOL . "\t\t\$this->document->addScript(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/js/footable.filter.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; $foo .= PHP_EOL . "\t\t\$this->document->addScript(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v2/js/footable.paginate.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; if ($init) { $foo .= PHP_EOL . PHP_EOL . "\t\t" . '$footable = "jQuery(document).ready(function() { jQuery(function () { jQuery(' . "'.footable'" . ').footable(); }); jQuery(' . "'.nav-tabs'" . ').on(' . "'click'" . ', ' . "'li'" . ', function() { setTimeout(tableFix, 10); }); }); function tableFix() { jQuery(' . "'.footable'" . ').trigger(' . "'footable_resize'" . '); }";'; $foo .= PHP_EOL . "\t\t\$this->document->addScriptDeclaration(\$footable);" . PHP_EOL; } } elseif (3 == $this->footableVersion) // loading version 3 { $foo = PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add the CSS for Footable"; $foo .= PHP_EOL . "\t\t\$this->document->addStyleSheet('https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');"; $foo .= PHP_EOL . "\t\t\$this->document->addStyleSheet(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v3/css/footable.standalone.min.css', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/css');"; $foo .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add the JavaScript for Footable (adding all funtions)"; $foo .= PHP_EOL . "\t\t\$this->document->addScript(JURI::root() .'media/com_" . $this->fileContentStatic['###component###'] . "/footable-v3/js/footable.min.js', (" . $this->fileContentStatic['###Component###'] . "Helper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');"; if ($init) { $foo .= PHP_EOL . PHP_EOL . "\t\t" . '$footable = "jQuery(document).ready(function() { jQuery(function () { jQuery(' . "'.footable'" . ').footable();});});";'; $foo .= PHP_EOL . "\t\t\$this->document->addScriptDeclaration(\$footable);" . PHP_EOL; } } return $foo; } /** * @param $viewName_single * @param $viewName_list * @param $refview * @return string */ public function setListBodyLinked($viewName_single, $viewName_list, $refview) { if (isset($this->listBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->listBuilder[$viewName_list])) { // component helper name $Helper = $this->fileContentStatic['###Component###'] . 'Helper'; // make sure the custom links are only added once $firstTimeBeingAdded = true; // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } $counter = 0; // add the default $body = PHP_EOL . ""; $body .= PHP_EOL . " \$item): ?>"; $body .= PHP_EOL . "\tauthorise('core.manage', 'com_checkin') || \$item->checked_out == \$user->id || \$item->checked_out == 0;"; $body .= PHP_EOL . "\t\t\$userChkOut = JFactory::getUser(\$item->checked_out);"; $body .= PHP_EOL . "\t\t\$canDo = " . $Helper . "::getActions('" . $viewName_single . "',\$item,'" . $viewName_list . "');"; $body .= PHP_EOL . "\t?>"; $body .= PHP_EOL . "\t" . ''; // check if this view has fields that should not be escaped $doNotEscape = false; if (isset($this->doNotEscape[$viewName_list])) { $doNotEscape = true; } // start adding the dynamic foreach ($this->listBuilder[$viewName_list] as $item) { $counter++; $checkoutTriger = false; if (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && isset($item['custom']['table']) && ComponentbuilderHelper::checkString($item['custom']['table'])) { $item['id'] = $item['code']; if (!$item['multiple']) { $item['code'] = $item['code'] . '_' . $item['custom']['text']; } } // check if translated vlaue is used if (isset($this->selectionTranslationFixBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->selectionTranslationFixBuilder[$viewName_list]) && array_key_exists($item['code'], $this->selectionTranslationFixBuilder[$viewName_list])) { $itemCode = '' . $item['code'] . '); ?>'; } elseif ($item['custom']['text'] === 'user') { $itemCode = '' . $item['code'] . ')->name; ?>'; } elseif ($doNotEscape) { if (in_array($item['code'], $this->doNotEscape[$viewName_list])) { $itemCode = '' . $item['code'] . '; ?>'; } else { $itemCode = 'escape($item->' . $item['code'] . '); ?>'; } } else { $itemCode = 'escape($item->' . $item['code'] . '); ?>'; } if ($item['link']) { // allways rest custom links $customAdminView = ''; // if to be linked if ($item['type'] === 'category' && !$item['title']) { $otherViews = $this->catCodeBuilder[$viewName_single]['views']; // category and linked $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tauthorise('core.edit', 'com_" . $this->fileContentStatic['###component###'] . "." . $otherViews . ".category.' . (int)\$item->" . $item['code'] . ")): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'escape($item->category_title); ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tescape(\$item->category_title); ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } elseif ($item['type'] === 'user' && !$item['title']) { // user and linked $body .= PHP_EOL . "\t\t" . $item['code'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tauthorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } else { $add = true; if (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] != 'user' && !$item['title']) { if ($refview === $item['custom']['view']) { // normal not linked $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\t" . $itemCode; $body .= PHP_EOL . "\t\t"; $add = false; } else { // link to that item instead $link = 'index.php?option=' . $item['custom']['component'] . '&view=' . $item['custom']['views'] . '&task=' . $item['custom']['view'] . '.edit&id=' . $item['id'] . '; ?>&ref=' . $refview . '&refid='; $coreLoadLink = false; if (isset($this->permissionCore[$item['custom']['view']])) { $coreLink = $this->permissionCore[$item['custom']['view']]; $coreLoadLink = true; } // check if the item has permissions. if ($coreLoadLink && isset($this->permissionBuilder[$coreLink['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$coreLink['core.edit']]) && in_array($item['custom']['view'], $this->permissionBuilder[$coreLink['core.edit']])) { $accessCheck = "\$user->authorise('" . $coreLink['core.edit'] . "', 'com_" . $this->fileContentStatic['###component###'] . "." . $item['custom']['view'] . ".' . (int)\$item->" . $item['id'] . ")"; } else { $accessCheck = "\$user->authorise('core.edit', 'com_" . $this->fileContentStatic['###component###'] . "." . $item['custom']['view'] . ".' . (int)\$item->" . $item['id'] . ")"; } } } elseif (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] === 'user' && !$item['title']) { // user and linked $body .= PHP_EOL . "\t\t" . $item['id'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tauthorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; $add = false; } else { $link = '&id=id; ?>&ref=' . $refview . '&refid='; // check if custom links should be added to this list views if (isset($this->customAdminViewListLink[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customAdminViewListLink[$viewName_list]) && $firstTimeBeingAdded) { // make sure the custom links are only added once $firstTimeBeingAdded = false; // start building the links $customAdminView = PHP_EOL . "\t\t\t" . '
    '; foreach ($this->customAdminViewListLink[$viewName_list] as $customLinkView) { $customAdminView .= PHP_EOL . "\t\t\tget('" . $customLinkView['link'] . ".access')): ?>"; $customAdminView .= PHP_EOL . "\t\t\t\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>" >'; $customAdminView .= PHP_EOL . "\t\t\t"; $customAdminView .= PHP_EOL . "\t\t\t\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>">'; $customAdminView .= PHP_EOL . "\t\t\t"; } $customAdminView .= PHP_EOL . "\t\t\t" . '
    '; } // check if the item has permissions. if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']])) { // set permissions. $accessCheck = "\$canDo->get('" . $core['core.edit'] . "')"; } else { // set permissions. $accessCheck = "\$canDo->get('core.edit')"; } // triger the checked out script to be added $checkoutTriger = true; } if ($add) { // set as linked $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\t" . '' . $itemCode . ''; if ($checkoutTriger) { $body .= PHP_EOL . "\t\t\t\t\tchecked_out): ?>"; $body .= PHP_EOL . "\t\t\t\t\t\tname, \$item->checked_out_time, '" . $viewName_list . ".', \$canCheckin); ?>"; $body .= PHP_EOL . "\t\t\t\t\t"; } $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\t" . '
    ' . $itemCode . '
    '; $body .= PHP_EOL . "\t\t\t"; $body .= $customAdminView; $body .= PHP_EOL . "\t\t"; } } } else { if ($item['type'] === 'category') { $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\tescape(\$item->category_title); ?>"; $body .= PHP_EOL . "\t\t"; } elseif (ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['extends'] === 'user') { // custom user and linked $body .= PHP_EOL . "\t\t" . $item['id'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tauthorise('core.edit', 'com_users')): ?>"; $body .= PHP_EOL . "\t\t\t\t" . 'name; ?>'; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t\t"; $body .= PHP_EOL . "\t\t"; } elseif ($item['type'] === 'user') { // user name only $body .= PHP_EOL . "\t\t" . $item['code'] . "); ?>"; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tname; ?>"; $body .= PHP_EOL . "\t\t"; } else { // normal not linked $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t\t\t" . $itemCode; $body .= PHP_EOL . "\t\t"; } } } $counter = $counter + 2; $data_value = (3 == $this->footableVersion) ? 'data-sort-value' : 'data-value'; // add the defaults $body .= PHP_EOL . "\t\tpublished == 1):?>"; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t\t" . 'langPrefix . "_PUBLISHED'" . '); ?>">'; $body .= PHP_EOL . "\t\t\t\t\t" . 'langPrefix . "_PUBLISHED'" . '); ?>'; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\tpublished == 0):?>"; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t\t" . 'langPrefix . "_INACTIVE'" . '); ?>">'; $body .= PHP_EOL . "\t\t\t\t\t" . 'langPrefix . "_INACTIVE'" . '); ?>'; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\tpublished == 2):?>"; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t\t" . 'langPrefix . "_ARCHIVED'" . '); ?>">'; $body .= PHP_EOL . "\t\t\t\t\t" . 'langPrefix . "_ARCHIVED'" . '); ?>'; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\tpublished == -2):?>"; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t\t" . 'langPrefix . "_TRASHED'" . '); ?>">'; $body .= PHP_EOL . "\t\t\t\t\t" . 'langPrefix . "_TRASHED'" . '); ?>'; $body .= PHP_EOL . "\t\t\t\t" . ''; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\tid; ?>"; $body .= PHP_EOL . "\t\t"; $body .= PHP_EOL . "\t"; $body .= PHP_EOL . ""; $body .= PHP_EOL . ""; if (2 == $this->footableVersion) { $body .= PHP_EOL . ''; $body .= PHP_EOL . "\t" . ''; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t\t\t" . ''; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t" . ''; $body .= PHP_EOL . ''; } $body .= PHP_EOL . ''; $body .= PHP_EOL . ''; $body .= PHP_EOL . "\t" . '
    '; $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t" . '
    '; $body .= PHP_EOL . ''; // return the build return $body; } return ''; } public function setListHeadLinked($viewName_single, $viewName_list, $addNewButon, $refview) { if (isset($this->listBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->listBuilder[$viewName_list])) { // component helper name $Helper = $this->fileContentStatic['###Component###'] . 'Helper'; $head = ''; // only add new button if set if ($addNewButon > 0) { // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName_single])) { $core = $this->permissionCore[$viewName_single]; $coreLoad = true; } // check if the item has permissions. if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.create']])) { // set permissions. $accessCheck = "\$can->get('" . $core['core.create'] . "')"; } else { // set permissions. $accessCheck = "\$can->get('core.create')"; } // add a button for new $head = ''; // make group button if needed $tabB = ""; if ($addNewButon == 2) { $head .= PHP_EOL . "\t" . '
    '; $tabB = "\t"; } // add the new buttons if ($addNewButon == 1 || $addNewButon == 2) { $head .= PHP_EOL . $tabB . "\t" . ' langPrefix . "_NEW'" . '); ?>'; } // add the close and new button if ($addNewButon == 2 || $addNewButon == 3) { $head .= PHP_EOL . $tabB . "\t" . ' langPrefix . "_CLOSE_NEW'" . '); ?>'; } // close group button if needed if ($addNewButon == 2) { $head .= PHP_EOL . "\t" . '


    '; } else { $head .= '

    '; } $head .= PHP_EOL . '' . PHP_EOL; } $head .= ''; // set the style for V2 $metro_blue = (2 == $this->footableVersion) ? ' metro-blue' : ''; // set the toggle for V3 $toggle = (3 == $this->footableVersion) ? ' data-show-toggle="true" data-toggle-column="first"' : ''; // set paging $paging = (2 == $this->footableVersion) ? ' data-page-size="20" data-filter="#filter_' . $viewName_list . '"' : ' data-sorting="true" data-paging="true" data-paging-size="20" data-filtering="true"'; // add html fix for V3 $htmlFix = (3 == $this->footableVersion) ? ' data-type="html" data-sort-use="text"' : ''; $head .= PHP_EOL . ''; $head .= PHP_EOL . ""; // main lang prefix $langView = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($viewName_single, 'U'); // set status lang $statusLangName = $langView . '_STATUS'; // set id lang $idLangName = $langView . '_ID'; // make sure only first link is used as togeler $firstLink = true; // add to lang array if (!isset($this->langContent[$this->lang][$statusLangName])) { $this->langContent[$this->lang][$statusLangName] = 'Status'; } // add to lang array if (!isset($this->langContent[$this->lang][$idLangName])) { $this->langContent[$this->lang][$idLangName] = 'Id'; } $head .= PHP_EOL . "\t"; // set controller for data hiding options $controller = 1; // build the dynamic fields foreach ($this->listBuilder[$viewName_list] as $item) { $setin = (2 == $this->footableVersion) ? ' data-hide="phone"' : ' data-breakpoints="xs sm"'; if ($controller > 3) { $setin = (2 == $this->footableVersion) ? ' data-hide="phone,tablet"' : ' data-breakpoints="xs sm md"'; } if ($controller > 6) { $setin = (2 == $this->footableVersion) ? ' data-hide="all"' : ' data-breakpoints="all"'; } if ($item['link'] && $firstLink) { $setin = (2 == $this->footableVersion) ? ' data-toggle="true"' : ''; $firstLink = false; } $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t"; $controller++; } // set some V3 attr $data_hide = (2 == $this->footableVersion) ? 'data-hide="phone,tablet"' : 'data-breakpoints="xs sm md"'; $data_type = (2 == $this->footableVersion) ? 'data-type="numeric"' : 'data-type="number"'; // set default $head .= PHP_EOL . "\t\t" . '"; $head .= PHP_EOL . "\t\t" . '"; $head .= PHP_EOL . "\t"; $head .= PHP_EOL . ""; return $head; } return ''; } /** * @param $viewName_single * @param $viewName_list * @param $functionName * @param $key * @param $_key * @param $parentKey * @param $parent_key * @param $globalKey * @return string */ public function setListQueryLinked($viewName_single, $viewName_list, $functionName, $key, $_key, $parentKey, $parent_key, $globalKey) { // check if this view has category added if (isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list])) { $categoryCodeName = $this->categoryBuilder[$viewName_list]['code']; $addCategory = true; } else { $addCategory = false; } $query = PHP_EOL . PHP_EOL . "\t/**"; $query .= PHP_EOL . "\t* Method to get list data."; $query .= PHP_EOL . "\t*"; $query .= PHP_EOL . "\t* @return mixed An array of data items on success, false on failure."; $query .= PHP_EOL . "\t*/"; $query .= PHP_EOL . "\tpublic function get" . $functionName . "()"; $query .= PHP_EOL . "\t{"; // setup the query $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the user object."; $query .= PHP_EOL . "\t\t\$user = JFactory::getUser();"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $query .= PHP_EOL . "\t\t\$db = JFactory::getDBO();"; $query .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Select some fields"; $query .= PHP_EOL . "\t\t\$query->select('a.*');"; // add the category if ($addCategory) { $query .= PHP_EOL . "\t\t\$query->select(\$db->quoteName('c.title','category_title'));"; } $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " From the " . $this->fileContentStatic['###component###'] . "_" . $viewName_single . " table"; $query .= PHP_EOL . "\t\t\$query->from(\$db->quoteName('#__" . $this->fileContentStatic['###component###'] . "_" . $viewName_single . "', 'a'));"; // add the category if ($addCategory) { $query .= PHP_EOL . "\t\t\$query->join('LEFT', \$db->quoteName('#__categories', 'c') . ' ON (' . \$db->quoteName('a." . $categoryCodeName . "') . ' = ' . \$db->quoteName('c.id') . ')');"; } // add custom filtering php $query .= $this->getCustomScriptBuilder('php_getlistquery', $viewName_single, PHP_EOL . PHP_EOL); // add the custom fields query $query .= $this->setCustomQuery($viewName_list, $viewName_single); if (ComponentbuilderHelper::checkString($globalKey) && $key && strpos($key, '-R>') === false && strpos($key, '-A>') === false && strpos($key, '-OR>') === false && $parentKey && strpos($parentKey, '-R>') === false && strpos($parentKey, '-A>') === false && strpos($parentKey, '-OR>') === false) { $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by " . $globalKey . " global."; $query .= PHP_EOL . "\t\t\$" . $globalKey . " = \$this->" . $globalKey . ";"; $query .= PHP_EOL . "\t\tif (is_numeric(\$" . $globalKey . " ))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a." . $key . " = ' . (int) \$" . $globalKey . " );"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telseif (is_string(\$" . $globalKey . "))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a." . $key . " = ' . \$db->quote(\$" . $globalKey . "));"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telse"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a." . $key . " = -5');"; $query .= PHP_EOL . "\t\t}"; } elseif (strpos($parentKey, '-OR>') !== false || strpos($key, '-OR>') !== false) { // get both strings if (strpos($key, '-OR>') !== false) { $ORarray = explode('-OR>', $key); } else { $ORarray = array($key); } // make sure we have an array if (!ComponentbuilderHelper::checkArray($globalKey)) { $globalKey = array($globalKey); } // now load the query (this may be to much... but hey let it write the code :) foreach ($globalKey as $_globalKey) { // now build the query $ORquery = array('s' => array(), 'i' => array()); foreach ($ORarray as $ORkey) { $ORquery['i'][] = "a." . $ORkey . " = ' . (int) \$" . $_globalKey; $ORquery['s'][] = "a." . $ORkey . " = ' . \$db->quote(\$" . $_globalKey . ")"; } $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by " . $_globalKey . " global."; $query .= PHP_EOL . "\t\t\$" . $_globalKey . " = \$this->" . $_globalKey . ";"; $query .= PHP_EOL . "\t\tif (is_numeric(\$" . $_globalKey . " ))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('" . implode(" . ' OR ", $ORquery['i']) . ", ' OR');"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telseif (is_string(\$" . $_globalKey . "))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('" . implode(" . ' OR ", $ORquery['s']) . ", ' OR');"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telse"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a." . $ORkey . " = -5');"; $query .= PHP_EOL . "\t\t}"; } } if (isset($this->accessBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->accessBuilder[$viewName_single])) { $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Join over the asset groups."; $query .= PHP_EOL . "\t\t\$query->select('ag.title AS access_level');"; $query .= PHP_EOL . "\t\t\$query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access');"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by access level."; $query .= PHP_EOL . "\t\tif (\$access = \$this->getState('filter.access'))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a.access = ' . (int) \$access);"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Implement View Level Access"; $query .= PHP_EOL . "\t\tif (!\$user->authorise('core.options', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$groups = implode(',', \$user->getAuthorisedViewLevels());"; $query .= PHP_EOL . "\t\t\t\$query->where('a.access IN (' . \$groups . ')');"; $query .= PHP_EOL . "\t\t}"; } $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Order the results by ordering"; $query .= PHP_EOL . "\t\t\$query->order('a.published ASC');"; $query .= PHP_EOL . "\t\t\$query->order('a.ordering ASC');"; $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Load the items"; $query .= PHP_EOL . "\t\t\$db->setQuery(\$query);"; $query .= PHP_EOL . "\t\t\$db->execute();"; $query .= PHP_EOL . "\t\tif (\$db->getNumRows())"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$items = \$db->loadObjectList();"; // ###STORE_METHOD_FIX### <<>> $query .= $this->setGetItemsMethodStringFix($viewName_single, $this->fileContentStatic['###Component###'], "\t"); // ###SELECTIONTRANSLATIONFIX### <<>> $query .= $this->setSelectionTranslationFix($viewName_list, $this->fileContentStatic['###Component###'], "\t"); // filter by child repetable field values if (ComponentbuilderHelper::checkString($globalKey) && $key && strpos($key, '-R>') !== false && strpos($key, '-A>') === false) { list($field, $target) = explode('-R>', $key); $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Filter by " . $globalKey . " in this Repetable Field"; $query .= PHP_EOL . "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$items) && isset(\$this->" . $globalKey . "))"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\tforeach (\$items as \$nr => &\$item)"; $query .= PHP_EOL . "\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\tif (isset(\$item->" . $field . ") && " . $this->fileContentStatic['###Component###'] . "Helper::checkJson(\$item->" . $field . "))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\$tmpArray = json_decode(\$item->" . $field . ",true);"; $query .= PHP_EOL . "\t\t\t\t\t\tif (!isset(\$tmpArray['" . $target . "']) || !" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$tmpArray['" . $target . "']) || !in_array(\$this->" . $globalKey . ", \$tmpArray['" . $target . "']))"; $query .= PHP_EOL . "\t\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\telse"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t\telse"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\treturn false;"; $query .= PHP_EOL . "\t\t\t}"; } // filter by child array field values if (ComponentbuilderHelper::checkString($globalKey) && $key && strpos($key, '-R>') === false && strpos($key, '-A>') !== false) { $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Filter by " . $globalKey . " Array Field"; $query .= PHP_EOL . "\t\t\t\$" . $globalKey . " = \$this->" . $globalKey . ";"; $query .= PHP_EOL . "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$items) && \$" . $globalKey . ")"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\tforeach (\$items as \$nr => &\$item)"; $query .= PHP_EOL . "\t\t\t\t{"; list($bin, $target) = explode('-A>', $key); if (ComponentbuilderHelper::checkString($target)) { $query .= PHP_EOL . "\t\t\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkJson(\$item->" . $target . "))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\$item->" . $target . " = json_decode(\$item->" . $target . ", true);"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\telseif (!isset(\$item->" . $target . ") || !" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$item->" . $target . "))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\tif (!in_array(\$" . $globalKey . ",\$item->" . $target . "))"; } else { $query .= PHP_EOL . "\t\t\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkJson(\$item->" . $_key . "))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\$item->" . $_key . " = json_decode(\$item->" . $_key . ", true);"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\telseif (!isset(\$item->" . $_key . ") || !" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$item->" . $_key . "))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\tif (!in_array(\$" . $globalKey . ",\$item->" . $_key . "))"; } $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t\telse"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\treturn false;"; $query .= PHP_EOL . "\t\t\t}"; } // filter by parent repetable field values if (ComponentbuilderHelper::checkString($globalKey) && $key && strpos($parentKey, '-R>') !== false && strpos($parentKey, '-A>') === false) { list($bin, $target) = explode('-R>', $parentKey); $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Filter by " . $_key . " Repetable Field"; $query .= PHP_EOL . "\t\t\t\$" . $globalKey . " = json_decode(\$this->" . $globalKey . ",true);"; $query .= PHP_EOL . "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$items) && isset(\$" . $globalKey . ") && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$" . $globalKey . "))"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\tforeach (\$items as \$nr => &\$item)"; $query .= PHP_EOL . "\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\tif (\$item->" . $_key . " && isset(\$" . $globalKey . "['" . $target . "']) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$" . $globalKey . "['" . $target . "']))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tif (!in_array(\$item->" . $_key . ",\$" . $globalKey . "['" . $target . "']))"; $query .= PHP_EOL . "\t\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\telse"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t\telse"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\treturn false;"; $query .= PHP_EOL . "\t\t\t}"; } // filter by parent array field values if (ComponentbuilderHelper::checkString($globalKey) && $key && strpos($parentKey, '-R>') === false && strpos($parentKey, '-A>') !== false) { $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Filter by " . $globalKey . " Array Field"; $query .= PHP_EOL . "\t\t\t\$" . $globalKey . " = \$this->" . $globalKey . ";"; $query .= PHP_EOL . "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$items) && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$" . $globalKey . "))"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\tforeach (\$items as \$nr => &\$item)"; $query .= PHP_EOL . "\t\t\t\t{"; list($bin, $target) = explode('-A>', $parentKey); if (ComponentbuilderHelper::checkString($target)) { $query .= PHP_EOL . "\t\t\t\t\tif (\$item->" . $_key . " && " . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$" . $globalKey . "['" . $target . "']))"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tif (!in_array(\$item->" . $_key . ",\$" . $globalKey . "['" . $target . "']))"; } else { $query .= PHP_EOL . "\t\t\t\t\tif (\$item->" . $_key . ")"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tif (!in_array(\$item->" . $_key . ",\$" . $globalKey . "))"; } $query .= PHP_EOL . "\t\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t\telse"; $query .= PHP_EOL . "\t\t\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\t\tunset(\$items[\$nr]);"; $query .= PHP_EOL . "\t\t\t\t\t\tcontinue;"; $query .= PHP_EOL . "\t\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t\t}"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t\telse"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\treturn false;"; $query .= PHP_EOL . "\t\t\t}"; } // add custom php to getitems method after all $query .= $this->getCustomScriptBuilder('php_getitems_after_all', $viewName_single, PHP_EOL . PHP_EOL . "\t"); $query .= PHP_EOL . "\t\t\treturn \$items;"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\treturn false;"; $query .= PHP_EOL . "\t}"; // ###SELECTIONTRANSLATIONFIXFUNC###<<>> $query .= $this->setSelectionTranslationFixFunc($viewName_list, $this->fileContentStatic['###Component###']); // fixe mothod name clash $query = str_replace('selectionTranslation(', 'selectionTranslation' . $functionName . '(', $query); return $query; } /** * @param $viewName_list * @return array|string */ public function setCustomAdminDynamicButton($viewName_list) { $buttons = ''; if (isset($this->customAdminDynamicButtons[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customAdminDynamicButtons[$viewName_list])) { $buttons = array(); foreach ($this->customAdminDynamicButtons[$viewName_list] as $custom_button) { // Load to lang $keyLang = $this->langPrefix . '_' . $custom_button['NAME']; $this->langContent[$this->lang][$keyLang] = ComponentbuilderHelper::safeString($custom_button['name'], 'Ww'); // add cpanel button $buttons[] = "\t\tif (\$this->canDo->get('" . $custom_button['link'] . ".access'))"; $buttons[] = "\t\t{"; $buttons[] = "\t\t\t//" . $this->setLine(__LINE__) . " add " . $custom_button['name'] . " button."; $buttons[] = "\t\t\tJToolBarHelper::custom('" . $viewName_list . ".redirectTo" . ComponentbuilderHelper::safeString($custom_button['link'], 'F') . "', '" . $custom_button['icon'] . "', '', '" . $keyLang . "', true);"; $buttons[] = "\t\t}"; } if (ComponentbuilderHelper::checkArray($buttons)) { return implode(PHP_EOL, $buttons); } } return $buttons; } /** * @param $viewName_list * @return array|string */ public function setCustomAdminDynamicButtonController($viewName_list) { $method = ''; if (isset($this->customAdminDynamicButtons[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customAdminDynamicButtons[$viewName_list])) { $method = array(); foreach ($this->customAdminDynamicButtons[$viewName_list] as $custom_button) { // add the custom redirect method $method[] = PHP_EOL . PHP_EOL . "\tpublic function redirectTo" . ComponentbuilderHelper::safeString($custom_button['link'], 'F') . "()"; $method[] = "\t{"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Check for request forgeries"; $method[] = "\t\tJSession::checkToken() or die(JText:".":_('JINVALID_TOKEN'));"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " check if export is allowed for this user."; $method[] = "\t\t\$user = JFactory::getUser();"; $method[] = "\t\tif (\$user->authorise('" . $custom_button['link'] . ".access', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $method[] = "\t\t{"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Get the input"; $method[] = "\t\t\t\$input = JFactory::getApplication()->input;"; $method[] = "\t\t\t\$pks = \$input->post->get('cid', array(), 'array');"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Sanitize the input"; $method[] = "\t\t\tJArrayHelper::toInteger(\$pks);"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " convert to string"; $method[] = "\t\t\t\$ids = implode('_', \$pks);"; $method[] = "\t\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $custom_button['link'] . "&cid='.\$ids, false));"; $method[] = "\t\t\treturn;"; $method[] = "\t\t}"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Redirect to the list screen with error."; $method[] = "\t\t\$message = JText:".":_('" . $this->langPrefix . "_ACCESS_TO_" . $custom_button['NAME'] . "_FAILED');"; $method[] = "\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $viewName_list . "', false), \$message, 'error');"; $method[] = "\t\treturn;"; $method[] = "\t}"; // add to lang array $lankey = $this->langPrefix . "_ACCESS_TO_" . $custom_button['NAME'] . "_FAILED"; if (!isset($this->langContent[$this->lang][$lankey])) { $this->langContent[$this->lang][$lankey] = 'Access to ' . $custom_button['link'] . ' was denied.'; } } return implode(PHP_EOL, $method); } return $method; } /** * @param $viewName_single * @param $viewName_list * @return string */ public function setModelExportMethod($viewName_single, $viewName_list) { $query = ''; if ($this->eximportView[$viewName_list]) { $query = PHP_EOL . PHP_EOL . "\t/**"; $query .= PHP_EOL . "\t* Method to get list export data."; $query .= PHP_EOL . "\t*"; $query .= PHP_EOL . "\t* @return mixed An array of data items on success, false on failure."; $query .= PHP_EOL . "\t*/"; $query .= PHP_EOL . "\tpublic function getExportData(\$pks)"; $query .= PHP_EOL . "\t{"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " setup the query"; $query .= PHP_EOL . "\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$pks))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Set a value to know this is exporting method."; $query .= PHP_EOL . "\t\t\t\$_export = true;"; $query .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Get the user object."; $query .= PHP_EOL . "\t\t\t\$user = JFactory::getUser();"; $query .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $query .= PHP_EOL . "\t\t\t\$db = JFactory::getDBO();"; $query .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Select some fields"; $query .= PHP_EOL . "\t\t\t\$query->select('a.*');"; $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " From the " . $this->fileContentStatic['###component###'] . "_" . $viewName_single . " table"; $query .= PHP_EOL . "\t\t\t\$query->from(\$db->quoteName('#__" . $this->fileContentStatic['###component###'] . "_" . $viewName_single . "', 'a'));"; $query .= PHP_EOL . "\t\t\t\$query->where('a.id IN (' . implode(',',\$pks) . ')');"; // add custom filtering php $query .= $this->getCustomScriptBuilder('php_getlistquery', $viewName_single, PHP_EOL . PHP_EOL . "\t"); if (isset($this->accessBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->accessBuilder[$viewName_single])) { $query .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Implement View Level Access"; $query .= PHP_EOL . "\t\t\tif (!\$user->authorise('core.options', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\$groups = implode(',', \$user->getAuthorisedViewLevels());"; $query .= PHP_EOL . "\t\t\t\t\$query->where('a.access IN (' . \$groups . ')');"; $query .= PHP_EOL . "\t\t\t}"; } $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Order the results by ordering"; $query .= PHP_EOL . "\t\t\t\$query->order('a.ordering ASC');"; $query .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Load the items"; $query .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $query .= PHP_EOL . "\t\t\t\$db->execute();"; $query .= PHP_EOL . "\t\t\tif (\$db->getNumRows())"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\$items = \$db->loadObjectList();"; $query .= $this->setGetItemsMethodStringFix($viewName_single, $this->fileContentStatic['###Component###'], "\t\t", true); // add custom php to getitems method after all $query .= $this->getCustomScriptBuilder('php_getitems_after_all', $viewName_single, PHP_EOL . PHP_EOL . "\t\t"); $query .= PHP_EOL . "\t\t\t\treturn \$items;"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\treturn false;"; $query .= PHP_EOL . "\t}"; // get the header script $header = ComponentbuilderHelper::getDynamicScripts('headers'); // add getExImPortHeaders $query .= $this->getCustomScriptBuilder('php_import_headers', 'import_' . $viewName_list, PHP_EOL . PHP_EOL, null, true, // set a default script for those with no custom script PHP_EOL . PHP_EOL . $this->setPlaceholders($header, $this->placeholders)); } return $query; } public function setControllerEximportMethod($viewName_single, $viewName_list) { $method = ''; if (isset($this->eximportView[$viewName_list]) && $this->eximportView[$viewName_list]) { $method = array(); // add the export method $method[] = PHP_EOL . PHP_EOL . "\tpublic function exportData()"; $method[] = "\t{"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Check for request forgeries"; $method[] = "\t\tJSession::checkToken() or die(JText:".":_('JINVALID_TOKEN'));"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " check if export is allowed for this user."; $method[] = "\t\t\$user = JFactory::getUser();"; $method[] = "\t\tif (\$user->authorise('" . $viewName_single . ".export', 'com_" . $this->fileContentStatic['###component###'] . "') && \$user->authorise('core.export', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $method[] = "\t\t{"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Get the input"; $method[] = "\t\t\t\$input = JFactory::getApplication()->input;"; $method[] = "\t\t\t\$pks = \$input->post->get('cid', array(), 'array');"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Sanitize the input"; $method[] = "\t\t\tJArrayHelper::toInteger(\$pks);"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Get the model"; $method[] = "\t\t\t\$model = \$this->getModel('" . ComponentbuilderHelper::safeString($viewName_list, 'F') . "');"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " get the data to export"; $method[] = "\t\t\t\$data = \$model->getExportData(\$pks);"; $method[] = "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkArray(\$data))"; $method[] = "\t\t\t{"; $method[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " now set the data to the spreadsheet"; $method[] = "\t\t\t\t\$date = JFactory::getDate();"; $method[] = "\t\t\t\t" . $this->fileContentStatic['###Component###'] . "Helper::xls(\$data,'" . ComponentbuilderHelper::safeString($viewName_list, 'F') . "_'.\$date->format('jS_F_Y'),'" . ComponentbuilderHelper::safeString($viewName_list, 'Ww') . " exported ('.\$date->format('jS F, Y').')','" . ComponentbuilderHelper::safeString($viewName_list, 'w') . "');"; $method[] = "\t\t\t}"; $method[] = "\t\t}"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Redirect to the list screen with error."; $method[] = "\t\t\$message = JText:".":_('" . $this->langPrefix . "_EXPORT_FAILED');"; $method[] = "\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $viewName_list . "', false), \$message, 'error');"; $method[] = "\t\treturn;"; $method[] = "\t}"; // add the import method $method[] = PHP_EOL . PHP_EOL . "\tpublic function importData()"; $method[] = "\t{"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Check for request forgeries"; $method[] = "\t\tJSession::checkToken() or die(JText:".":_('JINVALID_TOKEN'));"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " check if import is allowed for this user."; $method[] = "\t\t\$user = JFactory::getUser();"; $method[] = "\t\tif (\$user->authorise('" . $viewName_single . ".import', 'com_" . $this->fileContentStatic['###component###'] . "') && \$user->authorise('core.import', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $method[] = "\t\t{"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " Get the import model"; $method[] = "\t\t\t\$model = \$this->getModel('" . ComponentbuilderHelper::safeString($viewName_list, 'F') . "');"; $method[] = "\t\t\t//" . $this->setLine(__LINE__) . " get the headers to import"; $method[] = "\t\t\t\$headers = \$model->getExImPortHeaders();"; $method[] = "\t\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkObject(\$headers))"; $method[] = "\t\t\t{"; $method[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Load headers to session."; $method[] = "\t\t\t\t\$session = JFactory::getSession();"; $method[] = "\t\t\t\t\$headers = json_encode(\$headers);"; $method[] = "\t\t\t\t\$session->set('" . $viewName_single . "_VDM_IMPORTHEADERS', \$headers);"; $method[] = "\t\t\t\t\$session->set('backto_VDM_IMPORT', '" . $viewName_list . "');"; $method[] = "\t\t\t\t\$session->set('dataType_VDM_IMPORTINTO', '" . $viewName_single . "');"; $method[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Redirect to import view."; // add to lang array $selectImportFileNote = $this->langPrefix . "_IMPORT_SELECT_FILE_FOR_" . ComponentbuilderHelper::safeString($viewName_list, 'U'); if (!isset($this->langContent[$this->lang][$selectImportFileNote])) { $this->langContent[$this->lang][$selectImportFileNote] = 'Select the file to import data to ' . $viewName_list . '.'; } $method[] = "\t\t\t\t\$message = JText:".":_('" . $selectImportFileNote . "');"; // if this view has custom script it must have as custom import (model, veiw, controller) if (isset($this->importCustomScripts[$viewName_list]) && $this->importCustomScripts[$viewName_list]) { $method[] = "\t\t\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=import_" . $viewName_list . "', false), \$message);"; } else { $method[] = "\t\t\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=import', false), \$message);"; } $method[] = "\t\t\t\treturn;"; $method[] = "\t\t\t}"; $method[] = "\t\t}"; $method[] = "\t\t//" . $this->setLine(__LINE__) . " Redirect to the list screen with error."; $method[] = "\t\t\$message = JText:".":_('" . $this->langPrefix . "_IMPORT_FAILED');"; $method[] = "\t\t\$this->setRedirect(JRoute::_('index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $viewName_list . "', false), \$message, 'error');"; $method[] = "\t\treturn;"; $method[] = "\t}"; return implode(PHP_EOL, $method); } return $method; } public function setExportButton($viewName_single, $viewName_list) { $button = ''; if (isset($this->eximportView[$viewName_list]) && $this->eximportView[$viewName_list]) { // main lang prefix $langExport = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Export Data', 'U'); // add to lang array if (!isset($this->langContent[$this->lang][$langExport])) { $this->langContent[$this->lang][$langExport] = 'Export Data'; } $button = array(); $button[] = PHP_EOL . PHP_EOL . "\t\t\tif (\$this->canDo->get('core.export') && \$this->canDo->get('" . $viewName_single . ".export'))"; $button[] = "\t\t\t{"; $button[] = "\t\t\t\tJToolBarHelper::custom('" . $viewName_list . ".exportData', 'download', '', '" . $langExport . "', true);"; $button[] = "\t\t\t}"; return implode(PHP_EOL, $button); } return $button; } public function setImportButton($viewName_single, $viewName_list) { $button = ''; if (isset($this->eximportView[$viewName_list]) && $this->eximportView[$viewName_list]) { // main lang prefix $langImport = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Import Data', 'U'); // add to lang array if (!isset($this->langContent[$this->lang][$langImport])) { $this->langContent[$this->lang][$langImport] = 'Import Data'; } $button = array(); $button[] = PHP_EOL . PHP_EOL . "\t\tif (\$this->canDo->get('core.import') && \$this->canDo->get('" . $viewName_single . ".import'))"; $button[] = "\t\t{"; $button[] = "\t\t\tJToolBarHelper::custom('" . $viewName_list . ".importData', 'upload', '', '" . $langImport . "', false);"; $button[] = "\t\t}"; return implode(PHP_EOL, $button); } return $button; } public function setImportCustomScripts($viewName_list) { // setup Ajax files $target = array('admin' => 'import_' . $viewName_list); $this->buildDynamique($target, 'customimport'); // load the custom script to the files // ###IMPORT_EXT_METHOD_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_EXT_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_ext', 'import_' . $viewName_list, PHP_EOL, null, true); // ###IMPORT_DISPLAY_METHOD_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_DISPLAY_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_display', 'import_' . $viewName_list, PHP_EOL, null, true); // ###IMPORT_SETDATE_METHOD_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_SETDATE_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_setdata', 'import_' . $viewName_list, PHP_EOL, null, true); // ###IMPORT_METHOD_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import', 'import_' . $viewName_list, PHP_EOL, null, true); // ###IMPORT_SAVE_METHOD_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_SAVE_METHOD_CUSTOM###'] = $this->getCustomScriptBuilder('php_import_save', 'import_' . $viewName_list, PHP_EOL, null, true); // ###IMPORT_DEFAULT_VIEW_CUSTOM### <<>> $this->fileContentDynamic['import_' . $viewName_list]['###IMPORT_DEFAULT_VIEW_CUSTOM###'] = $this->getCustomScriptBuilder('html_import_view', 'import_' . $viewName_list, PHP_EOL, null, true); // insure we have the view placeholders setup $this->fileContentDynamic['import_' . $viewName_list]['###VIEW###'] = 'IMPORT_' . $this->placeholders['###VIEWS###']; $this->fileContentDynamic['import_' . $viewName_list]['###View###'] = 'Import_' . $this->placeholders['###views###']; $this->fileContentDynamic['import_' . $viewName_list]['###view###'] = 'import_' . $this->placeholders['###views###']; $this->fileContentDynamic['import_' . $viewName_list]['###VIEWS###'] = 'IMPORT_' . $this->placeholders['###VIEWS###']; $this->fileContentDynamic['import_' . $viewName_list]['###Views###'] = 'Import_' . $this->placeholders['###views###']; $this->fileContentDynamic['import_' . $viewName_list]['###views###'] = 'import_' . $this->placeholders['###views###']; } public function setListQuery($viewName_single, $viewName_list) { // check if this view has category added if (isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list])) { $categoryCodeName = $this->categoryBuilder[$viewName_list]['code']; $addCategory = true; } else { $addCategory = false; } // setup the query $query = "//" . $this->setLine(__LINE__) . " Get the user object."; $query .= PHP_EOL . "\t\t\$user = JFactory::getUser();"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object."; $query .= PHP_EOL . "\t\t\$db = JFactory::getDBO();"; $query .= PHP_EOL . "\t\t\$query = \$db->getQuery(true);"; $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Select some fields"; $query .= PHP_EOL . "\t\t\$query->select('a.*');"; // add the category if ($addCategory) { $query .= PHP_EOL . "\t\t\$query->select(\$db->quoteName('c.title','category_title'));"; } $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " From the " . $this->fileContentStatic['###component###'] . "_item table"; $query .= PHP_EOL . "\t\t\$query->from(\$db->quoteName('#__" . $this->fileContentStatic['###component###'] . "_" . $viewName_single . "', 'a'));"; // add the category if ($addCategory) { $query .= PHP_EOL . "\t\t\$query->join('LEFT', \$db->quoteName('#__categories', 'c') . ' ON (' . \$db->quoteName('a." . $categoryCodeName . "') . ' = ' . \$db->quoteName('c.id') . ')');"; } // add custom filtering php $query .= $this->getCustomScriptBuilder('php_getlistquery', $viewName_single, PHP_EOL . PHP_EOL); // add the custom fields query $query .= $this->setCustomQuery($viewName_list, $viewName_single); $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by published state"; $query .= PHP_EOL . "\t\t\$published = \$this->getState('filter.published');"; $query .= PHP_EOL . "\t\tif (is_numeric(\$published))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a.published = ' . (int) \$published);"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telseif (\$published === '')"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('(a.published = 0 OR a.published = 1)');"; $query .= PHP_EOL . "\t\t}"; if (isset($this->accessBuilder[$viewName_single]) && ComponentbuilderHelper::checkString($this->accessBuilder[$viewName_single])) { $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Join over the asset groups."; $query .= PHP_EOL . "\t\t\$query->select('ag.title AS access_level');"; $query .= PHP_EOL . "\t\t\$query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access');"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by access level."; $query .= PHP_EOL . "\t\tif (\$access = \$this->getState('filter.access'))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->where('a.access = ' . (int) \$access);"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Implement View Level Access"; $query .= PHP_EOL . "\t\tif (!\$user->authorise('core.options', 'com_" . $this->fileContentStatic['###component###'] . "'))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$groups = implode(',', \$user->getAuthorisedViewLevels());"; $query .= PHP_EOL . "\t\t\t\$query->where('a.access IN (' . \$groups . ')');"; $query .= PHP_EOL . "\t\t}"; } // set the search query $query .= $this->setSearchQuery($viewName_list); // set other filters $query .= $this->setFilterQuery($viewName_list); // add the category if ($addCategory) { $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by a single or group of categories."; $query .= PHP_EOL . "\t\t\$baselevel = 1;"; $query .= PHP_EOL . "\t\t\$categoryId = \$this->getState('filter.category_id');"; $query .= PHP_EOL; $query .= PHP_EOL . "\t\tif (is_numeric(\$categoryId))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$cat_tbl = JTable::getInstance('Category', 'JTable');"; $query .= PHP_EOL . "\t\t\t\$cat_tbl->load(\$categoryId);"; $query .= PHP_EOL . "\t\t\t\$rgt = \$cat_tbl->rgt;"; $query .= PHP_EOL . "\t\t\t\$lft = \$cat_tbl->lft;"; $query .= PHP_EOL . "\t\t\t\$baselevel = (int) \$cat_tbl->level;"; $query .= PHP_EOL . "\t\t\t\$query->where('c.lft >= ' . (int) \$lft)"; $query .= PHP_EOL . "\t\t\t\t->where('c.rgt <= ' . (int) \$rgt);"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL . "\t\telseif (is_array(\$categoryId))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\tJArrayHelper::toInteger(\$categoryId);"; $query .= PHP_EOL . "\t\t\t\$categoryId = implode(',', \$categoryId);"; $query .= PHP_EOL . "\t\t\t\$query->where('a.category IN (' . \$categoryId . ')');"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL; } $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add the list ordering clause."; $query .= PHP_EOL . "\t\t\$orderCol = \$this->state->get('list.ordering', 'a.id');"; $query .= PHP_EOL . "\t\t\$orderDirn = \$this->state->get('list.direction', 'asc'); "; $query .= PHP_EOL . "\t\tif (\$orderCol != '')"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\t\$query->order(\$db->escape(\$orderCol . ' ' . \$orderDirn));"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL; $query .= PHP_EOL . "\t\treturn \$query;"; return $query; } public function setSearchQuery($viewName_list) { if (isset($this->searchBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->searchBuilder[$viewName_list])) { // setup the searh options $search = "'("; foreach ($this->searchBuilder[$viewName_list] as $nr => $array) { // array( 'type' => $typeName, 'code' => $name, 'custom' => $custom, 'list' => $field['list']); if ($nr == 0) { $search .= "a." . $array['code'] . " LIKE '.\$search.'"; if (ComponentbuilderHelper::checkArray($array['custom']) && 1 == $array['list']) { $search .= " OR " . $array['custom']['db'] . "." . $array['custom']['text'] . " LIKE '.\$search.'"; } } else { $search .= " OR a." . $array['code'] . " LIKE '.\$search.'"; if (ComponentbuilderHelper::checkArray($array['custom']) && 1 == $array['list']) { $search .= " OR " . $array['custom']['db'] . "." . $array['custom']['text'] . " LIKE '.\$search.'"; } } } $search .= ")'"; // now setup query $query = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by search."; $query .= PHP_EOL . "\t\t\$search = \$this->getState('filter.search');"; $query .= PHP_EOL . "\t\tif (!empty(\$search))"; $query .= PHP_EOL . "\t\t{"; $query .= PHP_EOL . "\t\t\tif (stripos(\$search, 'id:') === 0)"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\$query->where('a.id = ' . (int) substr(\$search, 3));"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t\telse"; $query .= PHP_EOL . "\t\t\t{"; $query .= PHP_EOL . "\t\t\t\t\$search = \$db->quote('%' . \$db->escape(\$search) . '%');"; $query .= PHP_EOL . "\t\t\t\t\$query->where(" . $search . ");"; $query .= PHP_EOL . "\t\t\t}"; $query .= PHP_EOL . "\t\t}"; $query .= PHP_EOL; return $query; } return ''; } public function setCustomQuery($viewName_list, $viewName_single) { if (isset($this->customBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customBuilder[$viewName_list])) { $query = ""; foreach ($this->customBuilder[$viewName_list] as $filter) { // only load this if table is set if (isset($this->customBuilderList[$viewName_list]) && ComponentbuilderHelper::checkArray($this->customBuilderList[$viewName_list]) && in_array($filter['code'], $this->customBuilderList[$viewName_list]) && isset($filter['custom']['table']) && ComponentbuilderHelper::checkString($filter['custom']['table']) && $filter['method'] == 0) { $query .= PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " From the " . ComponentbuilderHelper::safeString(ComponentbuilderHelper::safeString($filter['custom']['table'], 'w')) . " table."; $query .= PHP_EOL . "\t\t\$query->select(\$db->quoteName('" . $filter['custom']['db'] . "." . $filter['custom']['text'] . "','" . $filter['code'] . "_" . $filter['custom']['text'] . "'));"; $query .= PHP_EOL . "\t\t\$query->join('LEFT', \$db->quoteName('" . $filter['custom']['table'] . "', '" . $filter['custom']['db'] . "') . ' ON (' . \$db->quoteName('a." . $filter['code'] . "') . ' = ' . \$db->quoteName('" . $filter['custom']['db'] . "." . $filter['custom']['id'] . "') . ')');"; } // build the field type file $this->setCustomFieldTypeFile($filter, $viewName_list, $viewName_single); } return $query; } } public function setAddButttonToListField($targetView, $targetViews) { $addButton = array(); $addButton[] = PHP_EOL . "\t/**"; $addButton[] = "\t * Override to add new button"; $addButton[] = "\t *"; $addButton[] = "\t * @return string The field input markup."; $addButton[] = "\t *"; $addButton[] = "\t * @since 3.2"; $addButton[] = "\t */"; $addButton[] = "\tprotected function getInput()"; $addButton[] = "\t{"; $addButton[] = "\t\t//" . $this->setLine(__LINE__) . " see if we should add buttons"; $addButton[] = "\t\t\$setButton = \$this->getAttribute('button');"; $addButton[] = "\t\t//" . $this->setLine(__LINE__) . " get html"; $addButton[] = "\t\t\$html = parent::getInput();"; $addButton[] = "\t\t//" . $this->setLine(__LINE__) . " if true set button"; $addButton[] = "\t\tif (\$setButton === 'true')"; $addButton[] = "\t\t{"; $addButton[] = "\t\t\t\$button = array();"; $addButton[] = "\t\t\t\$script = array();"; $addButton[] = "\t\t\t\$buttonName = \$this->getAttribute('name');"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " get the input from url"; $addButton[] = "\t\t\t\$app = JFactory::getApplication();"; $addButton[] = "\t\t\t\$jinput = \$app->input;"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " get the view name & id"; $addButton[] = "\t\t\t\$values = \$jinput->getArray(array("; $addButton[] = "\t\t\t\t'id' => 'int',"; $addButton[] = "\t\t\t\t'view' => 'word'"; $addButton[] = "\t\t\t));"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " check if new item"; $addButton[] = "\t\t\t\$ref = '';"; $addButton[] = "\t\t\t\$refJ = '';"; $addButton[] = "\t\t\tif (!is_null(\$values['id']) && strlen(\$values['view']))"; $addButton[] = "\t\t\t{"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " only load referal if not new item."; $addButton[] = "\t\t\t\t\$ref = '&ref=' . \$values['view'] . '&refid=' . \$values['id'];"; $addButton[] = "\t\t\t\t\$refJ = '&ref=' . \$values['view'] . '&refid=' . \$values['id'];"; $addButton[] = "\t\t\t}"; $addButton[] = "\t\t\t\$user = JFactory::getUser();"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " only add if user allowed to create " . $targetView; // get core permissions $coreLoad = false; if (isset($this->permissionCore[$targetView])) { $core = $this->permissionCore[$targetView]; $coreLoad = true; } // check if the item has permissions. if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($targetView, $this->permissionBuilder['global'][$core['core.create']])) { $addButton[] = "\t\t\tif (\$user->authorise('" . $core['core.create'] . "', 'com_" . $this->fileContentStatic['###component###'] . "') && \$app->isAdmin()) // TODO for now only in admin area."; } else { $addButton[] = "\t\t\tif (\$user->authorise('core.create', 'com_" . $this->fileContentStatic['###component###'] . "') && \$app->isAdmin()) // TODO for now only in admin area."; } $addButton[] = "\t\t\t{"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " build Create button"; $addButton[] = "\t\t\t\t\$buttonNamee = trim(\$buttonName);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace('/_+/', ' ', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace('/\s+/', ' ', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace(\"/[^A-Za-z ]/\", '', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = ucfirst(strtolower(\$buttonNamee));"; $addButton[] = "\t\t\t\t\$button[] = 'langPrefix . "_CREATE_NEW_S', \$buttonNamee).'\" style=\"border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;\""; $addButton[] = "\t\t\t\t\thref=\"index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $targetView . "&layout=edit'.\$ref.'\" >"; $addButton[] = "\t\t\t\t\t';"; $addButton[] = "\t\t\t}"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " only add if user allowed to edit " . $targetView; // check if the item has permissions. if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($targetView, $this->permissionBuilder['global'][$core['core.edit']])) { $addButton[] = "\t\t\tif ((\$buttonName === '" . $targetView . "' || \$buttonName === '" . $targetViews . "') && \$user->authorise('" . $core['core.edit'] . "', 'com_" . $this->fileContentStatic['###component###'] . "') && \$app->isAdmin()) // TODO for now only in admin area."; } else { $addButton[] = "\t\t\tif ((\$buttonName === '" . $targetView . "' || \$buttonName === '" . $targetViews . "') && \$user->authorise('core.edit', 'com_" . $this->fileContentStatic['###component###'] . "') && \$app->isAdmin()) // TODO for now only in admin area."; } $addButton[] = "\t\t\t{"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " build edit button"; $addButton[] = "\t\t\t\t\$buttonNamee = trim(\$buttonName);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace('/_+/', ' ', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace('/\s+/', ' ', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = preg_replace(\"/[^A-Za-z ]/\", '', \$buttonNamee);"; $addButton[] = "\t\t\t\t\$buttonNamee = ucfirst(strtolower(\$buttonNamee));"; $addButton[] = "\t\t\t\t\$button[] = 'langPrefix . "_EDIT_S', \$buttonNamee).'\" style=\"display: none; padding: 4px 4px 4px 7px;\" href=\"#\" >"; $addButton[] = "\t\t\t\t\t';"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " build script"; $addButton[] = "\t\t\t\t\$script[] = \""; $addButton[] = "\t\t\t\t\tjQuery(document).ready(function() {"; $addButton[] = "\t\t\t\t\t\tjQuery('#adminForm').on('change', '#jform_\".\$buttonName.\"',function (e) {"; $addButton[] = "\t\t\t\t\t\t\te.preventDefault();"; $addButton[] = "\t\t\t\t\t\t\tvar \".\$buttonName.\"Value = jQuery('#jform_\".\$buttonName.\"').val();"; $addButton[] = "\t\t\t\t\t\t\t\".\$buttonName.\"Button(\".\$buttonName.\"Value);"; $addButton[] = "\t\t\t\t\t\t});"; $addButton[] = "\t\t\t\t\t\tvar \".\$buttonName.\"Value = jQuery('#jform_\".\$buttonName.\"').val();"; $addButton[] = "\t\t\t\t\t\t\".\$buttonName.\"Button(\".\$buttonName.\"Value);"; $addButton[] = "\t\t\t\t\t});"; $addButton[] = "\t\t\t\t\tfunction \".\$buttonName.\"Button(value) {"; $addButton[] = "\t\t\t\t\t\tif (value > 0) {"; // TODO not ideal since value may not be an (int) $addButton[] = "\t\t\t\t\t\t\t// hide the create button"; $addButton[] = "\t\t\t\t\t\t\tjQuery('#\".\$buttonName.\"Create').hide();"; $addButton[] = "\t\t\t\t\t\t\t// show edit button"; $addButton[] = "\t\t\t\t\t\t\tjQuery('#\".\$buttonName.\"Edit').show();"; $addButton[] = "\t\t\t\t\t\t\tvar url = 'index.php?option=com_" . $this->fileContentStatic['###component###'] . "&view=" . $targetViews . "&task=" . $targetView . ".edit&id='+value+'\".\$refJ.\"';"; // TODO this value may not be the ID $addButton[] = "\t\t\t\t\t\t\tjQuery('#\".\$buttonName.\"Edit').attr('href', url);"; $addButton[] = "\t\t\t\t\t\t} else {"; $addButton[] = "\t\t\t\t\t\t\t// show the create button"; $addButton[] = "\t\t\t\t\t\t\tjQuery('#\".\$buttonName.\"Create').show();"; $addButton[] = "\t\t\t\t\t\t\t// hide edit button"; $addButton[] = "\t\t\t\t\t\t\tjQuery('#\".\$buttonName.\"Edit').hide();"; $addButton[] = "\t\t\t\t\t\t}"; $addButton[] = "\t\t\t\t\t}\";"; $addButton[] = "\t\t\t}"; $addButton[] = "\t\t\t//" . $this->setLine(__LINE__) . " check if button was created for " . $targetView . " field."; $addButton[] = "\t\t\tif (is_array(\$button) && count(\$button) > 0)"; $addButton[] = "\t\t\t{"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Load the needed script."; $addButton[] = "\t\t\t\t\$document = JFactory::getDocument();"; $addButton[] = "\t\t\t\t\$document->addScriptDeclaration(implode(' ',\$script));"; $addButton[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " return the button attached to input field."; $addButton[] = "\t\t\t\treturn '
    ' .\$html . implode('',\$button).'
    ';"; $addButton[] = "\t\t\t}"; $addButton[] = "\t\t}"; $addButton[] = "\t\treturn \$html;"; $addButton[] = "\t}"; return implode(PHP_EOL, $addButton); } public function setFilterQuery($viewName_list) { if (isset($this->filterBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$viewName_list])) { $filterQuery = ""; foreach ($this->filterBuilder[$viewName_list] as $filter) { if ($filter['type'] != 'category' && ComponentbuilderHelper::checkArray($filter['custom'])) { $filterQuery .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by " . $filter['code'] . "."; $filterQuery .= PHP_EOL . "\t\tif (\$" . $filter['code'] . " = \$this->getState('filter." . $filter['code'] . "'))"; $filterQuery .= PHP_EOL . "\t\t{"; $filterQuery .= PHP_EOL . "\t\t\t\$query->where('a." . $filter['code'] . " = ' . \$db->quote(\$db->escape(\$" . $filter['code'] . ")));"; $filterQuery .= PHP_EOL . "\t\t}"; } elseif ($filter['type'] != 'category') { $filterQuery .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Filter by " . ucwords($filter['code']) . "."; $filterQuery .= PHP_EOL . "\t\tif (\$" . $filter['code'] . " = \$this->getState('filter." . $filter['code'] . "'))"; $filterQuery .= PHP_EOL . "\t\t{"; $filterQuery .= PHP_EOL . "\t\t\t\$query->where('a." . $filter['code'] . " = ' . \$db->quote(\$db->escape(\$" . $filter['code'] . ")));"; $filterQuery .= PHP_EOL . "\t\t}"; } } return $filterQuery; } return ''; } public function buildTheViewScript($viewArray) { // set the view name $viewName = ComponentbuilderHelper::safeString($viewArray['settings']->name_single); // add conditions to this view if (isset($viewArray['settings']->conditions) && ComponentbuilderHelper::checkArray($viewArray['settings']->conditions)) { // reset defaults $getValue = array(); $ifValue = array(); $targetControls = array(); $functions = array(); foreach ($viewArray['settings']->conditions as $condition) { if (isset($condition['match_name']) && ComponentbuilderHelper::checkString($condition['match_name'])) { $uniqueVar = $this->uniquekey(7); $matchName = $condition['match_name'] . '_' . $uniqueVar; $targetBehavior = ($condition['target_behavior'] == 1) ? 'show' : 'hide'; $targetDefault = ($condition['target_behavior'] == 1) ? 'hide' : 'show'; // make sure only one relation is set $firstTime = true; // set the realtation if any if ($condition['target_relation'] && $firstTime) { // chain to other items of the same target $relations = $this->getTargetRelationScript($viewArray['settings']->conditions, $condition, $viewName); if (ComponentbuilderHelper::checkArray($relations)) { // set behavior and default array $behaviors[$matchName] = $targetBehavior; $defaults[$matchName] = $targetDefault; // set the type buket $typeBuket[$matchName] = $condition['match_type']; // set function array $functions[$uniqueVar][0] = $matchName; $matchNames[$matchName] = $condition['match_name']; // get the select value $getValue[$matchName] = $this->getValueScript($condition['match_type'], $condition['match_name'], $condition['match_extends'], $uniqueVar); // get the options $options = $this->getOptionsScript($condition['match_type'], $condition['match_options']); // set the if values $ifValue[$matchName] = $this->ifValueScript($matchName, $condition['match_behavior'], $condition['match_type'], $options); // set the target controls $targetControls[$matchName] = $this->setTargetControlsScript($condition['target_field'], $targetBehavior, $targetDefault, $uniqueVar, $viewName); $firstTime = false; foreach ($relations as $relation) { if (ComponentbuilderHelper::checkString($relation['match_name'])) { $relationName = $relation['match_name'] . '_' . $uniqueVar; // set the type buket $typeBuket[$relationName] = $relation['match_type']; // set function array $functions[$uniqueVar][] = $relationName; $matchNames[$relationName] = $relation['match_name']; // get the relation option $relationOptions = $this->getOptionsScript($relation['match_type'], $relation['match_options']); $getValue[$relationName] = $this->getValueScript($relation['match_type'], $relation['match_name'], $condition['match_extends'], $uniqueVar); $ifValue[$relationName] = $this->ifValueScript($relationName, $relation['match_behavior'], $relation['match_type'], $relationOptions); } } } } else { // set behavior and default array $behaviors[$matchName] = $targetBehavior; $defaults[$matchName] = $targetDefault; // set the type buket $typeBuket[$matchName] = $condition['match_type']; // set function array $functions[$uniqueVar][0] = $matchName; $matchNames[$matchName] = $condition['match_name']; // get the select value $getValue[$matchName] = $this->getValueScript($condition['match_type'], $condition['match_name'], $condition['match_extends'], $uniqueVar); // get the options $options = $this->getOptionsScript($condition['match_type'], $condition['match_options']); // set the if values $ifValue[$matchName] = $this->ifValueScript($matchName, $condition['match_behavior'], $condition['match_type'], $options); // set the target controls $targetControls[$matchName] = $this->setTargetControlsScript($condition['target_field'], $targetBehavior, $targetDefault, $uniqueVar, $viewName); } } } // reset buckets $initial = ''; $func = ''; $validation = ''; $isSet = ''; $listener = ''; if (ComponentbuilderHelper::checkArray($functions)) { // now build the initial script $initial .= "// Initial Script" . PHP_EOL . "jQuery(document).ready(function()"; $initial .= PHP_EOL . "{"; foreach ($functions as $function => $matchKeys) { $func_call = $this->buildFunctionCall($function, $matchKeys, $getValue); $initial .= $func_call['code']; } $initial .= "});" . PHP_EOL; // for modal fields $modal = ''; // now build the listener scripts foreach ($functions as $l_function => $l_matchKeys) { $funcCall = ''; foreach ($l_matchKeys as $l_matchKey) { $name = $matchNames[$l_matchKey]; $matchTypeKey = $typeBuket[$l_matchKey]; $funcCall = $this->buildFunctionCall($l_function, $l_matchKeys, $getValue); if (isset($this->setScriptMediaSwitch) && ComponentbuilderHelper::checkArray($this->setScriptMediaSwitch) && in_array($matchTypeKey, $this->setScriptMediaSwitch)) { $modal .= $funcCall['code']; } else { if (isset($this->setScriptUserSwitch) && ComponentbuilderHelper::checkArray($this->setScriptUserSwitch) && in_array($matchTypeKey, $this->setScriptUserSwitch)) { $name = $name . '_id'; } $listener .= PHP_EOL . "// #jform_" . $name . " listeners for " . $l_matchKey . " function"; $listener .= PHP_EOL . "jQuery('#jform_" . $name . "').on('keyup',function()"; $listener .= PHP_EOL . "{"; $listener .= $funcCall['code']; $listener .= PHP_EOL . "});"; $listener .= PHP_EOL . "jQuery('#adminForm').on('change', '#jform_" . $name . "',function (e)"; $listener .= PHP_EOL . "{"; $listener .= PHP_EOL . "\te.preventDefault();"; $listener .= $funcCall['code']; $listener .= PHP_EOL . "});" . PHP_EOL; } } } if (ComponentbuilderHelper::checkString($modal)) { $listener .= PHP_EOL . "window.SqueezeBox.initialize({"; $listener .= PHP_EOL . "\tonClose:function(){"; $listener .= $modal; $listener .= PHP_EOL . "\t}"; $listener .= PHP_EOL . "});" . PHP_EOL; } // now build the function $func = ''; $head = ''; foreach ($functions as $f_function => $f_matchKeys) { $map = ''; // does this function require an array $addArray = false; $func_ = $this->buildFunctionCall($f_function, $f_matchKeys, $getValue); // set array switch if ($func_['array']) { $addArray = true; } $func .= PHP_EOL . "// the " . $f_function . " function"; $func .= PHP_EOL . "function " . $f_function . "("; $fucounter = 0; foreach ($f_matchKeys as $fu_matchKey) { if (ComponentbuilderHelper::checkString($fu_matchKey)) { if ($fucounter == 0) { $func .= $fu_matchKey; } else { $func .= ',' . $fu_matchKey; } $fucounter++; } } $func .= ")"; $func .= PHP_EOL . "{"; if ($addArray) { foreach ($f_matchKeys as $a_matchKey) { $name = $matchNames[$a_matchKey]; $func .= PHP_EOL . "\tif (isSet(" . $a_matchKey . ") && " . $a_matchKey . ".constructor !== Array)" . PHP_EOL . "\t{" . PHP_EOL . "\t\tvar temp_" . $f_function . " = " . $a_matchKey . ";" . PHP_EOL . "\t\tvar " . $a_matchKey . " = [];" . PHP_EOL . "\t\t" . $a_matchKey . ".push(temp_" . $f_function . ");" . PHP_EOL . "\t}"; $func .= PHP_EOL . "\telse if (!isSet(" . $a_matchKey . "))" . PHP_EOL . "\t{"; $func .= PHP_EOL . "\t\tvar " . $a_matchKey . " = [];"; $func .= PHP_EOL . "\t}"; $func .= PHP_EOL . "\tvar " . $name . " = " . $a_matchKey . ".some(" . $a_matchKey . "_SomeFunc);" . PHP_EOL; // setup the map function $map .= PHP_EOL . "// the " . $f_function . " Some function"; $map .= PHP_EOL . "function " . $a_matchKey . "_SomeFunc(" . $a_matchKey . ")"; $map .= PHP_EOL . "{"; $map .= PHP_EOL . "\t//" . $this->setLine(__LINE__) . " set the function logic"; $map .= PHP_EOL . "\tif ("; $if = $ifValue[$a_matchKey]; if (ComponentbuilderHelper::checkString($if)) { $map .= $if; } $map .= ")"; $map .= PHP_EOL . "\t{"; $map .= PHP_EOL . "\t\treturn true;"; $map .= PHP_EOL . "\t}" . PHP_EOL . "\treturn false;"; $map .= PHP_EOL . "}" . PHP_EOL; } $func .= PHP_EOL . PHP_EOL . "\t//" . $this->setLine(__LINE__) . " set this function logic"; $func .= PHP_EOL . "\tif ("; // set if counter $aifcounter = 0; foreach ($f_matchKeys as $af_matchKey) { $name = $matchNames[$af_matchKey]; if ($aifcounter == 0) { $func .= $name; } else { $func .= ' && ' . $name; } $aifcounter++; } $func .= ")" . PHP_EOL . "\t{"; } else { $func .= PHP_EOL . "\t//" . $this->setLine(__LINE__) . " set the function logic"; $func .= PHP_EOL . "\tif ("; // set if counter $ifcounter = 0; foreach ($f_matchKeys as $f_matchKey) { $if = $ifValue[$f_matchKey]; if (ComponentbuilderHelper::checkString($if)) { if ($ifcounter == 0) { $func .= $if; } else { $func .= ' && ' . $if; } $ifcounter++; } } $func .= ")" . PHP_EOL . "\t{"; } // get the controles $controls = $targetControls[$f_matchKeys[0]]; // get target behavior and default $targetBehavior = $behaviors[$f_matchKeys[0]]; $targetDefault = $defaults[$f_matchKeys[0]]; // load the target behavior foreach ($controls as $target => $action) { $func .= $action['behavior']; if (ComponentbuilderHelper::checkString($action['hide'])) { $func .= $action[$targetBehavior]; $head .= $action['requiredVar']; } } $func .= PHP_EOL . "\t}" . PHP_EOL . "\telse" . PHP_EOL . "\t{"; foreach ($controls as $target => $action) { $func .= $action['default']; if (ComponentbuilderHelper::checkString($action['hide'])) { $func .= $action[$targetDefault]; } } $func .= PHP_EOL . "\t}" . PHP_EOL . "}" . PHP_EOL . $map; } // add the needed validation to file if (isset($this->validationFixBuilder[$viewName]) && ComponentbuilderHelper::checkArray($this->validationFixBuilder[$viewName])) { $validation .= PHP_EOL . "// update required fields"; $validation .= PHP_EOL . "function updateFieldRequired(name,status)"; $validation .= PHP_EOL . "{"; $validation .= PHP_EOL . "\tvar not_required = jQuery('#jform_not_required').val();"; $validation .= PHP_EOL . PHP_EOL . "\tif(status == 1)"; $validation .= PHP_EOL . "\t{"; $validation .= PHP_EOL . "\t\tif (isSet(not_required) && not_required != 0)"; $validation .= PHP_EOL . "\t\t{"; $validation .= PHP_EOL . "\t\t\tnot_required = not_required+','+name;"; $validation .= PHP_EOL . "\t\t}"; $validation .= PHP_EOL . "\t\telse"; $validation .= PHP_EOL . "\t\t{"; $validation .= PHP_EOL . "\t\t\tnot_required = ','+name;"; $validation .= PHP_EOL . "\t\t}"; $validation .= PHP_EOL . "\t}"; $validation .= PHP_EOL . "\telse"; $validation .= PHP_EOL . "\t{"; $validation .= PHP_EOL . "\t\tif (isSet(not_required) && not_required != 0)"; $validation .= PHP_EOL . "\t\t{"; $validation .= PHP_EOL . "\t\t\tnot_required = not_required.replace(','+name,'');"; $validation .= PHP_EOL . "\t\t}"; $validation .= PHP_EOL . "\t}"; $validation .= PHP_EOL . PHP_EOL . "\tjQuery('#jform_not_required').val(not_required);"; $validation .= PHP_EOL . "}" . PHP_EOL; } // set the isSet function $isSet = PHP_EOL . "// the isSet function"; $isSet .= PHP_EOL . "function isSet(val)"; $isSet .= PHP_EOL . "{"; $isSet .= PHP_EOL . "\tif ((val != undefined) && (val != null) && 0 !== val.length){"; $isSet .= PHP_EOL . "\t\treturn true;"; $isSet .= PHP_EOL . "\t}"; $isSet .= PHP_EOL . "\treturn false;"; $isSet .= PHP_EOL . "}"; } // load to this buket $fileScript = $initial . $func . $validation . $isSet; $footerScript = $listener; } // add custom script to file if (isset($this->customScriptBuilder['view_file'][$viewName]) && ComponentbuilderHelper::checkString($this->customScriptBuilder['view_file'][$viewName])) { if (!isset($fileScript)) { $fileScript = ''; } $fileScript .= PHP_EOL . PHP_EOL . $this->setPlaceholders($this->customScriptBuilder['view_file'][$viewName], $this->placeholders); } // add custom script to footer if (isset($this->customScriptBuilder['view_footer'][$viewName]) && ComponentbuilderHelper::checkString($this->customScriptBuilder['view_footer'][$viewName])) { $customFooterScript = PHP_EOL . PHP_EOL . $this->setPlaceholders($this->customScriptBuilder['view_footer'][$viewName], $this->placeholders); if (strpos($customFooterScript, 'params->get('minify') && isset($fileScript) && ComponentbuilderHelper::checkString($fileScript)) { // minify the fielScript javscript $minifier = new JS; $minifier->add($fileScript); $fileScript = $minifier->minify(); } // minfy the script if ($this->params->get('minify') && isset($footerScript) && ComponentbuilderHelper::checkString($footerScript)) { // minify the footerScript javscript $minifier = new JS; $minifier->add($footerScript); $footerScript = $minifier->minify(); } // make sure there is script to add if (isset($fileScript) && ComponentbuilderHelper::checkString($fileScript)) { // add the head script if set if (isset($head) && ComponentbuilderHelper::checkString($head)) { $fileScript = "// Some Global Values" . PHP_EOL . $head . PHP_EOL . $fileScript; } // load the script $this->editBodyViewScriptBuilder[$viewName]['fileScript'] = $fileScript; } // make sure to add custom footer script if php was found in it, since we canot minfy it with php if (isset($customFooterScript) && ComponentbuilderHelper::checkString($customFooterScript)) { if (!isset($footerScript)) { $footerScript = ''; } $footerScript .= $customFooterScript; } // make sure there is script to add if (isset($footerScript) && ComponentbuilderHelper::checkString($footerScript)) { // add the needed script tags $footerScript = PHP_EOL . PHP_EOL . '"; $this->editBodyViewScriptBuilder[$viewName]['footerScript'] = $footerScript; } } public function buildFunctionCall($function, $matchKeys, $getValue) { $initial = ''; $funcsets = array(); $array = false; foreach ($matchKeys as $matchKey) { $value = $getValue[$matchKey]; if ($value['isArray']) { $initial .= PHP_EOL . "\t" . $value['get']; $funcsets[] = $matchKey; $array = true; } else { $initial .= PHP_EOL . "\t" . $value['get']; $funcsets[] = $matchKey; } } // make sure that the function is loaded only once if (ComponentbuilderHelper::checkArray($funcsets)) { $initial .= PHP_EOL . "\t" . $function . "("; $initial .= implode(',', $funcsets); $initial .= ");" . PHP_EOL; } return array('code' => $initial, 'array' => $array); } public function getTargetRelationScript($relations, $condition, $view) { // reset the buket $buket = array(); // convert to name array foreach ($condition['target_field'] as $targetField) { if (ComponentbuilderHelper::checkArray($targetField)) { $currentTargets[] = $targetField['name']; } } // start the search foreach ($relations as $relation) { // reset found $found = false; if ($relation['match_field'] != $condition['match_field']) { if (ComponentbuilderHelper::checkArray($relation['target_field'])) { foreach ($relation['target_field'] as $target) { if (ComponentbuilderHelper::checkArray($target) && $this->checkRelationControl($target['name'], $relation['match_name'], $condition['match_name'], $view)) { if (in_array($target['name'], $currentTargets)) { $this->targetRelationControl[$view][$target['name']] = array($relation['match_name'], $condition['match_name']); $found = true; break; } } } if ($found) { $buket[] = $relation; } } } } return $buket; } public function checkRelationControl($targetName, $relationMatchName, $conditionMatchName, $view) { if (isset($this->targetRelationControl[$view]) && ComponentbuilderHelper::checkArray($this->targetRelationControl[$view])) { if (isset($this->targetRelationControl[$view][$targetName]) && ComponentbuilderHelper::checkArray($this->targetRelationControl[$view][$targetName])) { if (!in_array($relationMatchName, $this->targetRelationControl[$view][$targetName]) || !in_array($conditionMatchName, $this->targetRelationControl[$view][$targetName])) { return true; } } else { return true; } } elseif (!isset($this->targetRelationControl[$view]) || !ComponentbuilderHelper::checkArray($this->targetRelationControl[$view])) { return true; } return false; } public function setTargetControlsScript($targets, $targetBehavior, $targetDefault, $uniqueVar, $viewName) { $bucket = array(); if (ComponentbuilderHelper::checkArray($targets) && !in_array($uniqueVar, $this->targetControlsScriptChecker)) { foreach ($targets as $target) { if (ComponentbuilderHelper::checkArray($target)) { // set the required var if ($target['required'] === 'yes') { $unique = $uniqueVar . $this->uniquekey(3); $bucket[$target['name']]['requiredVar'] = "jform_" . $unique . "_required = false;" . PHP_EOL; } else { $bucket[$target['name']]['requiredVar'] = ''; } // set target type $targetTypeSufix = ""; if ($this->defaultField($target['type'], 'spacer')) { // target a class if this is a note or spacer $targetType = "."; } elseif ($target['type'] === 'editor' || $target['type'] === 'subform') { // target the label if editor field $targetType = "#jform_"; // since the id is not alway accessable we use the lable TODO (not best way) $targetTypeSufix = "-lbl"; } else { // target an id if this is a field $targetType = "#jform_"; } // set the target behavior $bucket[$target['name']]['behavior'] = PHP_EOL . "\t\tjQuery('" . $targetType . $target['name'] . $targetTypeSufix . "').closest('.control-group')." . $targetBehavior . "();"; // set the target default $bucket[$target['name']]['default'] = PHP_EOL . "\t\tjQuery('" . $targetType . $target['name'] . $targetTypeSufix . "').closest('.control-group')." . $targetDefault . "();"; // the hide required function if ($target['required'] === 'yes') { $hide = PHP_EOL . "\t\tif (!jform_" . $unique . "_required)"; $hide .= PHP_EOL . "\t\t{"; $hide .= PHP_EOL . "\t\t\tupdateFieldRequired('" . $target['name'] . "',1);"; $hide .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').removeAttr('required');"; $hide .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').removeAttr('aria-required');"; $hide .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').removeClass('required');"; $hide .= PHP_EOL . "\t\t\tjform_" . $unique . "_required = true;"; $hide .= PHP_EOL . "\t\t}"; $bucket[$target['name']]['hide'] = $hide; // the show required function $show = PHP_EOL . "\t\tif (jform_" . $unique . "_required)"; $show .= PHP_EOL . "\t\t{"; $show .= PHP_EOL . "\t\t\tupdateFieldRequired('" . $target['name'] . "',0);"; $show .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').prop('required','required');"; $show .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').attr('aria-required',true);"; $show .= PHP_EOL . "\t\t\tjQuery('#jform_" . $target['name'] . "').addClass('required');"; $show .= PHP_EOL . "\t\t\tjform_" . $unique . "_required = false;"; $show .= PHP_EOL . "\t\t}" . PHP_EOL; $bucket[$target['name']]['show'] = $show; // make sure that the axaj and other needed things for this view is loaded $this->validationFixBuilder[$viewName][] = $target['name']; } else { $bucket[$target['name']]['hide'] = ''; $bucket[$target['name']]['show'] = ''; } } } $this->targetControlsScriptChecker[] = $uniqueVar; } return $bucket; } public function ifValueScript($value, $behavior, $type, $options) { // reset string $string = ''; switch ($behavior) { case 1: // Is // only 4 list/radio/checkboxes if (ComponentbuilderHelper::typeField($type, 'list') || ComponentbuilderHelper::typeField($type, 'dynamic') || !ComponentbuilderHelper::typeField($type)) { if (ComponentbuilderHelper::checkArray($options)) { foreach ($options as $option) { if (!is_numeric($option)) { if ($option != 'true' && $option != 'false') { $option = "'" . $option . "'"; } } if (ComponentbuilderHelper::checkString($string)) { $string .= ' || ' . $value . ' == ' . $option; } else { $string .= $value . ' == ' . $option; } } } else { $string .= 'isSet(' . $value . ')'; } } break; case 2: // Is Not // only 4 list/radio/checkboxes if (ComponentbuilderHelper::typeField($type, 'list') || ComponentbuilderHelper::typeField($type, 'dynamic') || !ComponentbuilderHelper::typeField($type)) { if (ComponentbuilderHelper::checkArray($options)) { foreach ($options as $option) { if (!is_numeric($option)) { if ($option != 'true' && $option != 'false') { $option = "'" . $option . "'"; } } if (ComponentbuilderHelper::checkString($string)) { $string .= ' || ' . $value . ' != ' . $option; } else { $string .= $value . ' != ' . $option; } } } else { $string .= '!isSet(' . $value . ')'; } } break; case 3: // Any Selection // only 4 list/radio/checkboxes/dynamic_list if (ComponentbuilderHelper::typeField($type, 'list') || ComponentbuilderHelper::typeField($type, 'dynamic') || !ComponentbuilderHelper::typeField($type)) { if (ComponentbuilderHelper::checkArray($options)) { foreach ($options as $option) { if (!is_numeric($option)) { if ($option != 'true' && $option != 'false') { $option = "'" . $option . "'"; } } if (ComponentbuilderHelper::checkString($string)) { $string .= ' || ' . $value . ' == ' . $option; } else { $string .= $value . ' == ' . $option; } } } else { $userFix = ''; if (isset($this->setScriptUserSwitch) && ComponentbuilderHelper::checkArray($this->setScriptUserSwitch) && in_array($type, $this->setScriptUserSwitch)) { // TODO this needs a closer look, a bit buggy $userFix = " && " . $value . " != 0"; } //echo '
    '; var_dump($type);exit;
    						$string .= 'isSet(' . $value . ')' . $userFix;
    					}
    				}
    				break;
    			case 4: // Active (not empty)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					$string .= 'isSet(' . $value . ')';
    				}
    				break;
    			case 5: // Unactive (empty)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					$string .= '!isSet(' . $value . ')';
    				}
    				break;
    			case 6: // Key Word All (case-sensitive)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options['keywords']))
    					{
    						foreach ($options['keywords'] as $keyword)
    						{
    							if (ComponentbuilderHelper::checkString($string))
    							{
    								$string .= ' && ' . $value . '.indexOf("' . $keyword . '") >= 0';
    							}
    							else
    							{
    								$string .= $value . '.indexOf("' . $keyword . '") >= 0';
    							}
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . ' == "error"';
    					}
    				}
    				break;
    			case 7: // Key Word Any (case-sensitive)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options['keywords']))
    					{
    						foreach ($options['keywords'] as $keyword)
    						{
    							if (ComponentbuilderHelper::checkString($string))
    							{
    								$string .= ' || ' . $value . '.indexOf("' . $keyword . '") >= 0';
    							}
    							else
    							{
    								$string .= $value . '.indexOf("' . $keyword . '") >= 0';
    							}
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . ' == "error"';
    					}
    				}
    				break;
    			case 8: // Key Word All (case-insensitive)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options['keywords']))
    					{
    						foreach ($options['keywords'] as $keyword)
    						{
    							$keyword = ComponentbuilderHelper::safeString($keyword, 'w');
    							if (ComponentbuilderHelper::checkString($string))
    							{
    								$string .= ' && ' . $value . '.toLowerCase().indexOf("' . $keyword . '") >= 0';
    							}
    							else
    							{
    								$string .= $value . '.toLowerCase().indexOf("' . $keyword . '") >= 0';
    							}
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . ' == "error"';
    					}
    				}
    				break;
    			case 9: // Key Word Any (case-insensitive)
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options['keywords']))
    					{
    						foreach ($options['keywords'] as $keyword)
    						{
    							$keyword = ComponentbuilderHelper::safeString($keyword, 'w');
    							if (ComponentbuilderHelper::checkString($string))
    							{
    								$string .= ' || ' . $value . '.toLowerCase().indexOf("' . $keyword . '") >= 0';
    							}
    							else
    							{
    								$string .= $value . '.toLowerCase().indexOf("' . $keyword . '") >= 0';
    							}
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . ' == "error"';
    					}
    				}
    				break;
    			case 10: // Min Length
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options))
    					{
    						if ($options['length'])
    						{
    							$string .= $value . '.length >= ' . (int) $options['length'];
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . '.length >= 5';
    					}
    				}
    				break;
    			case 11: // Max Length
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options))
    					{
    						if ($options['length'])
    						{
    							$string .= $value . '.length <= ' . (int) $options['length'];
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . '.length <= 5';
    					}
    				}
    				break;
    			case 12: // Exact Length
    				// only 4 text_field
    				if (ComponentbuilderHelper::typeField($type, 'text'))
    				{
    					if (ComponentbuilderHelper::checkArray($options))
    					{
    						if ($options['length'])
    						{
    							$string .= $value . '.length == ' . (int) $options['length'];
    						}
    					}
    					if (!ComponentbuilderHelper::checkString($string))
    					{
    						$string .= $value . '.length == 5';
    					}
    				}
    				break;
    		}
    		if (!ComponentbuilderHelper::checkString($string))
    		{
    			$string = 0;
    		}
    		return $string;
    	}
    
    	public function getOptionsScript($type, $options)
    	{
    		$buket = array();
    		if (ComponentbuilderHelper::checkString($options))
    		{
    			if (ComponentbuilderHelper::typeField($type, 'list') || ComponentbuilderHelper::typeField($type, 'dynamic') || !ComponentbuilderHelper::typeField($type))
    			{
    				$optionsArray = explode(PHP_EOL, $options);
    				if (!ComponentbuilderHelper::checkArray($optionsArray))
    				{
    					$optionsArray[] = $optionsArray;
    				}
    				foreach ($optionsArray as $option)
    				{
    					if (strpos($option, '|') !== false)
    					{
    						list($option) = explode('|', $option);
    					}
    					if ($option != 'dynamic_list')
    					{
    						// add option to return buket
    						$buket[] = $option;
    					}
    				}
    			}
    			elseif (ComponentbuilderHelper::typeField($type, 'text'))
    			{
    				// check to get the key words if set
    				$keywords = ComponentbuilderHelper::getBetween($options, 'keywords="', '"');
    				if (ComponentbuilderHelper::checkString($keywords))
    				{
    					if (strpos($keywords, ',') !== false)
    					{
    						$keywords = explode(',', $keywords);
    						foreach ($keywords as $keyword)
    						{
    							$buket['keywords'][] = trim($keyword);
    						}
    					}
    					else
    					{
    						$buket['keywords'][] = trim($keywords);
    					}
    				}
    				// check to ket string length if set
    				$length = ComponentbuilderHelper::getBetween($options, 'length="', '"');
    				if (ComponentbuilderHelper::checkString($length))
    				{
    					$buket['length'] = $length;
    				}
    				else
    				{
    					$buket['length'] = false;
    				}
    			}
    		}
    
    		return $buket;
    	}
    
    	public function getValueScript($type, $name, $extends, $unique)
    	{
    		$select = '';
    		$isArray = false;
    		$keyName = $name . '_' . $unique;
    		if ($type === 'checkboxes' || $extends === 'checkboxes')
    		{
    			$select = "var " . $keyName . " = [];" . PHP_EOL . "\tjQuery('#jform_" . $name . " input[type=checkbox]').each(function()" . PHP_EOL . "\t{" . PHP_EOL . "\t\tif (jQuery(this).is(':checked'))" . PHP_EOL . "\t\t{" . PHP_EOL . "\t\t\t" . $keyName . ".push(jQuery(this).prop('value'));" . PHP_EOL . "\t\t}" . PHP_EOL . "\t});";
    			$isArray = true;
    		}
    		elseif ($type === 'checkbox')
    		{
    			$select = 'var ' . $keyName . ' = jQuery("#jform_' . $name . '").prop(\'checked\');';
    		}
    		elseif ($type === 'radio')
    		{
    			$select = 'var ' . $keyName . ' = jQuery("#jform_' . $name . ' input[type=\'radio\']:checked").val();';
    		}
    		elseif (isset($this->setScriptUserSwitch) && ComponentbuilderHelper::checkArray($this->setScriptUserSwitch) && in_array($type, $this->setScriptUserSwitch))
    		{
    			// this is only since 3.3.4
    			$select = 'var ' . $keyName . ' = jQuery("#jform_' . $name . '_id").val();';
    		}
    		elseif ($type === 'list' || ComponentbuilderHelper::typeField($type, 'dynamic') || !ComponentbuilderHelper::typeField($type))
    		{
    			$select = 'var ' . $keyName . ' = jQuery("#jform_' . $name . '").val();';
    			$isArray = true;
    		}
    		elseif (ComponentbuilderHelper::typeField($type, 'text'))
    		{
    			$select = 'var ' . $keyName . ' = jQuery("#jform_' . $name . '").val();';
    		}
    		return array('get' => $select, 'isArray' => $isArray);
    	}
    
    	public function clearValueScript($type, $name, $unique)
    	{
    		$clear = '';
    		$isArray = false;
    		$keyName = $name . '_' . $unique;
    		if ($type === 'text' || $type === 'password' || $type === 'textarea')
    		{
    			$clear = "jQuery('#jform_" . $name . "').value = '';";
    		}
    		elseif ($type === 'radio')
    		{
    			$clear = "jQuery('#jform_" . $name . "').checked = false;";
    		}
    		elseif ($type === 'checkboxes' || $type === 'checkbox' || $type === 'checkbox')
    		{
    			$clear = "jQuery('#jform_" . $name . "').selectedIndex = -1;";
    		}
    		return $clear;
    	}
    
    	public function setViewScript(&$view)
    	{
    		if (isset($this->editBodyViewScriptBuilder[$view]) && isset($this->editBodyViewScriptBuilder[$view]['fileScript']))
    		{
    			return $this->editBodyViewScriptBuilder[$view]['fileScript'];
    		}
    		return '';
    	}
    
    	public function setEditBodyScript(&$view)
    	{
    		if (isset($this->editBodyViewScriptBuilder[$view]) && isset($this->editBodyViewScriptBuilder[$view]['footerScript']))
    		{
    			return $this->editBodyViewScriptBuilder[$view]['footerScript'];
    		}
    		return '';
    	}
    
    	public function setValidationFix($view, $Component)
    	{
    		$fix = '';
    		if (isset($this->validationFixBuilder[$view]) && ComponentbuilderHelper::checkArray($this->validationFixBuilder[$view]))
    		{
    			$fix .= PHP_EOL . PHP_EOL . "\t/**";
    			$fix .= PHP_EOL . "\t* Method to validate the form data.";
    			$fix .= PHP_EOL . "\t*";
    			$fix .= PHP_EOL . "\t* @param   JForm   \$form   The form to validate against.";
    			$fix .= PHP_EOL . "\t* @param   array   \$data   The data to validate.";
    			$fix .= PHP_EOL . "\t* @param   string  \$group  The name of the field group to validate.";
    			$fix .= PHP_EOL . "\t*";
    			$fix .= PHP_EOL . "\t* @return  mixed  Array of filtered data if valid, false otherwise.";
    			$fix .= PHP_EOL . "\t*";
    			$fix .= PHP_EOL . "\t* @see     JFormRule";
    			$fix .= PHP_EOL . "\t* @see     JFilterInput";
    			$fix .= PHP_EOL . "\t* @since   12.2";
    			$fix .= PHP_EOL . "\t*/";
    			$fix .= PHP_EOL . "\tpublic function validate(\$form, \$data, \$group = null)";
    			$fix .= PHP_EOL . "\t{";
    			$fix .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " check if the not_required field is set";
    			$fix .= PHP_EOL . "\t\tif (" . $Component . "Helper::checkString(\$data['not_required']))";
    			$fix .= PHP_EOL . "\t\t{";
    			$fix .= PHP_EOL . "\t\t\t\$requiredFields = (array) explode(',',(string) \$data['not_required']);";
    			$fix .= PHP_EOL . "\t\t\t\$requiredFields = array_unique(\$requiredFields);";
    			$fix .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " now change the required field attributes value";
    			$fix .= PHP_EOL . "\t\t\tforeach (\$requiredFields as \$requiredField)";
    			$fix .= PHP_EOL . "\t\t\t{";
    			$fix .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " make sure there is a string value";
    			$fix .= PHP_EOL . "\t\t\t\tif (" . $Component . "Helper::checkString(\$requiredField))";
    			$fix .= PHP_EOL . "\t\t\t\t{";
    			$fix .= PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " change to false";
    			$fix .= PHP_EOL . "\t\t\t\t\t\$form->setFieldAttribute(\$requiredField, 'required', 'false');";
    			$fix .= PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " also clear the data set";
    			$fix .= PHP_EOL . "\t\t\t\t\t\$data[\$requiredField] = '';";
    			$fix .= PHP_EOL . "\t\t\t\t}";
    			$fix .= PHP_EOL . "\t\t\t}";
    			$fix .= PHP_EOL . "\t\t}";
    			$fix .= PHP_EOL . "\t\treturn parent::validate(\$form, \$data, \$group);";
    			$fix .= PHP_EOL . "\t}";
    		}
    		return $fix;
    	}
    
    	public function setAjaxToke(&$view)
    	{
    		$fix = '';
    		if (isset($this->customScriptBuilder['token'][$view]) && $this->customScriptBuilder['token'][$view])
    		{
    			$fix .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Add Ajax Token";
    			$fix .= PHP_EOL . "\t\t\$this->document->addScriptDeclaration(\"var token = '\".JSession::getFormToken().\"';\");";
    		}
    		return $fix;
    	}
    
    	public function setRegisterAjaxTask($target)
    	{
    		$tasks = '';
    		if (isset($this->customScriptBuilder[$target]['ajax_controller']) && ComponentbuilderHelper::checkArray($this->customScriptBuilder[$target]['ajax_controller']))
    		{
    			$taskArray = array();
    			foreach ($this->customScriptBuilder[$target]['ajax_controller'] as $view)
    			{
    				foreach ($view as $task)
    				{
    					$taskArray[$task['task_name']] = $task['task_name'];
    				}
    			}
    			if (ComponentbuilderHelper::checkArray($taskArray))
    			{
    				foreach ($taskArray as $name)
    				{
    					$tasks .= PHP_EOL . "\t\t\$this->registerTask('" . $name . "', 'ajax');";
    				}
    			}
    		}
    		return $tasks;
    	}
    
    	public function setAjaxInputReturn($target)
    	{
    		$cases = '';
    		if (isset($this->customScriptBuilder[$target]['ajax_controller']) && ComponentbuilderHelper::checkArray($this->customScriptBuilder[$target]['ajax_controller']))
    		{
    			$input = array();
    			$valueArray = array();
    			$getModel = array();
    			$userCheck = array();
    			foreach ($this->customScriptBuilder[$target]['ajax_controller'] as $view)
    			{
    				foreach ($view as $task)
    				{
    					$input[$task['task_name']][] = PHP_EOL . "\t\t\t\t\t\t\$" . $task['value_name'] . "Value = \$jinput->get('" . $task['value_name'] . "', " . $task['input_default'] . ", '" . $task['input_filter'] . "');";
    					$valueArray[$task['task_name']][] = "\$" . $task['value_name'] . "Value";
    					$getModel[$task['task_name']] = PHP_EOL . "\t\t\t\t\t\t\t\$result = \$this->getModel('ajax')->" . $task['method_name'] . "([[[valueArray]]]);";
    
    					// see user check is needed
    					if (isset($task['user_check']) && 1 == $task['user_check'])
    					{
    						// add it since this means it was not set, and in the old method we assumed it was inplace
    						// or it is set and 1 means we still want it inplace
    						$userCheck[$task['task_name']] = ' && $user->id != 0';
    					}
    					else
    					{
    						$userCheck[$task['task_name']] = '';
    					}
    				}
    			}
    			if (ComponentbuilderHelper::checkArray($getModel))
    			{
    				foreach ($getModel as $task => $getMethod)
    				{
    					$cases .= PHP_EOL . "\t\t\t\tcase '" . $task . "':";
    					$cases .= PHP_EOL . "\t\t\t\t\ttry";
    					$cases .= PHP_EOL . "\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\$returnRaw = \$jinput->get('raw', false, 'BOOLEAN');";
    					foreach ($input[$task] as $string)
    					{
    						$cases .= $string;
    					}
    					// set the values
    					$values = implode(', ', $valueArray[$task]);
    					$ifvalues = implode(' && ', $valueArray[$task]);
    					// set the values to method
    					$getMethod = str_replace('[[[valueArray]]]', $values, $getMethod);
    					$cases .= PHP_EOL . "\t\t\t\t\t\tif(" . $ifvalues . $userCheck[$task] . ")";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= $getMethod;
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t\telse";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\t\$result = false;";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t\tif(\$callback = \$jinput->get('callback', null, 'CMD'))";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\techo \$callback . \"(\".json_encode(\$result).\");\";";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t\telseif(\$returnRaw)";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\techo json_encode(\$result);";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t\telse";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\techo \"(\".json_encode(\$result).\");\";";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\tcatch(Exception \$e)";
    					$cases .= PHP_EOL . "\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\tif(\$callback = \$jinput->get('callback', null, 'CMD'))";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\techo \$callback.\"(\".json_encode(\$e).\");\";";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t\telse";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t{";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t\techo \"(\".json_encode(\$e).\");\";";
    					$cases .= PHP_EOL . "\t\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\t\t}";
    					$cases .= PHP_EOL . "\t\t\t\tbreak;";
    				}
    			}
    		}
    		return $cases;
    	}
    
    	public function setAjaxModelMethods($target)
    	{
    		$methods = '';
    		if (isset($this->customScriptBuilder[$target]['ajax_model']) && ComponentbuilderHelper::checkArray($this->customScriptBuilder[$target]['ajax_model']))
    		{
    			foreach ($this->customScriptBuilder[$target]['ajax_model'] as $view => $method)
    			{
    				$methods .= PHP_EOL . PHP_EOL . "\t//" . $this->setLine(__LINE__) . " Used in " . $view . PHP_EOL;
    				$methods .= $this->setPlaceholders($method, $this->placeholders);
    			}
    		}
    		return $methods;
    	}
    
    	public function setFilterFunctions($viewName_single, $viewName_list)
    	{
    		if (isset($this->filterBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$viewName_list]))
    		{
    			$function = array();
    			// set component name
    			$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    			foreach ($this->filterBuilder[$viewName_list] as $filter)
    			{
    				if ($filter['type'] != 'category' && ComponentbuilderHelper::checkArray($filter['custom']) && $filter['custom']['extends'] === 'user')
    				{
    					$function[] = PHP_EOL . "\tprotected function getThe" . $filter['function'] . ComponentbuilderHelper::safeString($filter['custom']['text'], 'F') . "Selections()";
    					$function[] = "\t{";
    					$function[] = "\t\t//" . $this->setLine(__LINE__) . " Get a db connection.";
    					$function[] = "\t\t\$db = JFactory::getDbo();";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object.";
    					$function[] = "\t\t\$query = \$db->getQuery(true);";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Select the text.";
    					$function[] = "\t\t\$query->select(\$db->quoteName(array('a." . $filter['custom']['id'] . "','a." . $filter['custom']['text'] . "')));";
    					$function[] = "\t\t\$query->from(\$db->quoteName('" . $filter['custom']['table'] . "', 'a'));";
    					$function[] = "\t\t//" . $this->setLine(__LINE__) . " get the targeted groups";
    					$function[] = "\t\t\$groups= JComponentHelper::getParams('com_" . $component . "')->get('" . $filter['type'] . "');";
    					$function[] = "\t\tif (count(\$groups) > 0)";
    					$function[] = "\t\t{";
    					$function[] = "\t\t\t\$query->join('LEFT', \$db->quoteName('#__user_usergroup_map', 'group') . ' ON (' . \$db->quoteName('group.user_id') . ' = ' . \$db->quoteName('a.id') . ')');";
    					$function[] = "\t\t\t\$query->where('group.group_id IN (' . implode(',', \$groups) . ')');";
    					$function[] = "\t\t}";
    					$function[] = "\t\t\$query->order('a." . $filter['custom']['text'] . " ASC');";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Reset the query using our newly populated query object.";
    					$function[] = "\t\t\$db->setQuery(\$query);";
    					$function[] = PHP_EOL . "\t\t\$results = \$db->loadObjectList();";
    					$function[] = "\t\tif (\$results)";
    					$function[] = "\t\t{";
    					$function[] = "\t\t\t\$filter = array();";
    					$function[] = "\t\t\t\$batch = array();";
    					$function[] = "\t\t\tforeach (\$results as \$result)";
    					$function[] = "\t\t\t{";
    					$function[] = "\t\t\t\t\$filter[] = JHtml::_('select.option', \$result->" . $filter['custom']['id'] . ", \$result->" . $filter['custom']['text'] . ");";
    					$function[] = "\t\t\t}";
    					$function[] = "\t\t\treturn  \$filter;";
    					$function[] = "\t\t}";
    					$function[] = "\t\treturn false;";
    					$function[] = "\t}";
    
    					/* else
    					  {
    					  $function[] = PHP_EOL."\tprotected function getThe".$filter['function'].ComponentbuilderHelper::safeString($filter['custom']['text'],'F')."Selections()";
    					  $function[] = "\t{";
    					  $function[] = "\t\t//".$this->setLine(__LINE__)." Get a db connection.";
    					  $function[] = "\t\t\$db = JFactory::getDbo();";
    					  $function[] = PHP_EOL."\t\t//".$this->setLine(__LINE__)." Select the text.";
    					  $function[] = "\t\t\$query = \$db->getQuery(true);";
    					  $function[] = PHP_EOL."\t\t//".$this->setLine(__LINE__)." Select the text.";
    					  $function[] = "\t\t\$query->select(\$db->quoteName(array('".$filter['custom']['id']."','".$filter['custom']['text']."')));";
    					  $function[] = "\t\t\$query->from(\$db->quoteName('".$filter['custom']['table']."'));";
    					  $function[] = "\t\t\$query->where(\$db->quoteName('published') . ' = 1');";
    					  $function[] = "\t\t\$query->order(\$db->quoteName('".$filter['custom']['text']."') . ' ASC');";
    					  $function[] = PHP_EOL."\t\t//".$this->setLine(__LINE__)." Reset the query using our newly populated query object.";
    					  $function[] = "\t\t\$db->setQuery(\$query);";
    					  $function[] = PHP_EOL."\t\t\$results = \$db->loadObjectList();";
    					  $function[] = PHP_EOL."\t\tif (\$results)";
    					  $function[] = "\t\t{";
    					  $function[] = "\t\t\t\$filter = array();";
    					  $function[] = "\t\t\t\$batch = array();";
    					  $function[] = "\t\t\tforeach (\$results as \$result)";
    					  $function[] = "\t\t\t{";
    					  if ($filter['custom']['text'] === 'user')
    					  {
    					  $function[] = "\t\t\t\t\$filter[] = JHtml::_('select.option', \$result->".$filter['custom']['text'].", JFactory::getUser(\$result->".$filter['custom']['text'].")->name);";
    					  $function[] = "\t\t\t\t\$batch[] = JHtml::_('select.option', \$result->".$filter['custom']['id'].", JFactory::getUser(\$result->".$filter['custom']['text'].")->name);";
    					  }
    					  else
    					  {
    					  $function[] = "\t\t\t\t\$filter[] = JHtml::_('select.option', \$result->".$filter['custom']['text'].", \$result->".$filter['custom']['text'].");";
    					  $function[] = "\t\t\t\t\$batch[] = JHtml::_('select.option', \$result->".$filter['custom']['id'].", \$result->".$filter['custom']['text'].");";
    					  }
    					  $function[] = "\t\t\t}";
    					  $function[] = "\t\t\treturn array('filter' => \$filter, 'batch' => \$batch);";
    					  $function[] = "\t\t}";
    					  $function[] = "\t\treturn false;";
    					  $function[] = "\t}";
    					  } */
    				}
    				elseif ($filter['type'] != 'category' && !ComponentbuilderHelper::checkArray($filter['custom']))
    				{
    					$translation = false;
    					if (isset($this->selectionTranslationFixBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->selectionTranslationFixBuilder[$viewName_list]) && array_key_exists($filter['code'], $this->selectionTranslationFixBuilder[$viewName_list]))
    					{
    						$translation = true;
    					}
    					$function[] = PHP_EOL . "\tprotected function getThe" . $filter['function'] . "Selections()";
    					$function[] = "\t{";
    					$function[] = "\t\t//" . $this->setLine(__LINE__) . " Get a db connection.";
    					$function[] = "\t\t\$db = JFactory::getDbo();";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Create a new query object.";
    					$function[] = "\t\t\$query = \$db->getQuery(true);";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Select the text.";
    					$function[] = "\t\t\$query->select(\$db->quoteName('" . $filter['code'] . "'));";
    					$function[] = "\t\t\$query->from(\$db->quoteName('#__" . $component . "_" . $filter['database'] . "'));";
    					$function[] = "\t\t\$query->order(\$db->quoteName('" . $filter['code'] . "') . ' ASC');";
    					$function[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Reset the query using our newly populated query object.";
    					$function[] = "\t\t\$db->setQuery(\$query);";
    					$function[] = PHP_EOL . "\t\t\$results = \$db->loadColumn();";
    					$function[] = PHP_EOL . "\t\tif (\$results)";
    					$function[] = "\t\t{";
    					// check if translated vlaue is used
    					if ($translation)
    					{
    						$function[] = "\t\t\t//" . $this->setLine(__LINE__) . " get model";
    						$function[] = "\t\t\t\$model = \$this->getModel();";
    					}
    					$function[] = "\t\t\t\$results = array_unique(\$results);";
    					$function[] = "\t\t\t\$_filter = array();";
    					$function[] = "\t\t\tforeach (\$results as \$" . $filter['code'] . ")";
    					$function[] = "\t\t\t{";
    
    					// check if translated vlaue is used
    					if ($translation)
    					{
    						$function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Translate the " . $filter['code'] . " selection";
    						$function[] = "\t\t\t\t\$text = \$model->selectionTranslation(\$" . $filter['code'] . ",'" . $filter['code'] . "');";
    						$function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Now add the " . $filter['code'] . " and its text to the options array";
    						$function[] = "\t\t\t\t\$_filter[] = JHtml::_('select.option', \$" . $filter['code'] . ", JText:".":_(\$text));";
    					}
    					elseif ($filter['type'] === 'user')
    					{
    						$function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Now add the " . $filter['code'] . " and its text to the options array";
    						$function[] = "\t\t\t\t\$_filter[] = JHtml::_('select.option', \$" . $filter['code'] . ", JFactory::getUser(\$" . $filter['code'] . ")->name);";
    					}
    					else
    					{
    						$function[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Now add the " . $filter['code'] . " and its text to the options array";
    						$function[] = "\t\t\t\t\$_filter[] = JHtml::_('select.option', \$" . $filter['code'] . ", \$" . $filter['code'] . ");";
    					}
    					$function[] = "\t\t\t}";
    					$function[] = "\t\t\treturn \$_filter;";
    					$function[] = "\t\t}";
    					$function[] = "\t\treturn false;";
    					$function[] = "\t}";
    				}
    			}
    			if (ComponentbuilderHelper::checkArray($function))
    			{
    				// return the function
    				return PHP_EOL . implode(PHP_EOL, $function);
    			}
    		}
    		return '';
    	}
    
    	public function setUniqueFields(&$view)
    	{
    		$fields = array();
    		$fields[] = PHP_EOL . PHP_EOL . "\t/**";
    		$fields[] = "\t * Method to get the unique fields of this table.";
    		$fields[] = "\t *";
    		$fields[] = "\t * @return  mixed  An array of field names, boolean false if none is set.";
    		$fields[] = "\t *";
    		$fields[] = "\t * @since   3.0";
    		$fields[] = "\t */";
    		$fields[] = "\tprotected function getUniqeFields()";
    		$fields[] = "\t{";
    		if (isset($this->dbUniqueKeys[$view]) && ComponentbuilderHelper::checkArray($this->dbUniqueKeys[$view]))
    		{
    			$fields[] = "\t\treturn array('" . implode("','", $this->dbUniqueKeys[$view]) . "');";
    		}
    		else
    		{
    			$fields[] = "\t\treturn false;";
    		}
    		$fields[] = "\t}";
    		// return the unique fields
    		return implode(PHP_EOL, $fields);
    	}
    
    	public function setOtherFilter(&$view)
    	{
    		if (isset($this->filterBuilder[$view]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$view]))
    		{
    			$otherFilter = array();
    			foreach ($this->filterBuilder[$view] as $filter)
    			{
    				if ($filter['type'] != 'category' && ComponentbuilderHelper::checkArray($filter['custom']) && $filter['custom']['extends'] !== 'user')
    				{
    					$CodeName = ComponentbuilderHelper::safeString($filter['code'] . ' ' . $filter['custom']['text'], 'W');
    					$codeName = $filter['code'] . ComponentbuilderHelper::safeString($filter['custom']['text'], 'F');
    					$type = ComponentbuilderHelper::safeString($filter['custom']['type'], 'F');
    					$otherFilter[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set " . $CodeName . " Selection";
    					$otherFilter[] = "\t\t\$this->" . $codeName . "Options = JFormHelper::loadFieldType('" . $type . "')->getOptions();";
    					$otherFilter[] = "\t\tif (\$this->" . $codeName . "Options)";
    					$otherFilter[] = "\t\t{";
    					$otherFilter[] = "\t\t\t//" . $this->setLine(__LINE__) . " " . $CodeName . " Filter";
    					$otherFilter[] = "\t\t\tJHtmlSidebar::addFilter(";
    					$otherFilter[] = "\t\t\t\t'- Select '.JText:".":_('" . $filter['lang'] . "').' -',";
    					$otherFilter[] = "\t\t\t\t'filter_" . $filter['code'] . "',";
    					$otherFilter[] = "\t\t\t\tJHtml::_('select.options', \$this->" . $codeName . "Options, 'value', 'text', \$this->state->get('filter." . $filter['code'] . "'))";
    					$otherFilter[] = "\t\t\t);";
    
    					$otherFilter[] = PHP_EOL . "\t\t\tif (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
    					$otherFilter[] = "\t\t\t{";
    					$otherFilter[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " " . $CodeName . " Batch Selection";
    					$otherFilter[] = "\t\t\t\tJHtmlBatch_::addListSelection(";
    					$otherFilter[] = "\t\t\t\t\t'- Keep Original '.JText:".":_('" . $filter['lang'] . "').' -',";
    					$otherFilter[] = "\t\t\t\t\t'batch[" . $filter['code'] . "]',";
    					$otherFilter[] = "\t\t\t\t\tJHtml::_('select.options', \$this->" . $codeName . "Options, 'value', 'text')";
    					$otherFilter[] = "\t\t\t\t);";
    					$otherFilter[] = "\t\t\t}";
    
    					$otherFilter[] = "\t\t}";
    				}
    				elseif ($filter['type'] != 'category')
    				{
    					$Codename = ComponentbuilderHelper::safeString($filter['code'], 'W');
    					if (isset($filter['custom']) && ComponentbuilderHelper::checkArray($filter['custom']) && $filter['custom']['extends'] === 'user')
    					{
    						$functionName = "\$this->getThe" . $filter['function'] . ComponentbuilderHelper::safeString($filter['custom']['text'], 'F') . "Selections();";
    					}
    					else
    					{
    						$functionName = "\$this->getThe" . $filter['function'] . "Selections();";
    					}
    					$otherFilter[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Set " . $Codename . " Selection";
    					$otherFilter[] = "\t\t\$this->" . $filter['code'] . "Options = " . $functionName;
    					$otherFilter[] = "\t\tif (\$this->" . $filter['code'] . "Options)";
    					$otherFilter[] = "\t\t{";
    					$otherFilter[] = "\t\t\t//" . $this->setLine(__LINE__) . " " . $Codename . " Filter";
    					$otherFilter[] = "\t\t\tJHtmlSidebar::addFilter(";
    					$otherFilter[] = "\t\t\t\t'- Select '.JText:".":_('" . $filter['lang'] . "').' -',";
    					$otherFilter[] = "\t\t\t\t'filter_" . $filter['code'] . "',";
    					$otherFilter[] = "\t\t\t\tJHtml::_('select.options', \$this->" . $filter['code'] . "Options, 'value', 'text', \$this->state->get('filter." . $filter['code'] . "'))";
    					$otherFilter[] = "\t\t\t);";
    
    					$otherFilter[] = PHP_EOL . "\t\t\tif (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
    					$otherFilter[] = "\t\t\t{";
    					$otherFilter[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " " . $Codename . " Batch Selection";
    					$otherFilter[] = "\t\t\t\tJHtmlBatch_::addListSelection(";
    					$otherFilter[] = "\t\t\t\t\t'- Keep Original '.JText:".":_('" . $filter['lang'] . "').' -',";
    					$otherFilter[] = "\t\t\t\t\t'batch[" . $filter['code'] . "]',";
    					$otherFilter[] = "\t\t\t\t\tJHtml::_('select.options', \$this->" . $filter['code'] . "Options, 'value', 'text')";
    					$otherFilter[] = "\t\t\t\t);";
    					$otherFilter[] = "\t\t\t}";
    
    					$otherFilter[] = "\t\t}";
    				}
    			}
    			if (ComponentbuilderHelper::checkArray($otherFilter))
    			{
    				// return the filter
    				return PHP_EOL . implode(PHP_EOL, $otherFilter);
    			}
    		}
    		return '';
    	}
    
    	public function setCategoryFilter($viewName_list)
    	{
    		if (isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))
    		{
    			// check if category has another name
    			if (isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    			}
    			// set component name
    			$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    			$COMONENT = ComponentbuilderHelper::safeString($this->componentData->name_code, 'U');
    			// set filter
    			$filter = array();
    			$filter[] = PHP_EOL . PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Category Filter.";
    			$filter[] = "\t\tJHtmlSidebar::addFilter(";
    			$filter[] = "\t\t\tJText:".":_('JOPTION_SELECT_CATEGORY'),";
    			$filter[] = "\t\t\t'filter_category_id',";
    			$filter[] = "\t\t\tJHtml::_('select.options', JHtml::_('category.options', 'com_" . $component . "." . $otherViews . "'), 'value', 'text', \$this->state->get('filter.category_id'))";
    			$filter[] = "\t\t);";
    
    
    			$filter[] = PHP_EOL . "\t\tif (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
    			$filter[] = "\t\t{";
    			$filter[] = "\t\t\t//" . $this->setLine(__LINE__) . " Category Batch selection.";
    			$filter[] = "\t\t\tJHtmlBatch_::addListSelection(";
    			$filter[] = "\t\t\t\tJText:".":_('COM_" . $COMONENT . "_KEEP_ORIGINAL_CATEGORY'),";
    			$filter[] = "\t\t\t\t'batch[category]',";
    			$filter[] = "\t\t\t\tJHtml::_('select.options', JHtml::_('category.options', 'com_" . $component . "." . $otherViews . "'), 'value', 'text')";
    			$filter[] = "\t\t\t);";
    			$filter[] = "\t\t}";
    
    			// return the filter
    			return implode(PHP_EOL, $filter);
    		}
    		return '';
    	}
    
    	public function setRouterCategoryViews($viewName_single, $viewName_list)
    	{
    		if (isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))
    		{
    			// set component name
    			$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    			// check if category has another name
    			if (isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			// load the category helper details in not already loaded
    			if (!isset($this->fileContentDynamic['category' . $otherViews]['###view###']))
    			{
    				// lets also set the category helper for this view
    				$target = array('site' => 'category' . $viewName_list);
    				$this->buildDynamique($target, 'category');
    				// insure the file gets updated
    				$this->fileContentDynamic['category' . $otherViews]['###view###'] = $otherView;
    				$this->fileContentDynamic['category' . $otherViews]['###View###'] = ucfirst($otherView);
    				$this->fileContentDynamic['category' . $otherViews]['###views###'] = $otherViews;
    				$this->fileContentDynamic['category' . $otherViews]['###Views###'] = ucfirst($otherViews);
    				// set script to global helper file
    				$includeHelper = array();
    				$includeHelper[] = "\n//" . $this->setLine(__LINE__) . "Insure this view category file is loaded.";
    				$includeHelper[] = "\$classname = '" . $this->fileContentStatic['###component###'] . ucfirst($viewName_list) . "Categories';";
    				$includeHelper[] = "if (!class_exists(\$classname))";
    				$includeHelper[] = "{";
    				$includeHelper[] = "\t\$path = JPATH_SITE . '/components/com_" . $this->fileContentStatic['###component###'] . "/helpers/category" . $viewName_list . ".php';";
    				$includeHelper[] = "\tif (is_file(\$path))";
    				$includeHelper[] = "\t{";
    				$includeHelper[] = "\t\tinclude_once \$path;";
    				$includeHelper[] = "\t}";
    				$includeHelper[] = "}";
    				$this->fileContentStatic['###CATEGORY_CLASS_TREES###'] .= implode("\n", $includeHelper);
    			}
    			// return category view string
    			if (isset($this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###']) && ComponentbuilderHelper::checkString($this->fileContentStatic['###ROUTER_CATEGORY_VIEWS###']))
    			{
    				return "," . PHP_EOL . "\t\t\t" . '"com_' . $component . '.' . $otherViews . '" => "' . $otherView . '"';
    			}
    			else
    			{
    				return PHP_EOL . "\t\t\t" . '"com_' . $component . '.' . $otherViews . '" => "' . $otherView . '"';
    			}
    		}
    		return '';
    	}
    
    	public function setJcontrollerAllowAdd($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		// check if item has category
    		if (0) //isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list])) <-- remove category from check
    		{
    			// check if category has another name
    			if ($coreLoad && isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			// setup the category script
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " get the user object";
    			$allow[] = "\t\t\$user = JFactory::getUser();";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($otherView, $this->permissionBuilder['global'][$core['core.access']]))
    			{
    				$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access check.";
    				$allow[] = "\t\t\$access = \$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "');";
    				$allow[] = "\t\tif (!\$access)";
    				$allow[] = "\t\t{";
    				$allow[] = "\t\t\treturn false;";
    				$allow[] = "\t\t}";
    			}
    			$allow[] = "\t\t\$categoryId = JArrayHelper::getValue(\$data, 'catid', \$this->input->getInt('filter_category_id'), 'int');";
    			$allow[] = "\t\t\$allow = null;";
    			$allow[] = PHP_EOL . "\t\tif (\$categoryId)";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " If the category has been passed in the URL check it.";
    			$allow[] = "\t\t\t\$allow = \$user->authorise('core.create', \$this->option . '." . $otherViews . ".category.' . \$categoryId);";
    			$allow[] = "\t\t}";
    			$allow[] = PHP_EOL . "\t\tif (\$allow === null)";
    			$allow[] = "\t\t{";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.create']]))
    			{
    				// setup the default script
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\t\treturn \$user->authorise('" . $core['core.create'] . "', \$this->option);";
    			}
    			else
    			{
    				// setup the default script
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\t\treturn parent::allowAdd(\$data);";
    			}
    			$allow[] = "\t\t}";
    			$allow[] = "\t\telse";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\treturn \$allow;";
    			$allow[] = "\t\t}";
    		}
    		else
    		{
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.access']]))
    			{
    				$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access check.";
    				$allow[] = "\t\t\$access = JFactory::getUser()->authorise('" . $core['core.access'] . "', 'com_" . $component . "');";
    				$allow[] = "\t\tif (!\$access)";
    				$allow[] = "\t\t{";
    				$allow[] = "\t\t\treturn false;";
    				$allow[] = "\t\t}";
    			}
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.create']]))
    			{
    				// setup the default script
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn JFactory::getUser()->authorise('" . $core['core.create'] . "', \$this->option);";
    			}
    			else
    			{
    				// setup the default script
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn parent::allowAdd(\$data);";
    			}
    		}
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJcontrollerAllowEdit($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// prepare custom permission script
    		$customAllow = $this->getCustomScriptBuilder('php_allowedit', $viewName_single, '', null, true);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		if (isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))
    		{
    			// check if category has another name
    			if ($coreLoad && isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			// setup the category script
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " get user object.";
    			$allow[] = "\t\t\$user\t\t= JFactory::getUser();";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " get record id.";
    			$allow[] = "\t\t\$recordId\t= (int) isset(\$data[\$key]) ? \$data[\$key] : 0;";
    			// load custom permission script
    			$allow[] = $customAllow;
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($otherView, $this->permissionBuilder['global'][$core['core.access']]))
    			{
    				$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access check.";
    				$allow[] = "\t\t\$access = (\$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "." . $otherView . ".' . (int) \$recordId) && \$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "'));";
    				$allow[] = "\t\tif (!\$access)";
    				$allow[] = "\t\t{";
    				$allow[] = "\t\t\treturn false;";
    				$allow[] = "\t\t}";
    			}
    			$allow[] = PHP_EOL . "\t\tif (\$recordId)";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder[$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit']]) && in_array($otherView, $this->permissionBuilder[$core['core.edit']]))
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('" . $core['core.edit'] . "', 'com_" . $component . "." . $otherView . ".' . (int) \$recordId);";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('core.edit', 'com_" . $component . "." . $otherView . ".' . (int) \$recordId);";
    			}
    			$allow[] = "\t\t\tif (!\$permission)";
    			$allow[] = "\t\t\t{";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.own']) && isset($this->permissionBuilder[$core['core.edit.own']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.own']]) && in_array($otherView, $this->permissionBuilder[$core['core.edit.own']]))
    			{
    				$allow[] = "\t\t\t\tif (\$user->authorise('" . $core['core.edit.own'] . "', 'com_" . $component . "." . $otherView . ".' . \$recordId))";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\tif (\$user->authorise('core.edit.own', 'com_" . $component . "." . $otherView . ".' . \$recordId))";
    			}
    			$allow[] = "\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Fallback on edit.own. Now test the owner is the user.";
    			$allow[] = "\t\t\t\t\t\$ownerId = (int) isset(\$data['created_by']) ? \$data['created_by'] : 0;";
    			$allow[] = "\t\t\t\t\tif (empty(\$ownerId))";
    			$allow[] = "\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " Need to do a lookup from the model.";
    			$allow[] = "\t\t\t\t\t\t\$record = \$this->getModel()->getItem(\$recordId);";
    			$allow[] = PHP_EOL . "\t\t\t\t\t\tif (empty(\$record))";
    			$allow[] = "\t\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t\treturn false;";
    			$allow[] = "\t\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t\t\t\$ownerId = \$record->created_by;";
    			$allow[] = "\t\t\t\t\t}";
    			$allow[] = PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " If the owner matches 'me' then do the test.";
    			$allow[] = "\t\t\t\t\tif (\$ownerId == \$user->id)";
    			$allow[] = "\t\t\t\t\t{";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.own']) && isset($this->permissionBuilder['global'][$core['core.edit.own']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.own']]) && in_array($otherView, $this->permissionBuilder['global'][$core['core.edit.own']]))
    			{
    				$allow[] = "\t\t\t\t\t\tif (\$user->authorise('" . $core['core.edit.own'] . "', 'com_" . $component . "'))";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\t\t\tif (\$user->authorise('core.edit.own', 'com_" . $component . "'))";
    			}
    			$allow[] = "\t\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t\treturn true;";
    			$allow[] = "\t\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t}";
    			$allow[] = "\t\t\t\treturn false;";
    			$allow[] = "\t\t\t}";
    //			$allow[] = PHP_EOL."\t\t\t\$categoryId = (int) isset(\$data['catid']) ? \$data['catid']: \$this->getModel()->getItem(\$recordId)->catid;";  <-- remove category from check
    //			$allow[] = PHP_EOL."\t\t\tif (\$categoryId)";
    //			$allow[] = "\t\t\t{";
    //			$allow[] = "\t\t\t\t//".$this->setLine(__LINE__)." The category has been set. Check the category permissions.";
    //			$allow[] = "\t\t\t\t\$catpermission = \$user->authorise('core.edit', \$this->option . '.".$otherView.".category.' . \$categoryId);";
    //			$allow[] = "\t\t\t\tif (!\$catpermission && !is_null(\$catpermission))";
    //			$allow[] = "\t\t\t\t{";
    //			$allow[] = "\t\t\t\t\treturn false;";
    //			$allow[] = "\t\t\t\t}";
    //			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($otherView, $this->permissionBuilder['global'][$core['core.edit']]))
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Since there is no permission, revert to the component permissions.";
    				$allow[] = "\t\treturn \$user->authorise('" . $core['core.edit'] . "', \$this->option);";
    			}
    			else
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Since there is no permission, revert to the component permissions.";
    				$allow[] = "\t\treturn parent::allowEdit(\$data, \$key);";
    			}
    		}
    		else
    		{
    			// setup the category script
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " get user object.";
    			$allow[] = "\t\t\$user\t\t= JFactory::getUser();";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " get record id.";
    			$allow[] = "\t\t\$recordId\t= (int) isset(\$data[\$key]) ? \$data[\$key] : 0;";
    			// load custom permission script
    			$allow[] = $customAllow;
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder[$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.access']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.access']]))
    			{
    				$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access check.";
    				$allow[] = "\t\t\$access = (\$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId) &&  \$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "'));";
    				$allow[] = "\t\tif (!\$access)";
    				$allow[] = "\t\t{";
    				$allow[] = "\t\t\treturn false;";
    				$allow[] = "\t\t}";
    			}
    			$allow[] = PHP_EOL . "\t\tif (\$recordId)";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder[$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit']]))
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('" . $core['core.edit'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('core.edit', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			$allow[] = "\t\t\tif (!\$permission)";
    			$allow[] = "\t\t\t{";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.own']) && isset($this->permissionBuilder[$core['core.edit.own']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.own']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.own']]))
    			{
    				$allow[] = "\t\t\t\tif (\$user->authorise('" . $core['core.edit.own'] . "', 'com_" . $component . "." . $viewName_single . ".' . \$recordId))";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\tif (\$user->authorise('core.edit.own', 'com_" . $component . "." . $viewName_single . ".' . \$recordId))";
    			}
    			$allow[] = "\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t//" . $this->setLine(__LINE__) . " Now test the owner is the user.";
    			$allow[] = "\t\t\t\t\t\$ownerId = (int) isset(\$data['created_by']) ? \$data['created_by'] : 0;";
    			$allow[] = "\t\t\t\t\tif (empty(\$ownerId))";
    			$allow[] = "\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t//" . $this->setLine(__LINE__) . " Need to do a lookup from the model.";
    			$allow[] = "\t\t\t\t\t\t\$record = \$this->getModel()->getItem(\$recordId);";
    			$allow[] = PHP_EOL . "\t\t\t\t\t\tif (empty(\$record))";
    			$allow[] = "\t\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t\treturn false;";
    			$allow[] = "\t\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t\t\t\$ownerId = \$record->created_by;";
    			$allow[] = "\t\t\t\t\t}";
    			$allow[] = PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " If the owner matches 'me' then allow.";
    			$allow[] = "\t\t\t\t\tif (\$ownerId == \$user->id)";
    			$allow[] = "\t\t\t\t\t{";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.own']) && isset($this->permissionBuilder['global'][$core['core.edit.own']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.own']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.own']]))
    			{
    				$allow[] = "\t\t\t\t\t\tif (\$user->authorise('" . $core['core.edit.own'] . "', 'com_" . $component . "'))";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\t\t\tif (\$user->authorise('core.edit.own', 'com_" . $component . "'))";
    			}
    			$allow[] = "\t\t\t\t\t\t{";
    			$allow[] = "\t\t\t\t\t\t\treturn true;";
    			$allow[] = "\t\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t\t}";
    			$allow[] = "\t\t\t\t}";
    			$allow[] = "\t\t\t\treturn false;";
    			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']]))
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Since there is no permission, revert to the component permissions.";
    				$allow[] = "\t\treturn \$user->authorise('" . $core['core.edit'] . "', \$this->option);";
    			}
    			else
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Since there is no permission, revert to the component permissions.";
    				$allow[] = "\t\treturn parent::allowEdit(\$data, \$key);";
    			}
    		}
    
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJmodelAdminGetForm($viewName_single, $viewName_list)
    	{
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// allways load these
    		$allow = array();
    		$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get the form.";
    		$allow[] = "\t\t\$form = \$this->loadForm('com_" . $component . "." . $viewName_single . "', '" . $viewName_single . "', array('control' => 'jform', 'load_data' => \$loadData));";
    		$allow[] = PHP_EOL . "\t\tif (empty(\$form))";
    		$allow[] = "\t\t{";
    		$allow[] = "\t\t\treturn false;";
    		$allow[] = "\t\t}";
    		// load license locker
    		if ($this->componentData->add_license && $this->componentData->license_type == 3 && isset($this->fileContentDynamic[$viewName_single]['###BOOLMETHOD###']))
    		{
    			$allow[] = $this->checkStatmentLicenseLocked($this->fileContentDynamic[$viewName_single]['###BOOLMETHOD###']);
    		}
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		if (0) //isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))  <-- remove category from check
    		{
    			// check if category has another name
    			if ($coreLoad && isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			// setup the category script
    			$allow[] = PHP_EOL . "\t\t\$jinput = JFactory::getApplication()->input;";
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " The front end calls this model and uses a_id to avoid id clashes so we need to check for that first.";
    			$allow[] = "\t\tif (\$jinput->get('a_id'))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$id = \$jinput->get('a_id', 0, 'INT');";
    			$allow[] = "\t\t}";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " The back end uses id so we use that the rest of the time and set it to 0 by default.";
    			$allow[] = "\t\telse";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$id = \$jinput->get('id', 0, 'INT');";
    			$allow[] = "\t\t}";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Determine correct permissions to check.";
    			$allow[] = "\t\tif (\$this->getState('" . $viewName_single . ".id'))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$id = \$this->getState('" . $viewName_single . ".id');";
    			$allow[] = PHP_EOL . "\t\t\t\$catid = 0;";
    			$allow[] = "\t\t\tif (isset(\$this->getItem(\$id)->catid))";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " set category id";
    			$allow[] = "\t\t\t\t\$catid = \$this->getItem(\$id)->catid;";
    			$allow[] = PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Existing record. Can only edit in selected categories.";
    			$allow[] = "\t\t\t\t\$form->setFieldAttribute('catid', 'action', 'core.edit');";
    			$allow[] = PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Existing record. Can only edit own items in selected categories.";
    			$allow[] = "\t\t\t\t\$form->setFieldAttribute('catid', 'action', 'core.edit.own');";
    			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			$allow[] = "\t\telse";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " New record. Can only create in selected categories.";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('catid', 'action', 'core.create');";
    			$allow[] = "\t\t}";
    			$allow[] = PHP_EOL . "\t\t\$user = JFactory::getUser();";
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check for existing item.";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Modify the form based on Edit State access controls.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder[$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.state']]))
    			{
    				$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    				$allow[] = "\t\t\t|| (isset(\$catid) && \$catid != 0 && !\$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_list . ".category.' . (int) \$catid))";
    				$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "')))";
    			}
    			else
    			{
    				$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    				$allow[] = "\t\t\t|| (isset(\$catid) && \$catid != 0 && !\$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_list . ".category.' . (int) \$catid))";
    				$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('core.edit.state', 'com_" . $component . "')))";
    			}
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('ordering', 'disabled', 'true');";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('published', 'disabled', 'true');";
    			$allow[] = PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('ordering', 'filter', 'unset');";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('published', 'filter', 'unset');";
    			$allow[] = "\t\t}";
    		}
    		else
    		{
    			$allow[] = PHP_EOL . "\t\t\$jinput = JFactory::getApplication()->input;";
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " The front end calls this model and uses a_id to avoid id clashes so we need to check for that first.";
    			$allow[] = "\t\tif (\$jinput->get('a_id'))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$id = \$jinput->get('a_id', 0, 'INT');";
    			$allow[] = "\t\t}";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " The back end uses id so we use that the rest of the time and set it to 0 by default.";
    			$allow[] = "\t\telse";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$id = \$jinput->get('id', 0, 'INT');";
    			$allow[] = "\t\t}";
    			$allow[] = PHP_EOL . "\t\t\$user = JFactory::getUser();";
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check for existing item.";
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Modify the form based on Edit State access controls.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder[$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.state']]))
    			{
    				$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    				$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "')))";
    			}
    			else
    			{
    				$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    				$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('core.edit.state', 'com_" . $component . "')))";
    			}
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('ordering', 'disabled', 'true');";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('published', 'disabled', 'true');";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('ordering', 'filter', 'unset');";
    			$allow[] = "\t\t\t\$form->setFieldAttribute('published', 'filter', 'unset');";
    			$allow[] = "\t\t}";
    		}
    		$allow[] = "\t\t//" . $this->setLine(__LINE__) . " If this is a new item insure the greated by is set.";
    		$allow[] = "\t\tif (0 == \$id)";
    		$allow[] = "\t\t{";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set the created_by to this user";
    		$allow[] = "\t\t\t\$form->setValue('created_by', null, \$user->id);";
    		$allow[] = "\t\t}";
    		$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Modify the form based on Edit Creaded By access controls.";
    		// check if the item has permissions.
    		if ($coreLoad && isset($core['core.edit.created_by']) && isset($this->permissionBuilder[$core['core.edit.created_by']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.created_by']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.created_by']]))
    		{
    			$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('" . $core['core.edit.created_by'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    			$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('" . $core['core.edit.created_by'] . "', 'com_" . $component . "')))";
    		}
    		else
    		{
    			$allow[] = "\t\tif (!\$user->authorise('core.edit.created_by', 'com_" . $component . "'))";
    		}
    		$allow[] = "\t\t{";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    		$allow[] = "\t\t\t\$form->setFieldAttribute('created_by', 'disabled', 'true');";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    		$allow[] = "\t\t\t\$form->setFieldAttribute('created_by', 'readonly', 'true');";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    		$allow[] = "\t\t\t\$form->setFieldAttribute('created_by', 'filter', 'unset');";
    		$allow[] = "\t\t}";
    		$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Modify the form based on Edit Creaded Date access controls.";
    		// check if the item has permissions.
    		if ($coreLoad && isset($core['core.edit.created']) && isset($this->permissionBuilder[$core['core.edit.created']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.created']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.created']]))
    		{
    			$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('" . $core['core.edit.created'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    			$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('" . $core['core.edit.created'] . "', 'com_" . $component . "')))";
    		}
    		else
    		{
    			$allow[] = "\t\tif (!\$user->authorise('core.edit.created', 'com_" . $component . "'))";
    		}
    		$allow[] = "\t\t{";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    		$allow[] = "\t\t\t\$form->setFieldAttribute('created', 'disabled', 'true');";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    		$allow[] = "\t\t\t\$form->setFieldAttribute('created', 'filter', 'unset');";
    		$allow[] = "\t\t}";
    		// handel the fields permissions
    		if (isset($this->permissionFields[$viewName_single]) && ComponentbuilderHelper::checkArray($this->permissionFields[$viewName_single]))
    		{
    			foreach ($this->permissionFields[$viewName_single] as $fieldName => $fieldType)
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Modify the form based on Edit " . ComponentbuilderHelper::safeString($fieldName, 'W') . " access controls.";
    				$allow[] = "\t\tif (\$id != 0 && (!\$user->authorise('" . $viewName_single . ".edit." . $fieldName . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$id))";
    				$allow[] = "\t\t\t|| (\$id == 0 && !\$user->authorise('" . $viewName_single . ".edit." . $fieldName . "', 'com_" . $component . "')))";
    				$allow[] = "\t\t{";
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    				$allow[] = "\t\t\t\$form->setFieldAttribute('" . $fieldName . "', 'disabled', 'true');";
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable fields for display.";
    				$allow[] = "\t\t\t\$form->setFieldAttribute('" . $fieldName . "', 'readonly', 'true');";
    				if ('radio' === $fieldType || 'repeatable' === $fieldType)
    				{
    					$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Disable radio button for display.";
    					$allow[] = "\t\t\t\$class = \$form->getFieldAttribute('" . $fieldName . "', 'class', '');";
    					$allow[] = "\t\t\t\$form->setFieldAttribute('" . $fieldName . "', 'class', \$class.' disabled no-click');";
    				}
    				$allow[] = "\t\t\tif (!\$form->getValue('" . $fieldName . "'))";
    				$allow[] = "\t\t\t{";
    				$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    				$allow[] = "\t\t\t\t\$form->setFieldAttribute('" . $fieldName . "', 'filter', 'unset');";
    				$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Disable fields while saving.";
    				$allow[] = "\t\t\t\t\$form->setFieldAttribute('" . $fieldName . "', 'required', 'false');";
    				$allow[] = "\t\t\t}";
    				$allow[] = "\t\t}";
    			}
    		}
    		// add the redirect trick to set the field of origin		
    		$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Only load these values if no id is found";
    		$allow[] = "\t\tif (0 == \$id)";
    		$allow[] = "\t\t{";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set redirected field name";
    		$allow[] = "\t\t\t\$redirectedField = \$jinput->get('ref', null, 'STRING');";
    		$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " Set redirected field value";
    		$allow[] = "\t\t\t\$redirectedValue = \$jinput->get('refid', 0, 'INT');";
    		$allow[] = "\t\t\tif (0 != \$redirectedValue && \$redirectedField)";
    		$allow[] = "\t\t\t{";
    		$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " Now set the local-redirected field default value";
    		$allow[] = "\t\t\t\t\$form->setValue(\$redirectedField, null, \$redirectedValue);";
    		$allow[] = "\t\t\t}";
    		$allow[] = "\t\t}";
    		// setup the default script
    		$allow[] = PHP_EOL . "\t\treturn \$form;";
    
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJmodelAdminAllowEdit($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// prepare custom permission script
    		$customAllow = $this->getCustomScriptBuilder('php_allowedit', $viewName_single, "\t\t\$recordId\t= (int) isset(\$data[\$key]) ? \$data[\$key] : 0;" . PHP_EOL);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		// check if the item has permissions.
    		if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder[$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit']]))
    		{
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check specific edit permission then general edit permission.";
    			$allow[] = "\t\t\$user = JFactory::getUser();";
    			// load custom permission script
    			$allow[] = $customAllow;
    			$allow[] = "\t\treturn \$user->authorise('" . $core['core.edit'] . "', 'com_" . $component . "." . $viewName_single . ".'. ((int) isset(\$data[\$key]) ? \$data[\$key] : 0)) or \$user->authorise('" . $core['core.edit'] . "',  'com_" . $component . "');";
    		}
    		else
    		{
    			$allow[] = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Check specific edit permission then general edit permission.";
    			if (ComponentbuilderHelper::checkString($customAllow))
    			{
    				$allow[] = "\t\t\$user = JFactory::getUser();";
    			}
    			// load custom permission script
    			$allow[] = $customAllow;
    			$allow[] = "\t\treturn JFactory::getUser()->authorise('core.edit', 'com_" . $component . "." . $viewName_single . ".'. ((int) isset(\$data[\$key]) ? \$data[\$key] : 0)) or parent::allowEdit(\$data, \$key);";
    		}
    
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJmodelAdminCanDelete($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		if (0) //isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))  <-- remove category from check
    		{
    			// check if category has another name
    			if ($coreLoad && isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			// setup the category script
    			$allow[] = PHP_EOL . "\t\tif (!empty(\$record->id))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\tif (\$record->published != -2)";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\treturn;";
    			$allow[] = "\t\t\t}";
    			$allow[] = PHP_EOL . "\t\t\t\$user = JFactory::getUser();";
    			$allow[] = "\t\t\t\$allow = \$user->authorise('core.delete', 'com_" . $component . "." . $otherViews . ".category.' . (int) \$record->catid);";
    			// check if the item has permissions.
    			if ($coreLoad && isset($this->permissionBuilder[$core['core.delete']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.delete']]) && in_array($otherView, $this->permissionBuilder[$core['core.delete']]))
    			{
    				$allow[] = PHP_EOL . "\t\t\tif (\$allow)";
    				$allow[] = "\t\t\t{";
    				$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    				$allow[] = "\t\t\t\treturn \$user->authorise('" . $core['core.delete'] . "', 'com_" . $component . "." . $otherView . ".' . (int) \$record->id);";
    				$allow[] = "\t\t\t}";
    			}
    			else
    			{
    				$allow[] = PHP_EOL . "\t\t\tif (\$allow)";
    				$allow[] = "\t\t\t{";
    				$allow[] = "\t\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    				$allow[] = "\t\t\t\treturn \$user->authorise('core.delete', 'com_" . $component . "." . $otherView . ".' . (int) \$record->id);";
    				$allow[] = "\t\t\t}";
    			}
    			$allow[] = "\t\t\treturn \$allow;";
    			$allow[] = "\t\t}";
    			$allow[] = "\t\treturn false;";
    		}
    		else
    		{
    			// setup the default script
    			$allow[] = PHP_EOL . "\t\tif (!empty(\$record->id))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\tif (\$record->published != -2)";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\treturn;";
    			$allow[] = "\t\t\t}";
    			// check if the item has permissions.
    			if ($coreLoad && (isset($core['core.delete']) && isset($this->permissionBuilder[$core['core.delete']])) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.delete']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.delete']]))
    			{
    				$allow[] = PHP_EOL . "\t\t\t\$user = JFactory::getUser();";
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    				$allow[] = "\t\t\treturn \$user->authorise('" . $core['core.delete'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$record->id);";
    			}
    			else
    			{
    				$allow[] = PHP_EOL . "\t\t\t\$user = JFactory::getUser();";
    				$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    				$allow[] = "\t\t\treturn \$user->authorise('core.delete', 'com_" . $component . "." . $viewName_single . ".' . (int) \$record->id);";
    			}
    			$allow[] = "\t\t}";
    			$allow[] = "\t\treturn false;";
    		}
    
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJmodelAdminCanEditState($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		if (0) // isset($this->categoryBuilder[$viewName_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$viewName_list]))  <-- remove category from check
    		{
    			// check if category has another name
    			if (isset($this->catOtherName[$viewName_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$viewName_list]))
    			{
    				$otherViews = $this->catOtherName[$viewName_list]['views'];
    				$otherView = $this->catOtherName[$viewName_list]['view'];
    			}
    			else
    			{
    				$otherViews = $viewName_list;
    				$otherView = $viewName_single;
    			}
    			$allow[] = PHP_EOL . "\t\t\$user = JFactory::getUser();";
    			$allow[] = "\t\t\$recordId\t= (!empty(\$record->id)) ? \$record->id : 0;";
    			$allow[] = PHP_EOL . "\t\tif (\$recordId)";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder[$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.state']]))
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			$allow[] = "\t\t\tif (!\$permission && !is_null(\$permission))";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\treturn false;";
    			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			// setup the category script
    			$allow[] = "\t\t//" . $this->setLine(__LINE__) . " Check against the category.";
    			$allow[] = "\t\tif (!empty(\$record->catid))";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t\$catpermission = \$user->authorise('core.edit.state', 'com_" . $component . "." . $otherViews . ".category.' . (int) \$record->catid);";
    			$allow[] = "\t\t\tif (!\$catpermission && !is_null(\$catpermission))";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\treturn false;";
    			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder[$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.state']]))
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn \$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "');";
    			}
    			else
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn parent::canEditState(\$record);";
    			}
    		}
    		else
    		{
    			// setup the default script
    			$allow[] = PHP_EOL . "\t\t\$user = JFactory::getUser();";
    			$allow[] = "\t\t\$recordId\t= (!empty(\$record->id)) ? \$record->id : 0;";
    			$allow[] = PHP_EOL . "\t\tif (\$recordId)";
    			$allow[] = "\t\t{";
    			$allow[] = "\t\t\t//" . $this->setLine(__LINE__) . " The record has been set. Check the record permissions.";
    			// check if the item has permissions.
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder[$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder[$core['core.edit.state']]))
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			else
    			{
    				$allow[] = "\t\t\t\$permission = \$user->authorise('core.edit.state', 'com_" . $component . "." . $viewName_single . ".' . (int) \$recordId);";
    			}
    			$allow[] = "\t\t\tif (!\$permission && !is_null(\$permission))";
    			$allow[] = "\t\t\t{";
    			$allow[] = "\t\t\t\treturn false;";
    			$allow[] = "\t\t\t}";
    			$allow[] = "\t\t}";
    			if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']]))
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn \$user->authorise('" . $core['core.edit.state'] . "', 'com_" . $component . "');";
    			}
    			else
    			{
    				$allow[] = "\t\t//" . $this->setLine(__LINE__) . " In the absense of better information, revert to the component permissions.";
    				$allow[] = "\t\treturn parent::canEditState(\$record);";
    			}
    		}
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setJviewListCanDo($viewName_single, $viewName_list)
    	{
    		$allow = array();
    		// set component name
    		$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    		// setup correct core target
    		$coreLoad = false;
    		if (isset($this->permissionCore[$viewName_single]))
    		{
    			$core = $this->permissionCore[$viewName_single];
    			$coreLoad = true;
    		}
    		// check if the item has permissions for edit.
    		if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit']]))
    		{
    			$allow[] = PHP_EOL . "\t\t\$this->canEdit = \$this->canDo->get('" . $core['core.edit'] . "');";
    		}
    		else
    		{
    			$allow[] = PHP_EOL . "\t\t\$this->canEdit = \$this->canDo->get('core.edit');";
    		}
    		// check if the item has permissions for edit state.
    		if ($coreLoad && isset($core['core.edit.state']) && isset($this->permissionBuilder['global'][$core['core.edit.state']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit.state']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.edit.state']]))
    		{
    			$allow[] = "\t\t\$this->canState = \$this->canDo->get('" . $core['core.edit.state'] . "');";
    		}
    		else
    		{
    			$allow[] = "\t\t\$this->canState = \$this->canDo->get('core.edit.state');";
    		}
    		// check if the item has permissions for create.
    		if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.create']]))
    		{
    			$allow[] = "\t\t\$this->canCreate = \$this->canDo->get('" . $core['core.create'] . "');";
    		}
    		else
    		{
    			$allow[] = "\t\t\$this->canCreate = \$this->canDo->get('core.create');";
    		}
    		// check if the item has permissions for delete.
    		if ($coreLoad && isset($core['core.delete']) && isset($this->permissionBuilder['global'][$core['core.delete']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.delete']]) && in_array($viewName_single, $this->permissionBuilder['global'][$core['core.delete']]))
    		{
    			$allow[] = "\t\t\$this->canDelete = \$this->canDo->get('" . $core['core.delete'] . "');";
    		}
    		else
    		{
    			$allow[] = "\t\t\$this->canDelete = \$this->canDo->get('core.delete');";
    		}
    		// check if the item has permissions for batch.
    		if ($coreLoad && isset($core['core.batch']) && isset($this->permissionBuilder['global']['global'][$core['core.batch']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global']['global'][$core['core.batch']]) && in_array($viewName_single, $this->permissionBuilder['global']['global'][$core['core.delete']]))
    		{
    			$allow[] = "\t\t\$this->canBatch = (\$this->canDo->get('" . $core['core.batch'] . "') && \$this->canDo->get('core.batch'));";
    		}
    		else
    		{
    			$allow[] = "\t\t\$this->canBatch = \$this->canDo->get('core.batch');";
    		}
    
    		return implode(PHP_EOL, $allow);
    	}
    
    	public function setFieldSetAccessControl(&$view)
    	{
    		$access = '';
    		if ($view != 'component')
    		{
    			// set component name
    			$component = ComponentbuilderHelper::safeString($this->componentData->name_code);
    			// set label
    			$label = 'Permissions in relation to this ' . $view;
    			// set the access fieldset
    			$access = "";
    			$access .= PHP_EOL . "\t" . '
    '; $access .= PHP_EOL . "\t\t"; $access .= PHP_EOL . "\t\t" . ''; $access .= PHP_EOL . "\t\t"; $access .= PHP_EOL . "\t\t" . ''; $access .= PHP_EOL . "\t" . '
    '; } // return access field set return $access; } public function setFilterFields(&$view) { // keep track of all fields already added $donelist = array('id', 'search', 'published', 'access', 'created_by', 'modified_by'); // default filter fields $fields = "'a.id','id'"; $fields .= "," . PHP_EOL . "\t\t\t\t'a.published','published'"; if (isset($this->accessBuilder[$view]) && ComponentbuilderHelper::checkString($this->accessBuilder[$view])) { $fields .= "," . PHP_EOL . "\t\t\t\t'a.access','access'"; } $fields .= "," . PHP_EOL . "\t\t\t\t'a.ordering','ordering'"; $fields .= "," . PHP_EOL . "\t\t\t\t'a.created_by','created_by'"; $fields .= "," . PHP_EOL . "\t\t\t\t'a.modified_by','modified_by'"; // add the rest of the set filters if (isset($this->sortBuilder[$view]) && ComponentbuilderHelper::checkArray($this->sortBuilder[$view])) { foreach ($this->sortBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { $fields .= "," . PHP_EOL . "\t\t\t\t'c.title','category_title'"; $fields .= "," . PHP_EOL . "\t\t\t\t'c.id', 'category_id'"; if ($filter['code'] != 'category') { $fields .= "," . PHP_EOL . "\t\t\t\t'a." . $filter['code'] . "', '" . $filter['code'] . "'"; } } else { // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $fields .= ",".PHP_EOL."\t\t\t\t'".$filter['custom']['db'].".".$filter['custom']['text']."','".$filter['code']."_".$filter['custom']['text']."'"; } */ $fields .= "," . PHP_EOL . "\t\t\t\t'a." . $filter['code'] . "','" . $filter['code'] . "'"; } $donelist[] = $filter['code']; } } } // add the rest of the set filters if (isset($this->filterBuilder[$view]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$view])) { foreach ($this->filterBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { $fields .= "," . PHP_EOL . "\t\t\t\t'c.title','category_title'"; $fields .= "," . PHP_EOL . "\t\t\t\t'c.id', 'category_id'"; if ($filter['code'] != 'category') { $fields .= "," . PHP_EOL . "\t\t\t\t'a." . $filter['code'] . "', '" . $filter['code'] . "'"; } } else { // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $fields .= ",".PHP_EOL."\t\t\t\t'".$filter['custom']['db'].".".$filter['custom']['text']."','".$filter['code']."_".$filter['custom']['text']."'"; } */ $fields .= "," . PHP_EOL . "\t\t\t\t'a." . $filter['code'] . "','" . $filter['code'] . "'"; } $donelist[] = $filter['code']; } } } return $fields; } public function setStoredId(&$view) { // keep track of all fields already added $donelist = array('id', 'search', 'published', 'access', 'created_by', 'modified_by'); // set the defaults first $stored = "//" . $this->setLine(__LINE__) . " Compile the store id."; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.id');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.search');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.published');"; if (isset($this->accessBuilder[$view]) && ComponentbuilderHelper::checkString($this->accessBuilder[$view])) { $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.access');"; } $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.ordering');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.created_by');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.modified_by');"; // add the rest of the set filters if (isset($this->sortBuilder[$view]) && ComponentbuilderHelper::checkArray($this->sortBuilder[$view])) { foreach ($this->sortBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.category');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.category_id');"; if ($filter['code'] != 'category') { $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter." . $filter['code'] . "');"; } } else { // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $stored .= PHP_EOL."\t\t\$id .= ':' . \$this->getState('filter.".$filter['code']."_".$filter['custom']['text']."');"; } */ $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter." . $filter['code'] . "');"; } $donelist[] = $filter['code']; } } } // add the rest of the set filters if (isset($this->filterBuilder[$view]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$view])) { foreach ($this->filterBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.category');"; $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter.category_id');"; if ($filter['code'] != 'category') { $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter." . $filter['code'] . "');"; } } else { // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $stored .= PHP_EOL."\t\t\$id .= ':' . \$this->getState('filter.".$filter['code']."_".$filter['custom']['text']."');"; } */ $stored .= PHP_EOL . "\t\t\$id .= ':' . \$this->getState('filter." . $filter['code'] . "');"; } $donelist[] = $filter['code']; } } } return $stored; } public function setAddToolBar(&$view) { // set view name $viewName = ComponentbuilderHelper::safeString($view['settings']->name_single); // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$viewName])) { $core = $this->permissionCore[$viewName]; $coreLoad = true; } // check type if ($view['settings']->type == 2) { // set lang strings $viewNameLang_readonly = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($view['settings']->name_single . ' readonly', 'U'); // load to lang $this->langContent[$this->lang][$viewNameLang_readonly] = $view['settings']->name_single . ' :: Readonly'; // build toolbar $toolBar = "JFactory::getApplication()->input->set('hidemainmenu', true);"; $toolBar .= PHP_EOL . "\t\tJToolBarHelper::title(JText:".":_('" . $viewNameLang_readonly . "'), '" . $viewName . "');"; $toolBar .= PHP_EOL . "\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CLOSE');"; } else { // set lang strings $viewNameLang_new = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($view['settings']->name_single . ' New', 'U'); $viewNameLang_edit = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($view['settings']->name_single . ' Edit', 'U'); // load to lang $this->langContent[$this->lang][$viewNameLang_new] = 'A New ' . $view['settings']->name_single; $this->langContent[$this->lang][$viewNameLang_edit] = 'Editing the ' . $view['settings']->name_single; // build toolbar $toolBar = "JFactory::getApplication()->input->set('hidemainmenu', true);"; $toolBar .= PHP_EOL . "\t\t\$user = JFactory::getUser();"; $toolBar .= PHP_EOL . "\t\t\$userId = \$user->id;"; $toolBar .= PHP_EOL . "\t\t\$isNew = \$this->item->id == 0;"; $toolBar .= PHP_EOL . PHP_EOL . "\t\tJToolbarHelper::title( JText:".":_(\$isNew ? '" . $viewNameLang_new . "' : '" . $viewNameLang_edit . "'), 'pencil-2 article-add');"; $toolBar .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Built the actions for new and existing records."; $toolBar .= PHP_EOL . "\t\tif (\$this->refid || \$this->ref)"; $toolBar .= PHP_EOL . "\t\t{"; if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.create']])) { $toolBar .= PHP_EOL . "\t\t\tif (\$this->canDo->get('" . $core['core.create'] . "') && \$isNew)"; } else { $toolBar .= PHP_EOL . "\t\t\tif (\$this->canDo->get('core.create') && \$isNew)"; } $toolBar .= PHP_EOL . "\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " We can create the record."; $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::save('" . $viewName . ".save', 'JTOOLBAR_SAVE');"; $toolBar .= PHP_EOL . "\t\t\t}"; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.edit']])) { $toolBar .= PHP_EOL . "\t\t\telseif (\$this->canDo->get('" . $core['core.edit'] . "'))"; } else { $toolBar .= PHP_EOL . "\t\t\telseif (\$this->canDo->get('core.edit'))"; } $toolBar .= PHP_EOL . "\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " We can save the record."; $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::save('" . $viewName . ".save', 'JTOOLBAR_SAVE');"; $toolBar .= PHP_EOL . "\t\t\t}"; $toolBar .= PHP_EOL . "\t\t\tif (\$isNew)"; $toolBar .= PHP_EOL . "\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Do not creat but cancel."; $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CANCEL');"; $toolBar .= PHP_EOL . "\t\t\t}"; $toolBar .= PHP_EOL . "\t\t\telse"; $toolBar .= PHP_EOL . "\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " We can close it."; $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CLOSE');"; $toolBar .= PHP_EOL . "\t\t\t}"; $toolBar .= PHP_EOL . "\t\t}"; $toolBar .= PHP_EOL . "\t\telse"; $toolBar .= PHP_EOL . "\t\t{"; $toolBar .= PHP_EOL . "\t\t\tif (\$isNew)"; $toolBar .= PHP_EOL . "\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " For new records, check the create permission."; if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.create']])) { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('" . $core['core.create'] . "'))"; } else { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('core.create'))"; } $toolBar .= PHP_EOL . "\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::apply('" . $viewName . ".apply', 'JTOOLBAR_APPLY');"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::save('" . $viewName . ".save', 'JTOOLBAR_SAVE');"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::custom('" . $viewName . ".save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);"; $toolBar .= PHP_EOL . "\t\t\t\t};"; $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CANCEL');"; $toolBar .= PHP_EOL . "\t\t\t}"; $toolBar .= PHP_EOL . "\t\t\telse"; $toolBar .= PHP_EOL . "\t\t\t{"; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.edit']])) { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('" . $core['core.edit'] . "'))"; } else { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('core.edit'))"; } $toolBar .= PHP_EOL . "\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " We can save the new record"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::apply('" . $viewName . ".apply', 'JTOOLBAR_APPLY');"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::save('" . $viewName . ".save', 'JTOOLBAR_SAVE');"; $toolBar .= PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " We can save this record, but check the create permission to see"; $toolBar .= PHP_EOL . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " if we can return to make a new one."; if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.create']])) { $toolBar .= PHP_EOL . "\t\t\t\t\tif (\$this->canDo->get('" . $core['core.create'] . "'))"; } else { $toolBar .= PHP_EOL . "\t\t\t\t\tif (\$this->canDo->get('core.create'))"; } $toolBar .= PHP_EOL . "\t\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\t\tJToolBarHelper::custom('" . $viewName . ".save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);"; $toolBar .= PHP_EOL . "\t\t\t\t\t}"; $toolBar .= PHP_EOL . "\t\t\t\t}"; if ($coreLoad && isset($core['core.edit']) && isset($this->permissionBuilder['global'][$core['core.edit']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.edit']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.edit']])) { if ($coreLoad && isset($this->historyBuilder[$viewName]) && ComponentbuilderHelper::checkString($this->historyBuilder[$viewName])) { $toolBar .= PHP_EOL . "\t\t\t\t\$canVersion = (\$this->canDo->get('core.version') && \$this->canDo->get('" . $core['core.version'] . "'));"; $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->state->params->get('save_history', 1) && \$this->canDo->get('" . $core['core.edit'] . "') && \$canVersion)"; $toolBar .= PHP_EOL . "\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolbarHelper::versions('com_" . $this->fileContentStatic['###component###'] . "." . $viewName . "', \$this->item->id);"; $toolBar .= PHP_EOL . "\t\t\t\t}"; } } else { if ($coreLoad && isset($this->historyBuilder[$viewName]) && ComponentbuilderHelper::checkString($this->historyBuilder[$viewName])) { $toolBar .= PHP_EOL . "\t\t\t\t\$canVersion = (\$this->canDo->get('core.version') && \$this->canDo->get('" . $core['core.version'] . "'));"; $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->state->params->get('save_history', 1) && \$this->canDo->get('core.edit') && \$canVersion)"; $toolBar .= PHP_EOL . "\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolbarHelper::versions('com_" . $this->fileContentStatic['###component###'] . "." . $viewName . "', \$this->item->id);"; $toolBar .= PHP_EOL . "\t\t\t\t}"; } } if ($coreLoad && isset($core['core.create']) && isset($this->permissionBuilder['global'][$core['core.create']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.create']]) && in_array($viewName, $this->permissionBuilder['global'][$core['core.create']])) { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('" . $core['core.create'] . "'))"; } else { $toolBar .= PHP_EOL . "\t\t\t\tif (\$this->canDo->get('core.create'))"; } $toolBar .= PHP_EOL . "\t\t\t\t{"; $toolBar .= PHP_EOL . "\t\t\t\t\tJToolBarHelper::custom('" . $viewName . ".save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);"; $toolBar .= PHP_EOL . "\t\t\t\t}"; // add custom buttons $toolBar .= $this->setCustomButtons($view, 2, "\t\t"); $toolBar .= PHP_EOL . "\t\t\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CLOSE');"; $toolBar .= PHP_EOL . "\t\t\t}"; $toolBar .= PHP_EOL . "\t\t}"; $toolBar .= PHP_EOL . "\t\tJToolbarHelper::divider();"; $toolBar .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " set help url for this view if found"; $toolBar .= PHP_EOL . "\t\t\$help_url = " . $this->fileContentStatic['###Component###'] . "Helper::getHelpUrl('" . $viewName . "');"; $toolBar .= PHP_EOL . "\t\tif (" . $this->fileContentStatic['###Component###'] . "Helper::checkString(\$help_url))"; $toolBar .= PHP_EOL . "\t\t{"; $toolBar .= PHP_EOL . "\t\t\tJToolbarHelper::help('" . $this->langPrefix . "_HELP_MANAGER', false, \$help_url);"; $toolBar .= PHP_EOL . "\t\t}"; } return $toolBar; } public function setPopulateState(&$view) { // rest buket $state = ''; // keep track of all fields already added $donelist = array(); // add the rest of the set filters if (isset($this->sortBuilder[$view]) && ComponentbuilderHelper::checkArray($this->sortBuilder[$view])) { foreach ($this->sortBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { if (strlen($state) == 0) { $spacer = ""; } else { $spacer = PHP_EOL . PHP_EOL . "\t\t"; } $state .= $spacer . "\$category = \$app->getUserStateFromRequest(\$this->context . '.filter.category', 'filter_category');"; $state .= PHP_EOL . "\t\t\$this->setState('filter.category', \$category);"; $state .= PHP_EOL . PHP_EOL . "\t\t\$categoryId = \$this->getUserStateFromRequest(\$this->context . '.filter.category_id', 'filter_category_id');"; $state .= PHP_EOL . "\t\t\$this->setState('filter.category_id', \$categoryId);"; if ($filter['code'] != 'category') { $state .= PHP_EOL . PHP_EOL . "\t\t\$" . $filter['code'] . " = \$app->getUserStateFromRequest(\$this->context . '.filter." . $filter['code'] . "', 'filter_" . $filter['code'] . "');"; $state .= PHP_EOL . "\t\t\$this->setState('filter." . $filter['code'] . "', \$" . $filter['code'] . ");"; } } else { if (strlen($state) == 0) { $spacer = ""; } else { $spacer = PHP_EOL . PHP_EOL . "\t\t"; } // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $state .= $spacer."\$".$filter['code']."_".$filter['custom']['text']." = \$this->getUserStateFromRequest(\$this->context . '.filter.".$filter['code']."_".$filter['custom']['text']."', 'filter_".$filter['code']."_".$filter['custom']['text']."');"; $state .= PHP_EOL."\t\t\$this->setState('filter.".$filter['code']."_".$filter['custom']['text']."', \$".$filter['code']."_".$filter['custom']['text'].");"; $spacer = PHP_EOL.PHP_EOL."\t\t"; } */ $state .= $spacer . "\$" . $filter['code'] . " = \$this->getUserStateFromRequest(\$this->context . '.filter." . $filter['code'] . "', 'filter_" . $filter['code'] . "');"; $state .= PHP_EOL . "\t\t\$this->setState('filter." . $filter['code'] . "', \$" . $filter['code'] . ");"; } $donelist[] = $filter['code']; } } } // add the rest of the set filters if (isset($this->filterBuilder[$view]) && ComponentbuilderHelper::checkArray($this->filterBuilder[$view])) { foreach ($this->filterBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { if (strlen($state) == 0) { $spacer = ""; } else { $spacer = PHP_EOL . PHP_EOL . "\t\t"; } $state .= $spacer . "\$category = \$app->getUserStateFromRequest(\$this->context . '.filter.category', 'filter_category');"; $state .= PHP_EOL . "\t\t\$this->setState('filter.category', \$category);"; $state .= PHP_EOL . PHP_EOL . "\t\t\$categoryId = \$this->getUserStateFromRequest(\$this->context . '.filter.category_id', 'filter_category_id');"; $state .= PHP_EOL . "\t\t\$this->setState('filter.category_id', \$categoryId);"; if ($filter['code'] != 'category') { $state .= PHP_EOL . PHP_EOL . "\t\t\$" . $filter['code'] . " = \$app->getUserStateFromRequest(\$this->context . '.filter." . $filter['code'] . "', 'filter_" . $filter['code'] . "');"; $state .= PHP_EOL . "\t\t\$this->setState('filter." . $filter['code'] . "', \$" . $filter['code'] . ");"; } } else { if (strlen($state) == 0) { $spacer = ""; } else { $spacer = PHP_EOL . PHP_EOL . "\t\t"; } // check if custom field is set /* if (ComponentbuilderHelper::checkArray($filter['custom'])) { $state .= $spacer."\$".$filter['custom']['text']." = \$this->getUserStateFromRequest(\$this->context . '.filter.".$filter['custom']['text']."', 'filter_".$filter['custom']['text']."');"; $state .= PHP_EOL."\t\t\$this->setState('filter.".$filter['custom']['text']."', \$".$filter['custom']['text'].");"; $state .= PHP_EOL."\t\t\$".$filter['code']."_".$filter['custom']['text']." = \$this->getUserStateFromRequest(\$this->context . '.filter.".$filter['code']."_".$filter['custom']['text']."', 'filter_".$filter['code']."_".$filter['custom']['text']."');"; $state .= PHP_EOL."\t\t\$this->setState('filter.".$filter['code']."_".$filter['custom']['text']."', \$".$filter['code']."_".$filter['custom']['text'].");"; $spacer = PHP_EOL.PHP_EOL."\t\t"; } */ $state .= $spacer . "\$" . $filter['code'] . " = \$this->getUserStateFromRequest(\$this->context . '.filter." . $filter['code'] . "', 'filter_" . $filter['code'] . "');"; $state .= PHP_EOL . "\t\t\$this->setState('filter." . $filter['code'] . "', \$" . $filter['code'] . ");"; } $donelist[] = $filter['code']; } } } return $state; } public function setSortFields(&$view) { // keep track of all fields already added $donelist = array('sorting', 'published'); // set the default first $fields = "return array("; $fields .= PHP_EOL . "\t\t\t'a.sorting' => JText:".":_('JGRID_HEADING_ORDERING')"; $fields .= "," . PHP_EOL . "\t\t\t'a.published' => JText:".":_('JSTATUS')"; // add the rest of the set filters if (isset($this->sortBuilder[$view]) && ComponentbuilderHelper::checkArray($this->sortBuilder[$view])) { foreach ($this->sortBuilder[$view] as $filter) { if (!in_array($filter['code'], $donelist)) { if ($filter['type'] === 'category') { $fields .= "," . PHP_EOL . "\t\t\t'c.category_title' => JText:".":_('" . $filter['lang'] . "')"; } elseif (ComponentbuilderHelper::checkArray($filter['custom'])) { $fields .= "," . PHP_EOL . "\t\t\t'" . $filter['custom']['db'] . "." . $filter['custom']['text'] . "' => JText:".":_('" . $filter['lang'] . "')"; } else { $fields .= "," . PHP_EOL . "\t\t\t'a." . $filter['code'] . "' => JText:".":_('" . $filter['lang'] . "')"; } } } } $fields .= "," . PHP_EOL . "\t\t\t'a.id' => JText:".":_('JGRID_HEADING_ID')"; $fields .= PHP_EOL . "\t\t);"; // return fields return $fields; } public function setCheckinCall() { $call = PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " check in items"; $call .= PHP_EOL . "\t\t\$this->checkInNow();" . PHP_EOL; return $call; } public function setAutoCheckin($view, $component) { $checkin = PHP_EOL . PHP_EOL . "\t/**"; $checkin .= PHP_EOL . "\t* Build an SQL query to checkin all items left checked out longer then a set time."; $checkin .= PHP_EOL . "\t*"; $checkin .= PHP_EOL . "\t* @return a bool"; $checkin .= PHP_EOL . "\t*"; $checkin .= PHP_EOL . "\t*/"; $checkin .= PHP_EOL . "\tprotected function checkInNow()"; $checkin .= PHP_EOL . "\t{"; $checkin .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Get set check in time"; $checkin .= PHP_EOL . "\t\t\$time = JComponentHelper::getParams('com_" . $component . "')->get('check_in');"; $checkin .= PHP_EOL . "\t\t"; $checkin .= PHP_EOL . "\t\tif (\$time)"; $checkin .= PHP_EOL . "\t\t{"; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Get a db connection."; $checkin .= PHP_EOL . "\t\t\t\$db = JFactory::getDbo();"; $checkin .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " reset query"; $checkin .= PHP_EOL . "\t\t\t\$query = \$db->getQuery(true);"; $checkin .= PHP_EOL . "\t\t\t\$query->select('*');"; $checkin .= PHP_EOL . "\t\t\t\$query->from(\$db->quoteName('#__" . $component . "_" . $view . "'));"; $checkin .= PHP_EOL . "\t\t\t\$db->setQuery(\$query);"; $checkin .= PHP_EOL . "\t\t\t\$db->execute();"; $checkin .= PHP_EOL . "\t\t\tif (\$db->getNumRows())"; $checkin .= PHP_EOL . "\t\t\t{"; $checkin .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Get Yesterdays date"; $checkin .= PHP_EOL . "\t\t\t\t\$date = JFactory::getDate()->modify(\$time)->toSql();"; $checkin .= PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " reset query"; $checkin .= PHP_EOL . "\t\t\t\t\$query = \$db->getQuery(true);"; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Fields to update."; $checkin .= PHP_EOL . "\t\t\t\t\$fields = array("; $checkin .= PHP_EOL . "\t\t\t\t\t\$db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'',"; $checkin .= PHP_EOL . "\t\t\t\t\t\$db->quoteName('checked_out') . '=0'"; $checkin .= PHP_EOL . "\t\t\t\t);"; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Conditions for which records should be updated."; $checkin .= PHP_EOL . "\t\t\t\t\$conditions = array("; $checkin .= PHP_EOL . "\t\t\t\t\t\$db->quoteName('checked_out') . '!=0', "; $checkin .= PHP_EOL . "\t\t\t\t\t\$db->quoteName('checked_out_time') . '<\''.\$date.'\''"; $checkin .= PHP_EOL . "\t\t\t\t);"; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Check table"; $checkin .= PHP_EOL . "\t\t\t\t\$query->update(\$db->quoteName('#__" . $component . "_" . $view . "'))->set(\$fields)->where(\$conditions); "; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t\t\$db->setQuery(\$query);"; $checkin .= PHP_EOL . PHP_EOL . "\t\t\t\t\$db->execute();"; $checkin .= PHP_EOL . "\t\t\t}"; $checkin .= PHP_EOL . "\t\t}"; $checkin .= PHP_EOL . PHP_EOL . "\t\treturn false;"; $checkin .= PHP_EOL . "\t}"; return $checkin; } public function setGetItemsMethodStringFix($view, $Component, $tab = '', $export = false) { // add the fix if this view has the need for it $fix = ''; // encryption switches foreach ($this->cryptionTypes as $cryptionType) { ${$cryptionType.'Crypt'} = false; } // setup correct core target $coreLoad = false; if (isset($this->permissionCore[$view])) { $core = $this->permissionCore[$view]; $coreLoad = true; } $component = ComponentbuilderHelper::safeString($Component); // check if the item has permissions. if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder[$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder[$core['core.access']]) && in_array($view, $this->permissionBuilder[$core['core.access']])) { $fix .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set values to display correctly."; $fix .= PHP_EOL . "\t" . $tab . "\tif (" . $Component . "Helper::checkArray(\$items))"; $fix .= PHP_EOL . "\t" . $tab . "\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t//" . $this->setLine(__LINE__) . " get user object."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\$user = JFactory::getUser();"; $fix .= PHP_EOL . "\t" . $tab . "\t\tforeach (\$items as \$nr => &\$item)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$access = (\$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "." . $view . ".' . (int) \$item->id) && \$user->authorise('" . $core['core.access'] . "', 'com_" . $component . "'));"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (!\$access)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tunset(\$items[\$nr]);"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tcontinue;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t}" . PHP_EOL; } if (!$export) { $methodName = 'getItemsMethodListStringFixBuilder'; } else { $methodName = 'getItemsMethodEximportStringFixBuilder'; } if (isset($this->{$methodName}[$view]) && ComponentbuilderHelper::checkArray($this->{$methodName}[$view])) { if (!ComponentbuilderHelper::checkString($fix)) { $fix .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set values to display correctly."; $fix .= PHP_EOL . "\t" . $tab . "\tif (" . $Component . "Helper::checkArray(\$items))"; $fix .= PHP_EOL . "\t" . $tab . "\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\tforeach (\$items as \$nr => &\$item)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t{"; } foreach ($this->{$methodName}[$view] as $item) { switch ($item['method']) { case 1: // JSON_STRING_ENCODE $decode = 'json_decode'; $suffix_decode = ', true'; break; case 2: // BASE_SIXTY_FOUR $decode = 'base64_decode'; $suffix_decode = ''; break; case 3: // BASIC_ENCRYPTION_LOCALKEY $decode = '$basic->decryptString'; $basicCrypt = true; $suffix_decode = ''; break; case 4: // WHMCS_ENCRYPTION_WHMCS $decode = '$whmcs->decryptString'; $whmcsCrypt = true; $suffix_decode = ''; break; case 5: // MEDIUM_ENCRYPTION_LOCALFILE $decode = '$medium->decryptString'; $mediumCrypt = true; $suffix_decode = ''; break; default: // JSON_ARRAY_ENCODE $decode = 'json_decode'; $suffix_decode = ', true'; break; } if ($item['type'] === 'usergroup' && !$export) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " decode " . $item['name']; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$" . $item['name'] . "Array = " . $decode . "(\$item->" . $item['name'] . $suffix_decode . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (" . $Component . "Helper::checkArray(\$" . $item['name'] . "Array))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$" . $item['name'] . "Names = '';"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$counter = 0;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tforeach (\$" . $item['name'] . "Array as \$" . $item['name'] . ")"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\tif (\$counter == 0)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\t\$" . $item['name'] . "Names .= " . $Component . "Helper::getGroupName(\$" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\telse"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\t\$" . $item['name'] . "Names .= ', '." . $Component . "Helper::getGroupName(\$" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\$counter++;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$item->" . $item['name'] . " = \$" . $item['name'] . "Names;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t}"; } /* elseif ($item['type'] === 'usergroup' && $export) { $fix .= PHP_EOL."\t".$tab."\t\t\t//".$this->setLine(__LINE__)." decode ".$item['name']; $fix .= PHP_EOL."\t".$tab."\t\t\t\$".$item['name']."Array = ".$decode."(\$item->".$item['name'].$suffix_decode.");"; $fix .= PHP_EOL."\t".$tab."\t\t\tif (".$Component."Helper::checkArray(\$".$item['name']."Array))"; $fix .= PHP_EOL."\t".$tab."\t\t\t{"; $fix .= PHP_EOL."\t".$tab."\t\t\t\t\$item->".$item['name']." = implode('|',\$".$item['name']."Array);"; $fix .= PHP_EOL."\t".$tab."\t\t\t}"; } */ elseif ($item['translation'] && !$export) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " convert " . $item['name']; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$" . $item['name'] . "Array = " . $decode . "(\$item->" . $item['name'] . $suffix_decode . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (" . $Component . "Helper::checkArray(\$" . $item['name'] . "Array))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$" . $item['name'] . "Names = '';"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$counter = 0;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tforeach (\$" . $item['name'] . "Array as \$" . $item['name'] . ")"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\tif (\$counter == 0)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\t\$" . $item['name'] . "Names .= JText:".":_(\$this->selectionTranslation(\$" . $item['name'] . ", '" . $item['name'] . "'));"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\telse"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\t\$" . $item['name'] . "Names .= ', '.JText:".":_(\$this->selectionTranslation(\$" . $item['name'] . ", '" . $item['name'] . "'));"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\$counter++;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$item->" . $item['name'] . " = \$" . $item['name'] . "Names;"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t}"; } else { if ($item['method'] == 2 || $item['method'] == 3 || $item['method'] == 4 || $item['method'] == 5) { $taber = ''; if ($item['method'] == 3) { $taber = "\t"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (\$basickey && !is_numeric(\$item->" . $item['name'] . ") && \$item->" . $item['name'] . " === base64_encode(base64_decode(\$item->" . $item['name'] . ", true)))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; } elseif ($item['method'] == 5) { $taber = "\t"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (\$mediumkey && !is_numeric(\$item->" . $item['name'] . ") && \$item->" . $item['name'] . " === base64_encode(base64_decode(\$item->" . $item['name'] . ", true)))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; } elseif ($item['method'] == 4) { $taber = "\t"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (\$whmcskey && !is_numeric(\$item->" . $item['name'] . ") && \$item->" . $item['name'] . " === base64_encode(base64_decode(\$item->" . $item['name'] . ", true)))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; } if ($item['method'] == 3 || $item['method'] == 4 || $item['method'] == 5) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t//" . $this->setLine(__LINE__) . " decrypt " . $item['name']; } else { $fix .= PHP_EOL . "\t" . $tab . $taber . "\t\t\t//" . $this->setLine(__LINE__) . " decode " . $item['name']; } $fix .= PHP_EOL . "\t" . $tab . $taber . "\t\t\t\$item->" . $item['name'] . " = " . $decode . "(\$item->" . $item['name'] . ");"; if ($item['method'] == 3 || $item['method'] == 4 || $item['method'] == 5) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t}"; } } else { if ($export && $item['type'] === 'repeatable') { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " decode repeatable " . $item['name']; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$" . $item['name'] . "Array = " . $decode . "(\$item->" . $item['name'] . $suffix_decode . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tif (" . $Component . "Helper::checkArray(\$" . $item['name'] . "Array))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\$bucket" . $item['name'] . " = array();"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tforeach (\$" . $item['name'] . "Array as \$" . $item['name'] . "FieldName => \$" . $item['name'] . ")"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\tif (" . $Component . "Helper::checkArray(\$" . $item['name'] . "))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\t\$bucket" . $item['name'] . "[] = \$" . $item['name'] . "FieldName . '<||VDM||>' . implode('<|VDM|>',\$" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t//" . $this->setLine(__LINE__) . " make sure the bucket has values."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\tif (" . $Component . "Helper::checkArray(\$bucket" . $item['name'] . "))"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " clear the repeatable field."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\tunset(\$item->" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " set repeatable field for export."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t\$item->" . $item['name'] . " = implode('<|||VDM|||>',\$bucket" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\t//" . $this->setLine(__LINE__) . " unset the bucket."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t\tunset(\$bucket" . $item['name'] . ");"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t}"; } elseif ($item['method'] == 1 && !$export) { // TODO we check if this works well. $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " convert " . $item['name']; if (isset($item['custom']['table'])) { $keyTableNAme = str_replace('#__' . $this->fileContentStatic['###component###'] . '_', '', $item['custom']['table']); $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$item->" . $item['name'] . " = " . $Component . "Helper::jsonToString(\$item->" . $item['name'] . ", ', ', '" . $keyTableNAme . "');"; } else { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$item->" . $item['name'] . " = " . $Component . "Helper::jsonToString(\$item->" . $item['name'] . ", ', ', '" . $item['name'] . "');"; } } else { if (!$export) { // For thos we have not cached yet. $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " convert " . $item['name']; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$item->" . $item['name'] . " = " . $Component . "Helper::jsonToString(\$item->" . $item['name'] . ");"; } } } } } } // close the foreach if needed if (!ComponentbuilderHelper::checkString($fix) && $export) { $fix .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set values to display correctly."; $fix .= PHP_EOL . "\t" . $tab . "\tif (" . $Component . "Helper::checkArray(\$items))"; $fix .= PHP_EOL . "\t" . $tab . "\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\tforeach (\$items as \$nr => &\$item)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t{"; } // close the foreach if needed if (ComponentbuilderHelper::checkString($fix)) { // remove these values if export if ($export) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " unset the values we don't want exported."; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tunset(\$item->asset_id);"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tunset(\$item->checked_out);"; $fix .= PHP_EOL . "\t" . $tab . "\t\t\tunset(\$item->checked_out_time);"; } $fix .= PHP_EOL . "\t" . $tab . "\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t}"; if ($export) { $fix .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Add headers to items array."; $fix .= PHP_EOL . "\t" . $tab . "\t\$headers = \$this->getExImPortHeaders();"; $fix .= PHP_EOL . "\t" . $tab . "\tif (" . $Component . "Helper::checkObject(\$headers))"; $fix .= PHP_EOL . "\t" . $tab . "\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\tarray_unshift(\$items,\$headers);"; $fix .= PHP_EOL . "\t" . $tab . "\t}"; } } // add custom php to getitems method $fix .= $this->getCustomScriptBuilder('php_getitems', $view, PHP_EOL . PHP_EOL . $tab); // load the encryption object if needed $script = ''; foreach ($this->cryptionTypes as $cryptionType) { if (${$cryptionType.'Crypt'}) { $script .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get the ".$cryptionType." encryption key."; $script .= PHP_EOL . "\t" . $tab . "\t\$".$cryptionType."key = " . $Component . "Helper::getCryptKey('".$cryptionType."');"; $script .= PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " Get the encryption object."; $script .= PHP_EOL . "\t" . $tab . "\t\$".$cryptionType." = new FOFEncryptAes(\$".$cryptionType."key);"; } } // add the encryption script return $script . $fix; } public function setSelectionTranslationFix($views, $Component, $tab = '') { // add the fix if this view has the need for it $fix = ''; if (isset($this->selectionTranslationFixBuilder[$views]) && ComponentbuilderHelper::checkArray($this->selectionTranslationFixBuilder[$views])) { $fix .= PHP_EOL . PHP_EOL . "\t" . $tab . "\t//" . $this->setLine(__LINE__) . " set selection value to a translatable value"; $fix .= PHP_EOL . "\t" . $tab . "\tif (" . $Component . "Helper::checkArray(\$items))"; $fix .= PHP_EOL . "\t" . $tab . "\t{"; $fix .= PHP_EOL . "\t" . $tab . "\t\tforeach (\$items as \$nr => &\$item)"; $fix .= PHP_EOL . "\t" . $tab . "\t\t{"; foreach ($this->selectionTranslationFixBuilder[$views] as $name => $values) { $fix .= PHP_EOL . "\t" . $tab . "\t\t\t//" . $this->setLine(__LINE__) . " convert " . $name; $fix .= PHP_EOL . "\t" . $tab . "\t\t\t\$item->" . $name . " = \$this->selectionTranslation(\$item->" . $name . ", '" . $name . "');"; } $fix .= PHP_EOL . "\t" . $tab . "\t\t}"; $fix .= PHP_EOL . "\t" . $tab . "\t}" . PHP_EOL; } return $fix; } public function setSelectionTranslationFixFunc($views, $Component) { // add the fix if this view has the need for it $fix = ''; if (isset($this->selectionTranslationFixBuilder[$views]) && ComponentbuilderHelper::checkArray($this->selectionTranslationFixBuilder[$views])) { $fix .= PHP_EOL . PHP_EOL . "\t/**"; $fix .= PHP_EOL . "\t* Method to convert selection values to translatable string."; $fix .= PHP_EOL . "\t*"; $fix .= PHP_EOL . "\t* @return translatable string"; $fix .= PHP_EOL . "\t*/"; $fix .= PHP_EOL . "\tpublic function selectionTranslation(\$value,\$name)"; $fix .= PHP_EOL . "\t{"; foreach ($this->selectionTranslationFixBuilder[$views] as $name => $values) { if (ComponentbuilderHelper::checkArray($values)) { $fix .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Array of " . $name . " language strings"; $fix .= PHP_EOL . "\t\tif (\$name === '" . $name . "')"; $fix .= PHP_EOL . "\t\t{"; $fix .= PHP_EOL . "\t\t\t\$" . $name . "Array = array("; $counter = 0; foreach ($values as $value => $translang) { // only add quotes to strings if (ComponentbuilderHelper::checkString($value)) { $key = "'" . $value . "'"; } else { if ($value == '') { $value = 0; } $key = $value; } if ($counter == 0) { $fix .= PHP_EOL . "\t\t\t\t" . $key . " => '" . $translang . "'"; } else { $fix .= "," . PHP_EOL . "\t\t\t\t" . $key . " => '" . $translang . "'"; } $counter++; } $fix .= PHP_EOL . "\t\t\t);"; $fix .= PHP_EOL . "\t\t\t//" . $this->setLine(__LINE__) . " Now check if value is found in this array"; $fix .= PHP_EOL . "\t\t\tif (isset(\$" . $name . "Array[\$value]) && " . $Component . "Helper::checkString(\$" . $name . "Array[\$value]))"; $fix .= PHP_EOL . "\t\t\t{"; $fix .= PHP_EOL . "\t\t\t\treturn \$" . $name . "Array[\$value];"; $fix .= PHP_EOL . "\t\t\t}"; $fix .= PHP_EOL . "\t\t}"; } } $fix .= PHP_EOL . "\t\treturn \$value;"; $fix .= PHP_EOL . "\t}"; } return $fix; } public function setRouterCase($viewName) { if (strlen($viewName) > 0) { $router = PHP_EOL . "\t\tcase '" . $viewName . "':"; $router .= PHP_EOL . "\t\t\t\$id = explode(':', \$segments[$count-1]);"; $router .= PHP_EOL . "\t\t\t\$vars['id'] = (int) \$id[0];"; $router .= PHP_EOL . "\t\t\t\$vars['view'] = '" . $viewName . "';"; $router .= PHP_EOL . "\t\tbreak;"; return $router; } return ''; } public function setComponentImageType($path) { $type = ComponentbuilderHelper::imageInfo($path); if ($type) { $imagePath = $this->componentPath . '/admin/assets/images'; // move the image to its place JFile::copy(JPATH_SITE . '/' . $path, $imagePath . '/vdm-component.' . $type, '', true); // now set the type to global for re-use $this->componentImageType = $type; // return image type return $type; } $this->componentImageType = 'jpg'; return 'jpg'; } public function setDashboardIconAccess() { if (isset($this->permissionDashboard) && ComponentbuilderHelper::checkArray($this->permissionDashboard)) { $this->permissionDashboard = array_unique($this->permissionDashboard); return PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " view access array" . PHP_EOL . "\t\t\$viewAccess = array(" . PHP_EOL . "\t\t\t" . implode("," . PHP_EOL . "\t\t\t", $this->permissionDashboard) . ");"; } return ''; } public function setDashboardIcons() { if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { $icons = ''; $counter = 0; $catArray = array(); foreach ($this->componentData->admin_views as $view) { $name_single = ComponentbuilderHelper::safeString($view['settings']->name_single); $name_list = ComponentbuilderHelper::safeString($view['settings']->name_list); $icons .= $this->addCustomDashboardIcons($view, $counter); if (isset($view['dashboard_add']) && $view['dashboard_add'] == 1) { $type = ComponentbuilderHelper::imageInfo($view['settings']->icon_add); if ($type) { $type = $type . "."; // icon builder loader $this->iconBuilder[$type . $name_single . ".add"] = $view['settings']->icon_add; } else { $type = 'png.'; } if ($counter == 0) { $icons .= "'" . $type . $name_single . ".add'"; } else { $icons .= ", '" . $type . $name_single . ".add'"; } // build lang $langName = 'Add ' . ComponentbuilderHelper::safeString($view['settings']->name_single, 'W') . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . ComponentbuilderHelper::safeString($view['settings']->name_single, 'U') . '_ADD'; // add to lang $this->langContent[$this->lang][$langKey] = $langName; $counter++; } if (isset($view['dashboard_list']) && $view['dashboard_list'] == 1) { $type = ComponentbuilderHelper::imageInfo($view['settings']->icon); if ($type) { $type = $type . "."; // icon builder loader $this->iconBuilder[$type . $name_list] = $view['settings']->icon; } else { $type = 'png.'; } if ($counter == 0) { $icons .= "'" . $type . $name_list . "'"; } else { $icons .= ", '" . $type . $name_list . "'"; } // build lang $langName = ComponentbuilderHelper::safeString($view['settings']->name_list, 'W') . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . ComponentbuilderHelper::safeString($view['settings']->name_list, 'U'); // add to lang $this->langContent[$this->lang][$langKey] = $langName; $counter++; } if (isset($this->categoryBuilder[$name_list]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$name_list])) { $catCode = $this->categoryBuilder[$name_list]['code']; // check if category has another name if (isset($this->catOtherName[$name_list]) && ComponentbuilderHelper::checkArray($this->catOtherName[$name_list])) { $otherViews = $this->catOtherName[$name_list]['views']; $otherNames = $this->catOtherName[$name_list]['name']; // build lang $langName = ComponentbuilderHelper::safeString($otherNames, 'W'); } else { $otherViews = $name_list; // build lang $langName = 'Category  For
    ' . ComponentbuilderHelper::safeString($otherViews, 'W'); } if (!in_array($otherViews, $catArray)) { // add to lang $langKey = $this->langPrefix . '_DASHBOARD_' . ComponentbuilderHelper::safeString($otherViews, 'U') . '_' . ComponentbuilderHelper::safeString($catCode, 'U'); $this->langContent[$this->lang][$langKey] = $langName; // get image type $type = ComponentbuilderHelper::imageInfo($view['settings']->icon_category); if ($type) { $type = $type . "."; // icon builder loader $this->iconBuilder[$type . $otherViews . "." . $catCode] = $view['settings']->icon_category; } else { $type = 'png.'; } if ($counter == 0) { $icons .= "'" . $type . $otherViews . "." . $catCode . "'"; } else { $icons .= ", '" . $type . $otherViews . "." . $catCode . "'"; } $counter++; // make sure we add a category only once $catArray[] = $otherViews; } } } if (isset($this->lastCustomDashboardIcon) && ComponentbuilderHelper::checkArray($this->lastCustomDashboardIcon)) { foreach ($this->lastCustomDashboardIcon as $icon) { $icons .= $icon; } unset($this->lastCustomDashboardIcon); } if (isset($this->iconBuilder) && ComponentbuilderHelper::checkArray($this->iconBuilder)) { $imagePath = $this->componentPath . '/admin/assets/images/icons'; foreach ($this->iconBuilder as $icon => $path) { $array_buket = explode('.', $icon); if (count($array_buket) == 3) { list($type, $name, $action) = $array_buket; } else { list($type, $name) = $array_buket; $action = false; } // set the new image name if ($action) { $imageName = $name . '_' . $action . '.' . $type; } else { $imageName = $name . '.' . $type; } // move the image to its place JFile::copy(JPATH_SITE . '/' . $path, $imagePath . '/' . $imageName, '', true); } } return $icons; } return false; } public function setDashboardModelMethods() { if (isset($this->componentData->php_dashboard_methods) && ComponentbuilderHelper::checkString($this->componentData->php_dashboard_methods)) { // get all the mothods that should load date to the view $this->DashboardGetCustomData = ComponentbuilderHelper::getAllBetween($this->componentData->php_dashboard_methods, 'public function get', '()'); // return the methods return PHP_EOL . PHP_EOL . $this->setPlaceholders($this->componentData->php_dashboard_methods, $this->placeholders); } return ''; } public function setDashboardGetCustomData() { if (isset($this->DashboardGetCustomData) && ComponentbuilderHelper::checkArray($this->DashboardGetCustomData)) { // gets array reset $gets = array(); // set dashboard gets foreach ($this->DashboardGetCustomData as $get) { $string = ComponentbuilderHelper::safeString($get); $gets[] = "\$this->" . $string . " = \$this->get('" . $get . "');"; } // return the gets return PHP_EOL . "\t\t" . implode(PHP_EOL . "\t\t", $gets); } return ''; } public function setDashboardDisplayData() { // display array reset $display = array(); $mainAccordianName = 'cPanel'; $builder = array(); $tab = "\t"; $loadTabs = false; // check if we have custom tabs if (isset($this->componentData->dashboard_tab) && ComponentbuilderHelper::checkArray($this->componentData->dashboard_tab)) { // build the tabs and accordians foreach ($this->componentData->dashboard_tab as $data) { $builder[$data['name']][$data['header']] = $this->setPlaceholders($data['html'], $this->placeholders); } // since we have custom tabs we must load the tab structure around the cpanel $display[] = '
    '; $display[] = "\t" . '
    '; $display[] = "\t 'cpanel')); ?>"; $display[] = PHP_EOL . "\t\t"; $display[] = "\t\t" . '
    '; // set the tab to insure correct spacing $tab = "\t\t\t"; // change the name of the main tab $mainAccordianName = 'Control Panel'; $loadTabs = true; } else { $display[] = '
    '; } // set dashboard display $display[] = $tab . '
    '; $display[] = $tab . "\t 'main')); ?>"; $display[] = $tab . "\t\t"; $display[] = $tab . "\t\t\tloadTemplate('main');?>"; $display[] = $tab . "\t\t"; $display[] = $tab . "\t"; $display[] = $tab . "
    "; $display[] = $tab . '
    '; $display[] = $tab . "\t 'vdm')); ?>"; $display[] = $tab . "\t\tfileContentStatic['###COMPANYNAME###'] . "', 'vdm'); ?>"; $display[] = $tab . "\t\t\tloadTemplate('vdm');?>"; $display[] = $tab . "\t\t"; $display[] = $tab . "\t"; $display[] = $tab . "
    "; if ($loadTabs) { $display[] = "\t\t
    "; $display[] = "\t\t"; // load the new tabs foreach ($builder as $tabname => $accordians) { $alias = ComponentbuilderHelper::safeString($tabname); $display[] = PHP_EOL . "\t\t"; $display[] = "\t\t" . '
    '; $display[] = $tab . '
    '; $display[] = $tab . "\t '" . $alias . "_one')); ?>"; $slidecounter = 1; foreach ($accordians as $accordianname => $html) { $ac_alias = ComponentbuilderHelper::safeString($accordianname); $counterName = ComponentbuilderHelper::safeString($slidecounter); $tempName = $alias . '_' . $ac_alias; $display[] = $tab . "\t\t"; $display[] = $tab . "\t\t\tloadTemplate('" . $tempName . "');?>"; $display[] = $tab . "\t\t"; $slidecounter++; // build the template file $target = array('custom_admin' => $this->fileContentStatic['###component###']); $this->buildDynamique($target, 'template', $tempName); // set the file data $TARGET = ComponentbuilderHelper::safeString($this->target, 'U'); // ###SITE_TEMPLATE_BODY### <<>> $this->fileContentDynamic[$this->fileContentStatic['###component###'] . '_' . $tempName]['###CUSTOM_ADMIN_TEMPLATE_BODY###'] = PHP_EOL . $html; // ###SITE_TEMPLATE_CODE_BODY### <<>> $this->fileContentDynamic[$this->fileContentStatic['###component###'] . '_' . $tempName]['###CUSTOM_ADMIN_TEMPLATE_CODE_BODY###'] = ''; } $display[] = $tab . "\t"; $display[] = $tab . "
    "; $display[] = "\t\t
    "; $display[] = "\t\t"; } $display[] = PHP_EOL . "\t"; $display[] = "\t
    "; } $display[] = "
    "; // return the display return PHP_EOL . implode(PHP_EOL, $display); } public function addCustomDashboardIcons(&$view, &$counter) { $icon = ''; if (isset($this->componentData->custom_admin_views) && ComponentbuilderHelper::checkArray($this->componentData->custom_admin_views)) { foreach ($this->componentData->custom_admin_views as $nr => $menu) { if (!isset($this->customAdminAdded[$menu['settings']->code]) && isset($menu['dashboard_list']) && $menu['dashboard_list'] == 1 && $menu['before'] == $view['adminview']) { $type = ComponentbuilderHelper::imageInfo($menu['settings']->icon); if ($type) { $type = $type . "."; // icon builder loader $this->iconBuilder[$type . $menu['settings']->code] = $menu['settings']->icon; } else { $type = 'png.'; } // build lang $langName = $menu['settings']->name . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . $menu['settings']->CODE; // add to lang $this->langContent[$this->lang][$langKey] = $langName; // set icon if ($counter == 0) { $counter++; $icon .= "'" . $type . $menu['settings']->code . "'"; } else { $counter++; $icon .= ", '" . $type . $menu['settings']->code . "'"; } } elseif (!isset($this->customAdminAdded[$menu['settings']->code]) && isset($menu['dashboard_list']) && $menu['dashboard_list'] == 1 && empty($menu['before'])) { $type = ComponentbuilderHelper::imageInfo($menu['settings']->icon); if ($type) { $type = $type . "."; // icon builder loader $this->iconBuilder[$type . $menu['settings']->code] = $menu['settings']->icon; } else { $type = 'png.'; } // build lang $langName = $menu['settings']->name . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . $menu['settings']->CODE; // add to lang $this->langContent[$this->lang][$langKey] = $langName; // set icon $this->lastCustomDashboardIcon[$nr] = ", '" . $type . $menu['settings']->code . "'"; } } } // see if we should have custom menus if (isset($this->componentData->custommenus) && ComponentbuilderHelper::checkArray($this->componentData->custommenus)) { foreach ($this->componentData->custommenus as $nr => $menu) { $nr = $nr + 100; $nameList = ComponentbuilderHelper::safeString($menu['name_code']); $nameUpper = ComponentbuilderHelper::safeString($menu['name_code'], 'U'); if (isset($menu['dashboard_list']) && $menu['dashboard_list'] == 1 && $view['adminview'] == $menu['before']) { $type = ComponentbuilderHelper::imageInfo('images/' . $menu['icon']); if ($type) { // icon builder loader $this->iconBuilder[$type .".". $nameList] = 'images/' . $menu['icon']; } else { $type = 'png'; } // build lang $langName = $menu['name'] . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . $nameUpper; // add to lang $this->langContent[$this->lang][$langKey] = $langName; // if this is a link build the icon values with pipe if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { // set icon if ($counter == 0) { $counter++; $icon .= "'".$type."||".$nameList."||".$menu['link']."'"; } else { $counter++; $icon .= ", '".$type."||".$nameList."||".$menu['link']."'"; } } else { // set icon if ($counter == 0) { $counter++; $icon .= "'" . $type .".". $nameList . "'"; } else { $counter++; $icon .= ", '" . $type .".". $nameList . "'"; } } } elseif (isset($menu['dashboard_list']) && $menu['dashboard_list'] == 1 && empty($menu['before'])) { $type = ComponentbuilderHelper::imageInfo('images/' . $menu['icon']); if ($type) { // icon builder loader $this->iconBuilder[$type .".". $nameList] = 'images/' . $menu['icon']; } else { $type = 'png'; } // build lang $langName = $menu['name'] . '

    '; $langKey = $this->langPrefix . '_DASHBOARD_' . $nameUpper; // add to lang $this->langContent[$this->lang][$langKey] = $langName; // if this is a link build the icon values with pipe if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { // set icon $this->lastCustomDashboardIcon[$nr] = ", '".$type."||".$nameList."||".$menu['link']."'"; } else { // set icon $this->lastCustomDashboardIcon[$nr] = ", '" . $type .".". $nameList . "'"; } } } } return $icon; } public function setSubMenus() { if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { $menus = ''; // main lang prefix $lang = $this->langPrefix . '_SUBMENU'; // set the code name $codeName = ComponentbuilderHelper::safeString($this->componentData->name_code); // set default dashboard if (!ComponentbuilderHelper::checkString($this->dynamicDashboard)) { $menus .= "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_DASHBOARD'), 'index.php?option=com_" . $codeName . "&view=" . $codeName . "', \$submenu === '" . $codeName . "');"; $this->langContent[$this->lang][$lang . '_DASHBOARD'] = 'Dashboard'; } $catArray = array(); foreach ($this->componentData->admin_views as $view) { // set custom menu $menus .= $this->addCustomSubMenu($view, $codeName, $lang); if (isset($view['submenu']) && $view['submenu'] == 1) { // setup access defaults $tab = ""; $nameSingle = ComponentbuilderHelper::safeString($view['settings']->name_single); $coreLoad = false; if (isset($this->permissionCore[$nameSingle])) { $core = $this->permissionCore[$nameSingle]; $coreLoad = true; } // check if the item has permissions. if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($nameSingle, $this->permissionBuilder['global'][$core['core.access']])) { $menus .= PHP_EOL . "\t\tif (\$user->authorise('" . $core['core.access'] . "', 'com_" . $codeName . "') && \$user->authorise('" . $nameSingle . ".submenu', 'com_" . $codeName . "'))"; $menus .= PHP_EOL . "\t\t{"; // add tab to lines to follow $tab = "\t"; } $nameList = ComponentbuilderHelper::safeString($view['settings']->name_list); $nameUpper = ComponentbuilderHelper::safeString($view['settings']->name_list, 'U'); $menus .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_" . $nameUpper . "'), 'index.php?option=com_" . $codeName . "&view=" . $nameList . "', \$submenu === '" . $nameList . "');"; $this->langContent[$this->lang][$lang . "_" . $nameUpper] = $view['settings']->name_list; // check if category has another name if (isset($this->catOtherName[$nameList]) && ComponentbuilderHelper::checkArray($this->catOtherName[$nameList])) { $otherViews = $this->catOtherName[$nameList]['views']; } else { $otherViews = $nameList; } if (isset($this->categoryBuilder[$nameList]) && ComponentbuilderHelper::checkArray($this->categoryBuilder[$nameList]) && !in_array($otherViews, $catArray)) { $menus .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $this->categoryBuilder[$nameList]['name'] . "'), 'index.php?option=com_categories&view=categories&extension=com_" . $codeName . "." . $otherViews . "', \$submenu === 'categories." . $otherViews . "');"; // make sure we add a category only once $catArray[] = $otherViews; } // check if the item has permissions. if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($nameSingle, $this->permissionBuilder['global'][$core['core.access']])) { $menus .= PHP_EOL . "\t\t}"; } } } if (isset($this->lastCustomSubMenu) && ComponentbuilderHelper::checkArray($this->lastCustomSubMenu)) { foreach ($this->lastCustomSubMenu as $menu) { $menus .= $menu; } unset($this->lastCustomSubMenu); } return $menus; } return false; } public function addCustomSubMenu(&$view, &$codeName, &$lang) { // see if we should have custom menus $custom = ''; if (isset($this->componentData->custom_admin_views) && ComponentbuilderHelper::checkArray($this->componentData->custom_admin_views)) { foreach ($this->componentData->custom_admin_views as $nr => $menu) { if (!isset($this->customAdminAdded[$menu['settings']->code])) { if ($custom = $this->setCustomAdminSubMenu($view, $codeName, $lang, $nr, $menu, 'customView')) { break; } } } } if (isset($this->componentData->custommenus) && ComponentbuilderHelper::checkArray($this->componentData->custommenus)) { foreach ($this->componentData->custommenus as $nr => $menu) { if ($custom2 = $this->setCustomAdminSubMenu($view, $codeName, $lang, $nr, $menu, 'customMenu')) { $custom = $custom . $custom2; break; } } } return $custom; } public function setCustomAdminSubMenu(&$view, &$codeName, &$lang, &$nr, &$menu, $type) { if ($type === 'customMenu') { $name = $menu['name']; $nameSingle = ComponentbuilderHelper::safeString($menu['name']); $nameList = ComponentbuilderHelper::safeString($menu['name']); $nameUpper = ComponentbuilderHelper::safeString($menu['name'], 'U'); } elseif ($type === 'customView') { $name = $menu['settings']->name; $nameSingle = $menu['settings']->code; $nameList = $menu['settings']->code; $nameUpper = $menu['settings']->CODE; } if (isset($menu['submenu']) && $menu['submenu'] == 1 && $view['adminview'] == $menu['before']) { // setup access defaults $tab = ""; $coreLoad = false; if (isset($this->permissionCore[$nameSingle])) { $core = $this->permissionCore[$nameSingle]; $coreLoad = true; } $custom = ''; // check if the item has permissions. if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($nameSingle, $this->permissionBuilder['global'][$core['core.access']])) { $custom .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access control (" . $core['core.access'] . " && " . $nameSingle . ".submenu)."; $custom .= PHP_EOL . "\t\tif (\$user->authorise('" . $core['core.access'] . "', 'com_" . $codeName . "') && \$user->authorise('" . $nameSingle . ".submenu', 'com_" . $codeName . "'))"; $custom .= PHP_EOL . "\t\t{"; // add tab to lines to follow $tab = "\t"; } else { $custom .= PHP_EOL . "\t\t//" . $this->setLine(__LINE__) . " Access control (" . $nameSingle . ".submenu)."; $custom .= PHP_EOL . "\t\tif (\$user->authorise('" . $nameSingle . ".submenu', 'com_" . $codeName . "'))"; $custom .= PHP_EOL . "\t\t{"; // add tab to lines to follow $tab = "\t"; } if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { $this->langContent[$this->lang][$lang . '_' . $nameUpper] = $name; // add custom menu $custom .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_" . $nameUpper . "'), '" . $menu['link'] . "', \$submenu === '" . $nameList . "');"; } else { $this->langContent[$this->lang][$lang . '_' . $nameUpper] = $name; // add custom menu $custom .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_" . $nameUpper . "'), 'index.php?option=com_" . $codeName . "&view=" . $nameList . "', \$submenu === '" . $nameList . "');"; } // check if the item has permissions. $custom .= PHP_EOL . "\t\t}"; return $custom; } elseif (isset($menu['submenu']) && $menu['submenu'] == 1 && empty($menu['before'])) { // setup access defaults $tab = ""; $nameSingle = ComponentbuilderHelper::safeString($name); $coreLoad = false; if (isset($this->permissionCore[$nameSingle])) { $core = $this->permissionCore[$nameSingle]; $coreLoad = true; } $this->lastCustomSubMenu[$nr] = ''; // check if the item has permissions. if ($coreLoad && isset($core['core.access']) && isset($this->permissionBuilder['global'][$core['core.access']]) && ComponentbuilderHelper::checkArray($this->permissionBuilder['global'][$core['core.access']]) && in_array($nameSingle, $this->permissionBuilder['global'][$core['core.access']])) { $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\tif (\$user->authorise('" . $core['core.access'] . "', 'com_" . $codeName . "') && \$user->authorise('" . $nameSingle . ".submenu', 'com_" . $codeName . "'))"; $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\t{"; // add tab to lines to follow $tab = "\t"; } else { $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\tif (\$user->authorise('" . $nameSingle . ".submenu', 'com_" . $codeName . "'))"; $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\t{"; // add tab to lines to follow $tab = "\t"; } if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { $this->langContent[$this->lang][$lang . '_' . $nameUpper] = $name; // add custom menu $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_" . $nameUpper . "'), '" . $menu['link'] . "', \$submenu === '" . $nameList . "');"; } else { $this->langContent[$this->lang][$lang . '_' . $nameUpper] = $name; // add custom menu $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\t" . $tab . "JHtmlSidebar::addEntry(JText:".":_('" . $lang . "_" . $nameUpper . "'), 'index.php?option=com_" . $codeName . "&view=" . $nameList . "', \$submenu === '" . $nameList . "');"; } // check if the item has permissions. $this->lastCustomSubMenu[$nr] .= PHP_EOL . "\t\t}"; } return false; } public function setMainMenus() { if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { $menus = ''; // main lang prefix $lang = $this->langPrefix . '_MENU'; // set the code name $codeName = ComponentbuilderHelper::safeString($this->componentData->name_code); // set main menu name to lang $this->langContent['adminsys'][$lang] = '» ' . $this->componentData->name; foreach ($this->componentData->admin_views as $view) { // set custom menu $menus .= $this->addCustomMainMenu($view, $codeName, $lang); if (isset($view['mainmenu']) && $view['mainmenu'] == 1) { $nameList = ComponentbuilderHelper::safeString($view['settings']->name_list); $nameUpper = ComponentbuilderHelper::safeString($view['settings']->name_list, 'U'); $menus .= PHP_EOL . "\t\t\t" . '' . $lang . '_' . $nameUpper . ''; $this->langContent['adminsys'][$lang . '_' . $nameUpper] = $view['settings']->name_list; } } if (isset($this->lastCustomMainMenu) && ComponentbuilderHelper::checkArray($this->lastCustomMainMenu)) { foreach ($this->lastCustomMainMenu as $menu) { $menus .= $menu; } unset($this->lastCustomMainMenu); } return $menus; } return false; } public function addCustomMainMenu(&$view, &$codeName, &$lang) { $customMenu = ''; // see if we should have custom admin views if (isset($this->componentData->custom_admin_views) && ComponentbuilderHelper::checkArray($this->componentData->custom_admin_views)) { foreach ($this->componentData->custom_admin_views as $nr => $menu) { if (!isset($this->customAdminAdded[$menu['settings']->code])) { if (isset($menu['mainmenu']) && $menu['mainmenu'] == 1 && $view['adminview'] == $menu['before']) { $this->langContent['adminsys'][$lang . '_' . $menu['settings']->CODE] = $menu['settings']->name; // add custom menu $customMenu .= PHP_EOL . "\t\t\t" . '' . $lang . '_' . $menu['settings']->CODE . ''; } elseif (isset($menu['mainmenu']) && $menu['mainmenu'] == 1 && empty($menu['before'])) { $this->langContent['adminsys'][$lang . '_' . $menu['settings']->CODE] = $menu['settings']->name; // add custom menu $this->lastCustomMainMenu[$nr] = PHP_EOL . "\t\t\t" . '' . $lang . '_' . $menu['settings']->CODE . ''; } } } } // see if we should have custom menus if (isset($this->componentData->custommenus) && ComponentbuilderHelper::checkArray($this->componentData->custommenus)) { foreach ($this->componentData->custommenus as $nr => $menu) { $nr = $nr + 100; if (isset($menu['mainmenu']) && $menu['mainmenu'] == 1 && $view['adminview'] == $menu['before']) { if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { $nameList = ComponentbuilderHelper::safeString($menu['name']); $nameUpper = ComponentbuilderHelper::safeString($menu['name'], 'U'); $this->langContent['adminsys'][$lang . '_' . $nameUpper] = $menu['name']; // sanitize url if (strpos($menu['link'], 'http') === false) { $menu['link'] = str_replace('/administrator/index.php?', '', $menu['link']); $menu['link'] = str_replace('administrator/index.php?', '', $menu['link']); // check if the index is still there if (strpos($menu['link'], 'index.php?') !== false) { $menu['link'] = str_replace('/index.php?', '', $menu['link']); $menu['link'] = str_replace('index.php?', '', $menu['link']); } } // urlencode $menu['link'] = htmlspecialchars($menu['link'], ENT_XML1, 'UTF-8'); // add custom menu $customMenu .= PHP_EOL . "\t\t\t" . '' . $lang . '_' . $nameUpper . ''; } else { $nameList = ComponentbuilderHelper::safeString($menu['name_code']); $nameUpper = ComponentbuilderHelper::safeString($menu['name_code'], 'U'); $this->langContent['adminsys'][$lang . '_' . $nameUpper] = $menu['name']; // add custom menu $customMenu .= PHP_EOL . "\t\t\t" . '' . $lang . '_' . $nameUpper . ''; } } elseif (isset($menu['mainmenu']) && $menu['mainmenu'] == 1 && empty($menu['before'])) { if (isset($menu['link']) && ComponentbuilderHelper::checkString($menu['link'])) { $nameList = ComponentbuilderHelper::safeString($menu['name']); $nameUpper = ComponentbuilderHelper::safeString($menu['name'], 'U'); $this->langContent['adminsys'][$lang . '_' . $nameUpper] = $menu['name']; // sanitize url if (strpos($menu['link'], 'http') === false) { $menu['link'] = str_replace('/administrator/index.php?', '', $menu['link']); $menu['link'] = str_replace('administrator/index.php?', '', $menu['link']); // check if the index is still there if (strpos($menu['link'], 'index.php?') !== false) { $menu['link'] = str_replace('/index.php?', '', $menu['link']); $menu['link'] = str_replace('index.php?', '', $menu['link']); } } // urlencode $menu['link'] = htmlspecialchars($menu['link'], ENT_XML1, 'UTF-8'); // add custom menu $this->lastCustomMainMenu[$nr] = PHP_EOL . "\t\t\t" . '' . $lang . '_' . $nameUpper . ''; } else { $nameList = ComponentbuilderHelper::safeString($menu['name_code']); $nameUpper = ComponentbuilderHelper::safeString($menu['name_code'], 'U'); $this->langContent['adminsys'][$lang . '_' . $nameUpper] = $menu['name']; // add custom menu $this->lastCustomMainMenu[$nr] = PHP_EOL . "\t\t\t" . '' . $lang . '_' . $nameUpper . ''; } } } } return $customMenu; } public function setConfigFieldsets($timer = 0) { // main lang prefix $lang = $this->langPrefix . '_CONFIG'; if (1 == $timer) // this is before the admin views are build { // start loading Global params $autorName = ComponentbuilderHelper::htmlEscape($this->componentData->author); $autorEmail = ComponentbuilderHelper::htmlEscape($this->componentData->email); $this->extensionsParams[] = '"autorName":"' . $autorName . '","autorEmail":"' . $autorEmail . '"'; // set the custom fields if (isset($this->componentData->config) && ComponentbuilderHelper::checkArray($this->componentData->config)) { $component = ComponentbuilderHelper::safeString($this->componentData->name_code); $viewName = 'config'; $listViewName = 'configs'; $placeholders = array( '###component###' => $component, '###view###' => $viewName, '###views###' => $listViewName); $view = ''; $viewType = 0; // set the custom table key $dbkey = 'g'; foreach ($this->componentData->config as $field) { $newxmlField = $this->setDynamicField($field, $view, $viewType, $lang, $viewName, $listViewName, $placeholders, $dbkey, false); // tmp hack untill this whole area is also done in xml (TODO) if (isset($newxmlField->fieldXML)) { $xmlField = dom_import_simplexml($newxmlField->fieldXML); $xmlField = PHP_EOL . "\t' . PHP_EOL . "\t" . $this->xmlPrettyPrint($xmlField, 'field'); } if (isset($xmlField) && ComponentbuilderHelper::checkString($xmlField)) { $this->configFieldSetsCustomField[$field['tabname']][] = $xmlField; // set global params to db on install $fieldName = ComponentbuilderHelper::safeString(ComponentbuilderHelper::getBetween($xmlField, 'name="', '"')); $fieldDefault = ComponentbuilderHelper::getBetween($xmlField, 'default="', '"'); if (isset($field['custom_value']) && ComponentbuilderHelper::checkString($field['custom_value'])) { // add array if found if ((strpos($field['custom_value'], '["') !== false) && (strpos($field['custom_value'], '"]') !== false)) { // load the Global checkin defautls $this->extensionsParams[] = '"' . $fieldName . '":' . $field['custom_value']; } else { // load the Global checkin defautls $this->extensionsParams[] = '"' . $fieldName . '":"' . $field['custom_value'] . '"'; } } elseif (ComponentbuilderHelper::checkString($fieldDefault)) { // load the Global checkin defautls $this->extensionsParams[] = '"' . $fieldName . '":"' . $fieldDefault . '"'; } } } } // first run we must set the globals $this->setGlobalConfigFieldsets($lang, $autorName, $autorEmail); $this->setSiteControlConfigFieldsets($lang); } elseif (2 == $timer) // this is after the admin views are build { // these field sets can only be added after admin view is build $this->setGroupControlConfigFieldsets($lang); // these can be added anytime really (but looks best after groups $this->setUikitConfigFieldsets($lang); $this->setGooglechartConfigFieldsets($lang); $this->setEmailHelperConfigFieldsets($lang); $this->setEncryptionConfigFieldsets($lang); // these are the coustom settings $this->setCustomControlConfigFieldsets($lang); } // we cad add more event (timers as we need) } public function setSiteControlConfigFieldsets($lang) { $front_end = array(); // do quick build of front-end views if (isset($this->componentData->site_views) && ComponentbuilderHelper::checkArray($this->componentData->site_views)) { // load the names only to link the page params foreach ($this->componentData->site_views as $siteView) { // now load the view name to the front-end array $front_end[] = $siteView['settings']->name; } } // add frontend view stuff including menus if (isset($this->configFieldSetsCustomField) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField)) { foreach ($this->configFieldSetsCustomField as $tab => &$tabFields) { $tabCode = ComponentbuilderHelper::safeString($tab) . '_custom_config'; $tabUpper = ComponentbuilderHelper::safeString($tab, 'U'); $tabLower = ComponentbuilderHelper::safeString($tab); // load the request id setters for menu views $viewRequest = 'name="' . $tabLower . '_request_id'; foreach ($tabFields as $et => $id_field) { if (strpos($id_field, $viewRequest) !== false) { $this->setRequestValues($tabLower, $id_field, $viewRequest, 'id', 'hasIdRequest'); unset($tabFields[$et]); } elseif (strpos($id_field, '_request_id') !== false) { // not loaded to a tab "view" name $_viewRequest = ComponentbuilderHelper::getBetween($id_field, 'name="', '_request_id'); $searchIdKe = 'name="' . $_viewRequest . '_request_id'; $this->setRequestValues($_viewRequest, $id_field, $searchIdKe, 'id', 'hasIdRequest'); unset($tabFields[$et]); } } // load the request catid setters for menu views $viewRequestC = 'name="' . $tabLower . '_request_catid'; foreach ($tabFields as $ci => $catid_field) { if (strpos($catid_field, $viewRequestC) !== false) { $this->setRequestValues($tabLower, $catid_field, $viewRequestC, 'catid', 'hasCatIdRequest'); unset($tabFields[$ci]); } elseif (strpos($catid_field, '_request_catid') !== false) { // not loaded to a tab "view" name $_viewRequestC = ComponentbuilderHelper::getBetween($catid_field, 'name="', '_request_catid'); $searchCatidKe = 'name="' . $_viewRequestC . '_request_catid'; $this->setRequestValues($_viewRequestC, $catid_field, $searchCatidKe, 'catid', 'hasCatIdRequest'); unset($tabFields[$ci]); } } // load the global menu setters for single fields $menuSetter = $tabLower . '_menu'; $pageSettings = array(); foreach ($tabFields as $ct => $field) { if (strpos($field, $menuSetter) !== false) { // set the values needed to insure route is done correclty $this->hasMenuGlobal[$tabLower] = $menuSetter; } elseif (strpos($field, '_menu"') !== false) { // not loaded to a tab "view" name $_tabLower = ComponentbuilderHelper::getBetween($field, 'name="', '_menu"'); // set the values needed to insure route is done correclty $this->hasMenuGlobal[$_tabLower] = $_tabLower . '_menu'; } else { $pageSettings[$ct] = $field; } } // insure we load the needed params if (in_array($tab, $front_end)) { $this->frontEndParams[$tab] = $pageSettings; } } } } protected function setRequestValues($view, $field, $search, $target, $store) { $key = ComponentbuilderHelper::getBetween($field, $search, '"'); if (!ComponentbuilderHelper::checkString($key)) { // is not having special var $key = $target; // update field $field = str_replace($search . '"', 'name="' . $key . '"', $field); } else { // update field $field = str_replace($search . $key . '"', 'name="' . $key . '"', $field); } if (!isset($this->{$store}[$view])) { $this->{$store}[$view] = array(); } // set the values needed for view requests to be made $this->{$store}[$view][$key] = $field; } public function setCustomControlConfigFieldsets($lang) { // add custom new global fields set if (isset($this->configFieldSetsCustomField) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField)) { foreach ($this->configFieldSetsCustomField as $tab => $tabFields) { $tabCode = ComponentbuilderHelper::safeString($tab) . '_custom_config'; $tabUpper = ComponentbuilderHelper::safeString($tab, 'U'); $tabLower = ComponentbuilderHelper::safeString($tab); // setup lang $this->langContent[$this->lang][$lang . '_' . $tabUpper] = $tab; // start field set $this->configFieldSets[] = "\tconfigFieldSets[] = "\t\t" . 'name="' . $tabCode . '"'; $this->configFieldSets[] = "\t\t" . 'label="' . $lang . '_' . $tabUpper . '">'; // remove display targeted fields $bucket = array(); foreach ($tabFields as $tabField) { $display = ComponentbuilderHelper::getBetween($tabField, 'display="', '"'); if (!ComponentbuilderHelper::checkString($display) || $display === 'config') { // remove this display since it is not used in Joomla $bucket[] = str_replace('display="config"', '', $tabField); } } // set the fields $this->configFieldSets[] = implode("\t\t", $bucket); // close field set $this->configFieldSets[] = "\t"; // remove after loading unset($this->configFieldSetsCustomField[$tab]); } } } public function setGroupControlConfigFieldsets($lang) { // start loading Group control params if needed if (isset($this->setGroupControl) && ComponentbuilderHelper::checkArray($this->setGroupControl)) { // start building field set for config $this->configFieldSets[] = "\tconfigFieldSets[] = "\t\t" . 'name="group_config"'; $this->configFieldSets[] = "\t\t" . 'label="' . $lang . '_GROUPS_LABEL"'; $this->configFieldSets[] = "\t\t" . 'description="' . $lang . '_GROUPS_DESC">'; // setup lang $this->langContent[$this->lang][$lang . '_GROUPS_LABEL'] = "Target Groups"; $this->langContent[$this->lang][$lang . '_GROUPS_DESC'] = "The Parameters for the targeted groups are set here."; $this->langContent[$this->lang][$lang . '_TARGET_GROUP_DESC'] = "Set the group/s being targeted by this user type."; foreach ($this->setGroupControl as $selector => $label) { $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="usergroup"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $label . '"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_TARGET_GROUP_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'multiple="true"'; $this->configFieldSets[] = "\t\t/>"; // set params defaults $this->extensionsParams[] = '"' . $selector . '":["2"]'; } // add custom Target Groups fields if (isset($this->configFieldSetsCustomField['Target Groups']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Target Groups'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['Target Groups']); unset($this->configFieldSetsCustomField['Target Groups']); } // close that fieldse $this->configFieldSets[] = "\t"; } } /** * @param $lang * @param $autorName * @param $autorEmail */ public function setGlobalConfigFieldsets($lang, $autorName, $autorEmail) { // set component name $component = ComponentbuilderHelper::safeString($this->componentData->name_code); // start building field set for config $this->configFieldSets[] = 'configFieldSets[] = "\t\t" . 'addrulepath="/administrator/components/com_' . $component . '/models/rules"'; $this->configFieldSets[] = "\t\t" . 'addfieldpath="/administrator/components/com_' . $component . '/models/fields"'; $this->configFieldSets[] = "\t\t" . 'name="global_config"'; $this->configFieldSets[] = "\t\t" . 'label="' . $lang . '_GLOBAL_LABEL"'; $this->configFieldSets[] = "\t\t" . 'description="' . $lang . '_GLOBAL_DESC">'; // set application update License Key if ($this->componentData->add_license && 1 != $this->componentData->license_type) { // set licence type switch switch ($this->componentData->license_type) { case 2: // for updates $this->langContent[$this->lang][$lang . '_LICENSE_KEY_NOTE_LABEL'] = "Your License Key"; $this->langContent[$this->lang][$lang . '_LICENSE_KEY_NOTE_DESC'] = "To get updates you must add the license key here that you recieved from " . $this->componentData->companyname; // set the field $this->configFieldSets[] = "\t\t" . ''; break; case 3: // with vdm to lock down ownership $this->langContent[$this->lang][$lang . '_LICENSE_KEY_NOTE_LABEL'] = "Your License Key"; $this->langContent[$this->lang][$lang . '_LICENSE_KEY_NOTE_DESC'] = "To use this component you must add the license key here that you recieved from " . $this->componentData->companyname; // set the field $this->configFieldSets[] = "\t\t" . ''; break; } // setup lang $this->langContent[$this->lang][$lang . '_LICENSE_KEY_LABEL'] = "License Key"; $this->langContent[$this->lang][$lang . '_LICENSE_KEY_DESC'] = "Add your license key here."; // add the field $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_LICENSE_KEY_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_LICENSE_KEY_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . ''; } // setup lang $this->langContent[$this->lang][$lang . '_GLOBAL_LABEL'] = "Global"; $this->langContent[$this->lang][$lang . '_GLOBAL_DESC'] = "The Global Parameters"; // add auto checin if required if ($this->addCheckin) { $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\t" . 'name="check_in"'; $this->configFieldSets[] = "\t\t\t" . 'type="list"'; $this->configFieldSets[] = "\t\t\t" . 'default="0"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_CHECK_TIMER_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_CHECK_TIMER_DESC">'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="-5 hours">' . $lang . '_CHECK_TIMER_OPTION_ONE'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="-12 hours">' . $lang . '_CHECK_TIMER_OPTION_TWO'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="-1 day">' . $lang . '_CHECK_TIMER_OPTION_THREE'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="-2 day">' . $lang . '_CHECK_TIMER_OPTION_FOUR'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="-1 week">' . $lang . '_CHECK_TIMER_OPTION_FIVE'; $this->configFieldSets[] = "\t\t\t" . 'configFieldSets[] = "\t\t\t\t" . 'value="0">' . $lang . '_CHECK_TIMER_OPTION_SIX'; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t" . ''; // setup lang $this->langContent[$this->lang][$lang . '_CHECK_TIMER_LABEL'] = "Check in timer"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_DESC'] = "Set the intervals for the auto checkin fuction of tables that checks out the items to an user."; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_ONE'] = "Every five hours"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_TWO'] = "Every twelve hours"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_THREE'] = "Once a day"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_FOUR'] = "Every second day"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_FIVE'] = "Once a week"; $this->langContent[$this->lang][$lang . '_CHECK_TIMER_OPTION_SIX'] = "Never"; // load the Global checkin defautls $this->extensionsParams[] = '"check_in":"-1 day"'; } // set history control if ($this->setTagHistory) { $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\t" . 'name="save_history"'; $this->configFieldSets[] = "\t\t\t" . 'type="radio"'; $this->configFieldSets[] = "\t\t\t" . 'class="btn-group btn-group-yesno"'; $this->configFieldSets[] = "\t\t\t" . 'default="1"'; $this->configFieldSets[] = "\t\t\t" . 'label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC"'; $this->configFieldSets[] = "\t\t\t>"; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\t" . 'name="history_limit"'; $this->configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'filter="integer"'; $this->configFieldSets[] = "\t\t\t" . 'label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'default="10"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . ''; // load the Global checkin defautls $this->extensionsParams[] = '"save_history":"1","history_limit":"10"'; } // add custom global fields if (isset($this->configFieldSetsCustomField['Global']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Global'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['Global']); unset($this->configFieldSetsCustomField['Global']); } // set the author details $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="spacer"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_AUTHOR"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_AUTHOR_NAME_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_AUTHOR_NAME_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $autorName . '"'; $this->configFieldSets[] = "\t\t\t" . 'readonly="true"'; $this->configFieldSets[] = "\t\t\t" . 'class="readonly"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="email"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_AUTHOR_EMAIL_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_AUTHOR_EMAIL_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $autorEmail . '"'; $this->configFieldSets[] = "\t\t\t" . 'readonly="true"'; $this->configFieldSets[] = "\t\t\t" . 'class="readonly"'; $this->configFieldSets[] = "\t\t/>"; // setup lang $this->langContent[$this->lang][$lang . '_AUTHOR'] = "Author Info"; $this->langContent[$this->lang][$lang . '_AUTHOR_NAME_LABEL'] = "Author Name"; $this->langContent[$this->lang][$lang . '_AUTHOR_NAME_DESC'] = "The name of the author of this component."; $this->langContent[$this->lang][$lang . '_AUTHOR_EMAIL_LABEL'] = "Author Email"; $this->langContent[$this->lang][$lang . '_AUTHOR_EMAIL_DESC'] = "The email address of the author of this component."; // set if contributors were added $langCont = $lang . '_CONTRIBUTOR'; if (isset($this->addContributors) && $this->addContributors && isset($this->componentData->contributors) && ComponentbuilderHelper::checkArray($this->componentData->contributors)) { foreach ($this->componentData->contributors as $counter => $contributor) { // make sure we dont use 0 $counter++; // get the word for this number $COUNTER = ComponentbuilderHelper::safeString($counter, 'U'); // set the dynamic values $cbTitle = htmlspecialchars($contributor['title'], ENT_XML1, 'UTF-8'); $cbName = htmlspecialchars($contributor['name'], ENT_XML1, 'UTF-8'); $cbEmail = htmlspecialchars($contributor['email'], ENT_XML1, 'UTF-8'); $cbWebsite = htmlspecialchars($contributor['website'], ENT_XML1, 'UTF-8'); // ComponentbuilderHelper::htmlEscape($contributor['website']); // load to the $fieldsets $this->configFieldSets[] = "\t\t" . ''; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="spacer"'; $this->configFieldSets[] = "\t\t\t" . 'class="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_' . $COUNTER . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_TITLE_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_TITLE_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $cbTitle . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_NAME_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_NAME_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $cbName . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="email"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_EMAIL_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_EMAIL_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $cbEmail . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="url"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_LINK_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_LINK_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . $cbWebsite . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="list"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . (int) $contributor['use'] . '"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_USE_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_USE_DESC">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="list"'; $this->configFieldSets[] = "\t\t\t" . 'default="' . (int) $contributor['show'] . '"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_SHOW_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_SHOW_DESC">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t"; // add the contributor $this->theContributors .= PHP_EOL . "\t@" . strtolower($contributor['title']) . "\t\t" . $contributor['name'] . ' <' . $contributor['website'] . '>'; // setup lang $Counter = ComponentbuilderHelper::safeString($counter, 'Ww'); $this->langContent[$this->lang][$langCont . '_' . $COUNTER] = "Contributor " . $Counter; // load the Global checkin defautls $this->extensionsParams[] = '"titleContributor' . $counter . '":"' . $cbTitle . '"'; $this->extensionsParams[] = '"nameContributor' . $counter . '":"' . $cbName . '"'; $this->extensionsParams[] = '"emailContributor' . $counter . '":"' . $cbEmail . '"'; $this->extensionsParams[] = '"linkContributor' . $counter . '":"' . $cbWebsite . '"'; $this->extensionsParams[] = '"useContributor' . $counter . '":"' . (int) $contributor['use'] . '"'; $this->extensionsParams[] = '"showContributor' . $counter . '":"' . (int) $contributor['show'] . '"'; } } // add more contributors if required if (1 == $this->componentData->emptycontributors) { if (isset($counter)) { $min = $counter + 1; unset($counter); } else { $min = 1; } $max = $min + $this->componentData->number - 1; $moreContributerFields = range($min, $max, 1); foreach ($moreContributerFields as $counter) { $COUNTER = ComponentbuilderHelper::safeString($counter, 'U'); $this->configFieldSets[] = "\t\t" . ''; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="spacer"'; $this->configFieldSets[] = "\t\t\t" . 'class="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_' . $COUNTER . '"'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_TITLE_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_TITLE_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_NAME_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_NAME_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="email"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_EMAIL_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_EMAIL_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="url"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_LINK_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_LINK_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="list"'; $this->configFieldSets[] = "\t\t\t" . 'default="0"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_USE_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_USE_DESC">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="list"'; $this->configFieldSets[] = "\t\t\t" . 'default="0"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $langCont . '_SHOW_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $langCont . '_SHOW_DESC">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t"; // setup lang $Counter = ComponentbuilderHelper::safeString($counter, 'Ww'); $this->langContent[$this->lang][$langCont . '_' . $COUNTER] = "Contributor " . $Counter; } } if ($this->addContributors || $this->componentData->emptycontributors == 1) { // setup lang $this->langContent[$this->lang][$langCont . '_TITLE_LABEL'] = "Contributor Job Title"; $this->langContent[$this->lang][$langCont . '_TITLE_DESC'] = "The job title that best describes the contributor's relationship to this component."; $this->langContent[$this->lang][$langCont . '_NAME_LABEL'] = "Contributor Name"; $this->langContent[$this->lang][$langCont . '_NAME_DESC'] = "The name of this contributor."; $this->langContent[$this->lang][$langCont . '_EMAIL_LABEL'] = "Contributor Email"; $this->langContent[$this->lang][$langCont . '_EMAIL_DESC'] = "The email of this contributor."; $this->langContent[$this->lang][$langCont . '_LINK_LABEL'] = "Contributor Website"; $this->langContent[$this->lang][$langCont . '_LINK_DESC'] = "The link to this contributor's website."; $this->langContent[$this->lang][$langCont . '_USE_LABEL'] = "Use"; $this->langContent[$this->lang][$langCont . '_USE_DESC'] = "How should we link to this contributor."; $this->langContent[$this->lang][$langCont . '_USE_NONE'] = "None"; $this->langContent[$this->lang][$langCont . '_USE_EMAIL'] = "Email"; $this->langContent[$this->lang][$langCont . '_USE_WWW'] = "Website"; $this->langContent[$this->lang][$langCont . '_SHOW_LABEL'] = "Show"; $this->langContent[$this->lang][$langCont . '_SHOW_DESC'] = "Select where you want this contributor's details to show in the component."; $this->langContent[$this->lang][$langCont . '_SHOW_NONE'] = "Hide"; $this->langContent[$this->lang][$langCont . '_SHOW_BACK'] = "Back-end"; $this->langContent[$this->lang][$langCont . '_SHOW_FRONT'] = "Front-end"; $this->langContent[$this->lang][$langCont . '_SHOW_ALL'] = "Both Front & Back-end"; } // close that fieldset $this->configFieldSets[] = "\t"; } public function setUikitConfigFieldsets($lang) { if ($this->uikit > 0) { // main lang prefix $lang = $lang . ''; // start building field set for uikit functions $this->configFieldSets[] = "\tconfigFieldSets[] = "\t\t" . 'name="uikit_config"'; $this->configFieldSets[] = "\t\t" . 'label="' . $lang . '_UIKIT_LABEL"'; $this->configFieldSets[] = "\t\t" . 'description="' . $lang . '_UIKIT_DESC">'; // set tab lang if (1 == $this->uikit) { $this->langContent[$this->lang][$lang . '_UIKIT_LABEL'] = "Uikit2 Settings"; $this->langContent[$this->lang][$lang . '_UIKIT_DESC'] = "The Parameters for the uikit are set here.
    Uikit is a lightweight and modular front-end framework for developing fast and powerful web interfaces. For more info visit https://getuikit.com/v2/"; } elseif (2 == $this->uikit) { $this->langContent[$this->lang][$lang . '_UIKIT_LABEL'] = "Uikit2 and Uikit3 Settings"; $this->langContent[$this->lang][$lang . '_UIKIT_DESC'] = "The Parameters for the uikit are set here.
    Uikit is a lightweight and modular front-end framework for developing fast and powerful web interfaces. For more info visit version 2 or version 3"; } elseif (3 == $this->uikit) { $this->langContent[$this->lang][$lang . '_UIKIT_LABEL'] = "Uikit3 Settings"; $this->langContent[$this->lang][$lang . '_UIKIT_DESC'] = "The Parameters for the uikit are set here.
    Uikit is a lightweight and modular front-end framework for developing fast and powerful web interfaces. For more info visit https://getuikit.com/"; } // add version selection if (2 == $this->uikit) { // set field lang $this->langContent[$this->lang][$lang . '_UIKIT_VERSION_LABEL'] = "Uikit Versions"; $this->langContent[$this->lang][$lang . '_UIKIT_VERSION_DESC'] = "Select what version you would like to use"; $this->langContent[$this->lang][$lang . '_UIKIT_V2'] = "Version 2"; $this->langContent[$this->lang][$lang . '_UIKIT_V3'] = "Version 3"; // set the field $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="radio"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_UIKIT_VERSION_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_UIKIT_VERSION_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'class="btn-group btn-group-yesno"'; $this->configFieldSets[] = "\t\t\t" . 'default="2">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t"; // set params defaults $this->extensionsParams[] = '"uikit_version":"2"'; } // set field lang $this->langContent[$this->lang][$lang . '_UIKIT_LOAD_LABEL'] = "Loading Options"; $this->langContent[$this->lang][$lang . '_UIKIT_LOAD_DESC'] = "Set the uikit loading option."; $this->langContent[$this->lang][$lang . '_AUTO_LOAD'] = "Auto"; $this->langContent[$this->lang][$lang . '_FORCE_LOAD'] = "Force"; $this->langContent[$this->lang][$lang . '_DONT_LOAD'] = "Not"; $this->langContent[$this->lang][$lang . '_ONLY_EXTRA'] = "Only Extra"; // set the field $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="radio"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_UIKIT_LOAD_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_UIKIT_LOAD_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'class="btn-group btn-group-yesno"'; $this->configFieldSets[] = "\t\t\t" . 'default="">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t\t" . '"'; if (2 == $this->uikit || 1 == $this->uikit) { $this->configFieldSets[] = "\t\t\t" . '"'; } $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t"; // set params defaults $this->extensionsParams[] = '"uikit_load":"1"'; // set field lang $this->langContent[$this->lang][$lang . '_UIKIT_MIN_LABEL'] = "Load Minified"; $this->langContent[$this->lang][$lang . '_UIKIT_MIN_DESC'] = "Should the minified version of uikit files be loaded?"; $this->langContent[$this->lang][$lang . '_YES'] = "Yes"; $this->langContent[$this->lang][$lang . '_NO'] = "No"; // set the field $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="radio"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_UIKIT_MIN_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_UIKIT_MIN_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'class="btn-group btn-group-yesno"'; $this->configFieldSets[] = "\t\t\t" . 'default="">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t"; // set params defaults $this->extensionsParams[] = '"uikit_min":""'; if (2 == $this->uikit || 1 == $this->uikit) { // set field lang $this->langContent[$this->lang][$lang . '_UIKIT_STYLE_LABEL'] = "css Style"; $this->langContent[$this->lang][$lang . '_UIKIT_STYLE_DESC'] = "Set the css style that should be used."; $this->langContent[$this->lang][$lang . '_FLAT_LOAD'] = "Flat"; $this->langContent[$this->lang][$lang . '_ALMOST_FLAT_LOAD'] = "Almost Flat"; $this->langContent[$this->lang][$lang . '_GRADIANT_LOAD'] = "Gradient"; // set the field $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="radio"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_UIKIT_STYLE_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_UIKIT_STYLE_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'class="btn-group btn-group-yesno"'; if (2 == $this->uikit) { $this->configFieldSets[] = "\t\t\t" . 'showon="uikit_version:2"'; } $this->configFieldSets[] = "\t\t\t" . 'default="">'; $this->configFieldSets[] = "\t\t\t" . ''; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t\t" . '"'; $this->configFieldSets[] = "\t\t"; // set params defaults $this->extensionsParams[] = '"uikit_style":""'; } // add custom Uikit Settings fields if (isset($this->configFieldSetsCustomField['Uikit Settings']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Uikit Settings'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['Uikit Settings']); unset($this->configFieldSetsCustomField['Uikit Settings']); } // close that fieldset $this->configFieldSets[] = "\t"; } } public function setEmailHelperConfigFieldsets($lang) { if (isset($this->componentData->add_email_helper) && $this->componentData->add_email_helper) { // main lang prefix $lang = $lang . ''; // set main lang string $this->langContent[$this->lang][$lang . '_MAIL_CONFIGURATION'] = "Mail Configuration"; $this->langContent[$this->lang][$lang . '_DKIM'] = "DKIM"; // start building field set for email helper functions $this->configFieldSets[] = PHP_EOL . "\tconfigFieldSets[] = "\t\tname=\"mail_configuration_custom_config\""; $this->configFieldSets[] = "\t\tlabel=\"" . $lang . "_MAIL_CONFIGURATION\">"; // add custom Mail Configurations if (isset($this->configFieldSetsCustomField['Mail Configuration']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Mail Configuration'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['Mail Configuration']); unset($this->configFieldSetsCustomField['Mail Configuration']); } else { // set all the laguage strings $this->langContent[$this->lang][$lang . '_MAILONLINE_LABEL'] = "Mailer Status"; $this->langContent[$this->lang][$lang . '_MAILONLINE_DESCRIPTION'] = "Warning this will stop all emails from going out."; $this->langContent[$this->lang][$lang . '_ON'] = "On"; $this->langContent[$this->lang][$lang . '_OFF'] = "Off"; $this->langContent[$this->lang][$lang . '_MAILER_LABEL'] = "Mailer"; $this->langContent[$this->lang][$lang . '_MAILER_DESCRIPTION'] = "Select what mailer you would like to use to send emails."; $this->langContent[$this->lang][$lang . '_GLOBAL'] = "Global"; $this->langContent[$this->lang][$lang . '_PHP_MAIL'] = "PHP Mail"; $this->langContent[$this->lang][$lang . '_SENDMAIL'] = "Sendmail"; $this->langContent[$this->lang][$lang . '_SMTP'] = "SMTP"; $this->langContent[$this->lang][$lang . '_EMAILFROM_LABEL'] = " From Email"; $this->langContent[$this->lang][$lang . '_EMAILFROM_DESCRIPTION'] = "The global email address that will be used to send system email."; $this->langContent[$this->lang][$lang . '_EMAILFROM_HINT'] = "Email Address Here"; $this->langContent[$this->lang][$lang . '_FROMNAME_LABEL'] = "From Name"; $this->langContent[$this->lang][$lang . '_FROMNAME_DESCRIPTION'] = "Text displayed in the header "From:" field when sending a site email. Usually the site name."; $this->langContent[$this->lang][$lang . '_FROMNAME_HINT'] = "From Name Here"; $this->langContent[$this->lang][$lang . '_EMAILREPLY_LABEL'] = " Reply to Email"; $this->langContent[$this->lang][$lang . '_EMAILREPLY_DESCRIPTION'] = "The global email address that will be used to set as the reply email. (leave blank for none)"; $this->langContent[$this->lang][$lang . '_EMAILREPLY_HINT'] = "Email Address Here"; $this->langContent[$this->lang][$lang . '_REPLYNAME_LABEL'] = "Reply to Name"; $this->langContent[$this->lang][$lang . '_REPLYNAME_DESCRIPTION'] = "Text displayed in the header "Reply To:" field when replying to the site email. Usually the the person that receives the response. (leave blank for none)"; $this->langContent[$this->lang][$lang . '_REPLYNAME_HINT'] = "Reply Name Here"; $this->langContent[$this->lang][$lang . '_SENDMAIL_LABEL'] = "Sendmail Path"; $this->langContent[$this->lang][$lang . '_SENDMAIL_DESCRIPTION'] = "Enter the path to the sendmail program directory on your host server."; $this->langContent[$this->lang][$lang . '_SENDMAIL_HINT'] = "/usr/sbin/sendmail"; $this->langContent[$this->lang][$lang . '_SMTPAUTH_LABEL'] = "SMTP Authentication"; $this->langContent[$this->lang][$lang . '_SMTPAUTH_DESCRIPTION'] = "Select yes if your SMTP host requires SMTP Authentication."; $this->langContent[$this->lang][$lang . '_YES'] = "Yes"; $this->langContent[$this->lang][$lang . '_NO'] = "No"; $this->langContent[$this->lang][$lang . '_SMTPSECURE_LABEL'] = "SMTP Security"; $this->langContent[$this->lang][$lang . '_SMTPSECURE_DESCRIPTION'] = "Select the security model that your SMTP server uses."; $this->langContent[$this->lang][$lang . '_NONE'] = "None"; $this->langContent[$this->lang][$lang . '_SSL'] = "SSL"; $this->langContent[$this->lang][$lang . '_TLS'] = "TLS"; $this->langContent[$this->lang][$lang . '_SMTPPORT_LABEL'] = "SMTP Port"; $this->langContent[$this->lang][$lang . '_SMTPPORT_DESCRIPTION'] = "Enter the port number of your SMTP server. Use 25 for most unsecured servers and 465 for most secure servers."; $this->langContent[$this->lang][$lang . '_SMTPPORT_HINT'] = "25"; $this->langContent[$this->lang][$lang . '_SMTPUSER_LABEL'] = "SMTP Username"; $this->langContent[$this->lang][$lang . '_SMTPUSER_DESCRIPTION'] = "Enter the username for access to the SMTP host."; $this->langContent[$this->lang][$lang . '_SMTPUSER_HINT'] = "email@demo.com"; $this->langContent[$this->lang][$lang . '_SMTPPASS_LABEL'] = "SMTP Password"; $this->langContent[$this->lang][$lang . '_SMTPPASS_DESCRIPTION'] = "Enter the password for access to the SMTP host."; $this->langContent[$this->lang][$lang . '_SMTPHOST_LABEL'] = "SMTP Host"; $this->langContent[$this->lang][$lang . '_SMTPHOST_DESCRIPTION'] = "Enter the name of the SMTP host."; $this->langContent[$this->lang][$lang . '_SMTPHOST_HINT'] = "localhost"; // set the mailer fields $this->configFieldSets[] = PHP_EOL . "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"radio\""; $this->configFieldSets[] = "\t\t\tname=\"mailonline\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_MAILONLINE_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_MAILONLINE_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"btn-group btn-group-yesno\""; $this->configFieldSets[] = "\t\t\tdefault=\"1\">"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t
    \t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"list\""; $this->configFieldSets[] = "\t\t\tname=\"mailer\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_MAILER_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_MAILER_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"list_class\""; $this->configFieldSets[] = "\t\t\tmultiple=\"false\""; $this->configFieldSets[] = "\t\t\tfilter=\"WORD\""; $this->configFieldSets[] = "\t\t\trequired=\"true\""; $this->configFieldSets[] = "\t\t\tdefault=\"global\">"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t
    \t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"emailfrom\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_EMAILFROM_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_EMAILFROM_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tvalidate=\"email\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add email address here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_EMAILFROM_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp,sendmail,default\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"fromname\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_FROMNAME_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_FROMNAME_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add some name here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_FROMNAME_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp,sendmail,default\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"replyto\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_EMAILREPLY_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_EMAILREPLY_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tvalidate=\"email\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add email address here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_EMAILREPLY_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp,sendmail,default\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"replytoname\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_REPLYNAME_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_REPLYNAME_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add some name here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_REPLYNAME_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp,sendmail,default\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"sendmail\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SENDMAIL_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SENDMAIL_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\trequired=\"false\""; $this->configFieldSets[] = "\t\t\tfilter=\"PATH\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add path to you local sendmail here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_SENDMAIL_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:sendmail\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"radio\""; $this->configFieldSets[] = "\t\t\tname=\"smtpauth\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPAUTH_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPAUTH_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"btn-group btn-group-yesno\""; $this->configFieldSets[] = "\t\t\tdefault=\"0\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\">"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t
    \t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"list\""; $this->configFieldSets[] = "\t\t\tname=\"smtpsecure\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPSECURE_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPSECURE_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"list_class\""; $this->configFieldSets[] = "\t\t\tmultiple=\"false\""; $this->configFieldSets[] = "\t\t\tfilter=\"WORD\""; $this->configFieldSets[] = "\t\t\tdefault=\"none\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\">"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t
    \t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"smtpport\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPPORT_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdefault=\"25\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPPORT_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add the port number of your SMTP server here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_SMTPPORT_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"smtpuser\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPUSER_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPUSER_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add the username for SMTP server here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_SMTPUSER_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"password\""; $this->configFieldSets[] = "\t\t\tname=\"smtppass\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPPASS_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPPASS_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"raw\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add the password for SMTP server here.\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"smtphost\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_SMTPHOST_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdefault=\"localhost\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_SMTPHOST_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add the name of the SMTP host here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_SMTPHOST_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"mailer:smtp\""; $this->configFieldSets[] = "\t\t/>"; } // close that fieldset $this->configFieldSets[] = "\t"; // start dkim field set $this->configFieldSets[] = "\tconfigFieldSets[] = "\t\tname=\"dkim_custom_config\""; $this->configFieldSets[] = "\t\tlabel=\"" . $lang . "_DKIM\">"; // add custom DKIM fields if (isset($this->configFieldSetsCustomField['DKIM']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['DKIM'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['DKIM']); unset($this->configFieldSetsCustomField['DKIM']); } else { $this->langContent[$this->lang][$lang . '_DKIM_LABEL'] = "Enable DKIM"; $this->langContent[$this->lang][$lang . '_DKIM_DESCRIPTION'] = "Set this option to Yes if you want to sign your emails using DKIM."; $this->langContent[$this->lang][$lang . '_YES'] = "Yes"; $this->langContent[$this->lang][$lang . '_NO'] = "No"; $this->langContent[$this->lang][$lang . '_DKIM_DOMAIN_LABEL'] = "Domain"; $this->langContent[$this->lang][$lang . '_DKIM_DOMAIN_DESCRIPTION'] = "Set the domain. Eg. domain.com"; $this->langContent[$this->lang][$lang . '_DKIM_DOMAIN_HINT'] = "domain.com"; $this->langContent[$this->lang][$lang . '_DKIM_SELECTOR_LABEL'] = "Selector"; $this->langContent[$this->lang][$lang . '_DKIM_SELECTOR_DESCRIPTION'] = "Set your DKIM/DNS selector."; $this->langContent[$this->lang][$lang . '_DKIM_SELECTOR_HINT'] = "vdm"; $this->langContent[$this->lang][$lang . '_DKIM_PASSPHRASE_LABEL'] = "Passphrase"; $this->langContent[$this->lang][$lang . '_DKIM_PASSPHRASE_DESCRIPTION'] = "Enter your passphrase here."; $this->langContent[$this->lang][$lang . '_DKIM_IDENTITY_LABEL'] = "Identity"; $this->langContent[$this->lang][$lang . '_DKIM_IDENTITY_DESCRIPTION'] = "Set DKIM identity. This can be in the format of an email address 'you@yourdomain.com' typically used as the source of the email."; $this->langContent[$this->lang][$lang . '_DKIM_IDENTITY_HINT'] = "you@yourdomain.com"; $this->langContent[$this->lang][$lang . '_DKIM_PRIVATE_KEY_LABEL'] = "Private key"; $this->langContent[$this->lang][$lang . '_DKIM_PRIVATE_KEY_DESCRIPTION'] = "set private key"; $this->langContent[$this->lang][$lang . '_DKIM_PUBLIC_KEY_LABEL'] = "Public key"; $this->langContent[$this->lang][$lang . '_DKIM_PUBLIC_KEY_DESCRIPTION'] = "set public key"; $this->langContent[$this->lang][$lang . '_NOTE_DKIM_USE_LABEL'] = "Server Configuration"; $this->langContent[$this->lang][$lang . '_NOTE_DKIM_USE_DESCRIPTION'] = "

    Using the below details, you need to configure your DNS by adding a TXT record on your domain:

    "; $this->langContent[$this->lang][$lang . '_DKIM_KEY_LABEL'] = "Key"; $this->langContent[$this->lang][$lang . '_DKIM_KEY_DESCRIPTION'] = "This is the KEY to use in the DNS record."; $this->langContent[$this->lang][$lang . '_DKIM_KEY_HINT'] = "vdm._domainkey"; $this->langContent[$this->lang][$lang . '_DKIM_VALUE_LABEL'] = "Value"; $this->langContent[$this->lang][$lang . '_DKIM_VALUE_DESCRIPTION'] = "This is the TXT value to use in the DNS. Replace the PUBLICKEY with your public key."; $this->langContent[$this->lang][$lang . '_DKIM_VALUE_HINT'] = "v=DKIM1;k=rsa;g=*;s=email;h=sha1;t=s;p=PUBLICKEY"; $this->configFieldSets[] = PHP_EOL . "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"radio\""; $this->configFieldSets[] = "\t\t\tname=\"dkim\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"btn-group btn-group-yesno\""; $this->configFieldSets[] = "\t\t\tdefault=\"0\""; $this->configFieldSets[] = "\t\t\trequired=\"true\">"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t\t"; $this->configFieldSets[] = "\t\t
    \t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_domain\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_DOMAIN_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_DOMAIN_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add DKIM Domain here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_DKIM_DOMAIN_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t\tonchange=\"vdm_dkim();\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_selector\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_SELECTOR_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdefault=\"vdm\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_SELECTOR_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add DKIM/DNS selector here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_DKIM_SELECTOR_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t\tonchange=\"vdm_dkim();\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"password\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_passphrase\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_PASSPHRASE_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_PASSPHRASE_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"raw\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add passphrase here.\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_identity\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_IDENTITY_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"60\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_IDENTITY_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"raw\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add DKIM Identity here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_DKIM_IDENTITY_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"textarea\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_private_key\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_PRIVATE_KEY_LABEL\""; $this->configFieldSets[] = "\t\t\trows=\"15\""; $this->configFieldSets[] = "\t\t\tcols=\"5\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_PRIVATE_KEY_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"input-xxlarge span12\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"textarea\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_public_key\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_PUBLIC_KEY_LABEL\""; $this->configFieldSets[] = "\t\t\trows=\"5\""; $this->configFieldSets[] = "\t\t\tcols=\"5\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_PUBLIC_KEY_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"input-xxlarge span12\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t\tonchange=\"vdm_dkim();\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_key\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_KEY_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"40\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"150\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_KEY_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add KEY here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_DKIM_KEY_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"dkim_value\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_DKIM_VALUE_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"80\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"350\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_DKIM_VALUE_DESCRIPTION\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"STRING\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add TXT record here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_DKIM_VALUE_HINT\""; $this->configFieldSets[] = "\t\t\tshowon=\"dkim:1\""; $this->configFieldSets[] = "\t\t/>"; } // close that fieldset $this->configFieldSets[] = "\t"; } } public function setGooglechartConfigFieldsets($lang) { if ($this->googlechart) { $this->configFieldSets[] = PHP_EOL . "\tconfigFieldSets[] = "\t\tname=\"googlechart_config\""; $this->configFieldSets[] = "\t\tlabel=\"" . $lang . "_CHART_SETTINGS_LABEL\""; $this->configFieldSets[] = "\t\tdescription=\"" . $lang . "_CHART_SETTINGS_DESC\">"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"admin_chartbackground\""; $this->configFieldSets[] = "\t\t\tdefault=\"#F7F7FA\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTBACKGROUND_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTBACKGROUND_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"admin_mainwidth\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_MAINWIDTH_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_MAINWIDTH_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add area width here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_MAINWIDTH_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"admin_chartareatop\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREATOP_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREATOP_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add top spacing here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREATOP_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"admin_chartarealeft\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREALEFT_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREALEFT_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add left spacing here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREALEFT_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"admin_chartareawidth\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREAWIDTH_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREAWIDTH_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add chart width here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREAWIDTH_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"admin_legendtextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_LEGENDTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_LEGENDTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"admin_legendtextstylefontsize\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add size of the legend here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"admin_vaxistextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_VAXISTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_VAXISTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"admin_haxistextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_HAXISTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_HAXISTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"admin_haxistitletextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_HAXISTITLETEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_HAXISTITLETEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"site_chartbackground\""; $this->configFieldSets[] = "\t\t\tdefault=\"#F7F7FA\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTBACKGROUND_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTBACKGROUND_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"site_mainwidth\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_MAINWIDTH_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_MAINWIDTH_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add area width here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_MAINWIDTH_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"site_chartareatop\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREATOP_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREATOP_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add top spacing here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREATOP_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"site_chartarealeft\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREALEFT_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREALEFT_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add left spacing here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREALEFT_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"site_chartareawidth\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_CHARTAREAWIDTH_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_CHARTAREAWIDTH_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add chart width here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_CHARTAREAWIDTH_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"site_legendtextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_LEGENDTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_LEGENDTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"text\""; $this->configFieldSets[] = "\t\t\tname=\"site_legendtextstylefontsize\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_LABEL\""; $this->configFieldSets[] = "\t\t\tsize=\"20\""; $this->configFieldSets[] = "\t\t\tmaxlength=\"50\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_DESC\""; $this->configFieldSets[] = "\t\t\tclass=\"text_area\""; $this->configFieldSets[] = "\t\t\tfilter=\"INT\""; $this->configFieldSets[] = "\t\t\tmessage=\"Error! Please add size of the legend here.\""; $this->configFieldSets[] = "\t\t\thint=\"" . $lang . "_LEGENDTEXTSTYLEFONTSIZE_HINT\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"site_vaxistextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_VAXISTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_VAXISTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\t\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"site_haxistextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_HAXISTEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_HAXISTEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>\t\t"; $this->configFieldSets[] = "\t\t"; $this->configFieldSets[] = "\t\tconfigFieldSets[] = "\t\t\ttype=\"color\""; $this->configFieldSets[] = "\t\t\tname=\"site_haxistitletextstylefontcolor\""; $this->configFieldSets[] = "\t\t\tdefault=\"#63B1F2\""; $this->configFieldSets[] = "\t\t\tlabel=\"" . $lang . "_HAXISTITLETEXTSTYLEFONTCOLOR_LABEL\""; $this->configFieldSets[] = "\t\t\tdescription=\"" . $lang . "_HAXISTITLETEXTSTYLEFONTCOLOR_DESC\""; $this->configFieldSets[] = "\t\t/>"; // add custom Encryption Settings fields if (isset($this->configFieldSetsCustomField['Chart Settings']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Chart Settings'])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField['Chart Settings']); unset($this->configFieldSetsCustomField['Chart Settings']); } $this->configFieldSets[] = "\t"; // set params defaults $this->extensionsParams[] = '"admin_chartbackground":"#F7F7FA","admin_mainwidth":"1000","admin_chartareatop":"20","admin_chartarealeft":"20","admin_chartareawidth":"170","admin_legendtextstylefontcolor":"10","admin_legendtextstylefontsize":"20","admin_vaxistextstylefontcolor":"#63B1F2","admin_haxistextstylefontcolor":"#63B1F2","admin_haxistitletextstylefontcolor":"#63B1F2","site_chartbackground":"#F7F7FA","site_mainwidth":"1000","site_chartareatop":"20","site_chartarealeft":"20","site_chartareawidth":"170","site_legendtextstylefontcolor":"10","site_legendtextstylefontsize":"20","site_vaxistextstylefontcolor":"#63B1F2","site_haxistextstylefontcolor":"#63B1F2","site_haxistitletextstylefontcolor":"#63B1F2"'; // set field lang $this->langContent[$this->lang][$lang . '_CHART_SETTINGS_LABEL'] = "Chart Settings"; $this->langContent[$this->lang][$lang . '_CHART_SETTINGS_DESC'] = "The Google Chart Display Settings Are Made Here."; $this->langContent[$this->lang][$lang . '_ADMIN_CHART_NOTE_LABEL'] = "Admin Settings"; $this->langContent[$this->lang][$lang . '_ADMIN_CHART_NOTE_DESC'] = "The following settings are used on the back-end of the site called (admin)."; $this->langContent[$this->lang][$lang . '_SITE_CHART_NOTE_LABEL'] = "Site Settings"; $this->langContent[$this->lang][$lang . '_SITE_CHART_NOTE_DESC'] = "The following settings are used on the front-end of the site called (site)."; $this->langContent[$this->lang][$lang . '_CHARTAREALEFT_DESC'] = "Set in pixels the spacing from the left of the chart area to the beginning of the chart it self. Please don't add the px sign"; $this->langContent[$this->lang][$lang . '_CHARTAREALEFT_HINT'] = "170"; $this->langContent[$this->lang][$lang . '_CHARTAREALEFT_LABEL'] = "Left Spacing"; $this->langContent[$this->lang][$lang . '_CHARTAREATOP_DESC'] = "Set in pixels the spacing from the top of the chart area to the beginning of the chart it self. Please don't add the px sign"; $this->langContent[$this->lang][$lang . '_CHARTAREATOP_HINT'] = "20"; $this->langContent[$this->lang][$lang . '_CHARTAREATOP_LABEL'] = "Top Spacing"; $this->langContent[$this->lang][$lang . '_CHARTAREAWIDTH_DESC'] = "Set in % the width of the chart it self inside the chart area. Please don't add the % sign"; $this->langContent[$this->lang][$lang . '_CHARTAREAWIDTH_HINT'] = "60"; $this->langContent[$this->lang][$lang . '_CHARTAREAWIDTH_LABEL'] = "Chart Width"; $this->langContent[$this->lang][$lang . '_CHARTBACKGROUND_DESC'] = "Select the chart background color here."; $this->langContent[$this->lang][$lang . '_CHARTBACKGROUND_LABEL'] = "Chart Background"; $this->langContent[$this->lang][$lang . '_HAXISTEXTSTYLEFONTCOLOR_DESC'] = "Select the horizontal axis font color."; $this->langContent[$this->lang][$lang . '_HAXISTEXTSTYLEFONTCOLOR_LABEL'] = "hAxis Font Color"; $this->langContent[$this->lang][$lang . '_HAXISTITLETEXTSTYLEFONTCOLOR_DESC'] = "Select the horizontal axis title's font color."; $this->langContent[$this->lang][$lang . '_HAXISTITLETEXTSTYLEFONTCOLOR_LABEL'] = "hAxis Title Font Color"; $this->langContent[$this->lang][$lang . '_LEGENDTEXTSTYLEFONTCOLOR_DESC'] = "Select the legend font color."; $this->langContent[$this->lang][$lang . '_LEGENDTEXTSTYLEFONTCOLOR_LABEL'] = "Legend Font Color"; $this->langContent[$this->lang][$lang . '_LEGENDTEXTSTYLEFONTSIZE_DESC'] = "Set in pixels the font size of the legend"; $this->langContent[$this->lang][$lang . '_LEGENDTEXTSTYLEFONTSIZE_HINT'] = "10"; $this->langContent[$this->lang][$lang . '_LEGENDTEXTSTYLEFONTSIZE_LABEL'] = "Legend Font Size"; $this->langContent[$this->lang][$lang . '_MAINWIDTH_DESC'] = "Set the width of the entire chart area"; $this->langContent[$this->lang][$lang . '_MAINWIDTH_HINT'] = "1000"; $this->langContent[$this->lang][$lang . '_MAINWIDTH_LABEL'] = "Chart Area Width"; $this->langContent[$this->lang][$lang . '_VAXISTEXTSTYLEFONTCOLOR_DESC'] = "Select the vertical axis font color."; $this->langContent[$this->lang][$lang . '_VAXISTEXTSTYLEFONTCOLOR_LABEL'] = "vAxis Font Color"; } } /** * @param $lang */ public function setEncryptionConfigFieldsets($lang) { // enable the loading of dynamic field sets $dynamicAddFields = array(); // Add encryption if needed if ((isset($this->basicEncryption) && $this->basicEncryption) || (isset($this->whmcsEncryption) && $this->whmcsEncryption) || (isset($this->mediumEncryption) && $this->mediumEncryption) || $this->componentData->add_license || (isset($this->configFieldSetsCustomField['Encryption Settings']) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField['Encryption Settings']))) { $dynamicAddFields[] = "Encryption Settings"; // start building field set for encryption functions $this->configFieldSets[] = "\tconfigFieldSets[] = "\t\t" . 'name="encryption_config"'; $this->configFieldSets[] = "\t\t" . 'label="' . $lang . '_ENCRYPTION_LABEL"'; $this->configFieldSets[] = "\t\t" . 'description="' . $lang . '_ENCRYPTION_DESC">'; // set tab lang if (((isset($this->basicEncryption) && $this->basicEncryption) || (isset($this->mediumEncryption) && $this->mediumEncryption) || (isset($this->whmcsEncryption) && $this->whmcsEncryption)) && $this->componentData->add_license && $this->componentData->license_type == 3) { $this->langContent[$this->lang][$lang . '_ENCRYPTION_LABEL'] = "License & Encryption Settings"; $this->langContent[$this->lang][$lang . '_ENCRYPTION_DESC'] = "The license & encryption keys are set here."; // add the next dynamic option $dynamicAddFields[] = "License & Encryption Settings"; } elseif (((isset($this->basicEncryption) && $this->basicEncryption) || (isset($this->mediumEncryption) && $this->mediumEncryption) || (isset($this->whmcsEncryption) && $this->whmcsEncryption)) && $this->componentData->add_license && $this->componentData->license_type == 2) { $this->langContent[$this->lang][$lang . '_ENCRYPTION_LABEL'] = "Update & Encryption Settings"; $this->langContent[$this->lang][$lang . '_ENCRYPTION_DESC'] = "The update & encryption keys are set here."; // add the next dynamic option $dynamicAddFields[] = "Update & Encryption Settings"; } elseif ($this->componentData->add_license && $this->componentData->license_type == 3) { $this->langContent[$this->lang][$lang . '_ENCRYPTION_LABEL'] = "License Settings"; $this->langContent[$this->lang][$lang . '_ENCRYPTION_DESC'] = "The license key is set here."; // add the next dynamic option $dynamicAddFields[] = "License Settings"; } elseif ($this->componentData->add_license && $this->componentData->license_type == 2) { $this->langContent[$this->lang][$lang . '_ENCRYPTION_LABEL'] = "Update Settings"; $this->langContent[$this->lang][$lang . '_ENCRYPTION_DESC'] = "The update key is set here."; // add the next dynamic option $dynamicAddFields[] = "Update Settings"; } else { $this->langContent[$this->lang][$lang . '_ENCRYPTION_LABEL'] = "Encryption Settings"; $this->langContent[$this->lang][$lang . '_ENCRYPTION_DESC'] = "The encryption key for the field encryption is set here."; } if (isset($this->basicEncryption) && $this->basicEncryption) { // set field lang $this->langContent[$this->lang][$lang . '_BASIC_KEY_LABEL'] = "Basic Key"; $this->langContent[$this->lang][$lang . '_BASIC_KEY_DESC'] = "Set the basic local key here."; $this->langContent[$this->lang][$lang . '_BASIC_KEY_NOTE_LABEL'] = "Basic Encryption"; $this->langContent[$this->lang][$lang . '_BASIC_KEY_NOTE_DESC'] = "When using the basic encryption please use set a 32 character passphrase.
    Never change this passphrase once it is set! DATA WILL GET CORRUPTED IF YOU DO!"; // set the field $this->configFieldSets[] = "\t\t" . ''; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_BASIC_KEY_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_BASIC_KEY_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; } if (isset($this->mediumEncryption) && $this->mediumEncryption) { // set field lang $this->langContent[$this->lang][$lang . '_MEDIUM_KEY_LABEL'] = "Medium Key (Path)"; $this->langContent[$this->lang][$lang . '_MEDIUM_KEY_DESC'] = "Set the full path to where the key file must be stored. Make sure it is behind the root folder of your website, so that it is not public accessible."; $this->langContent[$this->lang][$lang . '_MEDIUM_KEY_NOTE_LABEL'] = "Medium Encryption"; $this->langContent[$this->lang][$lang . '_MEDIUM_KEY_NOTE_DESC'] = "When using the medium encryption option, the system generates its own key and stores it in a file at the folder/path you set here.
    Never change this key once it is set, or remove the key file! DATA WILL GET CORRUPTED IF YOU DO! Also make sure the full path to where the the key file should be stored, is behind the root folder of your website/system, so that it is not public accessible. Making a backup of this key file over a secure connection is recommended!"; // set the field $this->configFieldSets[] = "\t\t" . ''; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_MEDIUM_KEY_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_MEDIUM_KEY_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="160"'; $this->configFieldSets[] = "\t\t\t" . 'filter="PATH"'; $this->configFieldSets[] = "\t\t\t" . 'hint="/home/user/hiddenfolder123/"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; // set some error message if the path does not exist $this->langContent[$this->lang][$lang . '_MEDIUM_KEY_PATH_ERROR'] = "Medium key path (for encryption of various fields) does not exist, or is not writable. Please check the path and update it in the global option of this component."; } if (isset($this->whmcsEncryption) && $this->whmcsEncryption || $this->componentData->add_license) { // set field lang label and description if ($this->componentData->add_license && $this->componentData->license_type == 3) { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_LABEL'] = "License Key"; $this->langContent[$this->lang][$lang . '_WHMCS_KEY_DESC'] = "Add the license key you recieved from " . $this->componentData->companyname . " here."; } elseif ($this->componentData->add_license && $this->componentData->license_type == 2) { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_LABEL'] = "Update Key"; $this->langContent[$this->lang][$lang . '_WHMCS_KEY_DESC'] = "Add the update key you recieved from " . $this->componentData->companyname . " here."; } else { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_LABEL'] = "WHMCS Key"; $this->langContent[$this->lang][$lang . '_WHMCS_KEY_DESC'] = "Add the key you recieved from " . $this->componentData->companyname . " here."; } // ajust the notice based on license if (isset($this->whmcsEncryption) && $this->whmcsEncryption) { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_LABEL'] = "Field Encryption (whmcs)"; $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_DESC'] = "When using this (whmcs) encryption you need to get a key from " . $this->componentData->companyname . ".
    Never change this key once it is set! DATA WILL GET CORRUPTED IF YOU DO!"; } else { if ($this->componentData->license_type == 3) { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_LABEL'] = "Your License Key"; } elseif ($this->componentData->license_type == 2) { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_LABEL'] = "Your Update Key"; } else { $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_LABEL'] = "Your Key (whmcs)"; } $this->langContent[$this->lang][$lang . '_WHMCS_KEY_NOTE_DESC'] = "You need to get this key from " . $this->componentData->companyname . "."; } // set the fields $this->configFieldSets[] = "\t\t" . ''; $this->configFieldSets[] = "\t\t" . 'configFieldSets[] = "\t\t\t" . 'type="text"'; $this->configFieldSets[] = "\t\t\t" . 'label="' . $lang . '_WHMCS_KEY_LABEL"'; $this->configFieldSets[] = "\t\t\t" . 'description="' . $lang . '_WHMCS_KEY_DESC"'; $this->configFieldSets[] = "\t\t\t" . 'size="60"'; $this->configFieldSets[] = "\t\t\t" . 'default=""'; $this->configFieldSets[] = "\t\t/>"; } // load the dynamic field sets foreach ($dynamicAddFields as $dynamicAddField) { // add custom Encryption Settings fields if (isset($this->configFieldSetsCustomField[$dynamicAddField]) && ComponentbuilderHelper::checkArray($this->configFieldSetsCustomField[$dynamicAddField])) { $this->configFieldSets[] = implode("\t\t", $this->configFieldSetsCustomField[$dynamicAddField]); unset($this->configFieldSetsCustomField[$dynamicAddField]); } } // close that fieldset $this->configFieldSets[] = "\t"; } } public function setAccessSectionsCategory($viewName_single, $viewName_list) { $component = ''; // check if view has category if (array_key_exists($viewName_single, $this->catCodeBuilder)) { $otherViews = $this->catCodeBuilder[$viewName_single]['views']; if ($otherViews == $viewName_list) { $component .= PHP_EOL . "\t" . '
    '; $component .= PHP_EOL . "\t\t" . ''; $component .= PHP_EOL . "\t\t" . ''; $component .= PHP_EOL . "\t\t" . ''; $component .= PHP_EOL . "\t\t" . ''; $component .= PHP_EOL . "\t\t" . ''; $component .= PHP_EOL . "\t
    "; } } return $component; } public function setAccessSections() { // set the default component access values $this->componentHead = array(); $this->componentGlobal = array(); $this->permissionViews = array(); $this->componentHead[] = '
    '; $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; if ($this->addEximport) { $exportTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Export Data', 'U'); $exportDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Export Data', 'U') . '_DESC'; $this->langContent['bothadmin'][$exportTitle] = 'Export Data'; $this->langContent['bothadmin'][$exportDesc] = ' Allows users in this group to export data.'; $this->componentHead[] = "\t\t" . ''; $importTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Import Data', 'U'); $importDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Import Data', 'U') . '_DESC'; $this->langContent['bothadmin'][$importTitle] = 'Import Data'; $this->langContent['bothadmin'][$importDesc] = ' Allows users in this group to import data.'; $this->componentHead[] = "\t\t" . ''; } // version permission $batchTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Use Batch', 'U'); $batchDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Use Batch', 'U') . '_DESC'; $this->langContent['bothadmin'][$batchTitle] = 'Use Batch'; $this->langContent['bothadmin'][$batchDesc] = ' Allows users in this group to use batch copy/update method.'; $this->componentHead[] = "\t\t" . ''; // version permission $importTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Versions', 'U'); $importDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Versions', 'U') . '_DESC'; $this->langContent['bothadmin'][$importTitle] = 'Edit Version'; $this->langContent['bothadmin'][$importDesc] = ' Allows users in this group to edit versions.'; $this->componentHead[] = "\t\t" . ''; // set the defaults $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; $this->componentHead[] = "\t\t" . ''; // new custom created by permissions $created_byTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Created By', 'U'); $created_byDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Created By', 'U') . '_DESC'; $this->langContent['bothadmin'][$created_byTitle] = 'Edit Created By'; $this->langContent['bothadmin'][$created_byDesc] = ' Allows users in this group to edit created by.'; $this->componentHead[] = "\t\t" . ''; // new custom created date permissions $createdTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Created Date', 'U'); $createdDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString('Edit Created Date', 'U') . '_DESC'; $this->langContent['bothadmin'][$createdTitle] = 'Edit Created Date'; $this->langContent['bothadmin'][$createdDesc] = ' Allows users in this group to edit created date.'; $this->componentHead[] = "\t\t" . ''; // set the menu controller lookup $menuControllers = array('access', 'submenu', 'dashboard_list', 'dashboard_add'); // set the custom admin views permissions if (isset($this->componentData->custom_admin_views) && ComponentbuilderHelper::checkArray($this->componentData->custom_admin_views)) { foreach ($this->componentData->custom_admin_views as $custom_admin_view) { // new custom permissions to access this view $customAdminName = $custom_admin_view['settings']->name; $customAdminCode = $custom_admin_view['settings']->code; $customAdminTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($customAdminName . ' Access', 'U'); $customAdminDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($customAdminName . ' Access', 'U') . '_DESC'; $sortKey = ComponentbuilderHelper::safeString($customAdminName . ' Access'); $this->langContent['bothadmin'][$customAdminTitle] = $customAdminName . ' Access'; $this->langContent['bothadmin'][$customAdminDesc] = ' Allows the users in this group to access ' . ComponentbuilderHelper::safeString($customAdminName, 'w') . '.'; $this->componentGlobal[$sortKey] = "\t\t" . ''; // add the custom permissions to use the buttons of this view $this->addCustomButtonPermissions($custom_admin_view['settings'], $customAdminName, $customAdminCode); // add menu controll view that has menus options foreach ($menuControllers as $menuController) { // add menu controll view that has menus options if (isset($custom_admin_view[$menuController]) && $custom_admin_view[$menuController]) { $targetView_ = 'views.'; if ($menuController === 'dashboard_add') { $targetView_ = 'view.'; } // menucontroller $menucontrollerView['action'] = $targetView_ . $menuController; $menucontrollerView['implementation'] = '2'; if (isset($custom_admin_view['settings']->permissions) && ComponentbuilderHelper::checkArray($custom_admin_view['settings']->permissions)) { array_push($custom_admin_view['settings']->permissions, $menucontrollerView); } else { $custom_admin_view['settings']->permissions = array(); $custom_admin_view['settings']->permissions[] = $menucontrollerView; } unset($menucontrollerView); } } $this->buildPermissions($custom_admin_view, $customAdminCode, $customAdminCode, $menuControllers, 'customAdmin'); } } // set the site views permissions if (isset($this->componentData->site_views) && ComponentbuilderHelper::checkArray($this->componentData->site_views)) { foreach ($this->componentData->site_views as $site_view) { // new custom permissions to access this view $siteName = $site_view['settings']->name; $siteCode = $site_view['settings']->code; $siteTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($siteName . ' Access Site', 'U'); $siteDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($siteName . ' Access Site', 'U') . '_DESC'; $sortKey = ComponentbuilderHelper::safeString($siteName . ' Access Site'); if (isset($site_view['access']) && $site_view['access'] == 1) { $this->langContent['bothadmin'][$siteTitle] = $siteName . ' (Site) Access'; $this->langContent['bothadmin'][$siteDesc] = ' Allows the users in this group to access site ' . ComponentbuilderHelper::safeString($siteName, 'w') . '.'; $this->componentGlobal[$sortKey] = "\t\t" . ''; // check if this site view requires access rule to default to public if (isset($site_view['public_access']) && $site_view['public_access'] == 1) { // we use one as public group (TODO we see if we run into any issues) $this->assetsRules[] = '"site.' . $siteCode . '.access":{"1":1}'; } } // add the custom permissions to use the buttons of this view $this->addCustomButtonPermissions($site_view['settings'], $siteName, $siteCode); } } if (isset($this->componentData->admin_views) && ComponentbuilderHelper::checkArray($this->componentData->admin_views)) { foreach ($this->componentData->admin_views as $view) { // set view name $nameView = ComponentbuilderHelper::safeString($view['settings']->name_single); $nameViews = ComponentbuilderHelper::safeString($view['settings']->name_list); // add the custom permissions to use the buttons of this view $this->addCustomButtonPermissions($view['settings'], $view['settings']->name_single, $nameView); if ($nameView != 'component') { // add menu controll view that has menus options foreach ($menuControllers as $menuController) { // add menu controll view that has menus options if (isset($view[$menuController]) && $view[$menuController]) { $targetView_ = 'views.'; if ($menuController === 'dashboard_add') { $targetView_ = 'view.'; } // menucontroller $menucontrollerView['action'] = $targetView_ . $menuController; $menucontrollerView['implementation'] = '2'; if (isset($view['settings']->permissions) && ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $menucontrollerView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $menucontrollerView; } unset($menucontrollerView); } } // check if there are fields if (ComponentbuilderHelper::checkArray($view['settings']->fields)) { // check the fields for their permission settings foreach ($view['settings']->fields as $field) { // see if field require permissions to be set if (isset($field['permission']) && $field['permission']) { if (ComponentbuilderHelper::checkArray($field['settings']->properties)) { foreach ($field['settings']->properties as $property) { if ($property['name'] === 'type') { $propertyType = $property; } } $fieldType = $this->getFieldType($field); $fieldName = $this->getFieldName($field, $nameViews); $fieldView = array(); // set the permission for this field $fieldView['action'] = 'view.edit.' . $fieldName; $fieldView['implementation'] = '3'; if (ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $fieldView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $fieldView; } // insure that no default field get loaded if (!in_array($fieldName, $this->defaultFields)) { // load to global field permission set $this->permissionFields[$nameView][$fieldName] = $fieldType; } } } } } $this->buildPermissions($view, $nameView, $nameViews, $menuControllers); } } // set the views permissions now if (ComponentbuilderHelper::checkArray($this->permissionViews)) { foreach ($this->permissionViews as $viewName => $actions) { $componentViews[] = "\t" . '
    '; foreach ($actions as $action) { $componentViews[] = "\t\t" . $action; } $componentViews[] = "\t
    "; } } /// now build the section $component = implode(PHP_EOL, $this->componentHead); // sort the array to insure easy search ksort($this->componentGlobal, SORT_STRING); // add global to the compnent section $component .= PHP_EOL . implode(PHP_EOL, $this->componentGlobal) . PHP_EOL . "\t
    "; // add views to the compnent section $component .= PHP_EOL . implode(PHP_EOL, $componentViews); // be sure to reset again. (memory) $this->componentHead = null; $this->componentGlobal = null; $this->permissionViews = null; // return the build return $component; } return false; } protected function addCustomButtonPermissions($settings, $nameView, $code) { // add the custom permissions to use the buttons of this view if (isset($settings->custom_buttons) && ComponentbuilderHelper::checkArray($settings->custom_buttons)) { foreach ($settings->custom_buttons as $custom_buttons) { $customButtonName = $custom_buttons['name']; $customButtonCode = ComponentbuilderHelper::safeString($customButtonName); $customButtonTitle = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($nameView . ' ' . $customButtonName . ' Button Access', 'U'); $customButtonDesc = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($nameView . ' ' . $customButtonName . ' Button Access', 'U') . '_DESC'; $sortButtonKey = ComponentbuilderHelper::safeString($nameView . ' ' . $customButtonName . ' Button Access'); $this->langContent['bothadmin'][$customButtonTitle] = $nameView . ' ' . $customButtonName . ' Button Access'; $this->langContent['bothadmin'][$customButtonDesc] = ' Allows the users in this group to access the ' . ComponentbuilderHelper::safeString($customButtonName, 'w') . ' button.'; $this->componentGlobal[$sortButtonKey] = "\t\t" . ''; } } } public function buildPermissions(&$view, $nameView, $nameViews, $menuControllers, $type = 'admin') { if (isset($view['settings']->permissions) && ComponentbuilderHelper::checkArray($view['settings']->permissions) || (isset($view['port']) && $view['port']) || (isset($view['history']) && $view['history'])) { // add export/import permissions to each view that has export/import options if (isset($view['port']) && $view['port']) { // export $exportView['action'] = 'view.export'; $exportView['implementation'] = '2'; if (ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $exportView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $exportView; } // import $importView['action'] = 'view.import'; $importView['implementation'] = '2'; if (ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $importView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $importView; } } // add version opstions to each view that has it added if (isset($view['history']) && $view['history']) { // set version control $versionView['action'] = 'view.version'; $versionView['implementation'] = '3'; if (ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $versionView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $versionView; } } if ($type === 'admin') { // set batch control $batchView['action'] = 'view.batch'; $batchView['implementation'] = '2'; if (ComponentbuilderHelper::checkArray($view['settings']->permissions)) { array_push($view['settings']->permissions, $batchView); } else { $view['settings']->permissions = array(); $view['settings']->permissions[] = $batchView; } } foreach ($view['settings']->permissions as $permission) { // set acction name $arr = explode('.', trim($permission['action'])); if ($arr[0] != 'core' || $arr[0] === 'view') { array_shift($arr); $actionMain = implode('.', $arr); $action = $nameView . '.' . $actionMain; } else { if ($arr[0] === 'core') { // core is already set in global access $permission['implementation'] = 1; } $action = $permission['action']; } // build action name $actionNameBuilder = explode('.', trim($permission['action'])); array_shift($actionNameBuilder); $nameBuilder = trim(implode('___', $actionNameBuilder)); $customName = trim(implode(' ', $actionNameBuilder)); if ($type === 'admin') { $W_NameList = ComponentbuilderHelper::safeString($view['settings']->name_list, 'W'); $w_NameList = ComponentbuilderHelper::safeString($customName . ' ' . $view['settings']->name_list, 'w'); $w_NameSingle = ComponentbuilderHelper::safeString($view['settings']->name_single, 'w'); } elseif ($type === 'customAdmin') { $W_NameList = ComponentbuilderHelper::safeString($view['settings']->name, 'W'); $w_NameList = $view['settings']->name; $w_NameSingle = $view['settings']->name; } switch ($nameBuilder) { case 'edit': // set edit title $permission['title'] = $W_NameList . ' Edit'; // set edit description $permission['description'] = ' Allows the users in this group to edit the ' . $w_NameSingle; break; case 'edit___own': // set edit title $permission['title'] = $W_NameList . ' Edit Own'; // set edit description $permission['description'] = ' Allows the users in this group to edit ' . $w_NameList . ' created by them'; break; case 'edit___state': // set edit title $permission['title'] = $W_NameList . ' Edit State'; // set edit description $permission['description'] = ' Allows the users in this group to update the state of the ' . $w_NameSingle; break; case 'edit___created_by': // set edit title $permission['title'] = $W_NameList . ' Edit Created By'; // set edit description $permission['description'] = ' Allows the users in this group to update the created by of the ' . $w_NameList; break; case 'edit___created': // set edit title $permission['title'] = $W_NameList . ' Edit Created Date'; // set edit description $permission['description'] = ' Allows the users in this group to update the created date of the ' . $w_NameList; break; case 'create': // set edit title $permission['title'] = $W_NameList . ' Create'; // set edit description $permission['description'] = ' Allows the users in this group to create ' . $w_NameList; break; case 'delete': // set edit title $permission['title'] = $W_NameList . ' Delete'; // set edit description $permission['description'] = ' Allows the users in this group to delete ' . $w_NameList; break; case 'access': // set edit title $permission['title'] = $W_NameList . ' Access'; // set edit description $permission['description'] = ' Allows the users in this group to access ' . $w_NameList; break; case 'export': // set edit title $permission['title'] = $W_NameList . ' Export'; // set edit description $permission['description'] = ' Allows the users in this group to export ' . $w_NameList; break; case 'import': // set edit title $permission['title'] = $W_NameList . ' Import'; // set edit description $permission['description'] = ' Allows the users in this group to import ' . $w_NameList; break; case 'version': // set edit title $permission['title'] = $W_NameList . ' Edit Version'; // set edit description $permission['description'] = ' Allows users in this group to edit versions of ' . $w_NameList; break; case 'batch': // set edit title $permission['title'] = $W_NameList . ' Batch Use'; // set edit description $permission['description'] = ' Allows users in this group to use batch copy/update method of ' . $w_NameList; break; default: // set edit title $permission['title'] = $W_NameList . ' ' . ComponentbuilderHelper::safeString($customName, 'W'); // set edit description $permission['description'] = ' Allows the users in this group to update the ' . ComponentbuilderHelper::safeString($customName, 'w') . ' of the ' . $w_NameSingle; break; } // if core is not used update all core strings $coreCheck = explode('.', $action); $coreCheck[0] = 'core'; $coreTarget = implode('.', $coreCheck); $this->permissionCore[$nameView][$coreTarget] = $action; // set array sort name $sortKey = ComponentbuilderHelper::safeString($permission['title']); // set title $title = $this->langPrefix . '_' . ComponentbuilderHelper::safeString($permission['title'], 'U'); // load the actions if ($permission['implementation'] == 1) { // only related to view $this->permissionViews[$nameView][] = ''; // load permission to action $this->permissionBuilder[$action][$nameView] = $nameView; } elseif ($permission['implementation'] == 2) { // relation to whole component $this->componentGlobal[$sortKey] = "\t\t" . ''; // build permission switch $this->permissionBuilder['global'][$action][$nameView] = $nameView; // dashboard icon checker if ($coreTarget === 'core.access') { $this->permissionDashboard[] = "'" . $nameViews . ".access' => '" . $action . "'"; $this->permissionDashboard[] = "'" . $nameView . ".access' => '" . $action . "'"; } if ($coreTarget === 'core.create') { $this->permissionDashboard[] = "'" . $nameView . ".create' => '" . $action . "'"; } // add menu controll view that has menus options foreach ($menuControllers as $menuController) { if ($coreTarget === 'core.' . $menuController) { if ($menuController === 'dashboard_add') { $this->permissionDashboard[] = "'" . $nameView . "." . $menuController . "' => '" . $action . "'"; } else { $this->permissionDashboard[] = "'" . $nameViews . "." . $menuController . "' => '" . $action . "'"; } } } } elseif ($permission['implementation'] == 3) { // only related to view $this->permissionViews[$nameView][] = ''; // load permission to action $this->permissionBuilder[$action][$nameView] = $nameView; // relation to whole component $this->componentGlobal[$sortKey] = "\t\t" . ''; // build permission switch $this->permissionBuilder['global'][$action][$nameView] = $nameView; // dashboard icon checker if ($coreTarget === 'core.access') { $this->permissionDashboard[] = "'" . $nameViews . ".access' => '" . $action . "'"; $this->permissionDashboard[] = "'" . $nameView . ".access' => '" . $action . "'"; } if ($coreTarget === 'core.create') { $this->permissionDashboard[] = "'" . $nameView . ".create' => '" . $action . "'"; } // add menu controll view that has menus options foreach ($menuControllers as $menuController) { if ($coreTarget === 'core.' . $menuController) { if ($menuController === 'dashboard_add') { $this->permissionDashboard[] = "'" . $nameView . "." . $menuController . "' => '" . $action . "'"; } else { $this->permissionDashboard[] = "'" . $nameViews . "." . $menuController . "' => '" . $action . "'"; } } } } // set to language file $this->langContent['bothadmin'][$title] = trim($permission['title']); $this->langContent['bothadmin'][$title . '_DESC'] = trim($permission['description']); } } } public function getInbetweenStrings($str, $start = '###', $end = '###') { $matches = array(); $regex = "/$start([a-zA-Z0-9_]*)$end/"; preg_match_all($regex, $str, $matches); return $matches[1]; } }
    '; $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t'; $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t