Adds new helper classes.

This commit is contained in:
Llewellyn van der Merwe 2022-04-04 17:35:08 +02:00
parent ec827b7369
commit c5be4ff5fa
Signed by untrusted user: Llewellyn
GPG Key ID: EFC0C720A240551C
15 changed files with 320 additions and 355 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.15) 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.16) 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)
@ -143,11 +143,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*: 12th March, 2022
+ *Version*: 2.12.15
+ *Last Build*: 4th April, 2022
+ *Version*: 2.12.16
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **286346**
+ *Line count*: **286290**
+ *Field count*: **1580**
+ *File count*: **1850**
+ *Folder count*: **260**

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.15) 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.16) 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)
@ -143,11 +143,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*: 12th March, 2022
+ *Version*: 2.12.15
+ *Last Build*: 4th April, 2022
+ *Version*: 2.12.16
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **286346**
+ *Line count*: **286290**
+ *Field count*: **1580**
+ *File count*: **1850**
+ *Folder count*: **260**

View File

@ -18,6 +18,7 @@ use Joomla\CMS\Filesystem\Folder;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\MathHelper;
// Use the component builder autoloader
@ -1103,7 +1104,7 @@ class Compiler extends Infusion
&$this->componentFolderName, &$this->componentData)
);
//create the zip file
if (ComponentbuilderHelper::zip(
if (FileHelper::zip(
$this->componentPath, $this->filepath['component']
))
{
@ -1195,7 +1196,7 @@ class Compiler extends Infusion
&$this->tempPath, &$module->zip_name, &$module)
);
//create the zip file
if (ComponentbuilderHelper::zip(
if (FileHelper::zip(
$module->folder_path,
$this->filepath['modules'][$module->id]
))
@ -1289,7 +1290,7 @@ class Compiler extends Infusion
&$this->tempPath, &$plugin->zip_name, &$plugin)
);
//create the zip file
if (ComponentbuilderHelper::zip(
if (FileHelper::zip(
$plugin->folder_path,
$this->filepath['plugins'][$plugin->id]
))

View File

@ -20,6 +20,7 @@ use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\String\FieldHelper;
use VDM\Joomla\Utilities\String\TypeHelper;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
@ -182,6 +183,13 @@ class Get
*/
public $componentData;
/**
* The Switch to add Powers data
*
* @var boolean
*/
protected $addPower;
/**
* The Powers data
*
@ -1044,6 +1052,10 @@ class Get
) == 1) ? true : false;
$this->debugLinenr = ((int) $config['debuglinenr'] == 0) ? false
: (((int) $config['debuglinenr'] == 1) ? true : $global);
// set if powers should be added to component (default is true)
$global = true;
$this->addPower = (isset($config['powers']) && (int) $config['powers'] == 0)
? false : ((isset($config['powers']) && (int) $config['powers'] == 1) ? true : $global);
// set the current user
$this->user = JFactory::getUser();
// Get a db connection.
@ -2853,14 +2865,14 @@ class Get
{
// load the field details
$required
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$fieldValues['settings']->xml,
'required="', '"'
);
$required = ($required === 'true'
|| $required === '1') ? 'yes' : 'no';
$filter
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$fieldValues['settings']->xml,
'filter="', '"'
);
@ -2909,7 +2921,7 @@ class Get
if (!ComponentbuilderHelper::fieldCheck($type))
{
$conditionValue['match_extends']
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$fieldValue['settings']->xml,
'extends="', '"'
);
@ -3850,7 +3862,7 @@ class Get
$field->xml = $this->setDynamicValues(json_decode($field->xml));
// check if we have validate (validation rule set)
$validationRule = ComponentbuilderHelper::getBetween(
$validationRule = GetHelper::between(
$field->xml, 'validate="', '"'
);
if (StringHelper::check($validationRule))
@ -4403,7 +4415,7 @@ class Get
|| strtolower($type_name) === 'customuser')
{
$type = TypeHelper::safe(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'type="', '"'
)
);
@ -4430,7 +4442,7 @@ class Get
else
{
$type = TypeHelper::safe(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'type="', '"'
)
);
@ -4502,7 +4514,7 @@ class Get
if ($type_name === 'category')
{
// quick check if this is a category linked to view page
$requeSt_id = ComponentbuilderHelper::getBetween(
$requeSt_id = GetHelper::between(
$field['settings']->xml, 'name="', '"'
);
if (strpos($requeSt_id, '_request_id') !== false
@ -4522,17 +4534,17 @@ class Get
{
// check if we should use another Text Name as this views name
$otherName = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'othername="', '"'
), $this->placeholders
);
$otherViews = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'views="', '"'
), $this->placeholders
);
$otherView = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'view="', '"'
), $this->placeholders
);
@ -4575,7 +4587,7 @@ class Get
// get value from xml
$xml = FieldHelper::safe(
$this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'name="', '"'
), $this->placeholders
)
@ -4880,7 +4892,7 @@ class Get
);
// get the table name
$_searchQuery
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$customQueryString, '$query->from(', ')'
);
if (StringHelper::check(
@ -4889,7 +4901,7 @@ class Get
&& strpos($_searchQuery, '#__') !== false)
{
$_queryName
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$_searchQuery, '#__', "'"
);
if (!StringHelper::check(
@ -4897,7 +4909,7 @@ class Get
))
{
$_queryName
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$_searchQuery, '#__', '"'
);
}
@ -5898,10 +5910,10 @@ class Get
if (!ArrayHelper::check($templates))
{
// set the Template data
$temp1 = ComponentbuilderHelper::getAllBetween(
$temp1 = GetHelper::allBetween(
$default, "\$this->loadTemplate('", "')"
);
$temp2 = ComponentbuilderHelper::getAllBetween(
$temp2 = GetHelper::allBetween(
$default, '$this->loadTemplate("', '")'
);
if (ArrayHelper::check($temp1)
@ -5957,10 +5969,10 @@ class Get
if (!ArrayHelper::check($layouts))
{
// set the Layout data
$lay1 = ComponentbuilderHelper::getAllBetween(
$lay1 = GetHelper::allBetween(
$default, "JLayoutHelper::render('", "',"
);
$lay2 = ComponentbuilderHelper::getAllBetween(
$lay2 = GetHelper::allBetween(
$default, 'JLayoutHelper::render("', '",'
);
if (ArrayHelper::check($lay1)
@ -6557,10 +6569,10 @@ class Get
// first get the Joomla .JText._()
if (in_array('Joomla' . '.JText._(', $langStringTargets))
{
$jsTEXT[] = ComponentbuilderHelper::getAllBetween(
$jsTEXT[] = GetHelper::allBetween(
$content, "Joomla" . ".JText._('", "'"
);
$jsTEXT[] = ComponentbuilderHelper::getAllBetween(
$jsTEXT[] = GetHelper::allBetween(
$content, 'Joomla' . '.JText._("', '"'
);
// combine into one array
@ -6580,10 +6592,10 @@ class Get
// now get the JText: :script()
if (in_array('JText:' . ':script(', $langStringTargets))
{
$scTEXT[] = ComponentbuilderHelper::getAllBetween(
$scTEXT[] = GetHelper::allBetween(
$content, "JText:" . ":script('", "'"
);
$scTEXT[] = ComponentbuilderHelper::getAllBetween(
$scTEXT[] = GetHelper::allBetween(
$content, 'JText:' . ':script("', '"'
);
// combine into one array
@ -6601,10 +6613,10 @@ class Get
// now do the little trick for JustTEXT: :_('Just uppercase text');
if (in_array('JustTEXT:' . ':_(', $langStringTargets))
{
$langOnly[] = ComponentbuilderHelper::getAllBetween(
$langOnly[] = GetHelper::allBetween(
$content, "JustTEXT:" . ":_('", "')"
);
$langOnly[] = ComponentbuilderHelper::getAllBetween(
$langOnly[] = GetHelper::allBetween(
$content, 'JustTEXT:' . ':_("', '")'
);
// merge lang only
@ -6620,10 +6632,10 @@ class Get
{
continue;
}
$langCheck[] = ComponentbuilderHelper::getAllBetween(
$langCheck[] = GetHelper::allBetween(
$content, $langStringTarget . "'", "'"
);
$langCheck[] = ComponentbuilderHelper::getAllBetween(
$langCheck[] = GetHelper::allBetween(
$content, $langStringTarget . '"', '"'
);
}
@ -7316,7 +7328,7 @@ class Get
}
// target content
$bucket = array();
$found = ComponentbuilderHelper::getAllBetween(
$found = GetHelper::allBetween(
$string, '[EXTERNA' . 'LCODE=', ']'
);
if (ArrayHelper::check($found))
@ -7421,7 +7433,7 @@ class Get
{
// get the data string (code)
$this->externalCodeString[$target_key]
= ComponentbuilderHelper::getFileContents($target_url);
= FileHelper::getContent($target_url);
// check if we must cut this
if (isset($this->externalCodeCutter[$target_key]) &&
$this->externalCodeCutter[$target_key])
@ -7628,7 +7640,7 @@ class Get
}
// the ids found in this content
$bucket = array();
$found = ComponentbuilderHelper::getAllBetween(
$found = GetHelper::allBetween(
$string, '[CUSTO' . 'MCODE=', ']'
);
if (ArrayHelper::check($found))
@ -8620,7 +8632,7 @@ class Get
*/
public function getPower($id)
{
if ($this->setPower($id))
if ($this->addPower && $this->setPower($id))
{
return $this->powers[$id];
}
@ -8934,12 +8946,16 @@ class Get
return true;
}
}
// we failed to get the power
// we failed to get the power,
// so we raise an error message
$this->app->enqueueMessage(
JText::sprintf('<p>Power <b>id:%s</b> not found!</p>', $id),
'Error'
);
// only if id exist
if ($id > 0)
{
$this->app->enqueueMessage(
JText::sprintf('<p>Power <b>id:%s</b> not found!</p>', $id),
'Error'
);
}
// let's not try again
$this->statePowers[$id] = false;
@ -9525,7 +9541,7 @@ class Get
&& isset($field['settings']))
{
if (($old_default
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$field['settings']->xml,
'default="', '"', false
)) !== false)
@ -10470,7 +10486,7 @@ class Get
&& isset($field['settings']))
{
if (($old_default
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$field['settings']->xml,
'default="', '"', false
)) !== false)
@ -11427,7 +11443,7 @@ class Get
if (strpos($script, 'HASHSTRING((((') !== false)
{
// get the strings
$values = ComponentbuilderHelper::getAllBetween(
$values = GetHelper::allBetween(
$script, 'HASHSTRING((((', '))))'
);
$locker = array();
@ -11445,7 +11461,7 @@ class Get
if (strpos($script, 'HASHFILE((((') !== false)
{
// get the strings
$values = ComponentbuilderHelper::getAllBetween(
$values = GetHelper::allBetween(
$script, 'HASHFILE((((', '))))'
);
$locker = array();
@ -11453,7 +11469,7 @@ class Get
foreach ($values as $path)
{
// we first get the file if it exist
if ($value = ComponentbuilderHelper::getFileContents($path))
if ($value = FileHelper::getContent($path))
{
// now we hash the file content
$locker['HASHFILE((((' . $path . '))))']
@ -11487,7 +11503,7 @@ class Get
if (strpos($script, 'LOCKBASE64((((') !== false)
{
// get the strings
$values = ComponentbuilderHelper::getAllBetween(
$values = GetHelper::allBetween(
$script, 'LOCKBASE64((((', '))))'
);
$locker = array();
@ -11642,14 +11658,14 @@ class Get
protected function guiCodeSearch(&$file, &$placeholders, &$today, &$target)
{
// get file content
$file_conent = ComponentbuilderHelper::getFileContents($file);
$file_conent = FileHelper::getContent($file);
$guiCode = array();
// we add a new search for the GUI CODE Blocks
$guiCode[] = ComponentbuilderHelper::getAllBetween(
$guiCode[] = GetHelper::allBetween(
$file_conent, '/***[JCB' . 'GUI<>', '/***[/JCBGUI' . '$$$$]***/'
);
$guiCode[] = ComponentbuilderHelper::getAllBetween(
$guiCode[] = GetHelper::allBetween(
$file_conent, '<!--[JCB' . 'GUI<>', '<!--[/JCBGUI' . '$$$$]-->'
);
@ -11899,10 +11915,10 @@ class Get
// set language data
foreach ($langStringTargets as $langStringTarget)
{
$langCheck[] = ComponentbuilderHelper::getAllBetween(
$langCheck[] = GetHelper::allBetween(
$string, $langStringTarget . "'", "'"
);
$langCheck[] = ComponentbuilderHelper::getAllBetween(
$langCheck[] = GetHelper::allBetween(
$string, $langStringTarget . "'", "'"
);
}

View File

@ -18,6 +18,8 @@ use Joomla\CMS\Filesystem\Folder;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\FileHelper;
/**
@ -1136,7 +1138,7 @@ class Structure extends Get
// set file name
$fileName = basename($url['url']);
// get the file contents
$data = ComponentbuilderHelper::getFileContents(
$data = FileHelper::getContent(
$url['url']
);
// build sub path
@ -1527,7 +1529,7 @@ class Structure extends Get
// set file name
$fileName = basename($url['url']);
// get the file contents
$data = ComponentbuilderHelper::getFileContents(
$data = FileHelper::getContent(
$url['url']
);
// build sub path
@ -1672,7 +1674,7 @@ class Structure extends Get
// set file name
$fileName = basename($url['url']);
// get the file contents
$data = ComponentbuilderHelper::getFileContents(
$data = FileHelper::getContent(
$url['url']
);
// build sub path
@ -1887,7 +1889,7 @@ class Structure extends Get
*/
public function writeFile($path, $data)
{
return ComponentbuilderHelper::writeFile($path, $data);
return FileHelper::write($path, $data);
}
/**
@ -2591,7 +2593,7 @@ class Structure extends Get
'trim',
explode(
',',
ComponentbuilderHelper::getBetween(
GetHelper::between(
$multi_field['settings']->xml, 'fields="', '"'
)
)
@ -2895,7 +2897,7 @@ class Structure extends Get
if (File::exists($custom_settings))
{
$version_data = json_decode(
ComponentbuilderHelper::getFileContents(
FileHelper::getContent(
$custom_settings
)
);
@ -2903,7 +2905,7 @@ class Structure extends Get
else
{
$version_data = json_decode(
ComponentbuilderHelper::getFileContents(
FileHelper::getContent(
$this->templatePath . '/settings.json'
)
);

View File

@ -16,6 +16,7 @@ defined('_JEXEC') or die('Restricted access');
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\String\FieldHelper;
/**
@ -4167,7 +4168,7 @@ class Fields extends Structure
elseif ($property['name'] === 'validate')
{
// check if we have validate (validation rule set)
$xmlValue = ComponentbuilderHelper::getBetween(
$xmlValue = GetHelper::between(
$field['settings']->xml, 'validate="', '"'
);
if (StringHelper::check($xmlValue))
@ -4183,7 +4184,7 @@ class Fields extends Structure
{
// get value & replace the placeholders
$xmlValue = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, $property['name'] . '="',
'"'
), $placeholders
@ -4208,7 +4209,7 @@ class Fields extends Structure
$fieldAttributes['custom'][$phpKey][$phpLine]
= $this->setDynamicValues(
ComponentbuilderHelper::openValidBase64(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml,
$property['name'] . '="', '"'
)
@ -4221,7 +4222,7 @@ class Fields extends Structure
{
// load the php for the custom field file
$fieldAttributes['custom']['prime_php']
= (int) ComponentbuilderHelper::getBetween(
= (int) GetHelper::between(
$field['settings']->xml, $property['name'] . '="', '"'
);
}
@ -4229,7 +4230,7 @@ class Fields extends Structure
{
// load the class that is being extended
$fieldAttributes['custom']['extends']
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$field['settings']->xml, 'extends="', '"'
);
}
@ -4239,7 +4240,7 @@ class Fields extends Structure
$fieldAttributes['custom']['view']
= StringHelper::safe(
$this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'view="', '"'
), $placeholders
)
@ -4251,7 +4252,7 @@ class Fields extends Structure
$fieldAttributes['custom']['views']
= StringHelper::safe(
$this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'views="', '"'
), $placeholders
)
@ -4262,7 +4263,7 @@ class Fields extends Structure
// load the component name & replace the placeholders
$fieldAttributes['custom']['component']
= $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'component="', '"'
), $placeholders
);
@ -4272,7 +4273,7 @@ class Fields extends Structure
// load the main table that is queried & replace the placeholders
$fieldAttributes['custom']['table']
= $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'table="', '"'
), $placeholders
);
@ -4282,7 +4283,7 @@ class Fields extends Structure
// load the text key
$fieldAttributes['custom']['text']
= StringHelper::safe(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'value_field="', '"'
)
);
@ -4292,7 +4293,7 @@ class Fields extends Structure
// load the id key
$fieldAttributes['custom']['id']
= StringHelper::safe(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'key_field="', '"'
)
);
@ -4309,7 +4310,7 @@ class Fields extends Structure
{
// load the button string value if found
$xmlValue = (string) StringHelper::safe(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'button="', '"'
)
);
@ -4338,7 +4339,7 @@ class Fields extends Structure
}
elseif ($property['name'] === 'multiple')
{
$xmlValue = (string) ComponentbuilderHelper::getBetween(
$xmlValue = (string) GetHelper::between(
$field['settings']->xml, $property['name'] . '="', '"'
);
// add the multipal
@ -4352,7 +4353,7 @@ class Fields extends Structure
&& ($typeName === 'note'
|| $typeName === 'spacer'))
{
$xmlValue = ComponentbuilderHelper::getBetween(
$xmlValue = GetHelper::between(
$field['settings']->xml, 'class="', '"'
);
// add the type class
@ -4372,7 +4373,7 @@ class Fields extends Structure
{
// set the rest of the fields
$xmlValue = (string) $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, $property['name'] . '="',
'"'
), $placeholders
@ -4473,7 +4474,7 @@ class Fields extends Structure
// validate that the default field is set
elseif ($property['name'] === 'default'
&& ($xmlValidateValue
= ComponentbuilderHelper::getBetween(
= GetHelper::between(
$field['settings']->xml, 'default="', '"', 'none-set'
)) !== 'none-set')
{
@ -4511,7 +4512,7 @@ class Fields extends Structure
if (isset($fieldAttributes['name']))
{
// check if we have class value for the list view of this field
$listclass = ComponentbuilderHelper::getBetween(
$listclass = GetHelper::between(
$field['settings']->xml, 'listclass="', '"'
);
if (StringHelper::check($listclass))
@ -4520,7 +4521,7 @@ class Fields extends Structure
= $listclass;
}
// check if we find reason to remove this field from being escaped
$escaped = ComponentbuilderHelper::getBetween(
$escaped = GetHelper::between(
$field['settings']->xml, 'escape="', '"'
);
if (StringHelper::check($escaped))
@ -4529,7 +4530,7 @@ class Fields extends Structure
= $fieldAttributes['name'];
}
// check if we have display switch for dynamic placement
$display = ComponentbuilderHelper::getBetween(
$display = GetHelper::between(
$field['settings']->xml, 'display="', '"'
);
if (StringHelper::check($display))
@ -4540,7 +4541,7 @@ class Fields extends Structure
if (!isset($fieldAttributes['validate']))
{
// check if we have validate (validation rule set)
$validationRule = ComponentbuilderHelper::getBetween(
$validationRule = GetHelper::between(
$field['settings']->xml, 'validate="', '"'
);
if (StringHelper::check($validationRule))
@ -4753,7 +4754,7 @@ class Fields extends Structure
{
// get it from the field xml string
$listFieldName = (string) $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'label="',
'"'
), $this->placeholders
@ -4954,7 +4955,7 @@ class Fields extends Structure
}
// get the xml extension name
$_extension = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$field['settings']->xml, 'extension="', '"'
), $this->placeholders
);

View File

@ -18,6 +18,8 @@ use Joomla\CMS\Filesystem\Folder;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\MathHelper;
/**
@ -2389,7 +2391,7 @@ class Interpretation extends Fields
foreach ($params as $field)
{
// some switch to see if it should be added to front end params
$target = ComponentbuilderHelper::getBetween(
$target = GetHelper::between(
$field, 'display="', '"'
);
if (!StringHelper::check($target)
@ -5548,12 +5550,10 @@ class Interpretation extends Fields
}
// set the custom buttons CUSTOM_BUTTONS_CONTROLLER
$this->fileContentDynamic[$viewCodeName][$this->hhh . $TARGET
. '_CUSTOM_BUTTONS_CONTROLLER' . $this->hhh]
= '';
. '_CUSTOM_BUTTONS_CONTROLLER' . $this->hhh] = '';
// set the custom buttons CUSTOM_BUTTONS_METHOD
$this->fileContentDynamic[$viewCodeName][$this->hhh . $TARGET
. '_CUSTOM_BUTTONS_METHOD' . $this->hhh]
= '';
. '_CUSTOM_BUTTONS_METHOD' . $this->hhh] = '';
}
elseif (3 == $type)
{
@ -6456,7 +6456,7 @@ class Interpretation extends Fields
$path = '/' . trim($folder['path'], '/');
if (isset($folder['rename']) && 1 == $folder['rename'])
{
if ($_paths = ComponentbuilderHelper::getAllFilePaths(
if ($_paths = FileHelper::getPaths(
$this->componentPath . $path
))
{
@ -6466,7 +6466,7 @@ class Interpretation extends Fields
else
{
$path = $path . '/' . trim($folder['folder'], '/');
if ($_paths = ComponentbuilderHelper::getAllFilePaths(
if ($_paths = FileHelper::getPaths(
$this->componentPath . $path
))
{
@ -7309,7 +7309,7 @@ class Interpretation extends Fields
{
if (File::exists($file['path']))
{
$string = ComponentbuilderHelper::getFileContents(
$string = FileHelper::getContent(
$file['path']
);
$buket['static'][] = $this->getInbetweenStrings(
@ -7326,7 +7326,7 @@ class Interpretation extends Fields
if (File::exists($doc['path']))
{
$string
= ComponentbuilderHelper::getFileContents(
= FileHelper::getContent(
$doc['path']
);
$buket[$view][] = $this->getInbetweenStrings(
@ -17709,7 +17709,7 @@ class Interpretation extends Fields
elseif (ComponentbuilderHelper::fieldCheck($type, 'text'))
{
// check to get the key words if set
$keywords = ComponentbuilderHelper::getBetween(
$keywords = GetHelper::between(
$options, 'keywords="', '"'
);
if (StringHelper::check($keywords))
@ -17730,7 +17730,7 @@ class Interpretation extends Fields
}
}
// check to ket string length if set
$length = ComponentbuilderHelper::getBetween(
$length = GetHelper::between(
$options, 'length="', '"'
);
if (StringHelper::check($length))
@ -23212,7 +23212,7 @@ class Interpretation extends Fields
{
// get all the mothods that should load date to the view
$this->DashboardGetCustomData
= ComponentbuilderHelper::getAllBetween(
= GetHelper::allBetween(
$this->componentData->php_dashboard_methods,
'public function get', '()'
);
@ -24274,10 +24274,10 @@ class Interpretation extends Fields
if (1 == $timer) // this is before the admin views are build
{
// start loading Global params
$autorName = ComponentbuilderHelper::htmlEscape(
$autorName = StringHelper::html(
$this->componentData->author
);
$autorEmail = ComponentbuilderHelper::htmlEscape(
$autorEmail = StringHelper::html(
$this->componentData->email
);
$this->extensionsParams[] = '"autorName":"' . $autorName
@ -24366,13 +24366,13 @@ class Interpretation extends Fields
// set global params to db on install
$fieldName = StringHelper::safe(
$this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$xmlField, 'name="', '"'
), $placeholders
)
);
$fieldDefault = $this->setPlaceholders(
ComponentbuilderHelper::getBetween(
GetHelper::between(
$xmlField, 'default="', '"'
), $placeholders
);
@ -24486,7 +24486,7 @@ class Interpretation extends Fields
elseif (strpos($id_field, '_request_id') !== false)
{
// not loaded to a tab "view" name
$_viewRequest = ComponentbuilderHelper::getBetween(
$_viewRequest = GetHelper::between(
$id_field, 'name="', '_request_id'
);
$searchIdKe = 'name="' . $_viewRequest
@ -24514,7 +24514,7 @@ class Interpretation extends Fields
elseif (strpos($catid_field, '_request_catid') !== false)
{
// not loaded to a tab "view" name
$_viewRequestC = ComponentbuilderHelper::getBetween(
$_viewRequestC = GetHelper::between(
$catid_field, 'name="', '_request_catid'
);
$searchCatidKe = 'name="' . $_viewRequestC
@ -24539,7 +24539,7 @@ class Interpretation extends Fields
elseif (strpos($field, '_menu"') !== false)
{
// not loaded to a tab "view" name
$_tabLower = ComponentbuilderHelper::getBetween(
$_tabLower = GetHelper::between(
$field, 'name="', '_menu"'
);
// set the values needed to insure route is done correclty
@ -24561,7 +24561,7 @@ class Interpretation extends Fields
protected function setRequestValues($view, $field, $search, $target, $store)
{
$key = ComponentbuilderHelper::getBetween($field, $search, '"');
$key = GetHelper::between($field, $search, '"');
if (!StringHelper::check($key))
{
// is not having special var
@ -24602,7 +24602,7 @@ class Interpretation extends Fields
$bucket = array();
foreach ($tabFields as $tabField)
{
$display = ComponentbuilderHelper::getBetween(
$display = GetHelper::between(
$tabField, 'display="', '"'
);
if (!StringHelper::check($display)
@ -24908,7 +24908,7 @@ class Interpretation extends Fields
);
$cbWebsite = htmlspecialchars(
$contributor['website'], ENT_XML1, 'UTF-8'
); // ComponentbuilderHelper::htmlEscape($contributor['website']);
); // StringHelper::html($contributor['website']);
// load to the $fieldsets
$this->configFieldSets[] = $this->_t(2)
. '<field type="spacer" name="spacerContributor' . $counter

View File

@ -18,6 +18,7 @@ use Joomla\CMS\Filesystem\Folder;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\FileHelper;
/**
* Infusion class
@ -2796,7 +2797,7 @@ class Infusion extends Interpretation
$xmlPath = $this->componentPath . '/' . $this->componentCodeName
. '.xml';
// get the content in xml
$componentXML = ComponentbuilderHelper::getFileContents(
$componentXML = FileHelper::getContent(
$xmlPath
);
// update the xml content

View File

@ -1028,51 +1028,6 @@ abstract class ComponentbuilderHelper
}
}
/**
* get all the file paths in folder and sub folders
*
* @param string $folder The local path to parse
* @param array $fileTypes The type of files to get
*
* @return void
*
*/
public static function getAllFilePaths($folder, $fileTypes = array('\.php', '\.js', '\.css', '\.less'), $recurse = true, $full = true)
{
if (Folder::exists($folder))
{
// we must first store the current woking directory
$joomla = getcwd();
// we are changing the working directory to the component path
chdir($folder);
// make sure we have file type filter
if (self::checkArray($fileTypes))
{
// get the files
foreach ($fileTypes as $type)
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $type, $recurse, $full);
}
}
elseif (self::checkString($fileTypes))
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $fileTypes, $recurse, $full);
}
else
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', '.', $recurse, $full);
}
// change back to Joomla working directory
chdir($joomla);
// return array of files
return array_map( function($file) { return str_replace('./', '/', $file); }, (array) self::mergeArrays($files));
}
return false;
}
/**
* get all component IDs
*/
@ -3788,81 +3743,6 @@ abstract class ComponentbuilderHelper
return $exists;
}
/**
* Get the file path or url
*
* @param string $type The (url/path) type to return
* @param string $target The Params Target name (if set)
* @param string $fileType The kind of filename to generate (if not set no file name is generated)
* @param string $key The key to adjust the filename (if not set ignored)
* @param string $default The default path if not set in Params (fallback path)
* @param bool $createIfNotSet The switch to create the folder if not found
*
* @return string On success the path or url is returned based on the type requested
*
*/
public static function getFilePath($type = 'path', $target = 'filepath', $fileType = null, $key = '', $default = '', $createIfNotSet = true)
{
// make sure to always have a string/path
if(!self::checkString($default))
{
$default = JPATH_SITE . '/images/';
}
// get the global settings
if (!self::checkObject(self::$params))
{
self::$params = JComponentHelper::getParams('com_componentbuilder');
}
$filePath = self::$params->get($target, $default);
// check the file path (revert to default only of not a hidden file path)
if ('hiddenfilepath' !== $target && strpos($filePath, JPATH_SITE) === false)
{
$filePath = $default;
}
// create the folder if it does not exist
if ($createIfNotSet && !Folder::exists($filePath))
{
Folder::create($filePath);
}
// setup the file name
$fileName = '';
// Get basic key
$basickey = 'Th!s_iS_n0t_sAfe_buT_b3tter_then_n0thiug';
if (method_exists(get_called_class(), "getCryptKey"))
{
$basickey = self::getCryptKey('basic', $basickey);
}
// check the key
if (!self::checkString($key))
{
$key = 'vDm';
}
// set the file name
if (self::checkString($fileType))
{
// set the name
$fileName = trim(md5($type.$target.$basickey.$key) . '.' . trim($fileType, '.'));
}
else
{
$fileName = trim(md5($type.$target.$basickey.$key)) . '.txt';
}
// return the url
if ('url' === $type)
{
if (strpos($filePath, JPATH_SITE) !== false)
{
$filePath = trim( str_replace( JPATH_SITE, '', $filePath), '/');
return JURI::root() . $filePath . '/' . $fileName;
}
// since the path is behind the root folder of the site, return only the root url (may be used to build the link)
return JURI::root();
}
// sanitize the path
return '/' . trim( $filePath, '/' ) . '/' . $fileName;
}
/**
* Get the file path or url
*

View File

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="4" method="upgrade">
<name>COM_COMPONENTBUILDER</name>
<creationDate>12th March, 2022</creationDate>
<creationDate>4th April, 2022</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
<copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>2.12.15</version>
<version>2.12.16</version>
<description><![CDATA[
<h1>Component Builder (v.2.12.15)</h1>
<h1>Component Builder (v.2.12.16)</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

@ -1041,10 +1041,10 @@
<description>Builds Complex Joomla Components</description>
<element>com_componentbuilder</element>
<type>component</type>
<version>2.12.15</version>
<version>2.12.16</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.15/JCB_v2.12.15.zip</downloadurl>
<downloadurl type="full" format="zip">https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.12.16/JCB_v2.12.16.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>

View File

@ -556,5 +556,43 @@ trait Utilities
return FileHelper::write($path, $data);
}
/**
* get all the file paths in folder and sub folders
*
* @param string $folder The local path to parse
* @param array $fileTypes The type of files to get
*
* @return void
*
* @since 3.0.9
*
* @deprecated 4.0 - Use FileHelper::getPaths($folder, $fileTypes , $recurse, $full);
*/
public static function getAllFilePaths($folder, $fileTypes = array('\.php', '\.js', '\.css', '\.less'), $recurse = true, $full = true)
{
return FileHelper::getPaths($folder, $fileTypes , $recurse, $full);
}
/**
* Get the file path or url
*
* @param string $type The (url/path) type to return
* @param string $target The Params Target name (if set)
* @param string $fileType The kind of filename to generate (if not set no file name is generated)
* @param string $key The key to adjust the filename (if not set ignored)
* @param string $default The default path if not set in Params (fallback path)
* @param bool $createIfNotSet The switch to create the folder if not found
*
* @return string On success the path or url is returned based on the type requested
*
* @since 3.0.9
*
* @deprecated 4.0 - Use FileHelper::getPath($type, $target, $fileType, $key, $default, $createIfNotSet);
*/
public static function getFilePath($type = 'path', $target = 'filepath', $fileType = null, $key = '', $default = '', $createIfNotSet = true)
{
return FileHelper::getPath($type, $target, $fileType, $key, $default, $createIfNotSet);
}
}

View File

@ -13,11 +13,13 @@
namespace VDM\Joomla\Utilities;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Filesystem\Path;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\Archive\Archive;
@ -37,6 +39,15 @@ abstract class FileHelper
*/
protected static $curlError = false;
/**
* The component params
*
* @var object
*
* @since 3.0.9
*/
protected static $params = false;
/**
* The zipper method
*
@ -177,5 +188,140 @@ abstract class FileHelper
return $klaar;
}
/**
* get all the file paths in folder and sub folders
*
* @param string $folder The local path to parse
* @param array $fileTypes The type of files to get
*
* @return void
*
* @since 3.0.9
*/
public static function getPaths($folder, $fileTypes = array('\.php', '\.js', '\.css', '\.less'), $recurse = true, $full = true)
{
if (Folder::exists($folder))
{
// we must first store the current woking directory
$joomla = getcwd();
// we are changing the working directory to the component path
chdir($folder);
// make sure we have file type filter
if (ArrayHelper::check($fileTypes))
{
// get the files
foreach ($fileTypes as $type)
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $type, $recurse, $full);
}
}
elseif (StringHelper::check($fileTypes))
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $fileTypes, $recurse, $full);
}
else
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', '.', $recurse, $full);
}
// change back to Joomla working directory
chdir($joomla);
// return array of files
return array_map( function($file) { return str_replace('./', '/', $file); }, (array) ArrayHelper::merge($files));
}
return false;
}
/**
* Get the file path or url
*
* @param string $type The (url/path) type to return
* @param string $target The Params Target name (if set)
* @param string $fileType The kind of filename to generate (if not set no file name is generated)
* @param string $key The key to adjust the filename (if not set ignored)
* @param string $default The default path if not set in Params (fallback path)
* @param bool $createIfNotSet The switch to create the folder if not found
*
* @return string On success the path or url is returned based on the type requested
*
* @since 3.0.9
*/
public static function getPath($type = 'path', $target = 'filepath', $fileType = null, $key = '', $default = '', $createIfNotSet = true)
{
// make sure to always have a string/path
if(!StringHelper::check($default))
{
$default = JPATH_SITE . '/images/';
}
// get the global settings
if (!ObjectHelper::check(self::$params))
{
self::$params = ComponentHelper::getParams('com_componentbuilder');
}
$filePath = self::$params->get($target, $default);
// check the file path (revert to default only of not a hidden file path)
if ('hiddenfilepath' !== $target && strpos($filePath, JPATH_SITE) === false)
{
$filePath = $default;
}
// create the folder if it does not exist
if ($createIfNotSet && !Folder::exists($filePath))
{
Folder::create($filePath);
}
// setup the file name
$fileName = '';
// Get basic key
$basickey = 'Th!s_iS_n0t_sAfe_buT_b3tter_then_n0thiug';
if (method_exists('ComponentbuilderHelper', "getCryptKey"))
{
$basickey = ComponentbuilderHelper::getCryptKey('basic', $basickey);
}
// check the key
if (!StringHelper::check($key))
{
$key = 'vDm';
}
// set the file name
if (StringHelper::check($fileType))
{
// set the name
$fileName = trim(md5($type . $target . $basickey . $key) . '.' . trim($fileType, '.'));
}
else
{
$fileName = trim(md5($type . $target . $basickey . $key)) . '.txt';
}
// return the url
if ('url' === $type)
{
if (strpos($filePath, JPATH_SITE) !== false)
{
$filePath = trim( str_replace( JPATH_SITE, '', $filePath), '/');
return Uri::root() . $filePath . '/' . $fileName;
}
// since the path is behind the root folder of the site, return only the root url (may be used to build the link)
return Uri::root();
}
// sanitize the path
return '/' . trim( $filePath, '/' ) . '/' . $fileName;
}
}

