diff --git a/README.md b/README.md index 260527395..24e8c358b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have! -You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.13) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.14) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -126,13 +126,13 @@ Component Builder is mapped as a component in itself on my local development env + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](http://joomlacomponentbuilder.com) + *First Build*: 30th April, 2015 -+ *Last Build*: 24th January, 2018 -+ *Version*: 2.6.13 ++ *Last Build*: 6th February, 2018 ++ *Version*: 2.6.14 + *Copyright*: Copyright (C) 2015. All Rights Reserved + *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html -+ *Line count*: **180832** ++ *Line count*: **180952** + *Field count*: **1577** -+ *File count*: **1161** ++ *File count*: **1159** + *Folder count*: **186** > This **component** was build with a Joomla [Automated Component Builder](http://joomlacomponentbuilder.com). @@ -141,6 +141,6 @@ Component Builder is mapped as a component in itself on my local development env ## Donations Come on buy VDM a coffee :) - * PayPal: [paypal.me/payvdm](https://www.paypal.me/payvdm) + * PayPal: [paypal.me/asseblief](https://www.paypal.me/asseblief) * Bitcoin: 18vURxYpPFjvNk8BnUy1ovCAyQmY3MzkSf * Ethereum: 0x9548144662b47327c954f3e214edb96662d51218 \ No newline at end of file diff --git a/admin/README.txt b/admin/README.txt index 260527395..24e8c358b 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have! -You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.13) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.6.14) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -126,13 +126,13 @@ Component Builder is mapped as a component in itself on my local development env + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](http://joomlacomponentbuilder.com) + *First Build*: 30th April, 2015 -+ *Last Build*: 24th January, 2018 -+ *Version*: 2.6.13 ++ *Last Build*: 6th February, 2018 ++ *Version*: 2.6.14 + *Copyright*: Copyright (C) 2015. All Rights Reserved + *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html -+ *Line count*: **180832** ++ *Line count*: **180952** + *Field count*: **1577** -+ *File count*: **1161** ++ *File count*: **1159** + *Folder count*: **186** > This **component** was build with a Joomla [Automated Component Builder](http://joomlacomponentbuilder.com). @@ -141,6 +141,6 @@ Component Builder is mapped as a component in itself on my local development env ## Donations Come on buy VDM a coffee :) - * PayPal: [paypal.me/payvdm](https://www.paypal.me/payvdm) + * PayPal: [paypal.me/asseblief](https://www.paypal.me/asseblief) * Bitcoin: 18vURxYpPFjvNk8BnUy1ovCAyQmY3MzkSf * Ethereum: 0x9548144662b47327c954f3e214edb96662d51218 \ No newline at end of file diff --git a/admin/custom/downloadController_sermonDistributor.php b/admin/custom/downloadController_sermonDistributor.php deleted file mode 100644 index 499e77013..000000000 --- a/admin/custom/downloadController_sermonDistributor.php +++ /dev/null @@ -1,171 +0,0 @@ - -*  @copyright Copyright (C) 2014. All Rights Reserved -*  @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html -* -**/ - -// No direct access to this file -defined('_JEXEC') or die('Restricted access'); -?> -###BOM### - -// No direct access to this file -defined('_JEXEC') or die('Restricted access'); - -// import Joomla controllerform library -jimport('joomla.application.component.controller'); - -/** - * ###Component### Download Controller - */ -class ###Component###ControllerDownload extends JControllerLegacy -{ - - public function __construct($config) - { - parent::__construct($config); - // load the tasks - $this->registerTask('file', 'download'); - } - - public function download() - { - $jinput = JFactory::getApplication()->input; - // Check Token! - $token = JSession::getFormToken(); - $call_token = $jinput->get('token', 0, 'ALNUM'); - if($token == $call_token) - { - $task = $this->getTask(); - switch($task) - { - case 'file': - $keys = ###Component###Helper::base64_urldecode($jinput->get('key', NULL, 'STRING')); - $enUrl = ###Component###Helper::base64_urldecode($jinput->get('link', NULL, 'STRING')); - $filename = $jinput->get('filename', NULL, 'CMD'); - if((base64_encode(base64_decode($enUrl, true)) === $enUrl) && (base64_encode(base64_decode($keys, true)) === $keys) && $filename) - { - // we must first count this download - if (###Component###Helper::countDownload($keys,$filename)) - { - // get Site name - $config = JFactory::getConfig(); - $vendor = $config->get('sitename'); - $name = ###Component###Helper::safeString($filename, 'Ww'); - // Get local key - $localkey = ###Component###Helper::getLocalKey(); - $opener = new FOFEncryptAes($localkey, 128); - $link = rtrim($opener->decryptString($enUrl), "\0"); - $info = $this->getContentInfo($link); - // set headers - $app = JFactory::getApplication(); - $app->setHeader('Accept-ranges', 'bytes', true); - $app->setHeader('Connection', 'keep-alive', true); - $app->setHeader('Content-Encoding', 'none', true); - $app->setHeader('Content-disposition', 'attachment; filename="'.$filename.'";', true); - if (isset($info['type']) && $info['type']) - { - $app->setHeader('Content-Type', $info['type'], true); - } - elseif (strpos($filename, '.mp3') !== false) - { - $app->setHeader('Content-Type', 'audio/mpeg', true); - } - else - { - $app->setHeader('Content-Type', 'application/octet-stream', true); - } - // important to have the file size. - if (isset($info['filesize']) && $info['filesize']) - { - $app->setHeader('Content-Length', (int) $info['filesize'], true); - $app->setHeader('Content-Size', (int) $info['filesize'], true); - } - $app->setHeader('Content-security-policy', 'referrer no-referrer', true); - $app->setHeader('Content-Name', '"'.$name.'"', true); - $app->setHeader('Content-Version', '1.0', true); - $app->setHeader('Content-Vendor', '"'.$vendor.'"', true); - $app->setHeader('Content-URL', '"'.JUri::getInstance().'"', true); - $app->setHeader('etag', md5($enUrl), true); - $app->setHeader('Pragma', 'public', true); - $app->setHeader('cache-control', 'max-age=0', true); - $app->setHeader('x-robots-tag', 'noindex, nofollow, noimageindex', true); - $app->setHeader('x-content-security-policy', 'referrer no-referrer', true); - $app->setHeader('x-webkit-csp', 'referrer no-referrer', true); - $app->setHeader('x-content-security-policy', 'referrer no-referrer', true); - // get the file - readfile($link); - $app->sendHeaders(); - $app->close(); - jexit(); - } - } - break; - } - } - die('Restricted access'); - } - - protected function getContentInfo($url) - { - // we first try the curl option - if ($this->_isCurl()) - { - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_NOBODY, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HEADER, true); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - - $data = curl_exec($ch); - curl_close($ch); - } - else - { - // then we try getheaders (this is slower) - stream_context_set_default( array('http' => array('method' => 'HEAD'))); - $headers = get_headers($url); - if (###Component###Helper::checkArray($headers)) - { - $data = implode("\n", $headers); - } - } - // get the Content Length - if (preg_match('/Content-Length: (\d+)/', $data, $matches)) - { - // Contains file size in bytes - $found['filesize'] = (int) $matches[1]; - - } - // get the Content Type - if (preg_match_all('/Content-Type: (.+)/', $data, $matches)) - { - foreach ($matches[1] as $match) - { - // not the html - if (strpos( $match, 'text/html') === false) - { - $found['type'] = $match; - break; - } - } - - } - // return found values - if (isset($found) && ###Component###Helper::checkArray($found)) - { - return $found; - } - return false; - } - - protected function _isCurl() - { - return function_exists('curl_version'); - } -} diff --git a/admin/custom/dropbox.php b/admin/custom/dropbox.php deleted file mode 100644 index 66543cfe1..000000000 --- a/admin/custom/dropbox.php +++ /dev/null @@ -1,700 +0,0 @@ - - @copyright Copyright (C) 2015. All Rights Reserved - @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html - -/------------------------------------------------------------------------------------------------------*/ - -// No direct access. -defined('_JEXEC') or die; - -/** - * Dropbox class - */ -class Dropbox -{ - /** - * final url - */ - protected $url; - - /** - * The array for the post url - */ - protected $postUrl = array( - "protocol" => "https://", - "suddomain" => "api.", - "domain" => "dropboxapi.com", - "path" => "/2/" - ); - - /** - * the verious pathes we need - */ - protected $domainpath = array( - "list_shared_links" => "sharing/list_shared_links", - "list_folder" => "files/list_folder", - "list_folder_continue" => "files/list_folder/continue", - "create_shared_link_with_settings" => "sharing/create_shared_link_with_settings", - "get_shared_link_metadata" => "sharing/get_shared_link_metadata", - "revoke" => "auth/token/revoke" - ); - - /** - * the target pathe to get - */ - protected $targetPath = false; - protected $targetPathOriginal = false; - - /** - * oauth token - */ - protected $oauthToken; - - /** - * the verious pathes we need - */ - protected $permissionType; - - /** - * The array of queries for creating shared links - */ - protected $createSharedLinks = array(); - - /** - * The array of queries for getting shared links - */ - protected $getSharedLinks = array(); - - /** - * the success switch - */ - protected $succes; - - /** - * the type call - */ - protected $type; - - /** - * the query for the call - */ - protected $query; - - /** - * the query for the call - */ - protected $model; - - /** - * the mediaData bucket - */ - public $mediaData = array(); - - /** - * the error messages - */ - public $error_summary = array(); - - /** - * force the update to reset - **/ - public $forceReset = false; - - /** - * Constructor - */ - public function __construct(JModelLegacy $model, $buildType) - { - // set the first call - $this->firstCall = 'get'; // TODO (we may what to make this dynamic) - // set the second call - $this->secondCall = 'create'; // TODO (we may what to make this dynamic) - // set the url at this point for now - $this->url = $this->postUrl["protocol"].$this->postUrl["suddomain"].$this->postUrl["domain"].$this->postUrl["path"]; - // set the local model - $this->model = $model; - // set the build type - $this->build = (int) $buildType; - } - - /** - * getFiles - * - * ============= - * $details - * ============= - * sourceID - * dropboxOption - * dropboxTarget - * addTypes - * - */ - public function getFiles($token, $permissiontype, $details = array()) - { - // we need more then the normal time to run this script 5 minutes at least. - ini_set('max_execution_time', 500); - // set the oauth toke - $this->oauthToken = $token; - - // set the permission type - $this->permissionType = $permissiontype; - - // set the details - if ($this->checkArray($details)) - { - foreach ($details as $detail => $value) - { - $this->$detail = $value; - } - } - - // set the curent folder path - if (!$this->setFolderPath()) - { - return false; - } - // start the main factory that calles for the folder data - $this->query = array("path" => $this->targetPath, "recursive" => true, "include_media_info" => true); - $this->type = 'list_folder'; - if ($this->makeCall()) - { - if ($this->_isCurl()) - { - // run the share link builder - return $this->makeMultiExecCalls(); - } - return true; - } - return false; - } - - protected function makeMultiExecCalls() - { - // make the fist call - $this->multiSharedLinks($this->firstCall); - // make the second call - $this->multiSharedLinks($this->secondCall); - // make the fist call (again for safety) - $this->multiSharedLinks($this->firstCall); - // make the second call (again for safety) - $this->multiSharedLinks($this->secondCall); - } - - protected function multiSharedLinks($type) - { - switch ($type) - { - case "create": - // great links if not made already - if (count($this->createSharedLinks) > 0) - { - $url = $this->url.$this->domainpath['create_shared_link_with_settings']; - $this->type = 'create_shared_link_with_settings'; - // build return function - $storeSharedLink = function ($data, $target) { - // check if link already made - if (isset($data->error_summary) && strpos($data->error_summary, 'shared_link_already_exists') !== false) - { - $this->getSharedLinks[] = json_encode(array("path" => $target)); - } - else - { - $this->curlCallResult($data); - } - }; - // run call - return $this->multiCall($url, $type, $storeSharedLink); - } - break; - case "get": - // now get the already made links - if (count($this->getSharedLinks) > 0) - { - $url = $this->url.$this->domainpath['list_shared_links']; - $this->type = 'list_shared_links'; - // build return function - $storeSharedLink = function ($data, $target) { - // check if link not made - if (isset($data->error_summary)) - { - $this->createSharedLinks[] = json_encode(array("path" => $target, "settings" => array("requested_visibility" => "public"))); - } - else - { - $this->curlCallResult($data); - } - }; - // run call - return $this->multiCall($url, $type, $storeSharedLink); - } - break; - } - return false; - } - - protected function multiCall(&$url, $type, &$storeSharedLink) - { - $timer = 1; - $options = array(); - // set the options array and make the calls every 250 - foreach ($this->{$type."SharedLinks"} as $query) - { - $options[] = array(CURLOPT_HTTPHEADER => array('Authorization: Bearer ' . $this->oauthToken, 'Content-Type: application/json'), CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $query); $timer++; - // check timer - if ($timer >= 550) - { - // run multi curl - $this->curlMultiExec($url, $options, $storeSharedLink); - // reset - $timer = 1; - $options = array(); - } - } - // make sure all was done - if ($timer > 1 && count($options)) - { - // run multi curl - $this->curlMultiExec($url, $options, $storeSharedLink); - } - // reset the values - $this->{$type."SharedLinks"} = array(); - // only if there is no errors - if (count($this->error_summary) > 0) - { - return false; - } - return true; - } - - public function revokeToken($token = null) - { - if ($token) - { - // set the oauth toke - $this->oauthToken = $token; - } - // set the call to revoke the token - $this->query = 'null'; - $this->type = 'revoke'; - if ($this->makeCall()) - { - return true; - } - return false; - } - - protected function setFolderPath() - { - if ('full' == $this->permissionType && isset($this->dropboxOption) && isset($this->dropboxTarget) && $this->checkString($this->dropboxTarget)) - { - if (2 == $this->dropboxOption) - { - // simply set the path - $this->targetPath = '/'.trim(strtolower($this->dropboxTarget), '/'); - - return true; - } - elseif (1 == $this->dropboxOption) - { - // make a call to get the path - $this->query = array("url" => $this->dropboxTarget); - $this->type = 'get_shared_link_metadata'; - if ($this->makeCall()) - { - return true; - } - } - } - elseif ('app' == $this->permissionType) - { - $this->targetPath = ""; - - return true; - } - return false; - } - - protected function makeCall() - { - if ($this->_isCurl()) - { - return $this->makeCurlCall(); - } - else - { - return $this->makeGetCall(); - } - } - - protected function makeGetCall() - { - $options = array( - 'http' => array( - 'header' => "Content-Type: application/json\r\n". - "Authorization: Bearer ".$this->oauthToken, - 'method' => "POST" - ), - ); - - if ($this->checkArray($this->query)) - { - $this->query = json_encode($this->query); - } - // add the query - if ($this->checkString($this->query)) - { - $options['http']['content'] = $this->query; - } - $context = stream_context_create($options); - $response = file_get_contents($this->url.$this->domainpath[$this->type], false, $context); - - // store the result - return $this->getCallResult($response); - } - - protected function getCallResult($response) - { - if ($response === FALSE) - { - $this->error_summary[] = $this->type.'_error'; - return false; - } - // store the result - return $this->setTheResult(json_decode($response)); - } - - protected function makeCurlCall() - { - // do not run creat shared link this way - $headers = array('Authorization: Bearer '. $this->oauthToken, - 'Content-Type: application/json' - ); - - $ch = curl_init($this->url.$this->domainpath[$this->type]); - - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - // check if query is set - if ($this->checkArray($this->query)) - { - $this->query = json_encode($this->query); - } - // add the query - if ($this->checkString($this->query)) - { - curl_setopt($ch, CURLOPT_POSTFIELDS, $this->query); - } - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - // curl_setopt($ch, CURLOPT_VERBOSE, 1); // debug - - $response = curl_exec($ch); - - curl_close($ch); - - // store the result - return $this->curlCallResult($response); - } - - public function curlCallResult($response) - { - if ($this->checkJson($response)) - { - $response = json_decode($response); - } - // store the result - return $this->setTheResult($response); - } - - protected function setTheResult($data) - { - // if there was an error stop!!! - if (isset($data->error_summary)) - { - $this->error_summary[] = $data->error_summary; - $this->forceReset = true; - return false; - } - - // deal with each type - switch ($this->type) - { - case "list_folder": - case "list_folder_continue": - if (isset($data->entries) && $this->checkArray($data->entries)) - { - if ($this->storeFiles($data->entries)) - { - // run the continue if needed - if (isset($data->has_more) && $data->has_more && isset($data->cursor)) - { - // start the main factory that calles for the folder data - $this->query = array("cursor" => $data->cursor); - $this->type = 'list_folder_continue'; - if ($this->makeCall()) - { - return true; - } - } - return true; - } - } - $this->error_summary[] = $this->type.'_error'; - break; - case "list_shared_links": - if (isset($data->links) && $this->checkArray($data->links)) - { - foreach ($data->links as $link) - { - if (!$this->storeSharedLink($link)) - { - // we could not stored the link - return false; - } - } - return true; - } - $this->error_summary[] = $this->type.'_error'; - break; - case "create_shared_link_with_settings": - if ($this->storeSharedLink($data)) - { - // we stored the link - return true; - } - $this->error_summary[] = $this->type.'_error'; - break; - case "get_shared_link_metadata": - if (isset($data->path_lower)) - { - $this->targetPath = $data->path_lower; - return true; - } - $this->error_summary[] = $this->type.'_error'; - break; - case "revoke": - if (is_null($data)) - { - return true; - } - $this->error_summary[] = $this->type.'_error'; - break; - } - $this->forceReset = true; - return false; - } - - protected function storeSharedLink($data) - { - // we need to store the url to DB - if (isset($data->url) && isset($data->name) && isset($data->size) && (isset($data->path) || isset($data->path_lower))) - { - $path = (isset($data->path)) ? $data->path : $data->path_lower; - $localListing = array(); - $localListing['id'] = 0; - $localListing['name'] = $data->name; - $localListing['size'] = $data->size; - $localListing['key'] = $this->fixPath($path); - $localListing['url'] = str_replace('?dl=0','?dl=1',$data->url); - $localListing['build'] = $this->build; - $localListing['external_source'] = (int) $this->sourceID; - // check if item already set - if ($id = $this->model->searchForId($localListing['key'])) - { - // update item - $localListing['id'] = $id; - } - return $this->model->save($localListing); - } - return false; - } - - protected function storeFiles($entries) - { - foreach ($entries as $item) - { - if (isset($item->{'.tag'}) && 'file' == $item->{'.tag'} && isset($item->name)) - { - $addLink = false; - // remove if not related to type - if (isset($this->addTypes) && $this->checkArray($this->addTypes)) - { - foreach ($this->addTypes as $add) - { - if (strpos($item->name,$add) !== false) - { - $addLink = true; - } - } - } - if ($addLink && isset($item->path_lower)) - { - // set based on first call - if ('get' === $this->firstCall) - { - // first check if shared link exist - $this->query = array("path" => $item->path_lower); - // set the type of call - $this->type = 'list_shared_links'; - } - else - { - // first check if shared link exist - $this->query = array("path" => $item->path_lower, "settings" => array("requested_visibility" => "public")); - // set the type of call - $this->type = 'create_shared_link_with_settings'; - } - // if we have curl the use multi curl execution - if ($this->_isCurl()) - { - // set query to worker - $this->{$this->firstCall."SharedLinks"}[] = json_encode($this->query); - } - elseif (!$this->makeCall()) - { - return false; - } - } - } - } - return true; - } - - protected function fixPath($path) - { - if ($this->checkString($this->targetPath)) - { - $path = str_replace($this->targetPath, 'VDM_pLeK_h0uEr', $path); - } - else - { - $path = 'VDM_pLeK_h0uEr'.$path; - } - return $path; - } - - protected function checkObject($object) - { - if (isset($object) && is_object($object) && count($object) > 0) - { - return true; - } - return false; - } - - protected function checkArray($array) - { - if (isset($array) && is_array($array) && count($array) > 0) - { - return true; - } - return false; - } - - protected function checkJson($string) - { - if ($this->checkString($string)) - { - json_decode($string); - return (json_last_error() === JSON_ERROR_NONE); - } - return false; - } - - protected function checkString($string) - { - if (isset($string) && is_string($string) && strlen($string) > 0) - { - return true; - } - return false; - } - - protected function _isCurl() - { - return function_exists('curl_version'); - } - - protected function curlMultiExec(&$url, &$_options, $callback = null) - { - if ($this->checkString($url)) - { - // make sure the thread size isn't greater than the # of _options - $threadSize = 20; - $threadSize = (sizeof($_options) < $threadSize) ? sizeof($_options) : $threadSize; - // set the options - $options = array(); - $options[CURLOPT_URL] = $url; - $options[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'; - $options[CURLOPT_RETURNTRANSFER] = TRUE; - $options[CURLOPT_SSL_VERIFYPEER] = FALSE; - // start multi threading :) - $handle = curl_multi_init(); - // start the first batch of requests - for ($i = 0; $i < $threadSize; $i++) - { - if (isset($_options[$i])) - { - $ch = curl_init(); - foreach ($_options[$i] as $curlopt => $string) - { - $options[$curlopt] = $string; - } - curl_setopt_array($ch, $options); - curl_multi_add_handle($handle, $ch); - } - } - // we wait for all the calls to finish (should not take long) - do { - while(($execrun = curl_multi_exec($handle, $working)) == CURLM_CALL_MULTI_PERFORM); - if($execrun != CURLM_OK) - break; - // a request was just completed -- find out which one - while($done = curl_multi_info_read($handle)) - { - if (is_callable($callback)) - { - // $info = curl_getinfo($done['handle']); - // request successful. process output using the callback function. - $output = curl_multi_getcontent($done['handle']); - $callback(json_decode($output), json_decode(end($_options[$i]))->path); - } - $key = $i + 1; - if(isset($_options[$key])) - { - // start a new request (it's important to do this before removing the old one) - $ch = curl_init(); $i++; - // add options - foreach ($_options[$key] as $curlopt => $string) - { - $options[$curlopt] = $string; - } - curl_setopt_array($ch, $options); - curl_multi_add_handle($handle, $ch); - // remove options again - foreach ($_options[$key] as $curlopt => $string) - { - unset($options[$curlopt]); - } - } - // remove the curl handle that just completed - curl_multi_remove_handle($handle, $done['handle']); - } - // stop wasting CPU cycles and rest for a couple ms - usleep(10000); - } while ($working); - // close the curl multi thread - curl_multi_close($handle); - // okay done - return true; - } - return false; - } -} diff --git a/admin/custom/dropboxupdater.php b/admin/custom/dropboxupdater.php deleted file mode 100644 index 44bff92d3..000000000 --- a/admin/custom/dropboxupdater.php +++ /dev/null @@ -1,442 +0,0 @@ - -*  @copyright Copyright (C) 2014. All Rights Reserved -*  @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html -* -**/ - -// No direct access to this file -defined('_JEXEC') or die('Restricted access'); -?> -###BOM### - -// No direct access to this file -defined('_JEXEC') or die('Restricted access'); - -/** - * Dropbox updater component helper - */ -class Dropboxupdater -{ - - /** - * update flag (if false update will not happen) - **/ - protected $okay = true; - - /** - * update flag (if false update will not happen) - **/ - protected $data = null; - - /** - * the file Key - **/ - protected $fileKey; - - /** - * allow a forced update - **/ - protected $forceUpdate; - - /** - * Todays date-time - **/ - protected $today; - - /** - * Next updat date-time - **/ - protected $next; - - /** - * update method - **/ - protected $updateMethod; - - /** - * update targets - **/ - protected $updateTarget; - - /** - * info related to this update - **/ - protected $updateInfo; - protected $infoFilePath; - - /** - * Main dropbox class - **/ - protected $dropbox; - - /** - * component parameters - **/ - protected $app_params; - - /** - * the errors - **/ - protected $errors = array(); - - /** - * everything we want done when initialized - **/ - public function __construct() - { - // get params - $this->app_params = JComponentHelper::getParams('com_###component###'); - } - - /** - * get the logged errors array - **/ - public function getErrors() - { - return $this->errors; - } - - /** - * set the error to the log - **/ - protected function setErrors($error) - { - if (###Component###Helper::checkString($error)) - { - $this->errors[] = $error; - } - elseif (###Component###Helper::checkArray($error)) - { - foreach($error as $log) - { - if (###Component###Helper::checkString($log)) - { - $this->errors[] = $log; - } - } - } - } - - /** - * update method - **/ - public function update($id, $target, $type = false, $forceUpdate = false, $sleutel = null) - { - if ($type) - { - // start fresh - $this->okay = true; - $this->data = null; - // is this a forced run - $this->forceUpdate = $forceUpdate; - // the file key - $this->fileKey = ###Component###Helper::safeString($id.$target.$type); - // set the type of this listing - $this->type = $type; - - // get the external source data being updated - $this->setExternalSourceData($id); - - // load the token if manualy set - if ($sleutel) - { - $this->setExternalSourceData($id, array('oauthtoken' => $sleutel)); - } - - // what update method is set - $this->setUpdateMethod(); - - // set the update links - $this->setUpdateTarget($target); - - // set needed dates - if ($this->okay) - { - $this->setDates(); - } - - // get info data or set if not found - if ($this->okay) - { - $this->setUpdateInfoData(); - } - - // check if update should run now - if ($this->okay) - { - $this->checkUpdateStatus(); - } - - // before update save update info incase class is called again - if($this->okay) - { - if ($this->updateInfo->updatenow) - { - // turn update to active - $this->updateInfo->updatenow = false; - $this->updateInfo->updateactive = true; - // now save the date - $this->okay = $this->saveUpdateInfo(); - } - else - { - $this->okay = false; - } - } - - // run the update if all is okay - if ($this->okay) - { - // set the config - $this->setDetailsConfig(); - // load the file - JLoader::import('dropbox', JPATH_COMPONENT_SITE.'/helpers'); - $build = 1; - if ('auto' == $this->type) - { - $build = 2; - } - // load the dropbox class - $this->dropbox = new Dropbox(###Component###Helper::getModel('local_listing', JPATH_COMPONENT_ADMINISTRATOR), $build); - // okay now update - $this->okay = $this->doUpdate(); - } - // always reset if all okay - return $this->resetUpdate(); - } - $this->setErrors('The update type is unknown.'); - return false; - } - - /** - * set the exsternal source data - */ - protected function setExternalSourceData($id, $data = array()) - { - // get the data if not set - if (!$this->data || !###Component###Helper::checkObject($this->data)) - { - // load model to get the data - $model = ###Component###Helper::getModel('external_source', JPATH_COMPONENT_ADMINISTRATOR); - $this->data = $model->getItem($id); - } - // if new data is set load it - if (###Component###Helper::checkArray($data)) - { - foreach ($data as $key => $value) - { - $this->data->$key = $value; - } - } - } - - /** - * set update mehtod - **/ - protected function setUpdateMethod() - { - if ($this->forceUpdate) - { - // this is a manual method - $this->updateMethod = 'manual'; - } - elseif (2 == $this->data->update_method) - { - // this it an auto mehtod - $this->updateMethod = 'auto'; - } - else - { - $this->okay = false; - } - } - - /** - * set update target - **/ - protected function setUpdateTarget($nr) - { - // get target based on type and position - if ('full' == $this->data->permissiontype && $nr > 0) - { - $position = $nr - 1; - if (1 == $this->data->dropboxoptions && ###Component###Helper::checkJson($this->data->sharedurl)) - { - $targets = json_decode($this->data->sharedurl)->tsharedurl; - } - elseif (2 == $this->data->dropboxoptions && ###Component###Helper::checkJson($this->data->folder)) - { - $targets = json_decode($this->data->folder)->tfolder; - } - // check if we found any - if (!isset($targets[$position]) || !###Component###Helper::checkString($targets[$position])) - { - $this->setErrors('The target Shared-url or Folder is not set.'); - $this->okay = false; - } - else - { - $this->updateTarget = $targets[$position]; - } - } - else - { - $this->updateTarget = ''; - } - } - - /** - * set the configeration for exsternal source class - **/ - protected function setDetailsConfig() - { - // reset config - $this->detailsConfig = array(); - // the source ID - $this->detailsConfig['sourceID'] = $this->data->id; - // get the legal files set - $this->detailsConfig['addTypes'] = $this->data->filetypes; - // set other config settings - $this->detailsConfig['dropboxOption'] = $this->data->dropboxoptions; - // set dropbox target - $this->detailsConfig['dropboxTarget'] = $this->updateTarget; - } - - /** - * set next update time - **/ - protected function setDates() - { - // set todays date/time - $this->today = time(); - - // set the next update date/time - if ('manual' == $this->updateMethod) - { - // set the date to two days ago to ensure the update runs now - $this->next = strtotime("-2 days"); - } - else - { - // based on the auto time we will set the next update date/time - $timer = $this->data->update_timer; - if ($timer != 0) - { - // Get Next Update Time - $this->next = strtotime('+'.$timer.' minutes', $this->today); - } - // if timer is 0 we should not update - else - { - $this->setErrors('The timer is not setup correctly.'); - $this->okay = false; - } - } - } - - /** - * set update info data - **/ - protected function setUpdateInfoData() - { - // set the info file name - $fileName = md5($this->fileKey.'info'); - // set file path - $this->infoFilePath = JPATH_COMPONENT_SITE.'/helpers/'.$fileName.'.json'; - - if (($json = @file_get_contents($this->infoFilePath)) !== FALSE) - { - $this->updateInfo = json_decode($json); - } - else - { - $this->updateInfo = new stdClass; - $this->updateInfo->nextupdate = 0; - $this->updateInfo->updateactive = false; - $this->updateInfo->updatenow = false; - } - } - - /** - * check update status - **/ - protected function checkUpdateStatus() - { - // check if there is already an update running - if ($this->updateInfo->updateactive) - { - $this->okay = false; - $this->setErrors('There is an update already running.'); - } - // check if the time has come to do the next update - elseif (('auto' == $this->updateMethod) && ($this->updateInfo->nextupdate > $this->today)) - { - $this->okay = false; - $this->setErrors('It is not yet time to run this update.'); - } - else - { - $this->updateInfo->updatenow = true; - } - } - - /** - * save the update info - **/ - protected function saveUpdateInfo() - { - return $this->saveJson(json_encode($this->updateInfo),$this->infoFilePath); - } - - /** - * update the local listing - **/ - protected function doUpdate() - { - // we need more then the normal time to run this script 5 minutes at least. - ini_set('max_execution_time', $this->app_params->get('max_execution_time', 500)); - // get data of all the shared links of all target items - if (!$this->dropbox->getFiles($this->data->oauthtoken, $this->data->permissiontype, $this->detailsConfig)) - { - $this->setErrors($this->dropbox->error_summary); - return false; - } - // if this is a manual update, then revoke the token - if ($this->forceUpdate) - { - $this->dropbox->revokeToken(); - } - return true; - } - - public function resetUpdate() - { - if ($this->okay || (isset($this->dropbox->forceReset) && $this->dropbox->forceReset)) - { - // make sure the update reset - $this->updateInfo->nextupdate = $this->next; - $this->updateInfo->updateactive = false; - $this->updateInfo->updatenow = false; - // store final update - $this->saveUpdateInfo(); - } - return $this->okay; - } - - protected function saveJson($data,$filename) - { - if (###Component###Helper::checkString($data)) - { - $fp = fopen($filename, 'w'); - fwrite($fp, $data); - fclose($fp); - return true; - } - return false; - } -} diff --git a/admin/helpers/compiler.php b/admin/helpers/compiler.php index c460f0b13..11f51b4fe 100644 --- a/admin/helpers/compiler.php +++ b/admin/helpers/compiler.php @@ -175,6 +175,16 @@ class Compiler extends Infusion $this->app->enqueueMessage('
', 'Warning'); } } + // check if we should add a EXTERNALCODE notice + if (ComponentbuilderHelper::checkArray($this->externalCodeString)) + { + // number of external code strings + $externalCount = count($this->externalCodeString); + // the correct string + $externalCodeString = ($externalCount == 1) ? JText::_('code/string') : JText::_('code/strings'); + // the notice + $this->app->enqueueMessage(JText::sprintf('There has been %s - %s added to this component as EXTERNALCODE. To avoid shipping your component with malicious %s always make sure that the correct code/string values were used.', $externalCount, $externalCodeString, $externalCodeString), 'Notice'); + } // end the timer here $this->time_end = microtime(true); $this->secondsCompiled = $this->time_end - $this->time_start; @@ -691,20 +701,20 @@ class Compiler extends Infusion { // Load escaped code since the target endhash has changed $this->loadEscapedCode($file, $target, $lineBites); - $this->app->enqueueMessage(JText::sprintf('Custom code could not be added to %s please review the file at line %s. This could be due to a change to lines below the custom code.', $target['path'], $target['from_line']), 'warning'); + $this->app->enqueueMessage(JText::sprintf('Custom code could not be added to %s please review the file at line %s. This could be due to a change to lines below the custom code.', $target['path'], $target['from_line']), 'Warning'); } } else { // Load escaped code since the target hash has changed $this->loadEscapedCode($file, $target, $lineBites); - $this->app->enqueueMessage(JText::sprintf('Custom code could not be added to %s please review the file at line %s. This could be due to a change to lines above the custom code.', $target['path'], $target['from_line']), 'warning'); + $this->app->enqueueMessage(JText::sprintf('Custom code could not be added to %s please review the file at line %s. This could be due to a change to lines above the custom code.', $target['path'], $target['from_line']), 'Warning'); } } else { // Give developer a notice that file is not found. - $this->app->enqueueMessage(JText::sprintf('File %s could not be found, so the custom code for this file could not be addded.', $target['path']), 'warning'); + $this->app->enqueueMessage(JText::sprintf('File %s could not be found, so the custom code for this file could not be addded.', $target['path']), 'Warning'); } } } diff --git a/admin/helpers/compiler/a_Get.php b/admin/helpers/compiler/a_Get.php index 9e2b2020a..aafa75836 100644 --- a/admin/helpers/compiler/a_Get.php +++ b/admin/helpers/compiler/a_Get.php @@ -144,7 +144,7 @@ class Get public $customCodeMemory = array(); /** - * The custom code in local files that aready exist in system + * The custom code in local files that already exist in system * * @var array */ @@ -164,6 +164,13 @@ class Get */ protected $codeAreadyDone = array(); + /** + * The external code/string to be added + * + * @var array + */ + protected $externalCodeString = array(); + /* * The line numbers Switch * @@ -240,10 +247,10 @@ class Get * @var array */ public $langStringTargets = array( - 'Joomla.JText._(', - 'JText::script(', - 'JText::_(', - 'JText::sprintf(' + 'Joomla'.'.JText._(', + 'JText:'.':script(', + 'JText:'.':_(', + 'JText:'.':sprintf(' ); /** @@ -3164,10 +3171,10 @@ class Get // insure string is not broken $content = str_replace('COM_###COMPONENT###', $this->langPrefix, $content); // first get the Joomla.JText._() - if (in_array('Joomla.JText._(', $langStringTargets)) + if (in_array('Joomla'.'.JText._(', $langStringTargets)) { - $jsTEXT[] = ComponentbuilderHelper::getAllBetween($content, "Joomla.JText._('", "'"); - $jsTEXT[] = ComponentbuilderHelper::getAllBetween($content, 'Joomla.JText._("', '"'); + $jsTEXT[] = ComponentbuilderHelper::getAllBetween($content, "Joomla".".JText._('", "'"); + $jsTEXT[] = ComponentbuilderHelper::getAllBetween($content, 'Joomla.'.'JText._("', '"'); // combine into one array $jsTEXT = ComponentbuilderHelper::mergeArrays($jsTEXT); // we need to add a check to insure these JavaScript lang matchup @@ -3178,11 +3185,11 @@ class Get $this->langMismatch = ComponentbuilderHelper::mergeArrays(array($jsTEXT, $this->langMismatch)); } } - // now get the JText::script() - if (in_array('JText::script(', $langStringTargets)) + // now get the JText: :script() + if (in_array('JText:'.':script(', $langStringTargets)) { - $scTEXT[] = ComponentbuilderHelper::getAllBetween($content, "JText::script('", "'"); - $scTEXT[] = ComponentbuilderHelper::getAllBetween($content, 'JText::script("', '"'); + $scTEXT[] = ComponentbuilderHelper::getAllBetween($content, "JText:".":script('", "'"); + $scTEXT[] = ComponentbuilderHelper::getAllBetween($content, 'JText:'.':script("', '"'); // combine into one array $scTEXT = ComponentbuilderHelper::mergeArrays($scTEXT); // we need to add a check to insure these JavaScript lang matchup @@ -3197,7 +3204,7 @@ class Get foreach ($langStringTargets as $langStringTarget) { // need some special treatment here - if ($langStringTarget === 'Joomla.JText._(' || $langStringTarget === 'JText::script(') + if ($langStringTarget === 'Joomla'.'.JText._(' || $langStringTarget === 'JText:'.':script(') { continue; } @@ -3651,19 +3658,130 @@ class Get { if (ComponentbuilderHelper::checkString($string)) { - return $this->setLangStrings($this->setCustomCodeData($string)); + return $this->setLangStrings($this->setCustomCodeData($this->setExternalCodeString($string))); } return $string; } - + + /** + * Set the external code string & load it in to string + * + * @param string $string The content to check + * + * @return string + * + */ + public function setExternalCodeString($string) + { + // check if content has custom code place holder + if (strpos($string, '[EXTERNA'.'LCODE=') !== false) + { + // target content + $bucket = array(); + $found = ComponentbuilderHelper::getAllBetween($string, '[EXTERNA'.'LCODE=', ']'); + if (ComponentbuilderHelper::checkArray($found)) + { + // build local bucket + foreach ($found as $target) + { + // check if the target is valid URL or path + if ((!filter_var($target, FILTER_VALIDATE_URL) === false && ComponentbuilderHelper::urlExists($target)) + || (JPath::clean($target) === $target && JFile::exists($target))) + { + $this->getExternalCodeString($target, $bucket); + } + // give notice that target is not a valid url/path + else + { + // set key + $key = '[EXTERNA'.'LCODE='.$target.']'; + // set the notice + $this->app->enqueueMessage(JText::sprintf('The %s is not a valid url/path!', $key), 'Warning'); + // remove the placeholder + $bucket[$key] = ''; + } + } + // now update local string if bucket has values + if (ComponentbuilderHelper::checkArray($bucket)) + { + $string = $this->setPlaceholders($string, $bucket); + } + } + } + return $string; + } + + /** + * Get the External Code/String + * + * @param string $string The content to check + * @param array $bucket The Placeholders bucket + * + * @return void + * + */ + protected function getExternalCodeString($target, &$bucket) + { + // set key + $key = '[EXTERNA'.'LCODE=' . $target . ']'; + // set URL key + $targetKey = trim($target); + // check if we already fetched this + if (!isset($this->externalCodeString[$targetKey])) + { + // get the data string (code) + $this->externalCodeString[$targetKey] = ComponentbuilderHelper::getFileContents($targetKey); + // did we get any value + if (ComponentbuilderHelper::checkString($this->externalCodeString[$targetKey])) + { + // check for changes + $liveHash = md5($this->externalCodeString[$targetKey]); + // check if it exist local + if ($hash = ComponentbuilderHelper::getVar('external_code', $targetKey, 'target', 'hash')) + { + if ($hash !== $liveHash) + { + // update the hash since it changed + $object = new stdClass(); + $object->target = $targetKey; + $object->hash = $liveHash; + // update local hash + $this->db->updateObject('#__componentbuilder_external_code', $object, 'target'); + // give notice of the change + $this->app->enqueueMessage(JText::sprintf('The code/string from %s has been changed since the last compilation, please investigate to insure the changes are safe!', $key), 'Warning'); + } + } + else + { + // add the hash to track changes + $object = new stdClass(); + $object->target = $targetKey; + $object->hash = $liveHash; + // insert local hash + $this->db->insertObject('#__componentbuilder_external_code', $object); + // give notice the first time this is added + $this->app->enqueueMessage(JText::sprintf('The code/string from %s has been added for the first time, please investigate to insure the correct code/string was used!', $key), 'Notice'); + } + } + else + { + // set notice that we could not get a valid string from the target + $this->app->enqueueMessage(JText::sprintf('The %s returned an invalid string!', $key), 'Warning'); + } + } + // add to local bucket + if (isset($this->externalCodeString[$targetKey])) + { + $bucket[$key] = $this->externalCodeString[$targetKey]; + } + } + /** * We start set the custom code data & can load it in to string * * @param string $string The content to check - * @param bool $insert Should we insert the code into the content - * @param bool $bool Should we return bool on success * - * @return string|bool based on sig + * @return string * */ public function setCustomCodeData($string) @@ -3690,11 +3808,11 @@ class Get $getFuncName = trim($key); if (!isset($this->functionNameMemory[$getFuncName])) { - if (!$found = ComponentbuilderHelper::getVar('custom_code', $getFuncName, 'function_name', 'id')) + if (!$found_local = ComponentbuilderHelper::getVar('custom_code', $getFuncName, 'function_name', 'id')) { continue; } - $this->functionNameMemory[$getFuncName] = $found; + $this->functionNameMemory[$getFuncName] = $found_local; } $id = (int) $this->functionNameMemory[$getFuncName]; } @@ -3711,11 +3829,11 @@ class Get $getFuncName = trim($array[0]); if (!isset($this->functionNameMemory[$getFuncName])) { - if (!$found = ComponentbuilderHelper::getVar('custom_code', $getFuncName, 'function_name', 'id')) + if (!$found_local = ComponentbuilderHelper::getVar('custom_code', $getFuncName, 'function_name', 'id')) { continue; } - $this->functionNameMemory[$getFuncName] = $found; + $this->functionNameMemory[$getFuncName] = $found_local; } $id = (int) $this->functionNameMemory[$getFuncName]; } @@ -4282,6 +4400,9 @@ class Get foreach ($bucket as $nr => &$customCode) { $customCode['code'] = base64_decode($customCode['code']); + // always insure that the external code is loaded + $customCode['code'] = $this->setExternalCodeString($customCode['code']); + // set the lang only if needed if ($setLang) { $customCode['code'] = $this->setLangStrings($customCode['code']); @@ -4618,6 +4739,7 @@ class Get { // reset found comment type $commentType = 0; + $this->app->enqueueMessage(JText::sprintf('We found dynamic code all in one line, and ignored it! Please review (%s) for more details!', $path), 'Warning'); continue; } // do a quick check to insure we have an id diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php index ee510982e..2112ea662 100644 --- a/admin/helpers/compiler/e_Interpretation.php +++ b/admin/helpers/compiler/e_Interpretation.php @@ -255,7 +255,7 @@ class Interpretation extends Fields $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\'));'; + $this->fileContentStatic['###LICENSE_LOCKED_DEFINED###'] = PHP_EOL . PHP_EOL . 'defined(\'' . $_VDM . '\') or die(JText:'.':_(\'NIE_REG_NIE\'));'; } } else @@ -300,7 +300,7 @@ class Interpretation extends Fields $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->enqueueMessage(JText:".":_('NIE_REG_NIE'), 'error');"; $statment[] = "\t\t\t\$app->redirect('index.php');"; $statment[] = "\t\t\treturn false;"; $statment[] = "\t\t}"; @@ -2070,7 +2070,7 @@ class Interpretation extends Fields { $this->langContent['site'][$langKeyWord] = 'Not authorised to view ' . $view['settings']->code . '!'; } - $accessCheck[] = "\t\t\t\$app->enqueueMessage(JText::_('" . $langKeyWord . "'), 'error');"; + $accessCheck[] = "\t\t\t\$app->enqueueMessage(JText:".":_('" . $langKeyWord . "'), 'error');"; $accessCheck[] = $redirectMessage; $accessCheck[] = "\t\t\t\$app->redirect(" . $redirectString . ");"; $accessCheck[] = "\t\t\treturn false;"; @@ -2124,7 +2124,7 @@ class Interpretation extends Fields $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');"; + $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 @@ -4571,7 +4571,7 @@ class Interpretation extends Fields $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\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 @@ -4588,7 +4588,7 @@ class Interpretation extends Fields $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\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 @@ -4605,7 +4605,7 @@ class Interpretation extends Fields $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\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 @@ -4642,8 +4642,8 @@ class Interpretation extends Fields $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'));"; + $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 . "%') );"; @@ -4657,7 +4657,7 @@ class Interpretation extends Fields $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\t\$app->enqueueMessage(JText:".":_('All related items was removed from the #__assets table'));"; $script .= PHP_EOL . "\t\t}"; // done $script .= PHP_EOL; @@ -4995,7 +4995,7 @@ class Interpretation extends Fields $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\t\$this->setError(JText:".":_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));"; $batchmove[] = "\t\t\treturn false;"; $batchmove[] = "\t\t}" . $customScript; @@ -5045,7 +5045,7 @@ class Interpretation extends Fields $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\t\$this->setError(JText:".":_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));"; $batchmove[] = PHP_EOL . "\t\t\t\treturn false;"; $batchmove[] = "\t\t\t}"; @@ -5063,7 +5063,7 @@ class Interpretation extends Fields $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\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}"; @@ -5249,7 +5249,7 @@ class Interpretation extends Fields } $batchcopy[] = PHP_EOL . "\t\t\t{"; $batchcopy[] = PHP_EOL . "\t\t\t\t//" . $this->setLine(__LINE__) . " Not fatal error"; - $batchcopy[] = PHP_EOL . "\t\t\t\t\$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', \$pk));"; + $batchcopy[] = PHP_EOL . "\t\t\t\t\$this->setError(JText:".":sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', \$pk));"; $batchcopy[] = PHP_EOL . "\t\t\t\tcontinue;"; $batchcopy[] = PHP_EOL . "\t\t\t}"; @@ -5266,7 +5266,7 @@ class Interpretation extends Fields $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\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}"; @@ -5427,7 +5427,7 @@ class Interpretation extends Fields { $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\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 . "']);"; } @@ -5435,7 +5435,7 @@ class Interpretation extends Fields { $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\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 . "']);"; } @@ -6119,7 +6119,7 @@ class Interpretation extends Fields // 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'] . '); ?>'; + $itemCode = '' . $item['code'] . '); ?>'; } elseif (isset($item['custom']) && ComponentbuilderHelper::checkArray($item['custom']) && $item['custom']['text'] === 'user') { @@ -6221,9 +6221,9 @@ class Interpretation extends Fields 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\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\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>">'; $customAdminView .= PHP_EOL . "\t\t\t"; } $customAdminView .= PHP_EOL . "\t\t\t" . ''; @@ -6396,7 +6396,7 @@ class Interpretation extends Fields { $class = 'nowrap'; } - $title = ""; + $title = ""; if ($item['sort']) { $title = "listDirn, \$this->listOrder); ?>"; @@ -6415,7 +6415,7 @@ class Interpretation extends Fields $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\t"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; } @@ -6741,7 +6741,7 @@ class Interpretation extends Fields $body .= PHP_EOL; } // start tab - $body .= PHP_EOL . "\t"; + $body .= PHP_EOL . "\t"; // add the main $body .= PHP_EOL . "\t\t" . '
'; $body .= $main; @@ -6924,7 +6924,7 @@ class Interpretation extends Fields } $body .= PHP_EOL . PHP_EOL . "\t"; // set the default publishing tab - $body .= PHP_EOL . "\t"; + $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t\t" . '
'; if ($items_one) { @@ -6956,7 +6956,7 @@ class Interpretation extends Fields } // set the permissions tab $body .= PHP_EOL . PHP_EOL . "\tcanDo->get('core.admin')) : ?>"; - $body .= PHP_EOL . "\t"; + $body .= PHP_EOL . "\t"; $body .= PHP_EOL . "\t\t" . '
'; $body .= PHP_EOL . "\t\t\t" . '
'; $body .= PHP_EOL . "\t\t\t\t" . '
'; @@ -7278,7 +7278,7 @@ class Interpretation extends Fields // 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'] . '); ?>'; + $itemCode = '' . $item['code'] . '); ?>'; } elseif ($item['custom']['text'] === 'user') { @@ -7393,9 +7393,9 @@ class Interpretation extends Fields 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\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\t" . 'fileContentStatic['###COMPONENT###'] . '_' . $customLinkView['NAME'] . "'" . '); ?>">'; $customAdminView .= PHP_EOL . "\t\t\t"; } $customAdminView .= PHP_EOL . "\t\t\t" . '
'; @@ -7477,29 +7477,29 @@ class Interpretation extends Fields // 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" . '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" . '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" . '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" . '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" . ''; @@ -7523,7 +7523,7 @@ class Interpretation extends Fields $body .= PHP_EOL . ''; $body .= PHP_EOL . ''; $body .= PHP_EOL . "\t" . '
'; - $body .= PHP_EOL . "\t\t" . ''; + $body .= PHP_EOL . "\t\t" . ''; $body .= PHP_EOL . "\t" . '
'; $body .= PHP_EOL . ''; // return the build @@ -7572,12 +7572,12 @@ class Interpretation extends Fields // add the new buttons if ($addNewButon == 1 || $addNewButon == 2) { - $head .= PHP_EOL . $tabB . "\t" . ' langPrefix . "_NEW'" . '); ?>'; + $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'" . '); ?>'; + $head .= PHP_EOL . $tabB . "\t" . ' langPrefix . "_CLOSE_NEW'" . '); ?>'; } // close group button if needed if ($addNewButon == 2) @@ -7642,7 +7642,7 @@ class Interpretation extends Fields $firstLink = false; } $head .= PHP_EOL . "\t\t"; - $head .= PHP_EOL . "\t\t\t"; + $head .= PHP_EOL . "\t\t\t"; $head .= PHP_EOL . "\t\t"; $controller++; } @@ -7651,10 +7651,10 @@ class Interpretation extends Fields $data_type = (2 == $this->footableVersion) ? 'data-type="numeric"' : 'data-type="number"'; // set default $head .= PHP_EOL . "\t\t" . ''; - $head .= PHP_EOL . "\t\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\t"; $head .= PHP_EOL . "\t\t"; $head .= PHP_EOL . "\t"; $head .= PHP_EOL . ""; @@ -8017,7 +8017,7 @@ class Interpretation extends Fields $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\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###'] . "'))"; @@ -8033,7 +8033,7 @@ class Interpretation extends Fields $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\$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}"; @@ -8133,7 +8133,7 @@ class Interpretation extends Fields $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\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###'] . "'))"; @@ -8155,7 +8155,7 @@ class Interpretation extends Fields $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\$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}"; @@ -8164,7 +8164,7 @@ class Interpretation extends Fields $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\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###'] . "'))"; @@ -8188,7 +8188,7 @@ class Interpretation extends Fields { $this->langContent[$this->lang][$selectImportFileNote] = 'Select the file to import data to ' . $viewName_list . '.'; } - $method[] = "\t\t\t\t\$message = JText::_('" . $selectImportFileNote . "');"; + $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]) { @@ -8202,7 +8202,7 @@ class Interpretation extends Fields $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\$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}"; @@ -8522,7 +8522,7 @@ class Interpretation extends Fields $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\$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}"; @@ -8543,7 +8543,7 @@ class Interpretation extends Fields $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\$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[] = \""; @@ -9895,7 +9895,7 @@ class Interpretation extends Fields $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));"; + $function[] = "\t\t\t\t\$_filter[] = JHtml::_('select.option', \$" . $filter['code'] . ", JText:".":_(\$text));"; } elseif ($filter['type'] === 'user') { @@ -9966,7 +9966,7 @@ class Interpretation extends Fields $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'- 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);"; @@ -9975,7 +9975,7 @@ class Interpretation extends Fields $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'- 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);"; @@ -10000,7 +10000,7 @@ class Interpretation extends Fields $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'- 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);"; @@ -10009,7 +10009,7 @@ class Interpretation extends Fields $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'- 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);"; @@ -10047,7 +10047,7 @@ class Interpretation extends Fields $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\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);"; @@ -10057,7 +10057,7 @@ class Interpretation extends Fields $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\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);"; @@ -11146,7 +11146,7 @@ class Interpretation extends Fields // build toolbar $toolBar = "JFactory::getApplication()->input->set('hidemainmenu', true);"; - $toolBar .= PHP_EOL . "\t\tJToolBarHelper::title(JText::_('" . $viewNameLang_readonly . "'), '" . $viewName . "');"; + $toolBar .= PHP_EOL . "\t\tJToolBarHelper::title(JText:".":_('" . $viewNameLang_readonly . "'), '" . $viewName . "');"; $toolBar .= PHP_EOL . "\t\tJToolBarHelper::cancel('" . $viewName . ".cancel', 'JTOOLBAR_CLOSE');"; } else @@ -11162,7 +11162,7 @@ class Interpretation extends Fields $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 . 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{"; @@ -11418,8 +11418,8 @@ class Interpretation extends Fields $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')"; + $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])) @@ -11430,20 +11430,20 @@ class Interpretation extends Fields { if ($filter['type'] === 'category') { - $fields .= "," . PHP_EOL . "\t\t\t'c.category_title' => JText::_('" . $filter['lang'] . "')"; + $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'] . "')"; + $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." . $filter['code'] . "' => JText:".":_('" . $filter['lang'] . "')"; } } } } - $fields .= "," . PHP_EOL . "\t\t\t'a.id' => JText::_('JGRID_HEADING_ID')"; + $fields .= "," . PHP_EOL . "\t\t\t'a.id' => JText:".":_('JGRID_HEADING_ID')"; $fields .= PHP_EOL . "\t\t);"; // return fields return $fields; @@ -11638,11 +11638,11 @@ class Interpretation extends Fields $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\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\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}"; @@ -12132,7 +12132,7 @@ class Interpretation extends Fields $display[] = '
'; $display[] = "\t" . '
'; $display[] = "\t 'cpanel')); ?>"; - $display[] = PHP_EOL . "\t\t"; + $display[] = PHP_EOL . "\t\t"; $display[] = "\t\t" . '
'; // set the tab to insure correct spacing $tab = "\t\t\t"; @@ -12168,7 +12168,7 @@ class Interpretation extends Fields foreach ($builder as $tabname => $accordians) { $alias = ComponentbuilderHelper::safeString($tabname); - $display[] = PHP_EOL . "\t\t"; + $display[] = PHP_EOL . "\t\t"; $display[] = "\t\t" . '
'; $display[] = $tab . '
'; $display[] = $tab . "\t '" . $alias . "_one')); ?>"; @@ -12356,7 +12356,7 @@ class Interpretation extends Fields // set the code name $codeName = ComponentbuilderHelper::safeString($this->componentData->name_code); // set dashboard - $menus .= "JHtmlSidebar::addEntry(JText::_('" . $lang . "_DASHBOARD'), 'index.php?option=com_" . $codeName . "&view=" . $codeName . "', \$submenu === '" . $codeName . "');"; + $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) @@ -12384,7 +12384,7 @@ class Interpretation extends Fields } $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 . "');"; + $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])) @@ -12397,7 +12397,7 @@ class Interpretation extends Fields } 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 . "');"; + $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; } @@ -12503,13 +12503,13 @@ class Interpretation extends Fields $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 . "');"; + $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 . "');"; + $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}"; @@ -12547,13 +12547,13 @@ class Interpretation extends Fields { $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 . "');"; + $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 . "');"; + $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}"; diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index 570f04164..8d2e6fe9a 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -1736,6 +1736,49 @@ abstract class ComponentbuilderHelper return false; } + /** + * Check if the url exist + * + * @param string $url The url to check + * + * @return bool If exist true + * + */ + public static function urlExists($url) + { + $exists = false; + // check if we can use curl + if (function_exists('curl_version')) + { + // initiate curl + $ch = curl_init($url); + // CURLOPT_NOBODY (do not return body) + curl_setopt($ch, CURLOPT_NOBODY, true); + // make call + $result = curl_exec($ch); + // check return value + if ($result !== false) + { + // get the http CODE + $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if ($statusCode !== 404) + { + $exists = true; + } + } + // close the connection + curl_close($ch); + } + elseif ($headers = @get_headers($url)) + { + if(isset($headers[0]) && is_string($headers[0]) && strpos($headers[0],'404') === false) + { + $exists = true; + } + } + return $exists; + } + /** * Get the file path or url * diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini index 7d9c3a6c3..32afdf735 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini @@ -873,7 +873,7 @@ COM_COMPONENTBUILDER_ALIAS="Alias" COM_COMPONENTBUILDER_ALIGNMENT="Alignment" COM_COMPONENTBUILDER_ALL="All" COM_COMPONENTBUILDER_ALL_IS_GOOD_PLEASE_CHECK_AGAIN_LATTER="All is good, please check again latter." -COM_COMPONENTBUILDER_ALL_IS_GOOD_THERE_IN_NO_NOTICE_AT_THIS_TIME="All is good, there in no notice at this time." +COM_COMPONENTBUILDER_ALL_IS_GOOD_THERE_IS_NO_NOTICE_AT_THIS_TIME="All is good, there is no notice at this time." COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_ON_THIS_PAGE_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE="All unsaved work on this page will be lost, are you sure you want to continue?" COM_COMPONENTBUILDER_ALWAYS_ADD="Always Add" COM_COMPONENTBUILDER_ALWAYS_INSURE_THAT_YOU_HAVE_YOUR_LOCAL_COMPONENTS_BACKED_UP_BY_MAKING_AN_EXPORT_OF_ALL_YOUR_LOCAL_COMPONENTS_BEFORE_IMPORTING_ANY_NEW_COMPONENTS_SMALLMAKE_BSUREB_TO_MOVE_THIS_ZIPPED_BACKUP_PACKAGE_OUT_OF_THE_TMP_FOLDER_BEFORE_DOING_AN_IMPORTSMALLBR_IF_YOU_ARE_IMPORTING_A_PACKAGE_OF_A_THREERD_PARTY_JCB_PACKAGE_DEVELOPER_BMAKE_SURE_IT_IS_A_REPUTABLE_JCB_PACKAGE_DEVELOPERSB="Always insure that you have your local components backed up, by making an export of all your local components before importing any new components. (Make SURE to move this zipped backup package out of the tmp folder before doing an import)
If you are importing a package of a 3rd party JCB package developer, make sure it is a reputable JCB package developers!" @@ -2135,7 +2135,7 @@ COM_COMPONENTBUILDER_CONFIG_AUTHOR_EMAIL_LABEL="Author Email" COM_COMPONENTBUILDER_CONFIG_AUTHOR_NAME_DESC="The name of the author of this component." COM_COMPONENTBUILDER_CONFIG_AUTHOR_NAME_LABEL="Author Name" COM_COMPONENTBUILDER_CONFIG_AUTO_LOAD="Auto" -COM_COMPONENTBUILDER_CONFIG_BACKUPCRONJOB_NOTE_DESCRIPTION="You can run a cronjob that will backup all your components as they are mapped in JCB.

USE THE FOLLOWING: loading...

Please not that if your Joomla website has a Firewall installed, it will not allow cronjob via direct URL (most of the time), you will then need to adapt the cornjob request to look like a browser. For more info please read https://stackoverflow.com/a/31597823/1429677 +COM_COMPONENTBUILDER_CONFIG_BACKUPCRONJOB_NOTE_DESCRIPTION="You can run a cronjob that will backup all your components as they are mapped in JCB.

USE THE FOLLOWING: loading...

Please note that if your Joomla website has a Firewall installed, it will not allow cronjob via direct URL (most of the time), you will then need to adapt the cornjob request to look like a browser. For more info please read https://stackoverflow.com/a/31597823/1429677