diff --git a/README.md b/README.md
index c39b78dae..8604da1a1 100644
--- a/README.md
+++ b/README.md
@@ -144,13 +144,13 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 2nd May, 2023
++ *Last Build*: 22nd May, 2023
+ *Version*: 3.1.24
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **557762**
++ *Line count*: **559431**
+ *Field count*: **2041**
-+ *File count*: **3930**
++ *File count*: **3934**
+ *Folder count*: **432**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
diff --git a/admin/README.txt b/admin/README.txt
index c39b78dae..8604da1a1 100644
--- a/admin/README.txt
+++ b/admin/README.txt
@@ -144,13 +144,13 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 2nd May, 2023
++ *Last Build*: 22nd May, 2023
+ *Version*: 3.1.24
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **557762**
++ *Line count*: **559431**
+ *Field count*: **2041**
-+ *File count*: **3930**
++ *File count*: **3934**
+ *Folder count*: **432**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
diff --git a/admin/helpers/compiler/c_Fields.php b/admin/helpers/compiler/c_Fields.php
index f45880893..8261e7e87 100644
--- a/admin/helpers/compiler/c_Fields.php
+++ b/admin/helpers/compiler/c_Fields.php
@@ -1325,7 +1325,7 @@ class Fields extends Structure
}
}
// fix the permissions field "title" issue gh-629
- // check if the the title is not already set
+ // check if the title is not already set
if (!CFactory::_('Registry')->isString('builder.field_names.' . $nameSingleCode . '.title')
&& $this->hasPermissionsSet($view, $nameSingleCode))
{
@@ -3982,7 +3982,7 @@ class Fields extends Structure
. $field['alignment'] . '.'
. $field['order_edit'], $name);
}
- // check if default fields were over written
+ // check if default fields were overwritten
if (in_array($name, $default_fields))
{
// just to eliminate
diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php
index ce7f040dd..5deac78d4 100644
--- a/admin/helpers/compiler/e_Interpretation.php
+++ b/admin/helpers/compiler/e_Interpretation.php
@@ -4972,7 +4972,7 @@ class Interpretation extends Fields
public function setAdminViewDisplayMethod($nameListCode)
{
$script = '';
- // add the the new filter methods for the search toolbar above the list view (2 = topbar)
+ // add the new filter methods for the search toolbar above the list view (2 = topbar)
if (CFactory::_('Registry')->
get('builder.admin_filter_type.' . $nameListCode, 1) == 2)
{
@@ -10052,6 +10052,7 @@ class Interpretation extends Fields
{
$default = $data['other'];
}
+ // to get just null value add EMPTY to other value.
if ($default === 'EMPTY')
{
$default = $data['null_switch'];
@@ -10062,42 +10063,32 @@ class Interpretation extends Fields
$default = $data['null_switch'] . ' DEFAULT '
. $default;
}
- elseif ($default == 0 || $default)
+ elseif (is_numeric($default))
{
- if (is_numeric($default))
- {
- $default = $data['null_switch'] . " DEFAULT "
- . $default;
- }
- else
- {
- $default = $data['null_switch'] . " DEFAULT '"
- . $default . "'";
- }
- }
- elseif ($data['null_switch'] === 'NULL')
- {
- $default = "DEFAULT NULL";
+ $default = $data['null_switch'] . " DEFAULT "
+ . $default;
}
else
{
- $default = $data['null_switch'];
+ $default = $data['null_switch'] . " DEFAULT '"
+ . $default . "'";
}
- // set the lenght
- $lenght = '';
+
+ // set the length (lenght) <-- TYPO :: LVDM :: DON'T TOUCH
+ $length = '';
if (isset($data['lenght']) && $data['lenght'] === 'Other'
&& isset($data['lenght_other'])
&& $data['lenght_other'] > 0)
{
- $lenght = '(' . $data['lenght_other'] . ')';
+ $length = '(' . $data['lenght_other'] . ')';
}
elseif (isset($data['lenght']) && $data['lenght'] > 0)
{
- $lenght = '(' . $data['lenght'] . ')';
+ $length = '(' . $data['lenght'] . ')';
}
// set the field to db
$db_ .= PHP_EOL . Indent::_(1) . "`" . $field . "` "
- . $data['type'] . $lenght . " " . $default . ",";
+ . $data['type'] . $length . " " . $default . ",";
// check if this a new field that should be added via SQL update
if (CFactory::_('Registry')->
get('builder.add_sql.field.' . $view . '.' . $data['ID'], null))
@@ -10105,10 +10096,10 @@ class Interpretation extends Fields
// to soon....
// $key_ = "ALTERTABLE`#__" . $component . "_" . $view . "`ADDCOLUMNIFNOTEXISTS`" . $field . "`";
// $value_ = "ALTER TABLE `#__" . $component . "_" . $view . "` ADD COLUMN IF NOT EXISTS `" . $field . "` " . $data['type']
- // . $lenght . " " . $default . " AFTER `" . $last_name . "`;";
+ // . length . " " . $default . " AFTER `" . $last_name . "`;";
$key_ = "ALTERTABLE`#__" . $component . "_" . $view . "`ADD`" . $field . "`";
$value_ = "ALTER TABLE `#__" . $component . "_" . $view . "` ADD `" . $field . "` " . $data['type']
- . $lenght . " " . $default . " AFTER `" . $last_name . "`;";
+ . $length . " " . $default . " AFTER `" . $last_name . "`;";
CFactory::_('Builder.Update.Mysql')->set($key_, $value_);
}
@@ -10131,7 +10122,7 @@ class Interpretation extends Fields
$key_ = "ALTERTABLE`#__" . $component . "_" . $view . "`CHANGE`" . $oldName . "``"
. $field . "`";
$value_ = "ALTER TABLE `#__" . $component . "_" . $view . "` CHANGE `" . $oldName . "` `"
- . $field . "` " . $data['type'] . $lenght . " " . $default . ";";
+ . $field . "` " . $data['type'] . $length . " " . $default . ";";
CFactory::_('Builder.Update.Mysql')->set($key_, $value_);
}
@@ -11129,7 +11120,7 @@ class Interpretation extends Fields
$body .= PHP_EOL . Indent::_(1) . "?>";
$body .= PHP_EOL . Indent::_(1)
. '
';
- // only load if not over written
+ // only load if not overwritten
if (!CFactory::_('Registry')->isString('builder.field_names.' . $nameSingleCode . '.ordering'))
{
$body .= PHP_EOL . Indent::_(2)
@@ -11236,7 +11227,7 @@ class Interpretation extends Fields
$item, $nameSingleCode, $nameListCode, $itemClass,
$doNotEscape, $coreLoad, $core
);
- // check if buttons was aready added
+ // check if buttons was already added
if ($firstTimeBeingAdded) // TODO we must improve this to allow more items to be targeted instead of just the first item :)
{
// get custom admin view buttons
diff --git a/componentbuilder.xml b/componentbuilder.xml
index f0348ef73..04ef98e1a 100644
--- a/componentbuilder.xml
+++ b/componentbuilder.xml
@@ -1,7 +1,7 @@
COM_COMPONENTBUILDER
- 2nd May, 2023
+ 22nd May, 2023
Llewellyn van der Merwe
joomla@vdm.io
https://dev.vdm.io
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Adminviews.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Adminviews.php
index edb322b22..38201e9bd 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Adminviews.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Adminviews.php
@@ -92,7 +92,7 @@ class Adminviews
$item->addadmin_views, function ($a, $b) {
if ($a['order'] != 0 && $b['order'] != 0)
{
- return $a['order'] - $b['order'];
+ return $a['order'] <=> $b['order'];
}
elseif ($b['order'] != 0 && $a['order'] == 0)
{
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Fields.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Fields.php
index d7fe61d64..0e6b03c24 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Fields.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Model/Fields.php
@@ -204,7 +204,7 @@ class Fields
{
if ($a['order_list'] != 0 && $b['order_list'] != 0)
{
- return $a['order_list'] - $b['order_list'];
+ return $a['order_list'] <=> $b['order_list'];
}
elseif ($b['order_list'] != 0 && $a['order_list'] == 0)
{
@@ -212,7 +212,7 @@ class Fields
}
elseif ($a['order_list'] != 0 && $b['order_list'] == 0)
{
- return 0;
+ return -1;
}
return 1;
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
index 115c10162..9c8ab17df 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
@@ -69,6 +69,14 @@ class Power implements PowerInterface
**/
public array $superpowers = [];
+ /**
+ * Old super powers found in the local repos
+ *
+ * @var array
+ * @since 3.2.0
+ **/
+ public array $old_superpowers = [];
+
/**
* The url to the power, if there is an error.
*
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Infusion.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Infusion.php
index c0dd35bf6..4b03a0c31 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Infusion.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Infusion.php
@@ -232,9 +232,18 @@ class Infusion
array(&$context, &$path, &$key, &$powers)
);
+ // we add and all missing powers
+ if (isset($this->power->old_superpowers[$path]))
+ {
+ $this->mergePowers($powers, $this->power->old_superpowers[$path]);
+ }
+
// POWERREADME
$this->content->set_($key, 'POWERREADME', $this->reposreadme->get($powers));
+ // sort all powers
+ $this->sortPowers($powers);
+
// POWERINDEX
$this->content->set_($key, 'POWERINDEX', $this->index($powers));
@@ -247,6 +256,34 @@ class Infusion
}
}
+ /**
+ * Merge the old missing powers found in local repository back into the index
+ *
+ * @return void
+ * @since 3.2.0
+ */
+ private function mergePowers(array &$powers, array &$old)
+ {
+ foreach ($old as $guid => $values)
+ {
+ if (!isset($powers[$guid]))
+ {
+ $powers[$guid] = $values;
+ }
+ }
+ }
+
+ /**
+ * Sort Powers
+ *
+ * @return void
+ * @since 3.2.0
+ */
+ private function sortPowers(array &$powers)
+ {
+ ksort($powers, SORT_STRING);
+ }
+
/**
* Set the Powers code
*
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Repos/Readme.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Repos/Readme.php
index 4b4ec0fc9..d27d7ce32 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Repos/Readme.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Repos/Readme.php
@@ -123,18 +123,13 @@ class Readme
$classes = [];
foreach ($powers as $guid => $power)
{
- $power_object = $this->power->get($guid);
- if (isset($power_object->parsed_class_code) && is_array($power_object->parsed_class_code))
- {
- // add to the sort bucket
- $classes[] = [
- 'namespace' => $power['namespace'],
- 'type' => $power['type'],
- 'name' => $power['name'],
- 'link' => $this->indexLinkPower($power),
- 'diagram' => $this->plantuml->classBasicDiagram($power, $power_object->parsed_class_code)
- ];
- }
+ // add to the sort bucket
+ $classes[] = [
+ 'namespace' => $power['namespace'],
+ 'type' => $power['type'],
+ 'name' => $power['name'],
+ 'link' => $this->indexLinkPower($power)
+ ];
}
return $this->readmeModel($classes);
@@ -152,11 +147,7 @@ class Readme
{
$this->sortClasses($classes, $this->defineTypeOrder());
- $result = $this->generateIndex($classes);
-
- $diagram_bucket = $this->generateDiagramBucket($classes);
-
- return $result . $diagram_bucket;
+ return $this->generateIndex($classes);
}
/**
@@ -187,40 +178,6 @@ class Readme
return $result;
}
- /**
- * Generate the diagram bucket string for classes
- *
- * @param array $classes The sorted classes
- *
- * @return string The diagram bucket string
- */
- private function generateDiagramBucket(array &$classes): string
- {
- $diagram_bucket = "\n\n# Class Diagrams\n";
- $current_namespace = null;
- $diagrams = '';
-
- foreach ($classes as $class)
- {
- if ($class['namespace'] !== $current_namespace)
- {
- if ($current_namespace !== null)
- {
- $diagram_bucket .= $this->generateNamespaceDiagram($current_namespace, $diagrams);
- }
- $current_namespace = $class['namespace'];
- $diagrams = '';
- }
-
- $diagrams .= $class['diagram'];
- }
-
- // Add the last namespace diagram
- $diagram_bucket .= $this->generateNamespaceDiagram($current_namespace, $diagrams);
-
- return $diagram_bucket;
- }
-
/**
* Define the order of types for sorting purposes
*
@@ -301,7 +258,7 @@ class Readme
*/
private function compareType(array $a, array $b, array $typeOrder): int
{
- return $typeOrder[$a['type']] - $typeOrder[$b['type']];
+ return $typeOrder[$a['type']] <=> $typeOrder[$b['type']];
}
/**
@@ -318,24 +275,6 @@ class Readme
return strcmp($a['name'], $b['name']);
}
- /**
- * Generate a namespace diagram string
- *
- * @param string $current_namespace The current namespace
- * @param string $diagrams The diagrams for the namespace
- *
- * @return string The namespace diagram string
- */
- private function generateNamespaceDiagram(string $current_namespace, string $diagrams): string
- {
- $namespace_title = str_replace('\\', ' ', $current_namespace);
- $diagram_code = "\n## {$namespace_title}\n> namespace {$current_namespace}\n";
- $diagram_code .= "```uml\n@startuml\n\n" .
- $this->plantuml->namespaceDiagram($current_namespace, $diagrams) . "\n\n@enduml\n```\n";
-
- return $diagram_code;
- }
-
/**
* Build the Link to the power in this repository
*
@@ -403,7 +342,6 @@ class Readme
private function linkPowerSPK(array &$power): string
{
return $power['spk'];
- }
-
+ }
}
diff --git a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Structure.php b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Structure.php
index 5549fd955..6178083d6 100644
--- a/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Structure.php
+++ b/libraries/jcb_powers/VDM.Joomla/src/Componentbuilder/Compiler/Power/Structure.php
@@ -28,6 +28,8 @@ use VDM\Joomla\Componentbuilder\Compiler\Utilities\Files;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\StringHelper;
+use VDM\Joomla\Utilities\JsonHelper;
+use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Placefix;
@@ -372,6 +374,9 @@ class Structure
{
foreach ($this->power->superpowers as $path => $powers)
{
+ // get existing files
+ $this->loadExistingSuperPower($path);
+
// create the path if it does not exist
$this->folder->create($path, false);
@@ -424,6 +429,22 @@ class Structure
}
}
}
-
+
+ /**
+ * Set the super power file paths
+ *
+ * @param string $repository The super power repository
+ *
+ * @return void
+ * @since 3.2.0
+ */
+ private function loadExistingSuperPower(string $repository)
+ {
+ if (($content = FileHelper::getContent($repository . '/super-powers.json', null)) !== null &&
+ JsonHelper::check($content))
+ {
+ $this->power->old_superpowers[$repository] = json_decode($content, true);
+ }
+ }
}