Stable release of v3.2.0-beta3

Move the old helper compiler files to powers. Move the old helper extrusion files to powers.
This commit is contained in:
2024-03-06 15:06:11 +02:00
parent dce71f1d35
commit 0b0568299c
40 changed files with 2802 additions and 2962 deletions

View File

@ -9,7 +9,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 [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.0-beta2) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.0-beta3) 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,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*: 4th March, 2024
+ *Version*: 3.2.0-beta2
+ *Last Build*: 6th March, 2024
+ *Version*: 3.2.0-beta3
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **694682**
+ *Line count*: **729192**
+ *Field count*: **2077**
+ *File count*: **5122**
+ *File count*: **5132**
+ *Folder count*: **455**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).

View File

@ -85,7 +85,7 @@ Html::_('script', 'components/com_componentbuilder/assets/js/admin.js', ['versio
// require helper files
JLoader::register('ComponentbuilderHelper', __DIR__ . '/helpers/componentbuilder.php');
JLoader::register('ComponentbuilderEmail', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/componentbuilderemail.php');
\JLoader::register('ComponentbuilderEmail', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/componentbuilderemail.php');
JLoader::register('JHtmlBatch_', __DIR__ . '/helpers/html/batch_.php');
// Trigger the Global Admin Event

View File

@ -123,7 +123,7 @@ class ComponentbuilderControllerAdmin_views extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -97,8 +97,6 @@ class ComponentbuilderControllerCompiler extends AdminController
// currently only those with admin access can compile a component
if($user->authorise('core.manage', 'com_componentbuilder'))
{
// include component compiler
require_once JPATH_ADMINISTRATOR.'/components/com_componentbuilder/helpers/compiler.php';
$model = $this->getModel('compiler');
if ($model->builder())
{
@ -530,7 +528,7 @@ class ComponentbuilderControllerCompiler extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect
@ -570,7 +568,7 @@ class ComponentbuilderControllerCompiler extends AdminController
public function clearTmp()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect
@ -611,7 +609,7 @@ class ComponentbuilderControllerCompiler extends AdminController
public function runTranslator()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -123,7 +123,7 @@ class ComponentbuilderControllerCustom_codes extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -123,7 +123,7 @@ class ComponentbuilderControllerDynamic_gets extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -123,7 +123,7 @@ class ComponentbuilderControllerFields extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -124,7 +124,7 @@ class ComponentbuilderControllerJoomla_components extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect
@ -164,7 +164,7 @@ class ComponentbuilderControllerJoomla_components extends AdminController
public function clearTmp()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -58,7 +58,7 @@ class ComponentbuilderControllerJoomla_plugins extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -59,7 +59,7 @@ class ComponentbuilderControllerPowers extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

View File

@ -123,7 +123,7 @@ class ComponentbuilderControllerValidation_rules extends AdminController
public function runExpansion()
{
// Check for request forgeries
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
Session::checkToken() or \jexit(Text::_('JINVALID_TOKEN'));
// check if user has the right
$user = Factory::getUser();
// set page redirect

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,900 +0,0 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @gitea Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Language\Text;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Componentbuilder\Compiler\Factory as CFactory;
/**
* Structure class
* @deprecated 3.3
*/
class Structure extends Get
{
/**
* The folder counter
*
* @var int
* @deprecated 3.3 Use CFactory::_('Utilities.Counter')->folder;
*/
public $folderCount = 0;
/**
* The file counter
*
* @var int
* @deprecated 3.3 Use CFactory::_('Utilities.Counter')->file;
*/
public $fileCount = 0;
/**
* The page counter
*
* @var int
* @deprecated 3.3
*/
public $pageCount = 0;
/**
* The line counter
*
* @var int
* @deprecated 3.3 Use CFactory::_('Utilities.Counter')->line;
*/
public $lineCount = 0;
/**
* The field counter
*
* @var int
* @deprecated 3.3
*/
public $fieldCount = 0;
/**
* The seconds counter
*
* @var int
* @deprecated 3.3
*/
public $seconds = 0;
/**
* The actual seconds counter
*
* @var int
* @deprecated 3.3
*/
public $actualSeconds = 0;
/**
* The folder seconds counter
*
* @var int
* @deprecated 3.3
*/
public $folderSeconds = 0;
/**
* The file seconds counter
*
* @var int
* @deprecated 3.3
*/
public $fileSeconds = 0;
/**
* The line seconds counter
*
* @var int
* @deprecated 3.3
*/
public $lineSeconds = 0;
/**
* The seconds debugging counter
*
* @var int
* @deprecated 3.3
*/
public $secondsDebugging = 0;
/**
* The seconds planning counter
*
* @var int
* @deprecated 3.3
*/
public $secondsPlanning = 0;
/**
* The seconds mapping counter
*
* @var int
* @deprecated 3.3
*/
public $secondsMapping = 0;
/**
* The seconds office counter
*
* @var int
* @deprecated 3.3
*/
public $secondsOffice = 0;
/**
* The total hours counter
*
* @var int
* @deprecated 3.3
*/
public $totalHours = 0;
/**
* The debugging hours counter
*
* @var int
* @deprecated 3.3
*/
public $debuggingHours = 0;
/**
* The planning hours counter
*
* @var int
* @deprecated 3.3
*/
public $planningHours = 0;
/**
* The mapping hours counter
*
* @var int
* @deprecated 3.3
*/
public $mappingHours = 0;
/**
* The office hours counter
*
* @var int
* @deprecated 3.3
*/
public $officeHours = 0;
/**
* The actual Total Hours counter
*
* @var int
* @deprecated 3.3
*/
public $actualTotalHours = 0;
/**
* The actual hours spent counter
*
* @var int
* @deprecated 3.3
*/
public $actualHoursSpent = 0;
/**
* The actual days spent counter
*
* @var int
* @deprecated 3.3
*/
public $actualDaysSpent = 0;
/**
* The total days counter
*
* @var int
* @deprecated 3.3
*/
public $totalDays = 0;
/**
* The actual Total Days counter
*
* @var int
* @deprecated 3.3
*/
public $actualTotalDays = 0;
/**
* The project week time counter
*
* @var int
* @deprecated 3.3
*/
public $projectWeekTime = 0;
/**
* The project month time counter
*
* @var int
* @deprecated 3.3
*/
public $projectMonthTime = 0;
/**
* The template path
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->template_path;
*/
public $templatePath;
/**
* The custom template path
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->template_path_custom;
*/
public $templatePathCustom;
/**
* The Joomla Version Data
*
* @var object
* @deprecated 3.3 Use CFactory::_('Component.Settings')
*/
public $joomlaVersionData;
/**
* Static File Content
*
* @var array
* @deprecated 3.3 Use CFactory::_('Compiler.Builder.Content.One')->allActive()
*/
public $fileContentStatic = [];
/**
* Extention Custom Fields
*
* @var array
* @deprecated 3.3 Use CFactory::_('Compiler.Builder.Extension.Custom.Fields')->get($key)
*/
public $extentionCustomfields = [];
/**
* Extention Tracking Files Moved
*
* @var array
*/
public $extentionTrackingFilesMoved = [];
/**
* The standard folders
*
* @var array
* @deprecated 3.3
*/
public $stdFolders = array('site', 'admin', 'media');
/**
* The standard root files
*
* @var array
* @deprecated 3.3
*/
public $stdRootFiles
= array('access.xml', 'config.xml', 'controller.php', 'index.html', 'README.txt');
/**
* Dynamic File Content
*
* @var array
* @deprecated 3.3 Use CFactory::_('Compiler.Builder.Content.Multi')->allActive()
*/
public $fileContentDynamic = [];
/**
* The Component Sales name
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->component_sales_name;
*/
public $componentSalesName;
/**
* The Component Backup name
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->component_backup_name;
*/
public $componentBackupName;
/**
* The Component Folder name
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->component_folder_name;
*/
public $componentFolderName;
/**
* The Component path
*
* @var string
* @deprecated 3.3 Use CFactory::_('Utilities.Paths')->component_path;
*/
public $componentPath;
/**
* The Dynamic paths
*
* @var array
* @deprecated 3.3 Use CFactory::_('Registry')->get('dynamic_paths');
*/
public $dynamicPaths = [];
/**
* The not new static items
*
* @var array
* @deprecated 3.3 Use CFactory::_('Registry')->get('files.not.new', []);
*/
public $notNew = [];
/**
* Update the file content
*
* @var array
* @deprecated 3.3 Use CFactory::_('Registry')->get('update.file.content');
*/
public $updateFileContent = [];
/**
* The new files
*
* @var array
* @deprecated 3.3 Use CFactory::_('Utilities.Files');
*/
public $newFiles = [];
/**
* The Checkin Switch
*
* @var boolean
*/
public $addCheckin = false;
/**
* The Move Folders Switch
*
* @var boolean
*/
public $setMoveFolders = false;
/**
* The array of last modified dates
*
* @var array
* @deprecated 3.3
*/
protected $lastModifiedDate = [];
/**
* The default view switch
*
* @var bool/string
* @deprecated 3.3 Use CFactory::_('Registry')->get('build.dashboard');
*/
public $dynamicDashboard = false;
/**
* The default view type
*
* @var string
* @deprecated 3.3 Use CFactory::_('Registry')->get('build.dashboard.type');
*/
public $dynamicDashboardType;
/**
* Constructor
*/
public function __construct()
{
// first we run the parent constructor
if (parent::__construct())
{
// set incase no extra admin folder are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_ADMIN_FOLDERS', '');
// set incase no extra site folder are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_SITE_FOLDERS', '');
// set incase no extra media folder are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_MEDIA_FOLDERS', '');
// set incase no extra admin files are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_ADMIN_FILES', '');
// set incase no extra site files are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_SITE_FILES', '');
// set incase no extra media files are loaded
CFactory::_('Compiler.Builder.Content.One')->set('EXSTRA_MEDIA_FILES', '');
// make sure there is no old build
CFactory::_('Utilities.Folder')->remove(CFactory::_('Utilities.Paths')->component_path);
// load the libraries files/folders and url's
CFactory::_('Library.Structure')->build();
// load the powers files/folders
CFactory::_('Power.Structure')->build();
// load the module files/folders and url's
CFactory::_('Joomlamodule.Structure')->build();
// load the plugin files/folders and url's
CFactory::_('Joomlaplugin.Structure')->build();
// set the dashboard
CFactory::_('Component.Dashboard')->set();
// set the component base structure
if (!CFactory::_('Component.Structure')->build())
{
return false;
}
// set all single instance folders and files
if (!CFactory::_('Component.Structure.Single')->build())
{
return false;
}
// set all the dynamic folders and files
if (!CFactory::_('Component.Structure.Multiple')->build())
{
return false;
}
return true;
}
return false;
}
/**
* Build the Powers files, folders
*
* @return void
* @deprecated 3.3 Use CFactory::_('Power.Structure')->build();
*/
private function buildPowers()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Build the Modules files, folders, url's and config
*
* @return void
* @deprecated 3.3 Use CFactory::_('Joomlamodule.Structure')->build();
*/
private function buildModules()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Build the Plugins files, folders, url's and config
*
* @return void
* @deprecated 3.3 Use CFactory::_('Joomlaplugin.Structure')->build();
*/
private function buildPlugins()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Create Path if not exist
*
* @return void
* @deprecated 3.3 Use CFactory::_('Utilities.Folder')->create($path);
*/
private function createFolder($path)
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Build the Libraries files, folders, url's and config
*
* @return void
* @deprecated 3.3 Use CFactory::_('Library.Structure')->build();
*/
private function setLibraries()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* set the dynamic dashboard if set
*
* @return void
* @deprecated 3.3 Use CFactory::_('Component.Dashboard')->set();
*/
private function setDynamicDashboard()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Write data to file
*
* @return bool true on success
* @deprecated 3.3
*/
public function writeFile($path, $data)
{
return FileHelper::write($path, $data);
}
/**
* Build the Initial Folders
*
* @return void
* @deprecated 3.3 Use CFactory::_('Component.Structure')->build();
*/
private function setFolders()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Set the Static File & Folder
*
* @return boolean
* @deprecated 3.3 Use CFactory::_('Component.Structure.Single')->build();
*/
private function setStatic()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Set the Dynamic File & Folder
*
* @return boolean
* @deprecated 3.3 Use CFactory::_('Component.Structure.Multiple')->build();
*/
private function setDynamique()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
return false;
}
/**
* move the fields and Rules
*
* @param array $field The field data
* @param string $path The path to move to
*
* @return void
*
*/
public function moveFieldsRules($field, $path)
{
// check if we have a subform or repeatable field
if ($field['type_name'] === 'subform'
|| $field['type_name'] === 'repeatable')
{
// since we could have a custom field or rule inside
$this->moveMultiFieldsRules($field, $path);
}
else
{
// check if this is a custom field that should be moved
if (CFactory::_('Compiler.Builder.Extension.Custom.Fields')->exists($field['type_name']))
{
$check = md5($path . 'type' . $field['type_name']);
// lets check if we already moved this
if (CFactory::_('Config')->get('joomla_version', 3) == 3 &&
!isset($this->extentionTrackingFilesMoved[$check]))
{
// check files exist
if (File::exists(
CFactory::_('Utilities.Paths')->component_path . '/admin/models/fields/'
. $field['type_name'] . '.php'
))
{
// copy the custom field
File::copy(
CFactory::_('Utilities.Paths')->component_path . '/admin/models/fields/'
. $field['type_name'] . '.php',
$path . '/fields/' . $field['type_name'] . '.php'
);
}
// stop from doing this again.
$this->extentionTrackingFilesMoved[$check] = true;
}
}
// check if this has validation that should be moved
if (CFactory::_('Registry')->get('validation.linked.' . $field['field']) !== null)
{
$check = md5(
$path . 'rule'
. CFactory::_('Registry')->get('validation.linked.' . $field['field'])
);
// lets check if we already moved this
if (CFactory::_('Config')->get('joomla_version', 3) == 3 &&
!isset($this->extentionTrackingFilesMoved[$check]))
{
// check files exist
if (File::exists(
CFactory::_('Utilities.Paths')->component_path . '/admin/models/rules/'
. CFactory::_('Registry')->get('validation.linked.' . $field['field'])
. '.php'
))
{
// copy the custom field
File::copy(
CFactory::_('Utilities.Paths')->component_path . '/admin/models/rules/'
. CFactory::_('Registry')->get('validation.linked.' . $field['field'])
. '.php', $path . '/rules/'
. CFactory::_('Registry')->get('validation.linked.' . $field['field'])
. '.php'
);
}
// stop from doing this again.
$this->extentionTrackingFilesMoved[$check] = true;
}
}
}
}
/**
* move the fields and Rules of multi fields
*
* @param array $multi_field The field data
* @param string $path The path to move to
*
* @return void
*
*/
protected function moveMultiFieldsRules($multi_field, $path)
{
// get the fields ids
$ids = array_map(
'trim',
explode(
',',
(string) GetHelper::between(
$multi_field['settings']->xml, 'fields="', '"'
)
)
);
if (ArrayHelper::check($ids))
{
foreach ($ids as $id)
{
// setup the field
$field = [];
$field['field'] = $id;
CFactory::_('Field')->set($field);
// move field and rules if needed
$this->moveFieldsRules($field, $path);
}
}
}
/**
* get the created date of the (view)
*
* @param array $view The view values
*
* @return string Last Modified Date
* @deprecated 3.3 Use CFactory::_('Model.Createdate')->get($view);
*/
public function getCreatedDate($view)
{
return CFactory::_('Model.Createdate')->get($view);
}
/**
* get the last modified date of a MVC (view)
*
* @param array $view The view values
*
* @return string Last Modified Date
* @deprecated 3.3 Use CFactory::_('Model.Modifieddate')->get($view);
*/
public function getLastModifiedDate($view)
{
return CFactory::_('Model.Modifieddate')->get($view);
}
/**
* Set the Static File & Folder
*
* @param array $target The main target and name
* @param string $type The type in the target
* @param string $fileName The custom file name
* @param array $cofig to add more data to the files info
*
* @return boolean
* @deprecated 3.3 Use CFactory::_('Utilities.Structure')->build($target, $type, $fileName, $config);
*/
public function buildDynamique($target, $type, $fileName = null, $config = null)
{
return CFactory::_('Utilities.Structure')->build($target, $type, $fileName, $config);
}
/**
* set the Joomla Version Data
*
* @return object The version data
* @deprecated 3.3
*/
private function setJoomlaVersionData()
{
// set notice that we could not get a valid string from the target
$this->app->enqueueMessage(
Text::sprintf('<hr /><h3>%s Warning</h3>', __CLASS__), 'Error'
);
$this->app->enqueueMessage(
Text::sprintf(
'Use of a deprecated method (%s)!', __METHOD__
), 'Error'
);
}
/**
* Add the dynamic folders
*/
protected function setDynamicFolders()
{
// check if we should add the dynamic folder moving script to the installer script
if (!CFactory::_('Registry')->get('set_move_folders_install_script'))
{
// add the setDynamicF0ld3rs() method to the install scipt.php file
CFactory::_('Registry')->set('set_move_folders_install_script', true);
// set message that this was done (will still add a tutorial link later)
$this->app->enqueueMessage(
Text::_(
'<hr /><h3>Dynamic folder(s) were detected.</h3>'
), 'Notice'
);
$_function = 'setDynamicF0ld3rs';
$_script = 'script.php';
if (CFactory::_('Config')->get('joomla_version', 3) != 3)
{
$_function = 'moveFolders';
$_script = 'ComponentnameInstallerScript.php';
}
$this->app->enqueueMessage(
Text::sprintf(
'A method (%s) was added to the install <b>%s</b> of this package to insure that the folder(s) are copied into the correct place when this component is installed!',
$_function, $_script
), 'Notice'
);
}
}
/**
* set the index.html file in a folder path
*
* @param string $path The path to place the index.html file in
*
* @return void
* @deprecated 3.3 Use CFactory::_('Utilities.File')->write($path, $root);
*
*/
private function indexHTML($path, $root = 'component')
{
CFactory::_('Utilities.File')->write($path, $root);
}
/**
* Update paths with real value
*
* @param string $path The full path
*
* @return string The updated path
* @deprecated 3.3 Use CFactory::_('Utilities.Dynamicpath')->update($path);
*/
protected function updateDynamicPath($path)
{
return CFactory::_('Utilities.Dynamicpath')->update($path);
}
/**
* Remove folders with files
*
* @param string $dir The path to folder to remove
* @param boolean $ignore The files and folders to ignore
*
* @return boolean True if all is removed
* @deprecated 3.3 Use CFactory::_('Utilities.Folder')->remove($dir, $ignore);
*/
protected function removeFolder($dir, $ignore = false)
{
return CFactory::_('Utilities.Folder')->remove($dir, $ignore);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
<html><body bgcolor="#FFFFFF"></body></html>

View File

@ -1123,15 +1123,6 @@ abstract class ComponentbuilderHelper
jimport('joomla.application');
}
/**
* The dynamic builder of views, tables and fields
**/
public static function dynamicBuilder(&$data, $type)
{
self::autoLoader('extrusion');
$extruder = new Extrusion($data);
}
/*
* Convert repeatable field to subform
*

View File

@ -1,421 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 1.0.0
@created 26th December, 2016
@package Component Builder
@subpackage mapping.php
@author Llewellyn van der Merwe <http://www.vdm.io>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\ArrayHelper;
/**
* Mapping class
*/
class Mapping
{
/**
* Some default fields
*/
protected $buildcompsql;
public $id;
public $name_code;
public $addadmin_views;
public $addSql = array();
public $source = array();
public $sql = array();
/**
* The map of the needed fields and views
*/
public $map;
/**
* The app to load messages mostly
*/
public $app;
/**
* The needed set of keys needed to set
*/
protected $setting = array('id' => 'default', 'buildcompsql' => 'base64', 'name_code' => 'safeString');
/**
* The needed set of keys needed to set
*/
protected $notRequiered = array('id', 'asset_id', 'published',
'created_by', 'modified_by', 'created', 'modified', 'checked_out','checked_out_time',
'version', 'hits', 'access', 'ordering',
'metakey', 'metadesc', 'metadata', 'params');
/**
* The datatypes and it linked field types (basic)
* (TODO) We may need to set this dynamicly
*/
protected $dataTypes = array( 'VARCHAR' => 'Text', 'CHAR' => 'Text',
'MEDIUMTEXT' => 'Textarea', 'LONGTEXT' => 'Textarea',
'TEXT' => 'Textarea', 'DATETIME' => 'Calendar',
'DATE' => 'Text', 'TIME' => 'Text', 'TINYINT' => 'Text',
'BIGINT' => 'Text', 'INT' => 'Text', 'FLOAT' => 'Text',
'DECIMAL' => 'Text', 'DOUBLE' => 'Text');
/**
* The datasize identifiers
*/
protected $dataSize = array(
'CHAR', 'VARCHAR', 'INT', 'TINYINT',
'BIGINT', 'FLOAT', 'DECIMAL', 'DOUBLE');
/**
* The default identifiers
*/
protected $defaults = array(0, 1, "CURRENT_TIMESTAMP", "DATETIME"); // Other
/**
* The sizes identifiers
*/
protected $sizes = array("1", "7", "10", "11", "50", "64", "100", "255", "1024", "2048"); // Other
/**
* Constructor
*/
public function __construct($data = false)
{
// set the app to insure messages can be set
$this->app = Factory::getApplication();
// check that we have data
if (ArrayHelper::check($data))
{
// make sure we have an id
if (isset($data['id']) && $data['id'] > 0)
{
if (isset($data['buildcomp']) && 1 == $data['buildcomp'] && isset($data['buildcompsql']))
{
foreach ($data as $key => $value)
{
if (isset($this->setting[$key]))
{
switch($this->setting[$key])
{
case 'base64':
// set needed value
$this->$key = base64_decode((string) $value);
break;
case 'json':
// set needed value
$this->$key = json_decode((string) $value, true);
break;
case 'safeString':
// set needed value
$this->$key = StringHelper::check($value);
break;
default :
$this->$key = $value;
break;
}
}
}
// get linked admin views
$addadmin_views = GetHelper::var('component_admin_views', $data['id'], 'joomla_component', 'addadmin_views');
if (JsonHelper::check($addadmin_views))
{
$this->addadmin_views = json_decode((string)$addadmin_views, true);
}
// set the map of the views needed
if ($this->setMap())
{
return true;
}
$this->app->enqueueMessage(
JText::_('No "CREATE TABLE.." were found, please check your sql.'),
'Error'
);
return false;
}
return false; // not set so just return without any error
}
$this->app->enqueueMessage(
JText::_('Please try again, this error usualy happens if it is a new component, beacues we need a component ID to do this build with your sql dump.'),
'Error'
);
return false;
}
$this->app->enqueueMessage(
JText::_('Could not find the data needed to continue.'),
'Error'
);
return false;
}
/**
* The mapping function
* To Map the views and fields that are needed
*/
protected function setMap()
{
// start parsing the sql dump data
$queries = JDatabaseDriver::splitSql($this->buildcompsql);
if (ArrayHelper::check($queries))
{
foreach ($queries as $query)
{
// only use create table queries
if (strpos($query, 'CREATE TABLE IF NOT EXISTS') !== false ||
strpos($query, 'CREATE TABLE') !== false)
{
if ($tableName = $this->getTableName($query))
{
// now get the fields/columns of this view/table
if ($fields = $this->getFields($query))
{
// make sure it is all lower case from here on
$tableName = strtolower($tableName);
$this->map[$tableName] = $fields;
}
}
else
{
continue;
}
}
// get the insert data if set
if (strpos($query, 'INSERT INTO `') !== false)
{
if ($tableName = $this->getTableName($query))
{
$this->addSql[$tableName] = 1;
$this->source[$tableName] = 2;
$this->sql[$tableName] = $query;
}
}
}
// check if the mapping was done
if (ArrayHelper::check($this->map))
{
return true;
}
}
return false;
}
/**
* Get the table name
*/
protected function getTableName(&$query)
{
if (strpos($query, '`#__') !== false)
{
// get table name
$tableName = GetHelper::between($query, '`#__', "`");
}
elseif (strpos($query, "'#__") !== false)
{
// get table name
$tableName = GetHelper::between($query, "'#__", "'");
}
// if it still was not found
if (!isset($tableName) || !ComponentbuilderHelper::checkString($tableName))
{
// skip this query
return false;
}
// clean the table name (so only view name remain)
if (strpos($tableName, $this->name_code) !== false)
{
$tableName = trim(str_replace($this->name_code, '', $tableName), '_');
}
// if found
if (ComponentbuilderHelper::checkString($tableName))
{
return $tableName;
}
// skip this query
return false;
}
/**
* Get the field details
*/
protected function getFields(&$query)
{
$rows = array_map('trim', explode(PHP_EOL, $query));
$fields = array();
foreach ($rows as $row)
{
// make sure we have a lower case string
$row = strtoupper($row);
$field = array();
$name = '';
if (0 === strpos($row, '`'))
{
// get field name
$name = GetHelper::between($row, '`', '`');
}
if (0 === strpos($row, "'"))
{
// get field name
$name = GetHelper::between($row, "'", "'");
}
// check if the name was found
if (ComponentbuilderHelper::checkString($name))
{
// insure we have the name in lower case from here on
$name = strtolower($name);
// only continue if field is requered
if (in_array($name, $this->notRequiered))
{
continue;
}
// check if the field type is found
if ($fieldType = $this->getType($row, $field, $name))
{
$field['row'] = $row;
$field['name'] = $name;
$field['label'] = StringHelper::check($name, 'W');
$field['fieldType'] = $fieldType;
$field['size'] = $this->getSize($row, $field);
$field['sizeOther'] = '';
if (!in_array($field['size'], $this->sizes))
{
if (ComponentbuilderHelper::checkString($field['size']))
{
$field['sizeOther'] = $field['size'];
$field['size'] = 'Other';
}
}
$field['default'] = $this->getDefault($row);
$field['defaultOther'] = '';
if (!in_array($field['default'], $this->defaults))
{
if (ComponentbuilderHelper::checkString($field['default']))
{
$field['defaultOther'] = $field['default'];
$field['default'] = 'Other';
}
}
$field['null'] = $this->getNullValue($row, $field);
// check if field is a key
$field['key'] = $this->getKeyStatus($rows, $name);
// load to fields
$fields[] = $field;
}
}
}
if (ArrayHelper::check($fields))
{
return $fields;
}
return false;
}
/**
* Get the field types
*/
protected function getType($row, &$field, &$name)
{
// first remove field name
$row = str_replace($name, '', $row);
// get the data type first
foreach ($this->dataTypes as $type => $fieldType)
{
if (strpos($row, $type) !== false)
{
$field['dataType'] = $type;
return $fieldType;
}
}
return false;
}
/**
* Get the field size
*/
protected function getSize(&$row, $field)
{
if (in_array($field['dataType'], $this->dataSize))
{
return GetHelper::between($row, $field['dataType'].'(', ')');
}
return '';
}
/**
* Get the field default
*/
protected function getDefault(&$row)
{
// get default value
if (strpos($row, 'DEFAULT "') !== false) // to sure it this is correct...
{
return GetHelper::between($row, 'DEFAULT "', '"');
}
// get default value
if (strpos($row, "DEFAULT '") !== false)
{
return GetHelper::between($row, "DEFAULT '", "'");
}
return '';
}
/**
* Get the field Null Value
*/
protected function getNullValue(&$row, &$field)
{
// get the result of null
if (strpos($row, 'NOT NULL') !== false)
{
return 'NOT NULL';
}
if (strpos($row, 'DEFAULT NULL') !== false)
{
$field['default'] = 'NULL';
return '';
}
return 'NULL';
}
/**
* Get the field key status
*/
protected function getKeyStatus(&$rows, &$name)
{
// get the data type first
foreach ($rows as $row)
{
if (strpos($row, 'UNIQUE KEY ') !== false && stripos($row, $name) !== false)
{
return 1;
}
if ((strpos($row, 'PRIMARY KEY ') !== false && stripos($row, $name) !== false) || (strpos($row, 'KEY ') !== false && stripos($row, $name) !== false))
{
return 2;
}
}
return 0;
}
}

View File

@ -1,295 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 1.0.0
@created 26th December, 2016
@package Component Builder
@subpackage builder.php
@author Llewellyn van der Merwe <http://www.vdm.io>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use VDM\Joomla\Componentbuilder\Compiler\Factory as CFactory;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\GetHelper;
/**
* Builder class
*/
class Builder extends Mapping
{
/**
* Some default fields
*/
public $user;
public $today;
public $db;
public $views = array();
public $admin_fields = array();
protected $fields = array();
protected $title = array();
protected $description = array();
protected $alias = array();
protected $list = array();
/**
* Field that should not be used in name, alias, disc, and list view
* (TODO) We may need to set this dynamicly
*/
protected $avoidList = array('not_required');
/***
* Constructor
*/
public function __construct(&$data)
{
// first we run the perent constructor
if (parent::__construct($data))
{
// always reset the building values if found
$data['buildcomp'] = 0;
$data['buildcompsql'] = '';
// set some globals
$this->db = Factory::getDbo();
$this->user = Factory::getUser();
$this->today = Factory::getDate()->toSql();
// no start the building of the views and fields
if ($this->setBuild())
{
return true;
}
}
return false;
}
/**
* The building function
* To build the views and fields that are needed
*/
protected function setBuild()
{
foreach ($this->map as $view => $fields)
{
// set this field with all its needed data
foreach ($fields as $field)
{
$this->setField($view, $field);
}
// set this view with all its needed data
$this->setView($view);
}
return true;
}
/**
* The building function for views
*/
protected function setView(&$name)
{
// set the view object
$object = new stdClass();
$object->system_name = StringHelper::check($name, 'W') . ' (dynamic build)';
$object->name_single = $name;
$object->name_list = $name. 's';
$object->short_description = $name. ' view (dynamic build)';
$object->type = 1;
$object->description = $name. ' view (dynamic build)';
$object->add_fadein = 1;
$object->add_sql = (isset($this->addSql[$name])) ? $this->addSql[$name]: 0;
$object->source = (isset($this->source[$name])) ? $this->source[$name]: 0;
$object->sql = (isset($this->sql[$name])) ? base64_encode($this->sql[$name]): '';
$object->addpermissions = '{"action":["view.edit","view.edit.own","view.edit.state","view.create","view.delete","view.access"],"implementation":["3","3","3","3","3","3"]}';
$object->created = $this->today;
$object->created_by = $this->user->id;
$object->published = 1;
// add to data base
if ($this->db->insertObject('#__componentbuilder_admin_view', $object))
{
// make sure the access of asset is set
$id = $this->db->insertid();
ComponentbuilderHelper::setAsset($id, 'admin_view');
// load the views
$this->views[] = $id;
// load the admin view fields
return $this->addFields($name, $id);
}
return false;
}
/**
* Add the fields to the view
*/
protected function addFields(&$view, &$view_id)
{
if (isset($this->fields[$view]))
{
// set some defaults
$addField = array ();
$fixLink = (isset($this->title[$view])) ? 0 : 1;
// build the field data... hmmm
foreach ($this->fields[$view] as $nr => $id)
{
$alignment = 1;
if ($nr % 2 == 0)
{
$alignment = 2;
}
// some defaults
$isTitle = (isset($this->title[$view]) && $this->title[$view] == $id) ? 1 : 0;
$isAlias = (isset($this->alias[$view]) && $this->alias[$view] == $id) ? 1 : 0;
$isList = ($key = array_search($id, $this->list[$view])) ? 1 : 0;
$isLink = ($isTitle) ? 1 : (($isList && $fixLink) ? 1 : 0);
if ($isLink)
{
$fixLink = 0;
}
// load the field values
$addField['addfields'.$nr]['field'] = $id;
$addField['addfields'.$nr]['list'] = $isList;
$addField['addfields'.$nr]['order_list'] = ($key) ? $key : 0;
$addField['addfields'.$nr]['title'] = $isTitle;
$addField['addfields'.$nr]['alias'] = $isAlias;
$addField['addfields'.$nr]['sort'] = $isList;
$addField['addfields'.$nr]['search'] = $isList;
$addField['addfields'.$nr]['filter'] = $isList;
$addField['addfields'.$nr]['link'] = $isLink;
$addField['addfields'.$nr]['tab'] = 1;
$addField['addfields'.$nr]['alignment'] = ($isTitle || $isAlias) ? 4 : $alignment;
$addField['addfields'.$nr]['order_edit'] = $nr;
$addField['addfields'.$nr]['permission'] = 0;
}
// set the field object
$object = new stdClass();
$object->admin_view = $view_id;
$object->addfields = json_encode($addField, JSON_FORCE_OBJECT);
$object->created = $this->today;
$object->created_by = $this->user->id;
$object->published = 1;
// add to data base
return $this->db->insertObject('#__componentbuilder_admin_fields', $object);
}
return false;
}
/**
* The building function for fields
*/
protected function setField(&$view, &$field)
{
if ($fieldType = CFactory::_('Field.Type.Name')->get($field['fieldType']))
{
// set the field object
$object = new stdClass();
$object->name = $field['label'] . ' (dynamic build)';
$object->fieldtype = $fieldType;
$object->datatype = $field['dataType'];
$object->indexes = $field['key'];
$object->null_switch = $field['null'];
$object->datalenght = $field['size'];
$object->datalenght_other = $field['sizeOther'];
$object->datadefault = $field['default'];
$object->datadefault_other = $field['defaultOther'];
$object->created = $this->today;
$object->created_by = $this->user->id;
$object->published = 1;
$object->store = 0;
$object->xml = $this->setFieldXML($field, $fieldType);
// add to data base
if ($this->db->insertObject('#__componentbuilder_field', $object))
{
// make sure the access of asset is set
$id = $this->db->insertid();
ComponentbuilderHelper::setAsset($id, 'field');
// check if any field for this field was already set, if not set array
if (!isset($this->fields[$view]))
{
$this->fields[$view] = array();
}
// load the field
$this->fields[$view][] = $id;
if (!isset($this->list[$view]))
{
$this->list[$view] = array();
}
// insure that some fields are avoided
if (!in_array($field['name'], $this->avoidList))
{
// set the name/title field if found
if (!isset($this->title[$view]) && (stripos($field['name'], 'name') !== false || stripos($field['name'], 'title') !== false))
{
$this->title[$view] = $id;
$this->list[$view][] = $id;
}
// set the alias field if found
elseif (!isset($this->alias[$id]) && stripos($field['name'], 'alias') !== false)
{
$this->alias[$view] = $id;
}
// set the alias field if found
elseif (!isset($this->description[$id]) && stripos($field['name'], 'desc') !== false)
{
$this->description[$view] = $id;
$this->list[$view][] = $id;
}
elseif ('Text' == $field['fieldType'] && count($this->list[$view]) < 5)
{
$this->list[$view][] = $id;
}
}
return true;
}
}
return false;
}
/**
* get the field type id from system
*/
protected function getFieldType($fieldName)
{
// load the field settings
return GetHelper::var('fieldtype', $fieldName, 'name', 'id');
}
/**
* The building function for field xml
*/
protected function setFieldXML(&$field, $fieldId)
{
// load the field settings
$settings = array();
$settings['name'] = $field['name'];
$settings['description'] = 'The '.strtolower($field['label']) . ' is set here.';
$settings['message'] = "Error! Please add some ".strtolower($field['label'])." here.";
$settings['label'] = $field['label'];
$settings['default'] = ($field['default'] == 'Other') ? $field['defaultOther'] : $field['default'];
$settings['hint'] = $field['label'] .' Here!';
// okay set the xml field values
if ($fieldOptions = ComponentbuilderHelper::getFieldTypeProperties($fieldId, 'id', $settings))
{
return json_encode($fieldOptions['values']);
}
return '';
}
}

View File

@ -1,111 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 1.0.0
@created 26th December, 2016
@package Component Builder
@subpackage extrusion.php
@author Llewellyn van der Merwe <http://www.vdm.io>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\ArrayHelper;
/**
* Extrusion class
*/
class Extrusion extends Builder
{
/***
* Constructor
*/
public function __construct(&$data)
{
// first we run the perent constructor
if (parent::__construct($data))
{
// link the view data to the component
if ($this->setAdminViews($data['id']))
{
$this->app->enqueueMessage(
JText::_('All the fields and views from your sql dump has been created and linked to this component.'),
'Success'
);
return true;
}
}
return false;
}
/**
* link the build views to the component
*/
protected function setAdminViews(&$component_id)
{
// check if views were set
if (ArrayHelper::check($this->views))
{
$count = 0;
if (ArrayHelper::check($this->addadmin_views))
{
$count = (int) count((array)$this->addadmin_views) + 3;
}
// set the admin view data linking
foreach ($this->views as $nr => $id)
{
$pointer = $count + $nr;
$this->addadmin_views['addadmin_views'.$pointer]['adminview'] = $id;
$this->addadmin_views['addadmin_views'.$pointer]['icomoon'] = 'joomla';
$this->addadmin_views['addadmin_views'.$pointer]['mainmenu'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_add'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_list'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['submenu'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['checkin'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['history'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['metadata'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['access'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['port'] = 1;
$this->addadmin_views['addadmin_views'.$pointer]['edit_create_site_view'] = 0;
$this->addadmin_views['addadmin_views'.$pointer]['order'] = $pointer + 1;
}
}
if (isset($this->addadmin_views) && ArrayHelper::check($this->addadmin_views))
{
// set the field object
$object = new stdClass();
$object->joomla_component = $component_id;
$object->addadmin_views = json_encode($this->addadmin_views, JSON_FORCE_OBJECT);
$object->created = $this->today;
$object->created_by = $this->user->id;
$object->published = 1;
// check if it is already set
if ($item_id = GetHelper::var('component_admin_views', $component_id, 'joomla_component', 'id'))
{
// set ID
$object->id = (int) $item_id;
return $this->db->updateObject('#__componentbuilder_component_admin_views', $object, 'id');
}
// add to data base
return $this->db->insertObject('#__componentbuilder_component_admin_views', $object);
}
return false;
}
}

View File

@ -1 +0,0 @@
<html><body bgcolor="#FFFFFF"></body></html>

View File

@ -1,204 +0,0 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.6.x
@created 30th April, 2015
@package Component Builder
@subpackage indenter.php
@author Llewellyn van der Merwe <http://joomlacomponentbuilder.com>
@github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* @link https://github.com/gajus/dindent for the canonical source repository
* @license https://github.com/gajus/dindent/blob/master/LICENSE BSD 3-Clause
*/
class Indenter {
private
$log = array(),
$options = array(
'indentation_character' => ' '
),
$inline_elements = array('b', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'cite', 'code', 'dfn', 'em', 'kbd', 'strong', 'samp', 'var', 'a', 'bdo', 'br', 'img', 'span', 'sub', 'sup'),
$temporary_replacements_script = array(),
$temporary_replacements_inline = array();
const ELEMENT_TYPE_BLOCK = 0;
const ELEMENT_TYPE_INLINE = 1;
const MATCH_INDENT_NO = 0;
const MATCH_INDENT_DECREASE = 1;
const MATCH_INDENT_INCREASE = 2;
const MATCH_DISCARD = 3;
/**
* @param array $options
*/
public function __construct (array $options = array()) {
foreach ($options as $name => $value) {
if (!array_key_exists($name, $this->options)) {
throw new Exception\InvalidArgumentException('Unrecognized option.');
}
$this->options[$name] = $value;
}
}
/**
* @param string $element_name Element name, e.g. "b".
* @param ELEMENT_TYPE_BLOCK|ELEMENT_TYPE_INLINE $type
* @return null
*/
public function setElementType ($element_name, $type) {
if ($type === static::ELEMENT_TYPE_BLOCK) {
$this->inline_elements = array_diff($this->inline_elements, array($element_name));
} else if ($type === static::ELEMENT_TYPE_INLINE) {
$this->inline_elements[] = $element_name;
} else {
throw new Exception\InvalidArgumentException('Unrecognized element type.');
}
$this->inline_elements = array_unique($this->inline_elements);
}
/**
* @param string $input HTML input.
* @return string Indented HTML.
*/
public function indent ($input) {
$this->log = array();
// Dindent does not indent <script> body. Instead, it temporary removes it from the code, indents the input, and restores the script body.
if (preg_match_all('/<script\b[^>]*>([\s\S]*?)<\/script>/mi', $input, $matches)) {
$this->temporary_replacements_script = $matches[0];
foreach ($matches[0] as $i => $match) {
$input = str_replace($match, '<script>' . ($i + 1) . '</script>', $input);
}
}
// Removing double whitespaces to make the source code easier to read.
// With exception of <pre>/ CSS white-space changing the default behaviour, double whitespace is meaningless in HTML output.
// This reason alone is sufficient not to use Dindent in production.
$input = str_replace("\t", '', $input);
$input = preg_replace('/\s{2,}/', ' ', $input);
// Remove inline elements and replace them with text entities.
if (preg_match_all('/<(' . implode('|', $this->inline_elements) . ')[^>]*>(?:[^<]*)<\/\1>/', $input, $matches)) {
$this->temporary_replacements_inline = $matches[0];
foreach ($matches[0] as $i => $match) {
$input = str_replace($match, 'ᐃ' . ($i + 1) . 'ᐃ', $input);
}
}
$subject = $input;
$output = '';
$next_line_indentation_level = 0;
do {
$indentation_level = $next_line_indentation_level;
$patterns = array(
// block tag
'/^(<([a-z]+)(?:[^>]*)>(?:[^<]*)<\/(?:\2)>)/' => static::MATCH_INDENT_NO,
// DOCTYPE
'/^<!([^>]*)>/' => static::MATCH_INDENT_NO,
// tag with implied closing
'/^<(input|link|meta|base|br|img|hr)([^>]*)>/' => static::MATCH_INDENT_NO,
// opening tag
'/^<[^\/]([^>]*)>/' => static::MATCH_INDENT_INCREASE,
// closing tag
'/^<\/([^>]*)>/' => static::MATCH_INDENT_DECREASE,
// self-closing tag
'/^<(.+)\/>/' => static::MATCH_INDENT_DECREASE,
// whitespace
'/^(\s+)/' => static::MATCH_DISCARD,
// text node
'/([^<]+)/' => static::MATCH_INDENT_NO
);
$rules = array('NO', 'DECREASE', 'INCREASE', 'DISCARD');
foreach ($patterns as $pattern => $rule) {
if ($match = preg_match($pattern, $subject, $matches)) {
$this->log[] = array(
'rule' => $rules[$rule],
'pattern' => $pattern,
'subject' => $subject,
'match' => $matches[0]
);
$subject = mb_substr($subject, mb_strlen($matches[0]));
if ($rule === static::MATCH_DISCARD) {
break;
}
if ($rule === static::MATCH_INDENT_NO) {
} else if ($rule === static::MATCH_INDENT_DECREASE) {
$next_line_indentation_level--;
$indentation_level--;
} else {
$next_line_indentation_level++;
}
if ($indentation_level < 0) {
$indentation_level = 0;
}
$output .= str_repeat($this->options['indentation_character'], $indentation_level) . $matches[0] . "\n";
break;
}
}
} while ($match);
$interpreted_input = '';
foreach ($this->log as $e) {
$interpreted_input .= $e['match'];
}
if ($interpreted_input !== $input) {
throw new Exception\RuntimeException('Did not reproduce the exact input.');
}
$output = preg_replace('/(<(\w+)[^>]*>)\s*(<\/\2>)/', '\\1\\3', $output);
foreach ($this->temporary_replacements_script as $i => $original) {
$output = str_replace('<script>' . ($i + 1) . '</script>', $original, $output);
}
foreach ($this->temporary_replacements_inline as $i => $original) {
$output = str_replace('ᐃ' . ($i + 1) . 'ᐃ', $original, $output);
}
return trim($output);
}
/**
* Debugging utility. Get log for the last indent operation.
*
* @return array
*/
public function getLog () {
return $this->log;
}
}

View File

@ -1292,6 +1292,7 @@ COM_COMPONENTBUILDER_ALL_FOUND_INSTANCES_IN_S_WHERE_REPLACED="All found instance
COM_COMPONENTBUILDER_ALL_IS_GOOD_PLEASE_CHECK_AGAIN_LATER="All is good, please check again later"
COM_COMPONENTBUILDER_ALL_IS_GOOD_THERE_IS_NO_NOTICE_AT_THIS_TIME="All is good, there is no notice at this time."
COM_COMPONENTBUILDER_ALL_OF_THESE_PACKAGES_ARE_A_FULLY_DEVELOPEDMAPPED_COMPONENTS_FOR_JCB_THEY_CAN_BE_SEEN_AS_DEMO_CONTENT_OR_BASE_IMAGES_FROM_WHICH_TO_START_YOUR_PROJECTBR_ALWAYS_MAKE_SURE_YOU_ARE_ON_THE_LATEST_VERSION_OF_JCB_BEFORE_IMPORTING_ANY_OF_THESE_PACKAGES_SHOULD_ANY_OF_THEM_FAIL_TO_IMPORT_A_S_PLEASE_LET_US_KNOWA="All of these packages are a fully developed/mapped components for JCB. They can be seen as demo content, or base images from which to start your project.<br />Always make sure you are on the latest version of JCB before importing any of these packages, should any of them fail to import <a %s >please let us know</a>."
COM_COMPONENTBUILDER_ALL_THE_FIELDS_AND_VIEWS_FROM_YOUR_SQL_DUMP_HAS_BEEN_CREATED_AND_LINKED_TO_THIS_COMPONENT="All the fields and views from your sql dump has been created and linked to this component."
COM_COMPONENTBUILDER_ALL_THE_LANGUAGES_FOUND_IN_JOOMLA_WERE_SUCCESSFULLY_IMPORTED="All the languages found in Joomla were successfully imported."
COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_ON_THIS_PAGE_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE="All unsaved work on this page will be lost, are you sure you want to continue?"
COM_COMPONENTBUILDER_ALREADY_SELECTED_TRY_ANOTHER="Already selected, try another."
@ -1648,6 +1649,7 @@ COM_COMPONENTBUILDER_CLONE="Clone"
COM_COMPONENTBUILDER_CLONE_FAILED="Clone failed!"
COM_COMPONENTBUILDER_CLOSE_NEW="Close & New"
COM_COMPONENTBUILDER_CODE="Code"
COM_COMPONENTBUILDER_CODESTRINGS="code/strings"
COM_COMPONENTBUILDER_COMMUNITY_PACKAGES="Community Packages"
COM_COMPONENTBUILDER_COMPANY="Company"
COM_COMPONENTBUILDER_COMPANY_NAME="Company Name"
@ -3667,6 +3669,7 @@ COM_COMPONENTBUILDER_CONTRIBUTORS="Contributors"
COM_COMPONENTBUILDER_COPYRIGHT="Copyright"
COM_COMPONENTBUILDER_COPYRIGHT_S="Copyright: %s"
COM_COMPONENTBUILDER_COULD_NOT_CLEAR_THE_TMP_FOLDER="Could not clear the tmp folder!"
COM_COMPONENTBUILDER_COULD_NOT_FIND_THE_DATA_NEEDED_TO_CONTINUE="Could not find the data needed to continue."
COM_COMPONENTBUILDER_COULD_NOT_INSTALL_COMPONENT="Could not install component!"
COM_COMPONENTBUILDER_COULD_NOT_INSTALL_EXTENSIONS="Could not install extensions!"
COM_COMPONENTBUILDER_COULD_NOT_INSTALL_MODULE="Could not install module!"
@ -5403,7 +5406,11 @@ COM_COMPONENTBUILDER_HI="Hi"
COM_COMPONENTBUILDER_HIDE_ONLY="Hide Only"
COM_COMPONENTBUILDER_HIDE_TOGGLE="Hide Toggle"
COM_COMPONENTBUILDER_HOW_TO_GET_A_S_FREE_KEYSA_FROM_VDM="How to get <a %s >free keys</a> from VDM."
COM_COMPONENTBUILDER_HR_HTHREEASSETS_TABLE_NOTICEHTHREE="<hr /><h3>Assets Table Notice</h3>"
COM_COMPONENTBUILDER_HR_HTHREEASSETS_TABLE_WARNINGHTHREE="<hr /><h3>Assets Table Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREECONDITIONAL_SCRIPT_WARNINGHTHREE="<hr /><h3>Conditional Script Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREECUSTOM_CODES_WARNINGHTHREE="<hr /><h3>Custom Codes Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREECUSTOM_CODE_WARNINGHTHREE="<hr /><h3>Custom Code Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREECZEROMPZERONTHREENT_ISSUE_FOUNDHTHREEPTHE_PATH_S_COULD_NOT_BE_USEDP="<hr /><h3>c0mp0n3nt issue found</h3><p>The path (%s) could not be used.</p>"
COM_COMPONENTBUILDER_HR_HTHREEDASHBOARD_ERRORHTHREE="<hr /><h3>Dashboard Error</h3>"
COM_COMPONENTBUILDER_HR_HTHREEDYNAMIC_FOLDERS_WERE_DETECTEDHTHREE="<hr /><h3>Dynamic folder(s) were detected.</h3>"
@ -5411,9 +5418,15 @@ COM_COMPONENTBUILDER_HR_HTHREEEXTERNAL_CODE_ERRORHTHREE="<hr /><h3>External Code
COM_COMPONENTBUILDER_HR_HTHREEEXTERNAL_CODE_NOTICEHTHREE="<hr /><h3>External Code Notice</h3>"
COM_COMPONENTBUILDER_HR_HTHREEEXTERNAL_CODE_WARNINGHTHREE="<hr /><h3>External Code Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREEFIELD_NOTICEHTHREE="<hr /><h3>Field Notice</h3>"
COM_COMPONENTBUILDER_HR_HTHREEFIELD_WARNINGHTHREE="<hr /><h3>Field Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREEFILE_PATH_ERRORHTHREE="<hr /><h3>File Path Error</h3>"
COM_COMPONENTBUILDER_HR_HTHREEFOLDER_PATH_ERRORHTHREE="<hr /><h3>Folder Path Error</h3>"
COM_COMPONENTBUILDER_HR_HTHREELANGUAGE_NOTICEHTHREE="<hr /><h3>Language Notice</h3>"
COM_COMPONENTBUILDER_HR_HTHREELANGUAGE_WARNINGHTHREE="<hr /><h3>Language Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREEMULTI_FILTER_ERRORHTHREE="<hr /><h3>Multi Filter Error</h3>"
COM_COMPONENTBUILDER_HR_HTHREES_WARNINGHTHREE="<hr /><h3>%s Warning</h3>"
COM_COMPONENTBUILDER_HR_HTHREETIDY_ERRORHTHREE="<hr /><h3>Tidy Error</h3>"
COM_COMPONENTBUILDER_HR_HTHREEWHMCS_ERRORHTHREE="<hr /><h3>WHMCS Error</h3>"
COM_COMPONENTBUILDER_HTHREEPLACEHOLDER_REMOVEDHTHREEPBTHISB_CUSTOM_CODE_CAN_ONLY_BE_USED_IN_BOTHERB_CUSTOM_CODE_NOT_IN_IT_SELF_SINCE_THAT_WILL_CAUSE_A_INFINITE_LOOP_IN_THE_COMPILERP="<h3>Placeholder Removed!</h3><p><b>This</b> custom code can only be used in <b>other</b> custom code, not in it self! Since that will cause a infinite loop in the compiler.</p>"
COM_COMPONENTBUILDER_HTHREESHTHREEPCUSTOM_CODE_CAN_ONLY_BE_USED_IN_OTHER_CUSTOM_CODE_IF_SET_AS_BJCB_MANUALB_YOU_CAN_NOT_ADD_THEM_TO_EMHASH_AUTOMATIONEM_CODE_AT_THIS_POINTP="<h3>%s</h3><p>Custom code can only be used in other custom code if set as <b>JCB (manual)</b>, you can not add them to <em>Hash (Automation)</em> code at this point.</p>"
COM_COMPONENTBUILDER_HTHREES_NAMESPACE_ERROR_SHTHREEPYOU_MUST_ATLEAST_HAVE_TWO_SECTIONS_IN_YOUR_NAMESPACE_YOU_JUST_HAVE_ONE_S_THIS_IS_AN_UNACCEPTABLE_ACTION_PLEASE_SEE_A_HREFS_PSRFOURA_FOR_MORE_INFOPPTHIS_S_WAS_THEREFORE_REMOVED_A_HREFSCLICK_HEREA_TO_FIX_THIS_ISSUEP="<h3>%s namespace error (%s)</h3><p>You must at-least have two sections in your namespace, you just have one (%s). This is an unacceptable action, please see <a href=%s >psr-4</a> for more info.</p><p>This %s was therefore removed, <a href=%s>click here</a> to fix this issue.</p>"
@ -7528,6 +7541,7 @@ COM_COMPONENTBUILDER_NO_COMPONENTS_FOUND="No Components Found"
COM_COMPONENTBUILDER_NO_COMPONENTS_WERE_SELECTED_PLEASE_MAKE_A_SELECTION_AND_TRY_AGAIN="No components were selected, please make a selection and try again!"
COM_COMPONENTBUILDER_NO_COMPONENT_DETAILS_FOUND_SO_IT_IS_NOT_SAFE_TO_CONTINUE="No component details found, so it is not safe to continue!"
COM_COMPONENTBUILDER_NO_COMPONENT_WAS_SELECTED_PLEASE_MAKE_A_SELECTION_OF_ONE_COMPONENT_AND_TRY_AGAIN="No component was selected, please make a selection of one component and try again!"
COM_COMPONENTBUILDER_NO_CREATE_TABLE_WERE_FOUND_PLEASE_CHECK_YOUR_SQL="No "CREATE TABLE.." were found, please check your sql."
COM_COMPONENTBUILDER_NO_CRONJOB_PATH_FOUND_FOR_S="No cronjob path found for (%s)"
COM_COMPONENTBUILDER_NO_CRONJOB_PATH_FOUND_SINCE_INCORRECT_TYPE_REQUESTED="No cronjob path found since incorrect type requested."
COM_COMPONENTBUILDER_NO_DESCRIPTION_FOUND="No description found."
@ -7665,6 +7679,7 @@ COM_COMPONENTBUILDER_PLEASE_FIRST_MAKE_A_SELECTION_FROM_THE_LIST="Please first m
COM_COMPONENTBUILDER_PLEASE_NOTE_THAT_THIS_PACKAGE_BHAS_NOB_CHECKSUM_VALIDATION="Please note that this package <b>has no</b> checksum validation!"
COM_COMPONENTBUILDER_PLEASE_SELECT_A_COMPONENT_THAT_YOU_WOULD_LIKE_TO_COMPILE="Please select a component that you would like to compile."
COM_COMPONENTBUILDER_PLEASE_TRY_AGAIN_LATER="Please try again later"
COM_COMPONENTBUILDER_PLEASE_TRY_AGAIN_THIS_ERROR_USUALY_HAPPENS_IF_IT_IS_A_NEW_COMPONENT_BEACUES_WE_NEED_A_COMPONENT_ID_TO_DO_THIS_BUILD_WITH_YOUR_SQL_DUMP="Please try again, this error usualy happens if it is a new component, beacues we need a component ID to do this build with your sql dump."
COM_COMPONENTBUILDER_PLEASE_WAIT="Please wait!"
COM_COMPONENTBUILDER_PLEASE_WAIT_LOADING="Please wait, loading"
COM_COMPONENTBUILDER_PLUGIN="Plugin"
@ -7873,6 +7888,7 @@ COM_COMPONENTBUILDER_REQUIRES_THE_VALUE_TO_BE_A_TELEPHONE_NUMBER_COMPLYING_WITH_
COM_COMPONENTBUILDER_REQUIRES_THE_VALUE_TO_BE_THE_SAME_AS_THAT_HELD_IN_THE_FIELD_NAMED_QUOTFIELDQUOT_EGS="Requires the value to be the same as that held in the field named &quot;field&quot;, eg:%s"
COM_COMPONENTBUILDER_RESET="Reset"
COM_COMPONENTBUILDER_RESET_FAILED="Reset Failed!"
COM_COMPONENTBUILDER_REVERTED_THE_B_ASSETSB_TABLE_RULES_COLUMN_BACK_TO_ITS_DEFAULT_SIZE_OF_VARCHARFIVE_THOUSAND_ONE_HUNDRED_AND_TWENTY="Reverted the <b>#__assets</b> table rules column back to its default size of varchar(5120)"
COM_COMPONENTBUILDER_REVERT_ALL_AHEAD_SNIPPETS="Revert All Ahead Snippets"
COM_COMPONENTBUILDER_RIGHT_IN_TAB="Right in Tab"
COM_COMPONENTBUILDER_RIGHT_OF_TABS="Right of Tabs"
@ -9147,6 +9163,12 @@ COM_COMPONENTBUILDER_WE_FAILED_TO_MOVE_BSB="We failed to move <b>%s</b>!"
COM_COMPONENTBUILDER_WE_FOUND_DYNAMIC_CODE_BALL_IN_ONE_LINEB_AND_IGNORED_IT_PLEASE_REVIEW_S_FOR_MORE_DETAILS="We found dynamic code <b>all in one line</b>, and ignored it! Please review (%s) for more details!"
COM_COMPONENTBUILDER_WE_FOUND_SOME_INSTANCES_IN_S="We found some instances in %s"
COM_COMPONENTBUILDER_WE_SUCCESSFULLY_MOVED_BSB="We successfully moved <b>%s</b>!"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_COMPONENT_TO_THE_GIT_REPOSITORY="We where was unable to transfer the component to the git repository:"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_COMPONENT_ZIP_FILE_TO_THE_BACKUP_FOLDER="We where was unable to transfer the component ZIP file to the backup folder:"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_S_MODULE_TO_THE_GIT_REPOSITORY="We where was unable to transfer the (%s) module to the git repository:"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_S_MODULE_ZIP_FILE_TO_THE_BACKUP_FOLDER="We where was unable to transfer the (%s) module zip file to the backup folder:"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_S_PLUGIN_TO_THE_GIT_REPOSITORY="We where was unable to transfer the (%s) plugin to the git repository:"
COM_COMPONENTBUILDER_WE_WHERE_WAS_UNABLE_TO_TRANSFER_THE_S_PLUGIN_ZIP_FILE_TO_THE_BACKUP_FOLDER="We where was unable to transfer the (%s) plugin zip file to the backup folder:"
COM_COMPONENTBUILDER_WHAT_VERSION_OF_JOOMLA_WOULD_YOU_LIKE_TO_TARGET="What version of Joomla would you like to target."
COM_COMPONENTBUILDER_WHICH_TYPE_OF_INDENTATION_WOULD_YOU_LIKE_TO_USE_PLEASE_NOTE_THAT_THIS_DOES_NOT_YET_IMPACT_THE_STATIC_TEMPLATES="Which type of indentation would you like to use? Please note that this does not yet impact the static templates."
COM_COMPONENTBUILDER_WHILE_WE_DOWNLOAD_ALL_TWENTY_SIX_COMPILER_GIF_ANIMATIONS_RANDOMLY_USED_IN_THE_COMPILER_GUI_DURING_COMPILATION="While we download all 26 compiler GIF animations randomly used in the compiler GUI during compilation"

View File

@ -3347,7 +3347,7 @@ class ComponentbuilderModelAjax extends ListModel
protected function buildFieldTextarea($name, $desc, $default, $rows)
{
// get the textarea
$textarea = JFormHelper::loadFieldType('textarea', true);
$textarea = \JFormHelper::loadFieldType('textarea', true);
// start building the name field XML
$textareaXML = new \SimpleXMLElement('<field/>');
// textarea attributes
@ -3373,7 +3373,7 @@ class ComponentbuilderModelAjax extends ListModel
protected function buildFieldOptionsSubform($values, $nameListOptions = null, $name = 'properties', $label = 'COM_COMPONENTBUILDER_PROPERTIESBR_SMALLHERE_YOU_CAN_SET_THE_PROPERTIES_FOR_THIS_FIELDSMALL')
{
// get the subform
$subform = JFormHelper::loadFieldType('subform', true);
$subform = \JFormHelper::loadFieldType('subform', true);
// start building the subform field XML
$subformXML = new \SimpleXMLElement('<field/>');
// subform attributes

View File

@ -18,6 +18,7 @@ use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\MVC\Model\ListModel;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Componentbuilder\Compiler\Helper\Compiler;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\JsonHelper;

View File

@ -15,10 +15,9 @@ defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('checkboxes');
JFormHelper::loadFieldClass('checkboxes');
use VDM\Joomla\Utilities\Component\Helper;
jimport('joomla.form.helper');
\JFormHelper::loadFieldClass('checkboxes');
/**
* Superpowerpaths Form Field class for the Componentbuilder component
@ -63,7 +62,7 @@ class JFormFieldSuperpowerpaths extends JFormFieldCheckboxes
// must have one / in the path
if (strpos($default, '/') !== false)
{
$tmp = new stdClass;
$tmp = new \stdClass;
$tmp->text = $tmp->value = trim($default);
$tmp->checked = false;
$options[$tmp->value] = $tmp;
@ -81,7 +80,7 @@ class JFormFieldSuperpowerpaths extends JFormFieldCheckboxes
if (isset($value->owner) && strlen($value->owner) > 1 &&
isset($value->repo) && strlen($value->repo) > 1)
{
$tmp = new stdClass;
$tmp = new \stdClass;
$tmp->text = $tmp->value = trim($value->owner) . '/' . trim($value->repo);
$tmp->checked = false;

View File

@ -30,6 +30,7 @@ use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\FOF\Encrypt\AES;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Componentbuilder\Extrusion\Helper\Extrusion;
/**
* Componentbuilder Joomla_component Admin Model
@ -1569,7 +1570,7 @@ class ComponentbuilderModelJoomla_component extends AdminModel
// we check if component should be build from sql file
if (isset($data['buildcomp']) && 1 == $data['buildcomp'])
{
ComponentbuilderHelper::dynamicBuilder($data, 1);
$extruder__ = new Extrusion($data);
}
// Set the Params Items to data

View File

@ -0,0 +1 @@

View File

@ -262,8 +262,8 @@ class ComponentbuilderViewJoomla_plugin extends HtmlView
$this->document->addScriptDeclaration("var expire = ". (int) $expire.";");
$this->document->addScriptDeclaration("selectionArray = {'property':{},'method':{}};");
// add a few field options via PHP
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
$tmp_ = JFormHelper::loadFieldType('joomlaplugingroups')->options;
\JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
$tmp_ = \JFormHelper::loadFieldType('joomlaplugingroups')->options;
if (ArrayHelper::check($tmp_))
{
$_tmp = array();
@ -274,7 +274,7 @@ class ComponentbuilderViewJoomla_plugin extends HtmlView
// Set the values to JavaScript
$this->document->addScriptDeclaration("selectionArray['joomla_plugin_group'] = ". json_encode($_tmp) . ";");
}
$tmp_ = JFormHelper::loadFieldType('pluginsclassproperties')->options;
$tmp_ = \JFormHelper::loadFieldType('pluginsclassproperties')->options;
if (ArrayHelper::check($tmp_))
{
$_tmp = array();
@ -285,7 +285,7 @@ class ComponentbuilderViewJoomla_plugin extends HtmlView
// Set the values to JavaScript
$this->document->addScriptDeclaration("selectionArray['property'] = ". json_encode($_tmp) . ";");
}
$tmp_ = JFormHelper::loadFieldType('pluginsclassmethods')->options;
$tmp_ = \JFormHelper::loadFieldType('pluginsclassmethods')->options;
if (ArrayHelper::check($tmp_))
{
$_tmp = array();