Added the GUI switch to control the adding of the asset table fix. gh-616

This commit is contained in:
Llewellyn van der Merwe 2020-12-10 03:24:29 +02:00
parent a05efdbb33
commit b65d868a86
Signed by: Llewellyn
GPG Key ID: EFC0C720A240551C
16 changed files with 1547 additions and 1307 deletions

View File

@ -12,7 +12,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.12.1) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.12.2) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@ -144,14 +144,14 @@ 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*: 8th December, 2020
+ *Version*: 2.12.1
+ *Last Build*: 10th 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*: **289396**
+ *Field count*: **1545**
+ *File count*: **1912**
+ *Folder count*: **310**
+ *Line count*: **289867**
+ *Field count*: **1555**
+ *File count*: **1923**
+ *Folder count*: **316**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -12,7 +12,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.12.1) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.12.2) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@ -144,14 +144,14 @@ 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*: 8th December, 2020
+ *Version*: 2.12.1
+ *Last Build*: 10th 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*: **289396**
+ *Field count*: **1545**
+ *File count*: **1912**
+ *Folder count*: **310**
+ *Line count*: **289867**
+ *Field count*: **1555**
+ *File count*: **1923**
+ *Folder count*: **316**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -122,16 +122,6 @@
folder="editors"
filter="cmd"
/>
<!-- Compiler_plugin Field. Type: Plugins. (joomla) -->
<field
type="plugins"
name="compiler_plugin"
label="COM_COMPONENTBUILDER_CONFIG_COMPILER_PLUGIN_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_COMPILER_PLUGIN_DESCRIPTION"
multiple="true"
folder="extension"
filter="cmd"
/>
<!-- Github_access_token Field. Type: Text. (joomla) -->
<field
type="text"
@ -184,54 +174,6 @@
</field>
<!-- Spacer_hr_two Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_two" hr="true" class="spacer_hr_two" />
<!-- Add_menu_prefix Field. Type: Radio. (joomla) -->
<field
type="radio"
name="add_menu_prefix"
label="COM_COMPONENTBUILDER_CONFIG_ADD_MENU_PREFIX_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_ADD_MENU_PREFIX_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Menu_prefix Field. Type: Text. (joomla) -->
<field
type="text"
name="menu_prefix"
label="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_LABEL"
size="30"
maxlength="30"
default=""
description="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_DESCRIPTION"
class="text_area"
filter="SAFEHTML"
message="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_MESSAGE"
hint="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_HINT"
autocomplete="on"
showon="add_menu_prefix:1"
/>
<!-- Spacer_hr_three Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_three" hr="true" class="spacer_hr_three" />
<!-- Minify Field. Type: Radio. (joomla) -->
<field
type="radio"
name="minify"
label="COM_COMPONENTBUILDER_CONFIG_MINIFY_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_MINIFY_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Spacer_hr_four Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_four" hr="true" class="spacer_hr_four" />
<!-- Set_browser_storage Field. Type: Radio. (joomla) -->
<field
type="radio"
@ -283,96 +225,8 @@
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NEVER_UPDATE</option>
</field>
<!-- Spacer_hr_five Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_five" hr="true" class="spacer_hr_five" />
<!-- Note_language_global Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_language_global" label="COM_COMPONENTBUILDER_CONFIG_NOTE_LANGUAGE_GLOBAL_LABEL" description="COM_COMPONENTBUILDER_CONFIG_NOTE_LANGUAGE_GLOBAL_DESCRIPTION" heading="h4" class="alert alert-info note_language_global" />
<!-- Language Field. Type: Lang. (custom) -->
<field
type="lang"
name="language"
label="COM_COMPONENTBUILDER_CONFIG_LANGUAGE_LABEL"
class="list_class"
multiple="false"
default="en-GB"
required="true"
button="true"
/>
<!-- Percentagelanguageadd Field. Type: Number. (joomla) -->
<field
type="number"
name="percentagelanguageadd"
label="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_LABEL"
default="50"
description="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_DESCRIPTION"
class="text_area"
required="true"
min="10"
max="100"
step="10"
/>
<!-- Export_language_strings Field. Type: Radio. (joomla) -->
<field
type="radio"
name="export_language_strings"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_LANGUAGE_STRINGS_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_LANGUAGE_STRINGS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Spacer_hr_six Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_six" hr="true" class="spacer_hr_six" />
<!-- Compiler_field_builder_type Field. Type: List. (joomla) -->
<field
type="list"
name="compiler_field_builder_type"
label="COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_DESCRIPTION"
class="list_class"
filter="INT"
required="true"
default="2">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_STRING_MANIPULATION</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_SIMPLEXMLELEMENT_CLASS</option>
</field>
<!-- Field_name_builder Field. Type: Radio. (joomla) -->
<field
type="radio"
name="field_name_builder"
label="COM_COMPONENTBUILDER_CONFIG_FIELD_NAME_BUILDER_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_FIELD_NAME_BUILDER_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_DEFAULT</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_ALPHANUMERIC</option>
</field>
<!-- Type_name_builder Field. Type: Radio. (joomla) -->
<field
type="radio"
name="type_name_builder"
label="COM_COMPONENTBUILDER_CONFIG_TYPE_NAME_BUILDER_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_TYPE_NAME_BUILDER_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_DEFAULT</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_ALPHANUMERICDOT</option>
</field>
<!-- Spacer_hr_seven Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_seven" hr="true" class="spacer_hr_seven" />
<!-- Spacer_hr_three Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_three" hr="true" class="spacer_hr_three" />
<!-- Api Field. Type: User. (joomla) -->
<field
type="user"
@ -380,8 +234,8 @@
label="COM_COMPONENTBUILDER_CONFIG_API_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_API_DESCRIPTION"
/>
<!-- Spacer_hr_eight Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_eight" hr="true" class="spacer_hr_eight" />
<!-- Spacer_hr_four Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_four" hr="true" class="spacer_hr_four" />
<field name="autorTitle"
type="spacer"
label="COM_COMPONENTBUILDER_CONFIG_AUTHOR"
@ -799,6 +653,174 @@
default=""
/>
</fieldset>
<fieldset
name="compiler_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_COMPILER">
<!-- Compiler_plugin Field. Type: Plugins. (joomla) -->
<field
type="plugins"
name="compiler_plugin"
label="COM_COMPONENTBUILDER_CONFIG_COMPILER_PLUGIN_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_COMPILER_PLUGIN_DESCRIPTION"
multiple="true"
folder="extension"
filter="cmd"
/>
<!-- Spacer_hr_five Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_five" hr="true" class="spacer_hr_five" />
<!-- Add_menu_prefix Field. Type: Radio. (joomla) -->
<field
type="radio"
name="add_menu_prefix"
label="COM_COMPONENTBUILDER_CONFIG_ADD_MENU_PREFIX_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_ADD_MENU_PREFIX_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Menu_prefix Field. Type: Text. (joomla) -->
<field
type="text"
name="menu_prefix"
label="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_LABEL"
size="30"
maxlength="30"
default=""
description="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_DESCRIPTION"
class="text_area"
filter="SAFEHTML"
message="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_MESSAGE"
hint="COM_COMPONENTBUILDER_CONFIG_MENU_PREFIX_HINT"
autocomplete="on"
showon="add_menu_prefix:1"
/>
<!-- Spacer_hr_six Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_six" hr="true" class="spacer_hr_six" />
<!-- Minify Field. Type: Radio. (joomla) -->
<field
type="radio"
name="minify"
label="COM_COMPONENTBUILDER_CONFIG_MINIFY_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_MINIFY_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Spacer_hr_seven Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_seven" hr="true" class="spacer_hr_seven" />
<!-- Note_language_global Field. Type: Note. A None Database Field. (joomla) -->
<field type="note" name="note_language_global" label="COM_COMPONENTBUILDER_CONFIG_NOTE_LANGUAGE_GLOBAL_LABEL" description="COM_COMPONENTBUILDER_CONFIG_NOTE_LANGUAGE_GLOBAL_DESCRIPTION" heading="h4" class="alert alert-info note_language_global" />
<!-- Language Field. Type: Lang. (custom) -->
<field
type="lang"
name="language"
label="COM_COMPONENTBUILDER_CONFIG_LANGUAGE_LABEL"
class="list_class"
multiple="false"
default="en-GB"
required="true"
button="true"
/>
<!-- Percentagelanguageadd Field. Type: Number. (joomla) -->
<field
type="number"
name="percentagelanguageadd"
label="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_LABEL"
default="50"
description="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_DESCRIPTION"
class="text_area"
required="true"
min="10"
max="100"
step="10"
/>
<!-- Export_language_strings Field. Type: Radio. (joomla) -->
<field
type="radio"
name="export_language_strings"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_LANGUAGE_STRINGS_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_LANGUAGE_STRINGS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_YES</option>
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Spacer_hr_eight Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_eight" hr="true" class="spacer_hr_eight" />
<!-- Assets_table_fix Field. Type: List. (joomla) -->
<field
type="list"
name="assets_table_fix"
label="COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_DESCRIPTION"
class="list_class"
multiple="false"
default="1">
<!-- Option Set. -->
<option value="0">
COM_COMPONENTBUILDER_CONFIG_DO_NOT_ADD_FIX_EVER</option>
<option value="1">
COM_COMPONENTBUILDER_CONFIG_SQL_ADDREMOVE</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_INTELLIGENT_ADDREMOVEIF</option>
</field>
<!-- Compiler_field_builder_type Field. Type: List. (joomla) -->
<field
type="list"
name="compiler_field_builder_type"
label="COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_DESCRIPTION"
class="list_class"
filter="INT"
required="true"
default="2">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_STRING_MANIPULATION</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_SIMPLEXMLELEMENT_CLASS</option>
</field>
<!-- Field_name_builder Field. Type: Radio. (joomla) -->
<field
type="radio"
name="field_name_builder"
label="COM_COMPONENTBUILDER_CONFIG_FIELD_NAME_BUILDER_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_FIELD_NAME_BUILDER_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_DEFAULT</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_ALPHANUMERIC</option>
</field>
<!-- Type_name_builder Field. Type: Radio. (joomla) -->
<field
type="radio"
name="type_name_builder"
label="COM_COMPONENTBUILDER_CONFIG_TYPE_NAME_BUILDER_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_TYPE_NAME_BUILDER_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set. -->
<option value="1">
COM_COMPONENTBUILDER_CONFIG_DEFAULT</option>
<option value="2">
COM_COMPONENTBUILDER_CONFIG_ALPHANUMERICDOT</option>
</field>
</fieldset>
<fieldset
name="development_method_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_DEVELOPMENT_METHOD">

