Major upgrade, with new filter system, and many bug fixes. #618

Merged
Llewellyn merged 25 commits from staging into master 2020-12-12 06:53:26 +00:00
53 changed files with 242 additions and 94 deletions
Showing only changes of commit b3ab6337d2 - Show all commits

View File

@ -144,11 +144,11 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 10th December, 2020 + *Last Build*: 11th December, 2020
+ *Version*: 2.12.2 + *Version*: 2.12.2
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **290450** + *Line count*: **290481**
+ *Field count*: **1555** + *Field count*: **1555**
+ *File count*: **1923** + *File count*: **1923**
+ *Folder count*: **316** + *Folder count*: **316**

View File

@ -144,11 +144,11 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 10th December, 2020 + *Last Build*: 11th December, 2020
+ *Version*: 2.12.2 + *Version*: 2.12.2
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **290450** + *Line count*: **290481**
+ *Field count*: **1555** + *Field count*: **1555**
+ *File count*: **1923** + *File count*: **1923**
+ *Folder count*: **316** + *Folder count*: **316**

View File

@ -767,7 +767,7 @@
description="COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_DESCRIPTION" description="COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_DESCRIPTION"
class="list_class" class="list_class"
multiple="false" multiple="false"
default="1"> default="2">
<!-- Option Set. --> <!-- Option Set. -->
<option value="0"> <option value="0">
COM_COMPONENTBUILDER_CONFIG_DO_NOT_ADD_FIX_EVER</option> COM_COMPONENTBUILDER_CONFIG_DO_NOT_ADD_FIX_EVER</option>

View File

