diff --git a/README.md b/README.md index f42ef9898..8ab0e94ec 100644 --- a/README.md +++ b/README.md @@ -144,11 +144,11 @@ TODO + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 1st June, 2020 ++ *Last Build*: 24th June, 2020 + *Version*: 2.11.2 + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **282524** ++ *Line count*: **282642** + *Field count*: **1522** + *File count*: **1785** + *Folder count*: **295** diff --git a/admin/README.txt b/admin/README.txt index f42ef9898..8ab0e94ec 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -144,11 +144,11 @@ TODO + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 1st June, 2020 ++ *Last Build*: 24th June, 2020 + *Version*: 2.11.2 + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **282524** ++ *Line count*: **282642** + *Field count*: **1522** + *File count*: **1785** + *Folder count*: **295** diff --git a/admin/compiler/joomla_3/Helper.php b/admin/compiler/joomla_3/Helper.php index a33b227ea..5d0f8e464 100644 --- a/admin/compiler/joomla_3/Helper.php +++ b/admin/compiler/joomla_3/Helper.php @@ -18,6 +18,7 @@ defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Language\Language; +use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper;###ADMIN_HELPER_CLASS_HEADER### diff --git a/admin/compiler/joomla_3/Helper_site.php b/admin/compiler/joomla_3/Helper_site.php index 4faaf7a16..c3e36bd54 100644 --- a/admin/compiler/joomla_3/Helper_site.php +++ b/admin/compiler/joomla_3/Helper_site.php @@ -18,6 +18,7 @@ defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Language\Language; +use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper;###SITE_HELPER_CLASS_HEADER### diff --git a/admin/compiler/joomla_3/edit_site.php b/admin/compiler/joomla_3/edit_site.php index f9362c09c..17f2e9277 100644 --- a/admin/compiler/joomla_3/edit_site.php +++ b/admin/compiler/joomla_3/edit_site.php @@ -24,9 +24,10 @@ JHtml::_('formbehavior.chosen', 'select'); JHtml::_('behavior.keepalive'); JHtml::_('behavior.tabstate'); JHtml::_('behavior.calendar'); -$componentParams = $this->params; // will be removed just use $this->params instead ?> +
The path (%s) could not be used.
', + $path + ), 'Error' + ); + continue; + } // setup the folder if (!JFolder::exists($path)) @@ -2878,7 +2899,7 @@ class Structure extends Get // move the file to its place JFile::copy( $this->templatePath . '/' . $item, - $path . '/' . $new, '', true + $path . '/' . $new ); // count the file created $this->fileCount++; @@ -2934,9 +2955,10 @@ class Structure extends Get 'rename' => 1); $this->componentData->folders[] = $importView; // move the phpspreadsheet Folder (TODO we must move this to a library package) - $PHPExcel = array('folderpath' => 'JPATH_LIBRARIES/phpspreadsheet/vendor', - 'path' => '/libraries/phpspreadsheet/', - 'rename' => 0); + $PHPExcel + = array('folderpath' => 'JPATH_LIBRARIES/phpspreadsheet/vendor', + 'path' => '/libraries/phpspreadsheet/', + 'rename' => 0); $this->componentData->folders[] = $PHPExcel; } if (2 == $this->uikit || 1 == $this->uikit) diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php index 1cbc5af5a..14f012682 100644 --- a/admin/helpers/compiler/e_Interpretation.php +++ b/admin/helpers/compiler/e_Interpretation.php @@ -5260,7 +5260,10 @@ class Interpretation extends Fields . " this is where you want to load your module position"; $addModule[] = $this->_t(3) . "\$modules = JModuleHelper::getModules(\$position);"; - $addModule[] = $this->_t(3) . "if (\$modules)"; + $addModule[] = $this->_t(3) . "if (" + . $this->fileContentStatic[$this->hhh . 'Component' + . $this->hhh] + . "Helper::checkArray(\$modules, true))"; $addModule[] = $this->_t(3) . "{"; $addModule[] = $this->_t(4) . "//" . $this->setLine(__LINE__) . " set the place holder"; @@ -12622,10 +12625,11 @@ class Interpretation extends Fields 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) + $publishingPerOR = array(); + $allToBeChekcedOR = array('core.edit.created_by', + 'core.edit.created', + 'core.edit.state'); + foreach ($allToBeChekcedOR as $core_permission) { if ($coreLoad && isset($core[$core_permission]) && isset($this->permissionBuilder['global'][$core[$core_permission]]) @@ -12638,13 +12642,38 @@ class Interpretation extends Fields )) { // set permissions. - $publishingPer[] = "\$this->canDo->get('" + $publishingPerOR[] = "\$this->canDo->get('" . $core[$core_permission] . "')"; } else { // set permissions. - $publishingPer[] = "\$this->canDo->get('" . $core_permission + $publishingPerOR[] = "\$this->canDo->get('" . $core_permission + . "')"; + } + } + $publishingPerAND = array(); + $allToBeChekcedAND = array('core.delete', 'core.edit.state'); + foreach ($allToBeChekcedAND 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( + $view_name_single, + $this->permissionBuilder['global'][$core[$core_permission]] + )) + { + // set permissions. + $publishingPerAND[] = "\$this->canDo->get('" + . $core[$core_permission] . "')"; + } + else + { + // set permissions. + $publishingPerAND[] = "\$this->canDo->get('" . $core_permission . "')"; } } @@ -12655,8 +12684,11 @@ class Interpretation extends Fields { $tabs .= $_customTabHTML; } + // add the AND values to OR + $publishingPerOR[] = '(' . implode(' && ', $publishingPerAND) . ')'; + // now build the complete showhide behaviour for the publishing area $tabs .= PHP_EOL . PHP_EOL . $this->_t(1) . ""; // set the default publishing tab $tabs .= PHP_EOL . $this->_t(1) @@ -20821,7 +20853,7 @@ class Interpretation extends Fields // move the image to its place JFile::copy( JPATH_SITE . '/' . $path, - $imagePath . '/vdm-component.' . $type, '', true + $imagePath . '/vdm-component.' . $type ); // now set the type to global for re-use $this->componentImageType = $type; @@ -21060,8 +21092,7 @@ class Interpretation extends Fields } // move the image to its place JFile::copy( - JPATH_SITE . '/' . $path, $imagePath . '/' . $imageName, - '', true + JPATH_SITE . '/' . $path, $imagePath . '/' . $imageName ); } } diff --git a/admin/helpers/compiler/f_Infusion.php b/admin/helpers/compiler/f_Infusion.php index 6e2e3ca9d..f0f9689f4 100644 --- a/admin/helpers/compiler/f_Infusion.php +++ b/admin/helpers/compiler/f_Infusion.php @@ -1077,6 +1077,9 @@ class Infusion extends Interpretation ); } + // setup the layouts + $this->setCustomViewLayouts(); + // ADMIN_HELPER_CLASS_HEADER $this->fileContentStatic[$this->hhh . 'ADMIN_HELPER_CLASS_HEADER' . $this->hhh] @@ -1760,6 +1763,7 @@ class Infusion extends Interpretation &$this->placeholders, &$this->hhh) ); } + // setup the layouts $this->setCustomViewLayouts(); } diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index 433fc969a..7656d19ca 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -13,6 +13,7 @@ defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Language\Language; +use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; use PhpOffice\PhpSpreadsheet\IOFactory; @@ -5787,6 +5788,18 @@ abstract class ComponentbuilderHelper return date('Y' . $spacer . 'm' . $spacer . 'd', $date); } + /** + * set the date as 03/05/2004 + */ + public static function setDayMonthYear($date, $spacer = '/') + { + if (!self::isValidTimeStamp($date)) + { + $date = strtotime($date); + } + return date('d' . $spacer . 'm' . $spacer . 'Y', $date); + } + /** * Check if string is a valid time stamp */ diff --git a/admin/models/admin_view.php b/admin/models/admin_view.php index 0f469f420..abddb2482 100644 --- a/admin/models/admin_view.php +++ b/admin/models/admin_view.php @@ -800,8 +800,8 @@ class ComponentbuilderModelAdmin_view extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1491,8 +1491,15 @@ class ComponentbuilderModelAdmin_view extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "admin_view", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('admin_view', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "admin_view", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/class_method.php b/admin/models/class_method.php index 004874715..0ec5d128d 100644 --- a/admin/models/class_method.php +++ b/admin/models/class_method.php @@ -342,8 +342,8 @@ class ComponentbuilderModelClass_method extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -972,8 +972,15 @@ class ComponentbuilderModelClass_method extends JModelAdmin $data['name'] = ComponentbuilderHelper::safeClassFunctionName($data['name']); // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "class_method", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('class_method', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "class_method", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/class_property.php b/admin/models/class_property.php index 6a6af7baf..a79d84a9b 100644 --- a/admin/models/class_property.php +++ b/admin/models/class_property.php @@ -333,8 +333,8 @@ class ComponentbuilderModelClass_property extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -963,8 +963,15 @@ class ComponentbuilderModelClass_property extends JModelAdmin $data['name'] = ComponentbuilderHelper::safeClassFunctionName($data['name']); // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "class_property", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('class_property', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "class_property", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/custom_admin_view.php b/admin/models/custom_admin_view.php index a21f8c5c7..91af2d657 100644 --- a/admin/models/custom_admin_view.php +++ b/admin/models/custom_admin_view.php @@ -506,8 +506,8 @@ class ComponentbuilderModelCustom_admin_view extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1125,8 +1125,15 @@ class ComponentbuilderModelCustom_admin_view extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "custom_admin_view", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('custom_admin_view', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "custom_admin_view", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/dynamic_get.php b/admin/models/dynamic_get.php index d897a4af4..a5589053e 100644 --- a/admin/models/dynamic_get.php +++ b/admin/models/dynamic_get.php @@ -520,8 +520,8 @@ class ComponentbuilderModelDynamic_get extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1148,8 +1148,15 @@ class ComponentbuilderModelDynamic_get extends JModelAdmin // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "dynamic_get", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('dynamic_get', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "dynamic_get", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/field.php b/admin/models/field.php index 5cc2eafb8..b0ca2e38d 100644 --- a/admin/models/field.php +++ b/admin/models/field.php @@ -419,8 +419,8 @@ class ComponentbuilderModelField extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1144,8 +1144,15 @@ class ComponentbuilderModelField extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "field", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('field', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "field", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/fieldtype.php b/admin/models/fieldtype.php index bc916c4f3..1693a7b6d 100644 --- a/admin/models/fieldtype.php +++ b/admin/models/fieldtype.php @@ -544,8 +544,8 @@ class ComponentbuilderModelFieldtype extends JModelAdmin } } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1197,8 +1197,15 @@ class ComponentbuilderModelFieldtype extends JModelAdmin // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "fieldtype", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('fieldtype', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "fieldtype", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/forms/dynamic_get.xml b/admin/models/forms/dynamic_get.xml index 19fc6f35b..21d67915f 100644 --- a/admin/models/forms/dynamic_get.xml +++ b/admin/models/forms/dynamic_get.xml @@ -227,7 +227,7 @@ type="subform" name="join_db_table" label="COM_COMPONENTBUILDER_DYNAMIC_GET_JOIN_DB_TABLE_LABEL" - layout="joomla.form.field.subform.repeatable-table" + layout="repeatablejcb" multiple="true" description="COM_COMPONENTBUILDER_DYNAMIC_GET_JOIN_DB_TABLE_DESCRIPTION" icon="list"> @@ -1202,7 +1202,7 @@ type="subform" name="join_view_table" label="COM_COMPONENTBUILDER_DYNAMIC_GET_JOIN_VIEW_TABLE_LABEL" - layout="joomla.form.field.subform.repeatable-table" + layout="repeatablejcb" multiple="true" description="COM_COMPONENTBUILDER_DYNAMIC_GET_JOIN_VIEW_TABLE_DESCRIPTION" icon="list"> diff --git a/admin/models/import_language_translations.php b/admin/models/import_language_translations.php index a98a7e9e5..9f36e3076 100644 --- a/admin/models/import_language_translations.php +++ b/admin/models/import_language_translations.php @@ -424,7 +424,7 @@ class ComponentbuilderModelImport_language_translations extends JModelLegacy $jinput = JFactory::getApplication()->input; foreach($target_headers as $header) { - $data['target_headers'][$header] = $jinput->getString($header, null); + $data['target_headers'][$header] = $jinput->getString(strtolower($header), null); } // set the data if(isset($package['dir'])) diff --git a/admin/models/joomla_component.php b/admin/models/joomla_component.php index d4063eb70..bdcc71305 100644 --- a/admin/models/joomla_component.php +++ b/admin/models/joomla_component.php @@ -694,8 +694,8 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1385,8 +1385,15 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "joomla_component", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('joomla_component', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "joomla_component", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/joomla_module.php b/admin/models/joomla_module.php index 313d937bd..714c8f9a8 100644 --- a/admin/models/joomla_module.php +++ b/admin/models/joomla_module.php @@ -514,8 +514,8 @@ class ComponentbuilderModelJoomla_module extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1199,8 +1199,15 @@ class ComponentbuilderModelJoomla_module extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "joomla_module", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('joomla_module', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "joomla_module", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/joomla_plugin.php b/admin/models/joomla_plugin.php index 4fac186d9..64ca2553e 100644 --- a/admin/models/joomla_plugin.php +++ b/admin/models/joomla_plugin.php @@ -479,8 +479,8 @@ class ComponentbuilderModelJoomla_plugin extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1162,8 +1162,15 @@ class ComponentbuilderModelJoomla_plugin extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "joomla_plugin", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('joomla_plugin', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "joomla_plugin", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/library.php b/admin/models/library.php index 7d3ce5578..e5f26141b 100644 --- a/admin/models/library.php +++ b/admin/models/library.php @@ -358,8 +358,8 @@ class ComponentbuilderModelLibrary extends JModelAdmin } } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1048,8 +1048,15 @@ class ComponentbuilderModelLibrary extends JModelAdmin // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "library", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('library', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "library", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/site_view.php b/admin/models/site_view.php index a826d76dd..823a0a3dc 100644 --- a/admin/models/site_view.php +++ b/admin/models/site_view.php @@ -527,8 +527,8 @@ class ComponentbuilderModelSite_view extends JModelAdmin } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -1146,8 +1146,15 @@ class ComponentbuilderModelSite_view extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "site_view", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('site_view', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "site_view", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/models/snippet.php b/admin/models/snippet.php index 4439466cb..56602624b 100644 --- a/admin/models/snippet.php +++ b/admin/models/snippet.php @@ -243,8 +243,8 @@ class ComponentbuilderModelSnippet extends JModelAdmin } } - // Only load the GUID if new item - if (0 == $id) + // Only load the GUID if new item (or empty) + if (0 == $id || !($val = $form->getValue('guid'))) { $form->setValue('guid', null, ComponentbuilderHelper::GUID()); } @@ -852,8 +852,15 @@ class ComponentbuilderModelSnippet extends JModelAdmin } // Set the GUID if empty or not valid - if (isset($data['guid']) && !ComponentbuilderHelper::validGUID($data['guid'], "snippet", $data['id'])) + if (empty($data['guid']) && $data['id'] > 0) { + // get the existing one + $data['guid'] = (string) ComponentbuilderHelper::getVar('snippet', $data['id'], 'id', 'guid'); + } + // Set the GUID if empty or not valid + while (!ComponentbuilderHelper::validGUID($data['guid'], "snippet", $data['id'])) + { + // must always be set $data['guid'] = (string) ComponentbuilderHelper::GUID(); } diff --git a/admin/sql/install.mysql.utf8.sql b/admin/sql/install.mysql.utf8.sql index 546d2bc3d..737375ae9 100644 --- a/admin/sql/install.mysql.utf8.sql +++ b/admin/sql/install.mysql.utf8.sql @@ -1904,7 +1904,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls -- INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_license`, `license_type`, `mvc_versiondate`, `add_css_admin`, `add_css_site`, `add_email_helper`, `add_javascript`, `add_php_helper_admin`, `add_php_helper_both`, `add_php_helper_site`, `add_php_postflight_install`, `add_php_method_uninstall`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_update`, `add_placeholders`, `add_sql`, `add_sql_uninstall`, `addfootable`, `adduikit`, `add_admin_event`, `add_site_event`, `add_update_server`, `add_sales_server`, `sales_server`, `update_server`, `update_server_target`, `update_server_url`, `php_admin_event`, `php_site_event`, `addreadme`, `readme`, `author`, `bom`, `buildcomp`, `buildcompsql`, `companyname`, `component_version`, `copyright`, `creatuserhelper`, `css_admin`, `css_site`, `dashboard`, `dashboard_type`, `debug_linenr`, `description`, `email`, `emptycontributors`, `export_buy_link`, `joomla_source_link`, `export_key`, `image`, `javascript`, `license`, `name`, `system_name`, `toignore`, `name_code`, `number`, `php_helper_admin`, `php_helper_both`, `php_helper_site`, `php_postflight_install`, `php_method_uninstall`, `php_postflight_update`, `php_preflight_install`, `php_preflight_update`, `short_description`, `sql`, `sql_uninstall`, `website`, `published`, `created`, `modified`, `hits`, `ordering`, `whmcs_key`, `whmcs_url`, `guid`) VALUES -(25, '', 1, '', '', '', '', '', '', '', 1, 1, '', '', '', '', '', '', '', '', 1, '', '', 1, '', '', '', 2, 'https://raw.githubusercontent.com/namibia/demo-joomla-3-component/master/demo_updateserver.xml', '', '', 1, 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCiMjIERvbmF0aW9ucw0KDQpJZiB5b3Ugd2FudCB0byBzdXBwb3J0IHRoaXMgcHJvamVjdCwgcGxlYXNlIGNvbnNpZGVyIGRvbmF0aW5nOg0KICogUGF5UGFsOiBbcGF5cGFsLm1lL1tbW3BheXBhbG1lXV1dXShodHRwczovL3d3dy5wYXlwYWwubWUvW1tbcGF5cGFsbWVdXV0pDQogKiBCaXRjb2luOiBbW1tiaXRjb2luYWRkcmVzc11dXQ0KICogRXRoZXJldW06IFtbW2V0aGVyZXVtYWRkcmVzc11dXQ==', 'Llewellyn van der Merwe', 'default.txt', '', '', 'Vast Development Method', '2.0.2', 'Copyright (C) 2015. All Rights Reserved', '', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'https://github.com/namibia/demo-joomla-3-component', 'HFrCeQ/dZlNywC+BnkD7+Jznb1AoSMFkvlZvLrWJnP8=', 'images/vdm/demo500.jpg', '', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', 'Demo', 'Demo', '.git', 'demo', 4, '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ0K', 'CQkvLyBHZXQgQXBwbGljYXRpb24gb2JqZWN0DQoJCSRhcHAgPSBKRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKTsNCgkJJGFwcC0+ZW5xdWV1ZU1lc3NhZ2UoJ1RoaXMgaXMgYSBkZW1vIGNvbXBvbmVudCBkZXZlbG9wZWQgaW4gPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+SkNCPC9hPiEgWW91IGNhbiBidWlsZCBtb3JlIGNvbXBvbmVudHMgbGlrZSB0aGlzIHdpdGggSkNCLCBjaGVja291dCBvdXIgcGFnZSBvbiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdmRtLWlvL0pvb21sYS1Db21wb25lbnQtQnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+Z2l0aHViPC9hPiBmb3IgbW9yZSBpbmZvLiBUaGUgZnV0dXJlIG9mIDxhIGhyZWY9Imh0dHA6Ly92ZG0uYnovY29tcG9uZW50LWJ1aWxkZXIiIHRhZ2V0PSJfYmFsbmsiIHRpdGxlPSJKb29tbGEgQ29tcG9uZW50IEJ1aWxkZXIiPkpvb21sYSBDb21wb25lbnQgRGV2ZWxvcG1lbnQ8L2E+IGlzIEhlcmUhJywgJ0luZm8nKTs=', '', '', '', '', 'Demo Component', '', '', 'https://www.vdm.io/', 1, '2016-10-18 11:44:09', '2020-06-01 22:30:51', '', 3, 'LqVjNz4RpFQus30hSwGAxD6C55z/W+xG/qO+0Ea2QUA=', '', 'efde995e-60aa-4b39-b644-44349dfb660d'); +(25, '', 1, '', '', '', '', '', '', '', 1, 1, '', '', '', '', '', '', '', '', 1, '', '', 1, '', '', '', 2, 'https://raw.githubusercontent.com/namibia/demo-joomla-3-component/master/demo_updateserver.xml', '', '', 1, 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCiMjIERvbmF0aW9ucw0KDQpJZiB5b3Ugd2FudCB0byBzdXBwb3J0IHRoaXMgcHJvamVjdCwgcGxlYXNlIGNvbnNpZGVyIGRvbmF0aW5nOg0KICogUGF5UGFsOiBbcGF5cGFsLm1lL1tbW3BheXBhbG1lXV1dXShodHRwczovL3d3dy5wYXlwYWwubWUvW1tbcGF5cGFsbWVdXV0pDQogKiBCaXRjb2luOiBbW1tiaXRjb2luYWRkcmVzc11dXQ0KICogRXRoZXJldW06IFtbW2V0aGVyZXVtYWRkcmVzc11dXQ==', 'Llewellyn van der Merwe', 'default.txt', '', '', 'Vast Development Method', '2.0.3', 'Copyright (C) 2015. All Rights Reserved', '', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'https://github.com/namibia/demo-joomla-3-component', 'HFrCeQ/dZlNywC+BnkD7+Jznb1AoSMFkvlZvLrWJnP8=', 'images/vdm/demo500.jpg', '', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', 'Demo', 'Demo', '.git', 'demo', 4, '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ0K', 'CQkvLyBHZXQgQXBwbGljYXRpb24gb2JqZWN0DQoJCSRhcHAgPSBKRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKTsNCgkJJGFwcC0+ZW5xdWV1ZU1lc3NhZ2UoJ1RoaXMgaXMgYSBkZW1vIGNvbXBvbmVudCBkZXZlbG9wZWQgaW4gPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+SkNCPC9hPiEgWW91IGNhbiBidWlsZCBtb3JlIGNvbXBvbmVudHMgbGlrZSB0aGlzIHdpdGggSkNCLCBjaGVja291dCBvdXIgcGFnZSBvbiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdmRtLWlvL0pvb21sYS1Db21wb25lbnQtQnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+Z2l0aHViPC9hPiBmb3IgbW9yZSBpbmZvLiBUaGUgZnV0dXJlIG9mIDxhIGhyZWY9Imh0dHA6Ly92ZG0uYnovY29tcG9uZW50LWJ1aWxkZXIiIHRhZ2V0PSJfYmFsbmsiIHRpdGxlPSJKb29tbGEgQ29tcG9uZW50IEJ1aWxkZXIiPkpvb21sYSBDb21wb25lbnQgRGV2ZWxvcG1lbnQ8L2E+IGlzIEhlcmUhJywgJ0luZm8nKTs=', '', '', '', '', 'Demo Component', '', '', 'https://www.vdm.io/', 1, '2016-10-18 11:44:09', '2020-06-24 22:43:55', '', 3, 'LqVjNz4RpFQus30hSwGAxD6C55z/W+xG/qO+0Ea2QUA=', '', 'efde995e-60aa-4b39-b644-44349dfb660d'); -- -- Dumping data for table `#__componentbuilder_admin_view` @@ -2116,9 +2116,9 @@ INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`, (23, '', '', '', '', '', '', '', '', '', 64, '', 'CHAR', '', '', '', 'Alias', 'NOT NULL', '', 24, '\"