View File

@ -95,6 +95,20 @@ class Get
*/
public $compilerPath;
/**
* Switch to add assets table fix
*
* @var int
*/
public $addAssetsTableFix = 1;
/**
* Switch to add assets table name fix
*
* @var bool
*/
public $addAssetsTableNameFix = false;
/**
* Switch to add custom code placeholders
*
@ -341,6 +355,13 @@ class Get
*/
public $componentCodeName;
/**
* The Component Code Name Length
*
* @var int
*/
public $componentCodeNameLength;
/**
* The Component ID
*
@ -908,6 +929,19 @@ class Get
// set component context
$this->componentContext = $this->componentCodeName . '.'
. $this->componentID;
// set the component name length
$this->componentCodeNameLength = strlen(
$this->componentCodeName
);
// add assets table fix
$global = (int) $this->params->get(
'assets_table_fix', 1
);
$this->addAssetsTableFix = (($add_assets_table_fix
= (int) ComponentbuilderHelper::getVar(
'joomla_component', $this->componentID, 'id',
'assets_table_fix'
)) == 3) ? $global : $add_assets_table_fix;
// set if language strings line breaks should be removed
$global = ((int) ComponentbuilderHelper::getVar(
'joomla_component', $this->componentID, 'id',
@ -2221,6 +2255,16 @@ class Get
);
}
// check the length of the view name (+5 for com_ and _)
$name_length = $this->componentCodeNameLength + strlen(
$view->name_single_code
) + 5;
// when the name is larger then 49 we need to add the assets table name fix
if ($name_length > 49)
{
$this->addAssetsTableNameFix = true;
}
// set updater
$updater = array(
'unique' => array(
@ -4152,7 +4196,8 @@ class Get
public function getListViewDefaultOrdering(&$nameListCode)
{
if (isset($this->viewsDefaultOrdering[$nameListCode])
&& $this->viewsDefaultOrdering[$nameListCode]['add_admin_ordering'] == 1)
&& $this->viewsDefaultOrdering[$nameListCode]['add_admin_ordering']
== 1)
{
foreach (
$this->viewsDefaultOrdering[$nameListCode]['admin_ordering_fields']
@ -4171,6 +4216,7 @@ class Get
}
}
}
// the default
return array(
'name' => 'a.id',
@ -9154,21 +9200,28 @@ class Get
{
$form_field_class = array();
$form_field_class[] = $this->hhh . 'BOM' . $this->hhh . PHP_EOL;
$form_field_class[] = "//" . $this->setLine(__LINE__) . " No direct access to this file";
$form_field_class[] = "//" . $this->setLine(__LINE__)
. " No direct access to this file";
$form_field_class[] = "defined('_JEXEC') or die('Restricted access');";
$form_field_class[] = PHP_EOL . "use Joomla\CMS\Form\FormField;";
$form_field_class[] = "use Joomla\CMS\Factory;";
$form_field_class[] = PHP_EOL . "class JFormFieldModadminvvvvvvvdm extends FormField";
$form_field_class[] = PHP_EOL
. "class JFormFieldModadminvvvvvvvdm extends FormField";
$form_field_class[] = "{";
$form_field_class[] = $this->_t(1) . "protected \$type = 'modadminvvvvvvvdm';";
$form_field_class[] = PHP_EOL . $this->_t(1) . "protected function getLabel()";
$form_field_class[] = $this->_t(1)
. "protected \$type = 'modadminvvvvvvvdm';";
$form_field_class[] = PHP_EOL . $this->_t(1)
. "protected function getLabel()";
$form_field_class[] = $this->_t(1) . "{";
$form_field_class[] = $this->_t(2) . "return;";
$form_field_class[] = $this->_t(1) . "}";
$form_field_class[] = PHP_EOL . $this->_t(1) . "protected function getInput()";
$form_field_class[] = PHP_EOL . $this->_t(1)
. "protected function getInput()";
$form_field_class[] = $this->_t(1) . "{";
$form_field_class[] = $this->_t(2) . "//" . $this->setLine(__LINE__) . " Get the document";
$form_field_class[] = $this->_t(2) . "\$document = Factory::getDocument();";
$form_field_class[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Get the document";
$form_field_class[] = $this->_t(2)
. "\$document = Factory::getDocument();";
$form_field_class[] = implode(PHP_EOL, $fieldScriptBucket);
$form_field_class[] = $this->_t(2) . "return; // noting for now :)";
$form_field_class[] = $this->_t(1) . "}";

View File

@ -7968,6 +7968,8 @@ class Interpretation extends Fields
$script .= $this->getCustomScriptBuilder(
'php_postflight', 'install', PHP_EOL . PHP_EOL, null, true
);
// add the Intelligent Fix script if needed
$script .= $this->getAssetsTableIntelligentFix();
// add the component install notice
if (ComponentbuilderHelper::checkString($script))
{
@ -8128,7 +8130,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully remove " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8164,7 +8166,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully remove " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8238,7 +8240,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully remove " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8314,7 +8316,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully remove " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8349,7 +8351,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully remove " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8384,7 +8386,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(3) . "{";
$script .= PHP_EOL . $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " If succesfully remove " . $viewsCodeName
) . " If successfully removed " . $viewsCodeName
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(4)
@ -8482,7 +8484,7 @@ class Interpretation extends Fields
$script .= PHP_EOL . $this->_t(2) . "if (\$" . $view . "_done)";
$script .= PHP_EOL . $this->_t(2) . "{";
$script .= PHP_EOL . $this->_t(3) . "//" . $this->setLine(__LINE__)
. " If succesfully remove " . $component
. " If successfully removed " . $component
. " add queued success message.";
// TODO lang is not translated
$script .= PHP_EOL . $this->_t(3) . "\$app->enqueueMessage(JText:"
@ -8491,6 +8493,8 @@ class Interpretation extends Fields
// done
$script .= PHP_EOL;
}
// add the Intelligent Reversal script if needed
$script .= $this->getAssetsTableIntelligentReversal();
// add the custom uninstall script
$script .= $this->getCustomScriptBuilder(
'php_method', 'uninstall', "", null, true, null, PHP_EOL
@ -8499,6 +8503,52 @@ class Interpretation extends Fields
return $script;
}
/**
* build code for the assets table script intelligent fix
*
* @return string The php to place in script.php
*
*/
protected function getAssetsTableIntelligentFix()
{
// check if we should add the intelligent fix treatment for the assets table
if ($this->addAssetsTableFix == 2 && $this->accessSize <= 400)
{
// reset script
$script = array();
$script[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Check what size the rules column is now";
// done
return PHP_EOL . implode(PHP_EOL, $script);
}
return '';
}
/**
* build code for the assets table script intelligent reversal
*
* @return string The php to place in script.php
*
*/
protected function getAssetsTableIntelligentReversal()
{
// check if we should add the intelligent uninstall treatment for the assets table
if ($this->addAssetsTableFix == 2)
{
// reset script
$script = array();
$script[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Check for the biggest rules item in the database at this point";
// done
return PHP_EOL . implode(PHP_EOL, $script);
}
return '';
}
public function setMoveFolderScript()
{
if ($this->setMoveFolders)
@ -10458,10 +10508,34 @@ class Interpretation extends Fields
unset($this->customScriptBuilder['sql']);
}
// 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)
// just a little event tracking in classes
// count actions = setAccessSections
// around line206 (infusion call)
// around line26454 (interpretation function)
// first fix = setInstall
// around line1600 (infusion call)
// around line10063 (interpretation function)
// second fix = setUninstallScript
// around line2161 (infusion call)
// around line8030 (interpretation function)
// check if this component needs larger rules
// also check if the developer will allow this
// TODO still adding to GUI the needed switches and code
if (1)
// any value above 0 allows for the change to be added
// the access actions length must be checked before this
if ($this->addAssetsTableFix)
{
// 400 actions worse case is larger the 65535 characters
if ($this->accessSize > 400)
{
$db .= PHP_EOL;
$db .= PHP_EOL . '--';
@ -10474,11 +10548,28 @@ class Interpretation extends Fields
$db .= PHP_EOL
. "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;
$db .= PHP_EOL . '--';
$db .= PHP_EOL
. '--' . $this->setLine(
__LINE__
)
. ' Always insure this column rules is large enough for all the access control values.';
$db .= PHP_EOL . '--';
$db .= PHP_EOL
. "ALTER TABLE `#__assets` CHANGE `rules` `rules` TEXT NOT NULL COMMENT 'JSON encoded access control.';";
}
}
// check if this component needs larger names
// also check if the developer will allow this
// TODO still adding to GUI the needed switches and code
if (1)
// any value above 0 allows for the change to be added
// the config length must be checked before this
if ($this->addAssetsTableFix && $this->addAssetsTableNameFix)
{
$db .= PHP_EOL;
$db .= PHP_EOL . '--';
@ -10526,8 +10617,8 @@ class Interpretation extends Fields
// check if this component used larger rules
// now revert them back on uninstall
// TODO still adding to GUI the needed switches and code
if (1)
// number 1 allows for the change to be reversed
if ($this->addAssetsTableFix == 1)
{
// 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)
@ -10545,8 +10636,8 @@ class Interpretation extends Fields
// check if this component used larger names
// now revert them back on uninstall
// TODO still adding to GUI the needed switches and code
if (1)
// number 1 allows for the change to be reversed
if ($this->addAssetsTableFix == 1 && $this->addAssetsTableNameFix)
{
// https://github.com/joomla/joomla-cms/blob/3.10.0-alpha3/installation/sql/mysql/joomla.sql#L20
// Checked 1st December 2020 (let us know if this changes)
@ -26398,6 +26489,8 @@ function vdm_dkim() {
public function setAccessSections()
{
// access size counter
$this->accessSize = 12; // ;)
// set the default component access values
$this->componentHead = array();
$this->componentGlobal = array();
@ -26432,7 +26525,8 @@ function vdm_dkim() {
$this->componentHead[] = $this->_t(2)
. '<action name="core.export" title="' . $exportTitle
. '" description="' . $exportDesc . '" />';
// the size needs increase
$this->accessSize++;
$importTitle = $this->langPrefix . '_'
. ComponentbuilderHelper::safeString('Import Data', 'U');
$importDesc = $this->langPrefix . '_'
@ -26446,6 +26540,8 @@ function vdm_dkim() {
$this->componentHead[] = $this->_t(2)
. '<action name="core.import" title="' . $importTitle
. '" description="' . $importDesc . '" />';
// the size needs increase
$this->accessSize++;
}
// version permission
$batchTitle = $this->langPrefix . '_'
@ -26490,6 +26586,8 @@ function vdm_dkim() {
{
$this->componentHead[] = $this->_t(2)
. ' <action name="core.edit.value" title="JACTION_EDITVALUE" description="JACTION_EDITVALUE_COMPONENT_DESC" />';
// the size needs increase
$this->accessSize++;
}
// new custom created by permissions
$created_byTitle = $this->langPrefix . '_'
@ -26560,6 +26658,8 @@ function vdm_dkim() {
. '<action name="' . $customAdminCode . '.access" title="'
. $customAdminTitle . '" description="' . $customAdminDesc
. '" />';
// the size needs increase
$this->accessSize++;
// add the custom permissions to use the buttons of this view
$this->addCustomButtonPermissions(
$custom_admin_view['settings'], $customAdminName,
@ -26643,7 +26743,8 @@ function vdm_dkim() {
$this->componentGlobal[$sortKey] = $this->_t(2)
. '<action name="site.' . $siteCode . '.access" title="'
. $siteTitle . '" description="' . $siteDesc . '" />';
// the size needs increase
$this->accessSize++;
// check if this site view requires access rule to default to public
if (isset($site_view['public_access'])
&& $site_view['public_access'] == 1)
@ -26691,6 +26792,8 @@ function vdm_dkim() {
. $_customTab['lang_permission']
. '" description="'
. $_customTab['lang_permission_desc'] . '" />';
// the size needs increase
$this->accessSize++;
}
}
}
@ -26857,13 +26960,21 @@ function vdm_dkim() {
// add global to the compnent section
$component .= PHP_EOL . implode(PHP_EOL, $this->componentGlobal)
. PHP_EOL . $this->_t(1) . "</section>";
// add views to the compnent section
// add views to the component section
$component .= PHP_EOL . implode(PHP_EOL, $componentViews);
// be sure to reset again. (memory)
$this->componentHead = null;
$this->componentGlobal = null;
$this->permissionViews = null;
// remove the fix in not needed
if ($this->accessSize < 30)
{
// since we have less than 30 actions
// we do not need the fix for this component
$this->addAssetsTableFix = 0;
}
// return the build
return $component;
}
@ -26910,6 +27021,8 @@ function vdm_dkim() {
. '<action name="' . $code . '.' . $customButtonCode
. '" title="' . $customButtonTitle . '" description="'
. $customButtonDesc . '" />';
// the size needs increase
$this->accessSize++;
}
}
}
@ -27248,6 +27361,8 @@ function vdm_dkim() {
$this->componentGlobal[$sortKey] = $this->_t(2)
. '<action name="' . $action . '" title="' . $title
. '" description="' . $title . '_DESC" />';
// the size needs increase
$this->accessSize++;
// build permission switch
$this->permissionBuilder['global'][$action][$nameView]
= $nameView;
@ -27296,6 +27411,8 @@ function vdm_dkim() {
$this->componentGlobal[$sortKey] = $this->_t(2)
. '<action name="' . $action . '" title="' . $title
. '" description="' . $title . '_DESC" />';
// the size needs increase
$this->accessSize++;
// build permission switch
$this->permissionBuilder['global'][$action][$nameView]
= $nameView;

View File

@ -3291,6 +3291,10 @@ COM_COMPONENTBUILDER_CONFIG_ALPHANUMERIC="Alphanumeric"
COM_COMPONENTBUILDER_CONFIG_ALPHANUMERICDOT="Alphanumeric+dot"
COM_COMPONENTBUILDER_CONFIG_API_DESCRIPTION="This User will be used to log the API call."
COM_COMPONENTBUILDER_CONFIG_API_LABEL="API User"
COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_DESCRIPTION="How to apply the assets table fix in JCB.<br />
SQL (add&remove) this is the <b>default</b> which adds the SQL fix and removes it once the component is uninstalled.<br />
Intelligent (add&remove+if) same as default, but on uninstall will only remove this fix if no other component needs it. Note that this option will only work with other components that also use the <b>intelligent path</b>."
COM_COMPONENTBUILDER_CONFIG_ASSETS_TABLE_FIX_LABEL="Assets Table Fix"
COM_COMPONENTBUILDER_CONFIG_AUTHOR="Author Info"
COM_COMPONENTBUILDER_CONFIG_AUTHOR_EMAIL_DESC="The email address of the author of this component."
COM_COMPONENTBUILDER_CONFIG_AUTHOR_EMAIL_LABEL="Author Email"
@ -3378,6 +3382,7 @@ COM_COMPONENTBUILDER_CONFIG_CHECK_TIMER_OPTION_SIX="Never"
COM_COMPONENTBUILDER_CONFIG_CHECK_TIMER_OPTION_THREE="Once a day"
COM_COMPONENTBUILDER_CONFIG_CHECK_TIMER_OPTION_TWO="Every twelve hours"
COM_COMPONENTBUILDER_CONFIG_COMPANY="Company"
COM_COMPONENTBUILDER_CONFIG_COMPILER="Compiler"
COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_DESCRIPTION="Select the method to use when building the xml fields in the compiler. The <b>SimpleXMLElement Class</b> is best practice, and <b>String Manipulation</b> is faster and works without special extensions."
COM_COMPONENTBUILDER_CONFIG_COMPILER_FIELD_BUILDER_TYPE_LABEL="Field Builder Type<br /><small>(in compiler)</small>"
COM_COMPONENTBUILDER_CONFIG_COMPILER_FOLDER_PATH_DESCRIPTION="Here you can set the path to the compiler folder"
@ -3433,6 +3438,7 @@ COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_DESCRIPTION="This is the TXT value to use
COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_HINT="v=DKIM1;k=rsa;g=*;s=email;h=sha1;t=s;p=PUBLICKEY"
COM_COMPONENTBUILDER_CONFIG_DKIM_VALUE_LABEL="Value"
COM_COMPONENTBUILDER_CONFIG_DONT_LOAD="Not"
COM_COMPONENTBUILDER_CONFIG_DO_NOT_ADD_FIX_EVER="Do not add fix ever"
COM_COMPONENTBUILDER_CONFIG_DYNAMIC_GET_JOIN_DB_TABLE="Dynamic Get (join_db_table)"
COM_COMPONENTBUILDER_CONFIG_DYNAMIC_GET_JOIN_VIEW_TABLE="Dynamic Get (join_view_table)"
COM_COMPONENTBUILDER_CONFIG_EDITOR_DESCRIPTION="Select the editor you would like to use as the JCB global editor for all custom coding areas."
@ -3540,6 +3546,7 @@ COM_COMPONENTBUILDER_CONFIG_GRADIANT_LOAD="Gradient"
COM_COMPONENTBUILDER_CONFIG_INACTIVE="Inactive"
COM_COMPONENTBUILDER_CONFIG_INSTALL_DESCRIPTION="Component locally"
COM_COMPONENTBUILDER_CONFIG_INSTALL_LABEL="Install"
COM_COMPONENTBUILDER_CONFIG_INTELLIGENT_ADDREMOVEIF="Intelligent (add&remove+if)"
COM_COMPONENTBUILDER_CONFIG_JCB_COMMUNITY_PACKAGES="JCB Community Packages"
COM_COMPONENTBUILDER_CONFIG_JCB_PACKAGE_DIRECTORIES_DESCRIPTION="Here you can manage what package directories show in the JCB package import area."
COM_COMPONENTBUILDER_CONFIG_JCB_PACKAGE_DIRECTORIES_LABEL="Directories"
@ -3661,6 +3668,7 @@ COM_COMPONENTBUILDER_CONFIG_SMTPSECURE_LABEL="SMTP Security"
COM_COMPONENTBUILDER_CONFIG_SMTPUSER_DESCRIPTION="Enter the username for access to the SMTP host."
COM_COMPONENTBUILDER_CONFIG_SMTPUSER_HINT="email@demo.com"
COM_COMPONENTBUILDER_CONFIG_SMTPUSER_LABEL="SMTP Username"
COM_COMPONENTBUILDER_CONFIG_SQL_ADDREMOVE="SQL (add&remove)"
COM_COMPONENTBUILDER_CONFIG_SSL="SSL"
COM_COMPONENTBUILDER_CONFIG_STORAGE_TIME_TO_LIVE_DESCRIPTION="How long should the data that is stored in the browser memory remain unchanged before it is removed and updated."
COM_COMPONENTBUILDER_CONFIG_STORAGE_TIME_TO_LIVE_LABEL="Update Cycle"
@ -5899,6 +5907,11 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_UIKIT_VTWO="Add Uikit v2"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_UPDATE_SERVER="Add Update Server"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_UPDATE_SERVER_LABEL="Add Update Server"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADMIN_VIEWS="Admin Views"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ASSETS_TABLE_FIX="Assets Table Fix"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ASSETS_TABLE_FIX_DESCRIPTION="How to apply the assets table fix in JCB.<br />
SQL (add&remove) this is the <b>default</b> which adds the SQL fix and removes it once the component is uninstalled.<br />
Intelligent (add&remove+if) same as default, but on uninstall will only remove this fix if no other component needs it. Note that this option will only work with other components that also use the <b>intelligent path</b>."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ASSETS_TABLE_FIX_LABEL="Assets Table Fix"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR="Author"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_DESCRIPTION="The Author's Name &amp; Surname."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_HINT="Author Name &amp; Surname Here"
@ -5984,6 +5997,7 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DESCRIPTION_DESCRIPTION="Add Description H
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DESCRIPTION_HINT="Add Description Here"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DESCRIPTION_LABEL="Description"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DETAILS="Details"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DO_NOT_ADD_FIX_EVER="Do not add fix ever"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DYNAMIC="Dynamic"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DYNAMIC_BUILD_BETA="Dynamic Build (beta)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DYNAMIC_INTEGRATION="Dynamic Integration"
@ -6020,6 +6034,7 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMAGE_DESCRIPTION="The component image (pr
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMAGE_LABEL="Component Image"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_JCB_PACKAGES_BUTTON_ACCESS="Joomla Component Import JCB Packages Button Access"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_JCB_PACKAGES_BUTTON_ACCESS_DESC="Allows the users in this group to access the import jcb packages button."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_INTELLIGENT_ADDREMOVEIF="Intelligent (add&remove+if)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JAVASCRIPT="Javascript"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JAVASCRIPT_DESCRIPTION="Add JavaScript for the entire back-end. Do not add the script tags."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JAVASCRIPT_LABEL="Javascript"
@ -6236,6 +6251,7 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHOW_DESCRIPTION="Select where you want th
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHOW_LABEL="Show"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SITE_VIEWS="Site Views"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL="Sql"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_ADDREMOVE="SQL (add&remove)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_DESCRIPTION="Add your MySQL here!"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_HINT="// Add MySQL Table Dump Here"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_LABEL="MySQL - (Install)"

View File

@ -29,7 +29,8 @@ $fields = $displayData->get($fields_tab_layout) ?: array(
'add_sql',
'sql',
'add_sql_uninstall',
'sql_uninstall'
'sql_uninstall',
'assets_table_fix'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();

File diff suppressed because it is too large Load Diff

View File

@ -89,33 +89,13 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
'css_site'
)
),
'dynamic_integration' => array(
'left' => array(
'add_update_server',
'update_server_url',
'update_server_target',
'note_update_server_note_ftp',
'note_update_server_note_zip',
'note_update_server_note_other',
'update_server',
'add_sales_server',
'sales_server'
),
'right' => array(
'translation_tool',
'note_crowdin',
'crowdin_project_identifier',
'crowdin_project_api_key',
'crowdin_username',
'crowdin_account_api_key'
)
),
'mysql' => array(
'fullwidth' => array(
'add_sql',
'sql',
'add_sql_uninstall',
'sql_uninstall'
'sql_uninstall',
'assets_table_fix'
)
),
'dash_install' => array(
@ -140,6 +120,27 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
'php_method_uninstall'
)
),
'dynamic_integration' => array(
'left' => array(
'add_update_server',
'update_server_url',
'update_server_target',
'note_update_server_note_ftp',
'note_update_server_note_zip',
'note_update_server_note_other',
'update_server',
'add_sales_server',
'sales_server'
),
'right' => array(
'translation_tool',
'note_crowdin',
'crowdin_project_identifier',
'crowdin_project_api_key',
'crowdin_username',
'crowdin_account_api_key'
)
),
'readme' => array(
'left' => array(
'addreadme',
@ -339,70 +340,34 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$item->metadata = $registry->toArray();
}
if (!empty($item->buildcompsql))
{
// base64 Decode buildcompsql.
$item->buildcompsql = base64_decode($item->buildcompsql);
}
if (!empty($item->php_helper_both))
{
// base64 Decode php_helper_both.
$item->php_helper_both = base64_decode($item->php_helper_both);
}
if (!empty($item->php_helper_admin))
{
// base64 Decode php_helper_admin.
$item->php_helper_admin = base64_decode($item->php_helper_admin);
}
if (!empty($item->php_admin_event))
{
// base64 Decode php_admin_event.
$item->php_admin_event = base64_decode($item->php_admin_event);
}
if (!empty($item->php_helper_site))
{
// base64 Decode php_helper_site.
$item->php_helper_site = base64_decode($item->php_helper_site);
}
if (!empty($item->php_site_event))
{
// base64 Decode php_site_event.
$item->php_site_event = base64_decode($item->php_site_event);
}
if (!empty($item->javascript))
{
// base64 Decode javascript.
$item->javascript = base64_decode($item->javascript);
}
if (!empty($item->css_admin))
{
// base64 Decode css_admin.
$item->css_admin = base64_decode($item->css_admin);
}
if (!empty($item->css_site))
if (!empty($item->php_helper_both))
{
// base64 Decode css_site.
$item->css_site = base64_decode($item->css_site);
// base64 Decode php_helper_both.
$item->php_helper_both = base64_decode($item->php_helper_both);
}
if (!empty($item->php_preflight_install))
if (!empty($item->php_admin_event))
{
// base64 Decode php_preflight_install.
$item->php_preflight_install = base64_decode($item->php_preflight_install);
// base64 Decode php_admin_event.
$item->php_admin_event = base64_decode($item->php_admin_event);
}
if (!empty($item->php_preflight_update))
if (!empty($item->sql_uninstall))
{
// base64 Decode php_preflight_update.
$item->php_preflight_update = base64_decode($item->php_preflight_update);
// base64 Decode sql_uninstall.
$item->sql_uninstall = base64_decode($item->sql_uninstall);
}
if (!empty($item->php_postflight_install))
@ -411,10 +376,10 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$item->php_postflight_install = base64_decode($item->php_postflight_install);
}
if (!empty($item->php_postflight_update))
if (!empty($item->php_preflight_install))
{
// base64 Decode php_postflight_update.
$item->php_postflight_update = base64_decode($item->php_postflight_update);
// base64 Decode php_preflight_install.
$item->php_preflight_install = base64_decode($item->php_preflight_install);
}
if (!empty($item->php_method_uninstall))
@ -423,16 +388,52 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$item->php_method_uninstall = base64_decode($item->php_method_uninstall);
}
if (!empty($item->php_helper_admin))
{
// base64 Decode php_helper_admin.
$item->php_helper_admin = base64_decode($item->php_helper_admin);
}
if (!empty($item->php_helper_site))
{
// base64 Decode php_helper_site.
$item->php_helper_site = base64_decode($item->php_helper_site);
}
if (!empty($item->javascript))
{
// base64 Decode javascript.
$item->javascript = base64_decode($item->javascript);
}
if (!empty($item->css_site))
{
// base64 Decode css_site.
$item->css_site = base64_decode($item->css_site);
}
if (!empty($item->php_preflight_update))
{
// base64 Decode php_preflight_update.
$item->php_preflight_update = base64_decode($item->php_preflight_update);
}
if (!empty($item->php_postflight_update))
{
// base64 Decode php_postflight_update.
$item->php_postflight_update = base64_decode($item->php_postflight_update);
}
if (!empty($item->sql))
{
// base64 Decode sql.
$item->sql = base64_decode($item->sql);
}
if (!empty($item->sql_uninstall))
if (!empty($item->buildcompsql))
{
// base64 Decode sql_uninstall.
$item->sql_uninstall = base64_decode($item->sql_uninstall);
// base64 Decode buildcompsql.
$item->buildcompsql = base64_decode($item->buildcompsql);
}
if (!empty($item->readme))
@ -446,18 +447,18 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
// Get the encryption object.
$basic = new FOFEncryptAes($basickey);
if (!empty($item->crowdin_username) && $basickey && !is_numeric($item->crowdin_username) && $item->crowdin_username === base64_encode(base64_decode($item->crowdin_username, true)))
{
// basic decrypt data crowdin_username.
$item->crowdin_username = rtrim($basic->decryptString($item->crowdin_username), "\0");
}
if (!empty($item->whmcs_key) && $basickey && !is_numeric($item->whmcs_key) && $item->whmcs_key === base64_encode(base64_decode($item->whmcs_key, true)))
{
// basic decrypt data whmcs_key.
$item->whmcs_key = rtrim($basic->decryptString($item->whmcs_key), "\0");
}
if (!empty($item->crowdin_username) && $basickey && !is_numeric($item->crowdin_username) && $item->crowdin_username === base64_encode(base64_decode($item->crowdin_username, true)))
{
// basic decrypt data crowdin_username.
$item->crowdin_username = rtrim($basic->decryptString($item->crowdin_username), "\0");
}
if (!empty($item->export_key) && $basickey && !is_numeric($item->export_key) && $item->export_key === base64_encode(base64_decode($item->export_key, true)))
{
// basic decrypt data export_key.
@ -1412,70 +1413,34 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$data['addcontributors'] = '';
}
// Set the buildcompsql string to base64 string.
if (isset($data['buildcompsql']))
{
$data['buildcompsql'] = base64_encode($data['buildcompsql']);
}
// Set the php_helper_both string to base64 string.
if (isset($data['php_helper_both']))
{
$data['php_helper_both'] = base64_encode($data['php_helper_both']);
}
// Set the php_helper_admin string to base64 string.
if (isset($data['php_helper_admin']))
{
$data['php_helper_admin'] = base64_encode($data['php_helper_admin']);
}
// Set the php_admin_event string to base64 string.
if (isset($data['php_admin_event']))
{
$data['php_admin_event'] = base64_encode($data['php_admin_event']);
}
// Set the php_helper_site string to base64 string.
if (isset($data['php_helper_site']))
{
$data['php_helper_site'] = base64_encode($data['php_helper_site']);
}
// Set the php_site_event string to base64 string.
if (isset($data['php_site_event']))
{
$data['php_site_event'] = base64_encode($data['php_site_event']);
}
// Set the javascript string to base64 string.
if (isset($data['javascript']))
{
$data['javascript'] = base64_encode($data['javascript']);
}
// Set the css_admin string to base64 string.
if (isset($data['css_admin']))
{
$data['css_admin'] = base64_encode($data['css_admin']);
}
// Set the css_site string to base64 string.
if (isset($data['css_site']))
// Set the php_helper_both string to base64 string.
if (isset($data['php_helper_both']))
{
$data['css_site'] = base64_encode($data['css_site']);
$data['php_helper_both'] = base64_encode($data['php_helper_both']);
}
// Set the php_preflight_install string to base64 string.
if (isset($data['php_preflight_install']))
// Set the php_admin_event string to base64 string.
if (isset($data['php_admin_event']))
{
$data['php_preflight_install'] = base64_encode($data['php_preflight_install']);
$data['php_admin_event'] = base64_encode($data['php_admin_event']);
}
// Set the php_preflight_update string to base64 string.
if (isset($data['php_preflight_update']))
// Set the sql_uninstall string to base64 string.
if (isset($data['sql_uninstall']))
{
$data['php_preflight_update'] = base64_encode($data['php_preflight_update']);
$data['sql_uninstall'] = base64_encode($data['sql_uninstall']);
}
// Set the php_postflight_install string to base64 string.
@ -1484,10 +1449,10 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$data['php_postflight_install'] = base64_encode($data['php_postflight_install']);
}
// Set the php_postflight_update string to base64 string.
if (isset($data['php_postflight_update']))
// Set the php_preflight_install string to base64 string.
if (isset($data['php_preflight_install']))
{
$data['php_postflight_update'] = base64_encode($data['php_postflight_update']);
$data['php_preflight_install'] = base64_encode($data['php_preflight_install']);
}
// Set the php_method_uninstall string to base64 string.
@ -1496,16 +1461,52 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
$data['php_method_uninstall'] = base64_encode($data['php_method_uninstall']);
}
// Set the php_helper_admin string to base64 string.
if (isset($data['php_helper_admin']))
{
$data['php_helper_admin'] = base64_encode($data['php_helper_admin']);
}
// Set the php_helper_site string to base64 string.
if (isset($data['php_helper_site']))
{
$data['php_helper_site'] = base64_encode($data['php_helper_site']);
}
// Set the javascript string to base64 string.
if (isset($data['javascript']))
{
$data['javascript'] = base64_encode($data['javascript']);
}
// Set the css_site string to base64 string.
if (isset($data['css_site']))
{
$data['css_site'] = base64_encode($data['css_site']);
}
// Set the php_preflight_update string to base64 string.
if (isset($data['php_preflight_update']))
{
$data['php_preflight_update'] = base64_encode($data['php_preflight_update']);
}
// Set the php_postflight_update string to base64 string.
if (isset($data['php_postflight_update']))
{
$data['php_postflight_update'] = base64_encode($data['php_postflight_update']);
}
// Set the sql string to base64 string.
if (isset($data['sql']))
{
$data['sql'] = base64_encode($data['sql']);
}
// Set the sql_uninstall string to base64 string.
if (isset($data['sql_uninstall']))
// Set the buildcompsql string to base64 string.
if (isset($data['buildcompsql']))
{
$data['sql_uninstall'] = base64_encode($data['sql_uninstall']);
$data['buildcompsql'] = base64_encode($data['buildcompsql']);
}
// Set the readme string to base64 string.
@ -1519,18 +1520,18 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin
// Get the encryption object
$basic = new FOFEncryptAes($basickey);
// Encrypt data crowdin_username.
if (isset($data['crowdin_username']) && $basickey)
{
$data['crowdin_username'] = $basic->encryptString($data['crowdin_username']);
}
// Encrypt data whmcs_key.
if (isset($data['whmcs_key']) && $basickey)
{
$data['whmcs_key'] = $basic->encryptString($data['whmcs_key']);
}
// Encrypt data crowdin_username.
if (isset($data['crowdin_username']) && $basickey)
{
$data['crowdin_username'] = $basic->encryptString($data['crowdin_username']);
}
// Encrypt data export_key.
if (isset($data['export_key']) && $basickey)
{

View File

@ -2395,6 +2395,41 @@ class ComponentbuilderModelJoomla_components extends JModelList
continue;
}
// decode php_site_event
$item->php_site_event = base64_decode($item->php_site_event);
// decode css_admin
$item->css_admin = base64_decode($item->css_admin);
// decode php_helper_both
$item->php_helper_both = base64_decode($item->php_helper_both);
// decode php_admin_event
$item->php_admin_event = base64_decode($item->php_admin_event);
// decode sql_uninstall
$item->sql_uninstall = base64_decode($item->sql_uninstall);
// decode php_postflight_install
$item->php_postflight_install = base64_decode($item->php_postflight_install);
// decode php_preflight_install
$item->php_preflight_install = base64_decode($item->php_preflight_install);
// decode php_method_uninstall
$item->php_method_uninstall = base64_decode($item->php_method_uninstall);
// decode php_helper_admin
$item->php_helper_admin = base64_decode($item->php_helper_admin);
// decode php_helper_site
$item->php_helper_site = base64_decode($item->php_helper_site);
// decode javascript
$item->javascript = base64_decode($item->javascript);
// decode css_site
$item->css_site = base64_decode($item->css_site);
if ($basickey && !is_numeric($item->whmcs_key) && $item->whmcs_key === base64_encode(base64_decode($item->whmcs_key, true)))
{
// decrypt whmcs_key
$item->whmcs_key = $basic->decryptString($item->whmcs_key);
}
// decode php_preflight_update
$item->php_preflight_update = base64_decode($item->php_preflight_update);
// decode php_postflight_update
$item->php_postflight_update = base64_decode($item->php_postflight_update);
// decode sql
$item->sql = base64_decode($item->sql);
if ($basickey && !is_numeric($item->crowdin_username) && $item->crowdin_username === base64_encode(base64_decode($item->crowdin_username, true)))
{
// decrypt crowdin_username
@ -2402,46 +2437,11 @@ class ComponentbuilderModelJoomla_components extends JModelList
}
// decode buildcompsql
$item->buildcompsql = base64_decode($item->buildcompsql);
if ($basickey && !is_numeric($item->whmcs_key) && $item->whmcs_key === base64_encode(base64_decode($item->whmcs_key, true)))
{
// decrypt whmcs_key
$item->whmcs_key = $basic->decryptString($item->whmcs_key);
}
// decode php_helper_both
$item->php_helper_both = base64_decode($item->php_helper_both);
// decode php_helper_admin
$item->php_helper_admin = base64_decode($item->php_helper_admin);
// decode php_admin_event
$item->php_admin_event = base64_decode($item->php_admin_event);
// decode php_helper_site
$item->php_helper_site = base64_decode($item->php_helper_site);
// decode php_site_event
$item->php_site_event = base64_decode($item->php_site_event);
// decode javascript
$item->javascript = base64_decode($item->javascript);
// decode css_admin
$item->css_admin = base64_decode($item->css_admin);
// decode css_site
$item->css_site = base64_decode($item->css_site);
// decode php_preflight_install
$item->php_preflight_install = base64_decode($item->php_preflight_install);
// decode php_preflight_update
$item->php_preflight_update = base64_decode($item->php_preflight_update);
if ($basickey && !is_numeric($item->export_key) && $item->export_key === base64_encode(base64_decode($item->export_key, true)))
{
// decrypt export_key
$item->export_key = $basic->decryptString($item->export_key);
}
// decode php_postflight_install
$item->php_postflight_install = base64_decode($item->php_postflight_install);
// decode php_postflight_update
$item->php_postflight_update = base64_decode($item->php_postflight_update);
// decode php_method_uninstall
$item->php_method_uninstall = base64_decode($item->php_method_uninstall);
// decode sql
$item->sql = base64_decode($item->sql);
// decode sql_uninstall
$item->sql_uninstall = base64_decode($item->sql_uninstall);
// decode readme
$item->readme = base64_decode($item->readme);
if ($basickey && !is_numeric($item->crowdin_project_api_key) && $item->crowdin_project_api_key === base64_encode(base64_decode($item->crowdin_project_api_key, true)))

View File

@ -26,6 +26,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_component` (
`addfootable` TINYINT(1) NOT NULL DEFAULT 0,
`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
`adduikit` TINYINT(1) NOT NULL DEFAULT 0,
`assets_table_fix` TINYINT(1) NOT NULL DEFAULT 3,
`author` VARCHAR(255) NOT NULL DEFAULT '',
`bom` CHAR(64) NOT NULL DEFAULT '',
`buildcomp` TINYINT(1) NOT NULL DEFAULT 0,
@ -103,34 +104,35 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_component` (
PRIMARY KEY (`id`),
KEY `idx_system_name` (`system_name`),
KEY `idx_name_code` (`name_code`),
KEY `idx_add_php_helper_admin` (`add_php_helper_admin`),
KEY `idx_addfootable` (`addfootable`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
KEY `idx_add_css_site` (`add_css_site`),
KEY `idx_mvc_versiondate` (`mvc_versiondate`),
KEY `idx_remove_line_breaks` (`remove_line_breaks`),
KEY `idx_add_placeholders` (`add_placeholders`),
KEY `idx_add_php_helper_site` (`add_php_helper_site`),
KEY `idx_add_javascript` (`add_javascript`),
KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
KEY `idx_addreadme` (`addreadme`),
KEY `idx_debug_linenr` (`debug_linenr`),
KEY `idx_add_license` (`add_license`),
KEY `idx_license_type` (`license_type`),
KEY `idx_add_php_helper_both` (`add_php_helper_both`),
KEY `idx_add_admin_event` (`add_admin_event`),
KEY `idx_add_site_event` (`add_site_event`),
KEY `idx_add_css_admin` (`add_css_admin`),
KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
KEY `idx_translation_tool` (`translation_tool`),
KEY `idx_mvc_versiondate` (`mvc_versiondate`),
KEY `idx_add_placeholders` (`add_placeholders`),
KEY `idx_add_sales_server` (`add_sales_server`),
KEY `idx_add_email_helper` (`add_email_helper`),
KEY `idx_add_license` (`add_license`),
KEY `idx_license_type` (`license_type`),
KEY `idx_addreadme` (`addreadme`),
KEY `idx_translation_tool` (`translation_tool`),
KEY `idx_addfootable` (`addfootable`),
KEY `idx_add_php_helper_both` (`add_php_helper_both`),
KEY `idx_add_php_helper_admin` (`add_php_helper_admin`),
KEY `idx_add_admin_event` (`add_admin_event`),
KEY `idx_add_php_helper_site` (`add_php_helper_site`),
KEY `idx_add_site_event` (`add_site_event`),
KEY `idx_add_javascript` (`add_javascript`),
KEY `idx_add_menu_prefix` (`add_menu_prefix`),
KEY `idx_add_css_admin` (`add_css_admin`),
KEY `idx_menu_prefix` (`menu_prefix`),
KEY `idx_add_css_site` (`add_css_site`),
KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
KEY `idx_add_sql` (`add_sql`),
KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
KEY `idx_assets_table_fix` (`assets_table_fix`),
KEY `idx_emptycontributors` (`emptycontributors`),
KEY `idx_add_update_server` (`add_update_server`),
KEY `idx_update_server_target` (`update_server_target`),

View File

@ -48,13 +48,3 @@ DROP TABLE IF EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls`;
DROP TABLE IF EXISTS `#__componentbuilder_external_code`;
--
-- Always insure this column rules is reversed to Joomla defaults on uninstall. (as on 1st Dec 2020)
--
ALTER TABLE `#__assets` CHANGE `rules` `rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.';
--
-- Always insure this column name is reversed to Joomla defaults on uninstall. (as on 1st Dec 2020).
--
ALTER TABLE `#__assets` CHANGE `name` `name` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The unique name for the asset.';

View File

@ -0,0 +1 @@
ALTER TABLE `#__componentbuilder_joomla_component` ADD `assets_table_fix` TINYINT(1) NOT NULL DEFAULT 3 AFTER `adduikit`;

View File

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade">
<name>COM_COMPONENTBUILDER</name>
<creationDate>8th December, 2020</creationDate>
<creationDate>10th December, 2020</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
<copyright>Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>2.12.1</version>
<version>2.12.2</version>
<description><![CDATA[
<h1>Component Builder (v.2.12.1)</h1>
<h1>Component Builder (v.2.12.2)</h1>
<div style="clear: both;"></div>
<p>The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time.

View File

@ -993,7 +993,24 @@
<version>2.12.1</version>
<infourl title="Component Builder!">http://www.joomlacomponentbuilder.com</infourl>
<downloads>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.12.1/JCB_v2.12.1.zip</downloadurl>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.12.2/JCB_v2.12.2.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>
</tags>
<maintainer>Llewellyn van der Merwe</maintainer>
<maintainerurl>http://www.joomlacomponentbuilder.com</maintainerurl>
<targetplatform name="joomla" version="3.*"/>
</update>
<update>
<name>Component Builder</name>
<description>Builds Complex Joomla Components</description>
<element>com_componentbuilder</element>
<type>component</type>
<version>2.12.2</version>
<infourl title="Component Builder!">http://www.joomlacomponentbuilder.com</infourl>
<downloads>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.12.2/JCB_v2.12.2.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>

File diff suppressed because it is too large Load Diff