@ -7969,7 +7969,7 @@ class Interpretation extends Fields
'php_postflight', 'install', PHP_EOL . PHP_EOL, null, true 'php_postflight', 'install', PHP_EOL . PHP_EOL, null, true
); );
// add the Intelligent Fix script if needed // add the Intelligent Fix script if needed
$script .= $this->getAssetsTableIntelligentFix(); $script .= $this->getAssetsTableIntelligentInstall();
// add the component install notice // add the component install notice
if (ComponentbuilderHelper::checkString($script)) if (ComponentbuilderHelper::checkString($script))
{ {
@ -8494,7 +8494,7 @@ class Interpretation extends Fields
$script .= PHP_EOL; $script .= PHP_EOL;
} }
// add the Intelligent Reversal script if needed // add the Intelligent Reversal script if needed
$script .= $this->getAssetsTableIntelligentReversal(); $script .= $this->getAssetsTableIntelligentUninstall();
// add the custom uninstall script // add the custom uninstall script
$script .= $this->getCustomScriptBuilder( $script .= $this->getCustomScriptBuilder(
'php_method', 'uninstall', "", null, true, null, PHP_EOL 'php_method', 'uninstall', "", null, true, null, PHP_EOL
@ -8509,18 +8509,57 @@ class Interpretation extends Fields
* @return string The php to place in script.php * @return string The php to place in script.php
* *
*/ */
protected function getAssetsTableIntelligentFix() protected function getAssetsTableIntelligentInstall()
{ {
// WHY DO WE NEED AN ASSET TABLE FIX?
// https://www.mysqltutorial.org/mysql-varchar/
// https://stackoverflow.com/a/15227917/1429677
// https://forums.mysql.com/read.php?24,105964,105964
// https://github.com/vdm-io/Joomla-Component-Builder/issues/616#issuecomment-741502980
// 30 actions each +-20 characters with 8 groups
// that makes 4800 characters and the current Joomla
// column size is varchar(5120)
// check if we should add the intelligent fix treatment for the assets table // check if we should add the intelligent fix treatment for the assets table
if ($this->addAssetsTableFix == 2 && $this->accessSize <= 400) if ($this->addAssetsTableFix == 2)
{ {
// reset script // get the worse case column size required (can be worse I know)
// access/action size x 20 characters x 8 groups
$character_length = (int) ComponentbuilderHelper::bcmath(
'mul', $this->accessSize, 20, 0
);
$character_length = (int) ComponentbuilderHelper::bcmath(
'mul', $character_length, 8, 0
);
// get the type we will convert to
$data_type = ($character_length > 64000) ? "MEDIUMTEXT" : "TEXT";
// the if statement about $rule_length
$codeIF = "\$rule_length <= " . $character_length;
// fix column size
$script = array(); $script = array();
$script[] = $this->_t(2) . "//" . $this->setLine(__LINE__) $script[] = $this->_t(5) . "//" . $this->setLine(__LINE__)
. " Check what size the rules column is now"; . " Fix the assets table rules column size";
$script[] = $this->_t(5)
. '$fix_rules_size = "ALTER TABLE `#__assets` CHANGE `rules` `rules` '
. $data_type
. ' NOT NULL COMMENT \'JSON encoded access control. Enlarged to ' . $data_type . ' by JCB\';";';
$script[] = $this->_t(5) . "\$db->setQuery(\$fix_rules_size);";
$script[] = $this->_t(5) . "\$db->execute();";
$codeA = implode(PHP_EOL, $script);
// fixed message
$messageA = $this->_t(5)
. "\$app->enqueueMessage(JText::_('The <b>#__assets</b> table rules column was resized to the "
. $data_type
. " datatype for the components possible large permission rules.'));";
// do nothing
$codeB = "";
// fix not needed so ignore
$messageB = "";
// done // done
return PHP_EOL . implode(PHP_EOL, $script); return $this->getAssetsTableIntelligentCode(
$codeIF, $codeA, $codeB, $messageA, $messageB, 2
);
} }
return ''; return '';
@ -8532,23 +8571,96 @@ class Interpretation extends Fields
* @return string The php to place in script.php * @return string The php to place in script.php
* *
*/ */
protected function getAssetsTableIntelligentReversal() protected function getAssetsTableIntelligentUninstall()
{ {
// check if we should add the intelligent uninstall treatment for the assets table // check if we should add the intelligent uninstall treatment for the assets table
if ($this->addAssetsTableFix == 2) if ($this->addAssetsTableFix == 2)
{ {
// reset script // the if statement about $rule_length
$codeIF = "\$rule_length < 5120";
// reverse column size
$script = array(); $script = array();
$script[] = $this->_t(2) . "//" . $this->setLine(__LINE__) $script[] = $this->_t(4) . "//" . $this->setLine(__LINE__)
. " Check for the biggest rules item in the database at this point"; . " Revert the assets table rules column back to the default";
$script[] = $this->_t(4)
. '$revert_rule = "ALTER TABLE `#__assets` CHANGE `rules` `rules` varchar(5120) NOT NULL COMMENT \'JSON encoded access control.\';";';
$script[] = $this->_t(4) . "\$db->setQuery(\$revert_rule);";
$script[] = $this->_t(4) . "\$db->execute();";
$codeA = implode(PHP_EOL, $script);
// reverted message
$messageA = $this->_t(4)
. "\$app->enqueueMessage(JText::_('Reverted the <b>#__assets</b> table rules column back to its default size of varchar(5120)'));";
// do nothing
$codeB = "";
// not reverted message
$messageB = $this->_t(4)
. "\$app->enqueueMessage(JText::_('Could not revert the <b>#__assets</b> table rules column back to its default size of varchar(5120), since there is still one or more components that still requires the column to be larger.'));";
// done // done
return PHP_EOL . implode(PHP_EOL, $script); return $this->getAssetsTableIntelligentCode(
$codeIF, $codeA, $codeB, $messageA, $messageB
);
} }
return ''; return '';
} }
/**
* set code for both install, update and uninstall
*
* @param string $codeIF The IF code to fix this issue
* @param string $codeA The a code to fix this issue
* @param string $codeB The b code to fix this issue
* @param string $messageA The fix a message
* @param string $messageB The fix b message
*
* @return string
*
*/
protected function getAssetsTableIntelligentCode($codeIF, $codeA, $codeB,
$messageA, $messageB, $tab = 1
) {
// reset script
$script = array();
$script[] = $this->_t($tab) . $this->_t(1) . "//" . $this->setLine(
__LINE__
)
. " Get the biggest rule column in the assets table at this point.";
$script[] = $this->_t($tab) . $this->_t(1)
. '$get_rule_length = "SELECT CHAR_LENGTH(`rules`) as rule_size FROM #__assets ORDER BY rule_size DESC LIMIT 1";';
$script[] = $this->_t($tab) . $this->_t(1)
. "\$db->setQuery(\$get_rule_length);";
$script[] = $this->_t($tab) . $this->_t(1) . "if (\$db->execute())";
$script[] = $this->_t($tab) . $this->_t(1) . "{";
$script[] = $this->_t($tab) . $this->_t(2)
. "\$rule_length = \$db->loadResult();";
// https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L22
// Checked 1st December 2020 (let us know if this changes)
$script[] = $this->_t($tab) . $this->_t(2) . "//" . $this->setLine(
__LINE__
)
. " Check the size of the rules column";
$script[] = $this->_t($tab) . $this->_t(2) . "if (" . $codeIF . ")";
$script[] = $this->_t($tab) . $this->_t(2) . "{";
$script[] = $codeA;
$script[] = $messageA;
$script[] = $this->_t($tab) . $this->_t(2) . "}";
// only ad this if there is a B part
if (ComponentbuilderHelper::checkString($codeB)
|| ComponentbuilderHelper::checkString($messageB))
{
$script[] = $this->_t($tab) . $this->_t(2) . "else";
$script[] = $this->_t($tab) . $this->_t(2) . "{";
$script[] = $codeB;
$script[] = $messageB;
$script[] = $this->_t($tab) . $this->_t(2) . "}";
}
$script[] = $this->_t($tab) . $this->_t(1) . "}";
// done
return PHP_EOL . implode(PHP_EOL, $script);
}
public function setMoveFolderScript() public function setMoveFolderScript()
{ {
if ($this->setMoveFolders) if ($this->setMoveFolders)
@ -10530,9 +10642,9 @@ class Interpretation extends Fields
// check if this component needs larger rules // check if this component needs larger rules
// also check if the developer will allow this // also check if the developer will allow this
// any value above 0 allows for the change to be added
// the access actions length must be checked before this // the access actions length must be checked before this
if ($this->addAssetsTableFix) // only add this option if set to SQL fix
if ($this->addAssetsTableFix == 1)
{ {
// 400 actions worse case is larger the 65535 characters // 400 actions worse case is larger the 65535 characters
if ($this->accessSize > 400) if ($this->accessSize > 400)
@ -10549,7 +10661,6 @@ class Interpretation extends Fields
. "ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control.';"; . "ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control.';";
} }
// smaller then 400 makes TEXT large enough // smaller then 400 makes TEXT large enough
// only add this option if set to SQL fix
elseif ($this->addAssetsTableFix == 1) elseif ($this->addAssetsTableFix == 1)
{ {
$db .= PHP_EOL; $db .= PHP_EOL;
@ -10567,8 +10678,8 @@ class Interpretation extends Fields
// check if this component needs larger names // check if this component needs larger names
// also check if the developer will allow this // also check if the developer will allow this
// any value above 0 allows for the change to be added
// the config length must be checked before this // the config length must be checked before this
// only add this option if set to SQL fix
if ($this->addAssetsTableFix && $this->addAssetsTableNameFix) if ($this->addAssetsTableFix && $this->addAssetsTableNameFix)
{ {
$db .= PHP_EOL; $db .= PHP_EOL;
@ -10617,7 +10728,7 @@ class Interpretation extends Fields
// check if this component used larger rules // check if this component used larger rules
// now revert them back on uninstall // now revert them back on uninstall
// number 1 allows for the change to be reversed // only add this option if set to SQL fix
if ($this->addAssetsTableFix == 1) if ($this->addAssetsTableFix == 1)
{ {
// https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L22 // https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L22
@ -10636,7 +10747,7 @@ class Interpretation extends Fields
// check if this component used larger names // check if this component used larger names
// now revert them back on uninstall // now revert them back on uninstall
// number 1 allows for the change to be reversed // only add this option if set to SQL fix
if ($this->addAssetsTableFix == 1 && $this->addAssetsTableNameFix) if ($this->addAssetsTableFix == 1 && $this->addAssetsTableNameFix)
{ {
// https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L20 // https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L20
@ -20573,9 +20684,9 @@ class Interpretation extends Fields
/** /**
* Add the code of the stored ids * Add the code of the stored ids
* *
* @param array $filter The field/filter array * @param array $filter The field/filter array
* @param string $nameListCode The list view name * @param string $nameListCode The list view name
* @param string $Component The Component name * @param string $Component The Component name
* *
* @return string The code for the stored IDs * @return string The code for the stored IDs
* *
@ -20602,10 +20713,14 @@ class Interpretation extends Fields
else else
{ {
$stored = $this->getStoredIdCodeMulti('category', $Component); $stored = $this->getStoredIdCodeMulti('category', $Component);
$stored .= $this->getStoredIdCodeMulti('category_id', $Component); $stored .= $this->getStoredIdCodeMulti(
'category_id', $Component
);
if ($filter['code'] != 'category') if ($filter['code'] != 'category')
{ {
$stored .= $this->getStoredIdCodeMulti($filter['code'], $Component); $stored .= $this->getStoredIdCodeMulti(
$filter['code'], $Component
);
} }
} }
} }
@ -20618,7 +20733,9 @@ class Interpretation extends Fields
{ {
// top bar selection can result in // top bar selection can result in
// an array due to multi selection // an array due to multi selection
$stored = $this->getStoredIdCodeMulti($filter['code'], $Component); $stored = $this->getStoredIdCodeMulti(
$filter['code'], $Component
);
} }
else else
{ {
@ -20634,8 +20751,8 @@ class Interpretation extends Fields
/** /**
* Add the code of the stored multi ids * Add the code of the stored multi ids
* *
* @param string $key The key field name * @param string $key The key field name
* @param string $Component The Component name * @param string $Component The Component name
* *
* @return string The code for the stored IDs * @return string The code for the stored IDs
* *
@ -20661,7 +20778,7 @@ class Interpretation extends Fields
. "}"; . "}";
$stored .= PHP_EOL . $this->_t(2) $stored .= PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__) . "//" . $this->setLine(__LINE__)
. " Check if this is only an int or string"; . " Check if this is only an number or string";
$stored .= PHP_EOL . $this->_t(2) $stored .= PHP_EOL . $this->_t(2)
. "elseif (is_numeric(\$_" . $key . ")"; . "elseif (is_numeric(\$_" . $key . ")";
$stored .= PHP_EOL . $this->_t(2) $stored .= PHP_EOL . $this->_t(2)
@ -27067,7 +27184,7 @@ function vdm_dkim() {
$this->componentGlobal = null; $this->componentGlobal = null;
$this->permissionViews = null; $this->permissionViews = null;
// remove the fix in not needed // remove the fix, is not needed
if ($this->accessSize < 30) if ($this->accessSize < 30)
{ {
// since we have less than 30 actions // since we have less than 30 actions

View File

@ -685,7 +685,7 @@ class ComponentbuilderModelAdmin_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {
@ -701,7 +701,7 @@ class ComponentbuilderModelAdmin_views extends JModelList
{ {
$id .= ':' . implode(':', $_type); $id .= ':' . implode(':', $_type);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_type) elseif (is_numeric($_type)
|| ComponentbuilderHelper::checkString($_type)) || ComponentbuilderHelper::checkString($_type))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_custom_tabs extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields_conditions extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields_relations extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -290,7 +290,7 @@ class ComponentbuilderModelClass_extendings extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -463,7 +463,7 @@ class ComponentbuilderModelClass_methods extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -461,7 +461,7 @@ class ComponentbuilderModelClass_properties extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_admin_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_config extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_custom_admin_menus extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_custom_admin_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_dashboard extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_files_folders extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_modules extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_mysql_tweaks extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_placeholders extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_plugins extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_site_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_updates extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -519,7 +519,7 @@ class ComponentbuilderModelCustom_admin_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -555,7 +555,7 @@ class ComponentbuilderModelCustom_codes extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -470,7 +470,7 @@ class ComponentbuilderModelDynamic_gets extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -638,7 +638,7 @@ class ComponentbuilderModelFields extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {
@ -658,7 +658,7 @@ class ComponentbuilderModelFields extends JModelList
{ {
$id .= ':' . implode(':', $_category); $id .= ':' . implode(':', $_category);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_category) elseif (is_numeric($_category)
|| ComponentbuilderHelper::checkString($_category)) || ComponentbuilderHelper::checkString($_category))
{ {
@ -670,7 +670,7 @@ class ComponentbuilderModelFields extends JModelList
{ {
$id .= ':' . implode(':', $_category_id); $id .= ':' . implode(':', $_category_id);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_category_id) elseif (is_numeric($_category_id)
|| ComponentbuilderHelper::checkString($_category_id)) || ComponentbuilderHelper::checkString($_category_id))
{ {
@ -682,7 +682,7 @@ class ComponentbuilderModelFields extends JModelList
{ {
$id .= ':' . implode(':', $_catid); $id .= ':' . implode(':', $_catid);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_catid) elseif (is_numeric($_catid)
|| ComponentbuilderHelper::checkString($_catid)) || ComponentbuilderHelper::checkString($_catid))
{ {

View File

@ -399,7 +399,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {
@ -414,7 +414,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
{ {
$id .= ':' . implode(':', $_category); $id .= ':' . implode(':', $_category);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_category) elseif (is_numeric($_category)
|| ComponentbuilderHelper::checkString($_category)) || ComponentbuilderHelper::checkString($_category))
{ {
@ -426,7 +426,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
{ {
$id .= ':' . implode(':', $_category_id); $id .= ':' . implode(':', $_category_id);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_category_id) elseif (is_numeric($_category_id)
|| ComponentbuilderHelper::checkString($_category_id)) || ComponentbuilderHelper::checkString($_category_id))
{ {
@ -438,7 +438,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
{ {
$id .= ':' . implode(':', $_catid); $id .= ':' . implode(':', $_catid);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_catid) elseif (is_numeric($_catid)
|| ComponentbuilderHelper::checkString($_catid)) || ComponentbuilderHelper::checkString($_catid))
{ {

View File

@ -2517,7 +2517,7 @@ class ComponentbuilderModelJoomla_components extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -296,7 +296,7 @@ class ComponentbuilderModelJoomla_modules extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_modules_files_folders_urls extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_modules_updates extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -237,7 +237,7 @@ class ComponentbuilderModelJoomla_plugin_groups extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -457,7 +457,7 @@ class ComponentbuilderModelJoomla_plugins extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_plugins_files_folders_urls extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_plugins_updates extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -456,7 +456,7 @@ class ComponentbuilderModelLanguage_translations extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -482,7 +482,7 @@ class ComponentbuilderModelLanguages extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -451,7 +451,7 @@ class ComponentbuilderModelLayouts extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -383,7 +383,7 @@ class ComponentbuilderModelLibraries extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelLibraries_config extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -210,7 +210,7 @@ class ComponentbuilderModelLibraries_files_folders_urls extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -363,7 +363,7 @@ class ComponentbuilderModelPlaceholders extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -478,7 +478,7 @@ class ComponentbuilderModelServers extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -527,7 +527,7 @@ class ComponentbuilderModelSite_views extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -237,7 +237,7 @@ class ComponentbuilderModelSnippet_types extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -541,7 +541,7 @@ class ComponentbuilderModelSnippets extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -451,7 +451,7 @@ class ComponentbuilderModelTemplates extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -361,7 +361,7 @@ class ComponentbuilderModelValidation_rules extends JModelList
{ {
$id .= ':' . implode(':', $_access); $id .= ':' . implode(':', $_access);
} }
// Check if this is only an int or string // Check if this is only an number or string
elseif (is_numeric($_access) elseif (is_numeric($_access)
|| ComponentbuilderHelper::checkString($_access)) || ComponentbuilderHelper::checkString($_access))
{ {

View File

@ -2432,11 +2432,6 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_external_code` (
--
-- Always insure this column rules is large enough for all the access control values.
--
ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control.';
-- --
-- Always insure this column name is large enough for long component and view names. -- Always insure this column name is large enough for long component and view names.
-- --

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade"> <extension type="component" version="3.2" method="upgrade">
<name>COM_COMPONENTBUILDER</name> <name>COM_COMPONENTBUILDER</name>
<creationDate>10th December, 2020</creationDate> <creationDate>11th December, 2020</creationDate>
<author>Llewellyn van der Merwe</author> <author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail> <authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl> <authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>

View File

@ -4281,7 +4281,27 @@ class com_componentbuilderInstallerScript
$app->enqueueMessage(JText::_('All related items was removed from the <b>#__assets</b> table')); $app->enqueueMessage(JText::_('All related items was removed from the <b>#__assets</b> table'));
} }
// Check for the biggest rules item in the database at this point // Get the biggest rule column in the assets table at this point.
$get_rule_length = "SELECT CHAR_LENGTH(`rules`) as rule_size FROM #__assets ORDER BY rule_size DESC LIMIT 1";
$db->setQuery($get_rule_length);
if ($db->execute())
{
$rule_length = $db->loadResult();
// Check the size of the rules column
if ($rule_length < 5120)
{
// Revert the assets table rules column back to the default
$revert_rule = "ALTER TABLE `#__assets` CHANGE `rules` `rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.';";
$db->setQuery($revert_rule);
$db->execute();
$app->enqueueMessage(JText::_('Reverted the <b>#__assets</b> table rules column back to its default size of varchar(5120)'));
}
else
{
$app->enqueueMessage(JText::_('Could not revert the <b>#__assets</b> table rules column back to its default size of varchar(5120), since there is still one or more components that still requires the column to be larger.'));
}
}
// Set db if not set already. // Set db if not set already.
if (!isset($db)) if (!isset($db))
@ -6602,6 +6622,22 @@ class com_componentbuilderInstallerScript
$db->setQuery($query); $db->setQuery($query);
$allDone = $db->execute(); $allDone = $db->execute();
// Get the biggest rule column in the assets table at this point.
$get_rule_length = "SELECT CHAR_LENGTH(`rules`) as rule_size FROM #__assets ORDER BY rule_size DESC LIMIT 1";
$db->setQuery($get_rule_length);
if ($db->execute())
{
$rule_length = $db->loadResult();
// Check the size of the rules column
if ($rule_length <= 94240)
{
// Fix the assets table rules column size
$fix_rules_size = "ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control. Enlarged to MEDIUMTEXT by JCB';";
$db->setQuery($fix_rules_size);
$db->execute();
$app->enqueueMessage(JText::_('The <b>#__assets</b> table rules column was resized to the MEDIUMTEXT datatype for the components possible large permission rules.'));
}
}
echo '<a target="_blank" href="http://www.joomlacomponentbuilder.com" title="Component Builder"> echo '<a target="_blank" href="http://www.joomlacomponentbuilder.com" title="Component Builder">
<img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/> <img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/>
</a>'; </a>';