View File

@ -9254,7 +9254,7 @@ class com_componentbuilderInstallerScript
echo '<a target="_blank" href="http://www.joomlacomponentbuilder.com" title="Component Builder">
<img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/>
</a>
<h3>Upgrade to Version 2.12.15 Was Successful! Let us know if anything is not working as expected.</h3>';
<h3>Upgrade to Version 2.12.16 Was Successful! Let us know if anything is not working as expected.</h3>';
// Set db if not set already.
if (!isset($db))

View File

@ -1025,51 +1025,6 @@ abstract class ComponentbuilderHelper
}
}
/**
* get all the file paths in folder and sub folders
*
* @param string $folder The local path to parse
* @param array $fileTypes The type of files to get
*
* @return void
*
*/
public static function getAllFilePaths($folder, $fileTypes = array('\.php', '\.js', '\.css', '\.less'), $recurse = true, $full = true)
{
if (Folder::exists($folder))
{
// we must first store the current woking directory
$joomla = getcwd();
// we are changing the working directory to the component path
chdir($folder);
// make sure we have file type filter
if (self::checkArray($fileTypes))
{
// get the files
foreach ($fileTypes as $type)
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $type, $recurse, $full);
}
}
elseif (self::checkString($fileTypes))
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', $fileTypes, $recurse, $full);
}
else
{
// get a list of files in the current directory tree
$files[] = Folder::files('.', '.', $recurse, $full);
}
// change back to Joomla working directory
chdir($joomla);
// return array of files
return array_map( function($file) { return str_replace('./', '/', $file); }, (array) self::mergeArrays($files));
}
return false;
}
/**
* get all component IDs
*/
@ -3785,81 +3740,6 @@ abstract class ComponentbuilderHelper
return $exists;
}
/**
* Get the file path or url
*
* @param string $type The (url/path) type to return
* @param string $target The Params Target name (if set)
* @param string $fileType The kind of filename to generate (if not set no file name is generated)
* @param string $key The key to adjust the filename (if not set ignored)
* @param string $default The default path if not set in Params (fallback path)
* @param bool $createIfNotSet The switch to create the folder if not found
*
* @return string On success the path or url is returned based on the type requested
*
*/
public static function getFilePath($type = 'path', $target = 'filepath', $fileType = null, $key = '', $default = '', $createIfNotSet = true)
{
// make sure to always have a string/path
if(!self::checkString($default))
{
$default = JPATH_SITE . '/images/';
}
// get the global settings
if (!self::checkObject(self::$params))
{
self::$params = JComponentHelper::getParams('com_componentbuilder');
}
$filePath = self::$params->get($target, $default);
// check the file path (revert to default only of not a hidden file path)
if ('hiddenfilepath' !== $target && strpos($filePath, JPATH_SITE) === false)
{
$filePath = $default;
}
// create the folder if it does not exist
if ($createIfNotSet && !Folder::exists($filePath))
{
Folder::create($filePath);
}
// setup the file name
$fileName = '';
// Get basic key
$basickey = 'Th!s_iS_n0t_sAfe_buT_b3tter_then_n0thiug';
if (method_exists(get_called_class(), "getCryptKey"))
{
$basickey = self::getCryptKey('basic', $basickey);
}
// check the key
if (!self::checkString($key))
{
$key = 'vDm';
}
// set the file name
if (self::checkString($fileType))
{
// set the name
$fileName = trim(md5($type.$target.$basickey.$key) . '.' . trim($fileType, '.'));
}
else
{
$fileName = trim(md5($type.$target.$basickey.$key)) . '.txt';
}
// return the url
if ('url' === $type)
{
if (strpos($filePath, JPATH_SITE) !== false)
{
$filePath = trim( str_replace( JPATH_SITE, '', $filePath), '/');
return JURI::root() . $filePath . '/' . $fileName;
}
// since the path is behind the root folder of the site, return only the root url (may be used to build the link)
return JURI::root();
}
// sanitize the path
return '/' . trim( $filePath, '/' ) . '/' . $fileName;
}
/**
* Get the file path or url
*