forked from joomla/Component-Builder
Added the new Intelligent fix to the assets table rules column (the new default). This will add the fix only if needed, and removes it only if no longer needed, with messages that tell the end-user what it has done. Resolves gh-616
This commit is contained in:
parent
ef5480fc7f
commit
b3ab6337d2
@ -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*: 10th December, 2020
|
||||
+ *Last Build*: 11th December, 2020
|
||||
+ *Version*: 2.12.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*: **290450**
|
||||
+ *Line count*: **290481**
|
||||
+ *Field count*: **1555**
|
||||
+ *File count*: **1923**
|
||||
+ *Folder count*: **316**
|
||||
|
@ -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*: 10th December, 2020
|
||||
+ *Last Build*: 11th December, 2020
|
||||
+ *Version*: 2.12.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*: **290450**
|
||||
+ *Line count*: **290481**
|
||||
+ *Field count*: **1555**
|
||||
+ *File count*: **1923**
|
||||
+ *Folder count*: **316**
|
||||
|
@ -767,7 +767,7 @@
|
||||
description="COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_DESCRIPTION"
|
||||
class="list_class"
|
||||
multiple="false"
|
||||
default="1">
|
||||
default="2">
|
||||
<!-- Option Set. -->
|
||||
<option value="0">
|
||||
COM_COMPONENTBUILDER_CONFIG_DO_NOT_ADD_FIX_EVER</option>
|
||||
|
@ -7969,7 +7969,7 @@ class Interpretation extends Fields
|
||||
'php_postflight', 'install', PHP_EOL . PHP_EOL, null, true
|
||||
);
|
||||
// add the Intelligent Fix script if needed
|
||||
$script .= $this->getAssetsTableIntelligentFix();
|
||||
$script .= $this->getAssetsTableIntelligentInstall();
|
||||
// add the component install notice
|
||||
if (ComponentbuilderHelper::checkString($script))
|
||||
{
|
||||
@ -8494,7 +8494,7 @@ class Interpretation extends Fields
|
||||
$script .= PHP_EOL;
|
||||
}
|
||||
// add the Intelligent Reversal script if needed
|
||||
$script .= $this->getAssetsTableIntelligentReversal();
|
||||
$script .= $this->getAssetsTableIntelligentUninstall();
|
||||
// add the custom uninstall script
|
||||
$script .= $this->getCustomScriptBuilder(
|
||||
'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
|
||||
*
|
||||
*/
|
||||
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
|
||||
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[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
|
||||
. " Check what size the rules column is now";
|
||||
$script[] = $this->_t(5) . "//" . $this->setLine(__LINE__)
|
||||
. " 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
|
||||
return PHP_EOL . implode(PHP_EOL, $script);
|
||||
return $this->getAssetsTableIntelligentCode(
|
||||
$codeIF, $codeA, $codeB, $messageA, $messageB, 2
|
||||
);
|
||||
}
|
||||
|
||||
return '';
|
||||
@ -8532,23 +8571,96 @@ class Interpretation extends Fields
|
||||
* @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
|
||||
if ($this->addAssetsTableFix == 2)
|
||||
{
|
||||
// reset script
|
||||
// the if statement about $rule_length
|
||||
$codeIF = "\$rule_length < 5120";
|
||||
// reverse column size
|
||||
$script = array();
|
||||
$script[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
|
||||
. " Check for the biggest rules item in the database at this point";
|
||||
$script[] = $this->_t(4) . "//" . $this->setLine(__LINE__)
|
||||
. " 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
|
||||
return PHP_EOL . implode(PHP_EOL, $script);
|
||||
return $this->getAssetsTableIntelligentCode(
|
||||
$codeIF, $codeA, $codeB, $messageA, $messageB
|
||||
);
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
if ($this->setMoveFolders)
|
||||
@ -10530,9 +10642,9 @@ class Interpretation extends Fields
|
||||
|
||||
// check if this component needs larger rules
|
||||
// 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
|
||||
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
|
||||
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.';";
|
||||
}
|
||||
// smaller then 400 makes TEXT large enough
|
||||
// only add this option if set to SQL fix
|
||||
elseif ($this->addAssetsTableFix == 1)
|
||||
{
|
||||
$db .= PHP_EOL;
|
||||
@ -10567,8 +10678,8 @@ class Interpretation extends Fields
|
||||
|
||||
// check if this component needs larger names
|
||||
// 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
|
||||
// only add this option if set to SQL fix
|
||||
if ($this->addAssetsTableFix && $this->addAssetsTableNameFix)
|
||||
{
|
||||
$db .= PHP_EOL;
|
||||
@ -10617,7 +10728,7 @@ class Interpretation extends Fields
|
||||
|
||||
// check if this component used larger rules
|
||||
// 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)
|
||||
{
|
||||
// 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
|
||||
// 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)
|
||||
{
|
||||
// https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L20
|
||||
@ -20602,10 +20713,14 @@ class Interpretation extends Fields
|
||||
else
|
||||
{
|
||||
$stored = $this->getStoredIdCodeMulti('category', $Component);
|
||||
$stored .= $this->getStoredIdCodeMulti('category_id', $Component);
|
||||
$stored .= $this->getStoredIdCodeMulti(
|
||||
'category_id', $Component
|
||||
);
|
||||
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
|
||||
// an array due to multi selection
|
||||
$stored = $this->getStoredIdCodeMulti($filter['code'], $Component);
|
||||
$stored = $this->getStoredIdCodeMulti(
|
||||
$filter['code'], $Component
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -20661,7 +20778,7 @@ class Interpretation extends Fields
|
||||
. "}";
|
||||
$stored .= PHP_EOL . $this->_t(2)
|
||||
. "//" . $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)
|
||||
. "elseif (is_numeric(\$_" . $key . ")";
|
||||
$stored .= PHP_EOL . $this->_t(2)
|
||||
@ -27067,7 +27184,7 @@ function vdm_dkim() {
|
||||
$this->componentGlobal = null;
|
||||
$this->permissionViews = null;
|
||||
|
||||
// remove the fix in not needed
|
||||
// remove the fix, is not needed
|
||||
if ($this->accessSize < 30)
|
||||
{
|
||||
// since we have less than 30 actions
|
||||
|
@ -685,7 +685,7 @@ class ComponentbuilderModelAdmin_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
@ -701,7 +701,7 @@ class ComponentbuilderModelAdmin_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_type))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_custom_tabs extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields_conditions extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelAdmins_fields_relations extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -290,7 +290,7 @@ class ComponentbuilderModelClass_extendings extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -463,7 +463,7 @@ class ComponentbuilderModelClass_methods extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -461,7 +461,7 @@ class ComponentbuilderModelClass_properties extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_admin_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_config extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_custom_admin_menus extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_custom_admin_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_dashboard extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_files_folders extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_modules extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_mysql_tweaks extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_placeholders extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_plugins extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_site_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelComponents_updates extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -519,7 +519,7 @@ class ComponentbuilderModelCustom_admin_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -555,7 +555,7 @@ class ComponentbuilderModelCustom_codes extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -470,7 +470,7 @@ class ComponentbuilderModelDynamic_gets extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -638,7 +638,7 @@ class ComponentbuilderModelFields extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
@ -658,7 +658,7 @@ class ComponentbuilderModelFields extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_category))
|
||||
{
|
||||
@ -670,7 +670,7 @@ class ComponentbuilderModelFields extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_category_id))
|
||||
{
|
||||
@ -682,7 +682,7 @@ class ComponentbuilderModelFields extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_catid))
|
||||
{
|
||||
|
@ -399,7 +399,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
@ -414,7 +414,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_category))
|
||||
{
|
||||
@ -426,7 +426,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_category_id))
|
||||
{
|
||||
@ -438,7 +438,7 @@ class ComponentbuilderModelFieldtypes extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_catid))
|
||||
{
|
||||
|
@ -2517,7 +2517,7 @@ class ComponentbuilderModelJoomla_components extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -296,7 +296,7 @@ class ComponentbuilderModelJoomla_modules extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_modules_files_folders_urls extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_modules_updates extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -237,7 +237,7 @@ class ComponentbuilderModelJoomla_plugin_groups extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -457,7 +457,7 @@ class ComponentbuilderModelJoomla_plugins extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_plugins_files_folders_urls extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelJoomla_plugins_updates extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -456,7 +456,7 @@ class ComponentbuilderModelLanguage_translations extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -482,7 +482,7 @@ class ComponentbuilderModelLanguages extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -451,7 +451,7 @@ class ComponentbuilderModelLayouts extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -383,7 +383,7 @@ class ComponentbuilderModelLibraries extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelLibraries_config extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -210,7 +210,7 @@ class ComponentbuilderModelLibraries_files_folders_urls extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -363,7 +363,7 @@ class ComponentbuilderModelPlaceholders extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -478,7 +478,7 @@ class ComponentbuilderModelServers extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -527,7 +527,7 @@ class ComponentbuilderModelSite_views extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -237,7 +237,7 @@ class ComponentbuilderModelSnippet_types extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -541,7 +541,7 @@ class ComponentbuilderModelSnippets extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -451,7 +451,7 @@ class ComponentbuilderModelTemplates extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -361,7 +361,7 @@ class ComponentbuilderModelValidation_rules extends JModelList
|
||||
{
|
||||
$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)
|
||||
|| ComponentbuilderHelper::checkString($_access))
|
||||
{
|
||||
|
@ -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.
|
||||
--
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<extension type="component" version="3.2" method="upgrade">
|
||||
<name>COM_COMPONENTBUILDER</name>
|
||||
<creationDate>10th December, 2020</creationDate>
|
||||
<creationDate>11th December, 2020</creationDate>
|
||||
<author>Llewellyn van der Merwe</author>
|
||||
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
|
||||
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
|
||||
|
38
script.php
38
script.php
@ -4281,7 +4281,27 @@ class com_componentbuilderInstallerScript
|
||||
$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.
|
||||
if (!isset($db))
|
||||
@ -6602,6 +6622,22 @@ class com_componentbuilderInstallerScript
|
||||
$db->setQuery($query);
|
||||
$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">
|
||||
<img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/>
|
||||
</a>';
|
||||
|
Loading…
Reference in New Issue
Block a user