Release of v4.1.0

Add [AllowDynamicProperties] in the base view class for J5. Move the _prepareDocument  above the display call in the base view class. Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run. Added new import powers for custom import of spreadsheets. Move the setDocument and _prepareDocument above the display in the site view and custom admin view. Update the trashhelper layout to work in Joomla 5. Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues. Fix Save failed issue in dynamicGet. #1148. Move all [TEXT, EDITOR, TEXTAREA] fields from [NOT NULL] to [NULL]. Add the DateHelper class and improve the date methods. Add simple SessionHelper class. Add first classes for the new import engine. Improve the [VDM Registry] to be Joomla Registry Compatible. Move all registries to the [VDM Registry] class. Fix Checked Out to be null and not 0. (#1194). Fix created_by, modified_by, checked_out fields in the compiler of the SQL. (#1194). Update all core date fields in table class. (#1188). Update created_by, modified_by, checked_out fields in table class. Implementation of the decentralized Super-Power CORE repository network. (#1190). Fix the noticeboard to display Llewellyn's Joomla Social feed. Started compiling JCB4 on Joomla 5 with PHP 8.2. Add init_defaults option for dynamic form selection setup (to int new items with default values dynamically). Update all JCB 4 tables to utf8mb4_unicode_ci collation if misaligned. Move all internal ID linking to GUID inside of JCB 4. Updated the admin-tab-fields in add-fields view. #1205. Remove Custom Import Tab from admin view. Improved the customcode and placeholder search features.
This commit is contained in:
2025-02-14 23:01:37 +02:00
parent 4e968e96ab
commit 8549348a61
644 changed files with 42268 additions and 18453 deletions

View File

@ -260,6 +260,19 @@ class Admin_custom_tabsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the tabs (sub form) layout

View File

@ -281,6 +281,19 @@ class Admin_fieldsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addfields (sub form) layout

View File

@ -281,6 +281,19 @@ class Admin_fields_conditionsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addconditions (sub form) layout

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -147,7 +148,7 @@ class Admin_fields_relationsModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('admin_fields_relations__'.$id))
if (($vdm = SessionHelper::get('admin_fields_relations__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -155,17 +156,17 @@ class Admin_fields_relationsModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'admin_fields_relations__'.$id);
ComponentbuilderHelper::set('admin_fields_relations__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'admin_fields_relations__'.$id);
SessionHelper::set('admin_fields_relations__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -219,7 +220,7 @@ class Admin_fields_relationsModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('admin_fields_relations__'.$id))
if (($vdm = SessionHelper::get('admin_fields_relations__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -227,17 +228,17 @@ class Admin_fields_relationsModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'admin_fields_relations__'.$id);
ComponentbuilderHelper::set('admin_fields_relations__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'admin_fields_relations__'.$id);
SessionHelper::set('admin_fields_relations__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -351,6 +352,19 @@ class Admin_fields_relationsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addrelations (sub form) layout

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -123,20 +125,6 @@ class Admin_viewModel extends AdminModel
'php_document'
)
),
'custom_import' => array(
'fullwidth' => array(
'note_beginner_import',
'note_advanced_import',
'add_custom_import',
'php_import_display',
'html_import_view',
'php_import',
'php_import_headers',
'php_import_setdata',
'php_import_save',
'php_import_ext'
)
),
'mysql' => array(
'left' => array(
'mysql_table_engine',
@ -296,7 +284,7 @@ class Admin_viewModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('admin_view__'.$id))
if (($vdm = SessionHelper::get('admin_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -304,17 +292,17 @@ class Admin_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'admin_view__'.$id);
ComponentbuilderHelper::set('admin_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'admin_view__'.$id);
SessionHelper::set('admin_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -374,10 +362,10 @@ class Admin_viewModel extends AdminModel
$item->php_getlistquery = base64_decode($item->php_getlistquery);
}
if (!empty($item->php_import_ext))
if (!empty($item->php_getitems))
{
// base64 Decode php_import_ext.
$item->php_import_ext = base64_decode($item->php_import_ext);
// base64 Decode php_getitems.
$item->php_getitems = base64_decode($item->php_getitems);
}
if (!empty($item->php_after_publish))
@ -404,10 +392,10 @@ class Admin_viewModel extends AdminModel
$item->php_after_delete = base64_decode($item->php_after_delete);
}
if (!empty($item->php_import))
if (!empty($item->php_getitem))
{
// base64 Decode php_import.
$item->php_import = base64_decode($item->php_import);
// base64 Decode php_getitem.
$item->php_getitem = base64_decode($item->php_getitem);
}
if (!empty($item->php_getitems_after_all))
@ -470,18 +458,6 @@ class Admin_viewModel extends AdminModel
$item->sql = base64_decode($item->sql);
}
if (!empty($item->php_import_display))
{
// base64 Decode php_import_display.
$item->php_import_display = base64_decode($item->php_import_display);
}
if (!empty($item->php_import_setdata))
{
// base64 Decode php_import_setdata.
$item->php_import_setdata = base64_decode($item->php_import_setdata);
}
if (!empty($item->css_view))
{
// base64 Decode css_view.
@ -548,36 +524,6 @@ class Admin_viewModel extends AdminModel
$item->php_ajaxmethod = base64_decode($item->php_ajaxmethod);
}
if (!empty($item->html_import_view))
{
// base64 Decode html_import_view.
$item->html_import_view = base64_decode($item->html_import_view);
}
if (!empty($item->php_getitem))
{
// base64 Decode php_getitem.
$item->php_getitem = base64_decode($item->php_getitem);
}
if (!empty($item->php_import_headers))
{
// base64 Decode php_import_headers.
$item->php_import_headers = base64_decode($item->php_import_headers);
}
if (!empty($item->php_import_save))
{
// base64 Decode php_import_save.
$item->php_import_save = base64_decode($item->php_import_save);
}
if (!empty($item->php_getitems))
{
// base64 Decode php_getitems.
$item->php_getitems = base64_decode($item->php_getitems);
}
if (!empty($item->addpermissions))
{
// Convert the addpermissions field to an array.
@ -644,7 +590,7 @@ class Admin_viewModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('admin_view__'.$id))
if (($vdm = SessionHelper::get('admin_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -652,55 +598,19 @@ class Admin_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'admin_view__'.$id);
ComponentbuilderHelper::set('admin_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'admin_view__'.$id);
SessionHelper::set('admin_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addlinked_views' => 'adminview',
'ajax_input' => 'value_name',
'custom_button' => 'name',
'addpermissions' => 'action',
'addtables' => 'table',
'addtabs' => 'name'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_admin_view', $objectUpdate, 'id');
}
// update the mysql_table_engine defaults
if (isset($item->mysql_table_engine) && is_numeric($item->mysql_table_engine))
{
@ -828,8 +738,24 @@ class Admin_viewModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the ajax_input (sub form) layout
$form->setFieldAttribute('ajax_input', 'layout', ComponentbuilderHelper::getSubformLayout('admin_view', 'ajax_input'));
// update all editors to use this components global editor
$global_editor = ComponentHelper::getParams('com_componentbuilder')->get('editor', 'none');
// now get all the editor fields
@ -1070,7 +996,7 @@ class Admin_viewModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}
@ -1104,23 +1030,46 @@ class Admin_viewModel extends AdminModel
return false;
}
// we must also delete the linked tables found
if (UtilitiesArrayHelper::check($pks))
// linked tables to update
$_tables_array = [
'admin_fields' => 'admin_view',
'admin_fields_conditions' => 'admin_view',
'admin_fields_relations' => 'admin_view',
'admin_custom_tabs' => 'admin_view'
];
// we must also update all linked tables
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'admin_fields',
'admin_fields_conditions',
'admin_fields_relations',
'admin_custom_tabs'
);
foreach($_tablesArray as $_updateTable)
foreach($_tables_array as $_delete_table => $_field_name)
{
// get the admin_view guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'admin_view'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, 'admin_view', 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_delete_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
// change publish state
$_Model = ComponentbuilderHelper::getModel($_delete_table);
// change publish state to trash (in-case the state was not changed in sync with the parent)
$_Model->publish($_pks, -2);
// delete the items
$_Model->delete($_pks);
}
}
@ -1145,22 +1094,42 @@ class Admin_viewModel extends AdminModel
return false;
}
// linked tables to update
$_tables_array = [
'admin_fields' => 'admin_view',
'admin_fields_conditions' => 'admin_view',
'admin_fields_relations' => 'admin_view',
'admin_custom_tabs' => 'admin_view'
];
// we must also update all linked tables
if (UtilitiesArrayHelper::check($pks))
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'admin_fields',
'admin_fields_conditions',
'admin_fields_relations',
'admin_custom_tabs'
);
foreach($_tablesArray as $_updateTable)
foreach($_tables_array as $_update_table => $_field_name)
{
// get the admin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'admin_view'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, 'admin_view', 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
$_Model = ComponentbuilderHelper::getModel($_update_table);
// change publish state
$_Model->publish($_pks, $value);
}
@ -1340,6 +1309,12 @@ class Admin_viewModel extends AdminModel
}
}
// Only for strings
if (UtilitiesStringHelper::check($this->table->system_name) && !is_numeric($this->table->system_name))
{
$this->table->system_name = $this->generateUnique('system_name',$this->table->system_name);
}
// insert all set values
if (UtilitiesArrayHelper::check($values))
{
@ -1673,10 +1648,10 @@ class Admin_viewModel extends AdminModel
$data['php_getlistquery'] = base64_encode($data['php_getlistquery']);
}
// Set the php_import_ext string to base64 string.
if (isset($data['php_import_ext']))
// Set the php_getitems string to base64 string.
if (isset($data['php_getitems']))
{
$data['php_import_ext'] = base64_encode($data['php_import_ext']);
$data['php_getitems'] = base64_encode($data['php_getitems']);
}
// Set the php_after_publish string to base64 string.
@ -1703,10 +1678,10 @@ class Admin_viewModel extends AdminModel
$data['php_after_delete'] = base64_encode($data['php_after_delete']);
}
// Set the php_import string to base64 string.
if (isset($data['php_import']))
// Set the php_getitem string to base64 string.
if (isset($data['php_getitem']))
{
$data['php_import'] = base64_encode($data['php_import']);
$data['php_getitem'] = base64_encode($data['php_getitem']);
}
// Set the php_getitems_after_all string to base64 string.
@ -1769,18 +1744,6 @@ class Admin_viewModel extends AdminModel
$data['sql'] = base64_encode($data['sql']);
}
// Set the php_import_display string to base64 string.
if (isset($data['php_import_display']))
{
$data['php_import_display'] = base64_encode($data['php_import_display']);
}
// Set the php_import_setdata string to base64 string.
if (isset($data['php_import_setdata']))
{
$data['php_import_setdata'] = base64_encode($data['php_import_setdata']);
}
// Set the css_view string to base64 string.
if (isset($data['css_view']))
{
@ -1847,36 +1810,6 @@ class Admin_viewModel extends AdminModel
$data['php_ajaxmethod'] = base64_encode($data['php_ajaxmethod']);
}
// Set the html_import_view string to base64 string.
if (isset($data['html_import_view']))
{
$data['html_import_view'] = base64_encode($data['html_import_view']);
}
// Set the php_getitem string to base64 string.
if (isset($data['php_getitem']))
{
$data['php_getitem'] = base64_encode($data['php_getitem']);
}
// Set the php_import_headers string to base64 string.
if (isset($data['php_import_headers']))
{
$data['php_import_headers'] = base64_encode($data['php_import_headers']);
}
// Set the php_import_save string to base64 string.
if (isset($data['php_import_save']))
{
$data['php_import_save'] = base64_encode($data['php_import_save']);
}
// Set the php_getitems string to base64 string.
if (isset($data['php_getitems']))
{
$data['php_getitems'] = base64_encode($data['php_getitems']);
}
// Set the Params Items to data
if (isset($data['params']) && is_array($data['params']))
{
@ -1927,4 +1860,26 @@ class Admin_viewModel extends AdminModel
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(['title' => $title]))
{
$title = StringHelper::increment($title);
}
return $title;
}
}

View File

@ -92,7 +92,6 @@ class Admin_viewsModel extends ListModel
'a.type','type',
'a.add_custom_button','add_custom_button',
'a.add_php_ajax','add_php_ajax',
'a.add_custom_import','add_custom_import',
'a.system_name','system_name',
'a.name_single','name_single',
'a.short_description','short_description'
@ -224,13 +223,6 @@ class Admin_viewsModel extends ListModel
$this->setState('filter.add_php_ajax', $add_php_ajax);
}
$add_custom_import = $this->getUserStateFromRequest($this->context . '.filter.add_custom_import', 'filter_add_custom_import');
if ($formSubmited)
{
$add_custom_import = $app->input->post->get('add_custom_import');
$this->setState('filter.add_custom_import', $add_custom_import);
}
$system_name = $this->getUserStateFromRequest($this->context . '.filter.system_name', 'filter_system_name');
if ($formSubmited)
{
@ -304,8 +296,6 @@ class Admin_viewsModel extends ListModel
$item->add_custom_button = $this->selectionTranslation($item->add_custom_button, 'add_custom_button');
// convert add_php_ajax
$item->add_php_ajax = $this->selectionTranslation($item->add_php_ajax, 'add_php_ajax');
// convert add_custom_import
$item->add_custom_import = $this->selectionTranslation($item->add_custom_import, 'add_custom_import');
}
}
@ -373,19 +363,6 @@ class Admin_viewsModel extends ListModel
return $add_php_ajaxArray[$value];
}
}
// Array of add_custom_import language strings
if ($name === 'add_custom_import')
{
$add_custom_importArray = array(
1 => 'COM_COMPONENTBUILDER_ADMIN_VIEW_YES',
0 => 'COM_COMPONENTBUILDER_ADMIN_VIEW_NO'
);
// Now check if value is found in this array
if (isset($add_custom_importArray[$value]) && StringHelper::check($add_custom_importArray[$value]))
{
return $add_custom_importArray[$value];
}
}
return $value;
}
@ -409,22 +386,18 @@ class Admin_viewsModel extends ListModel
// From the componentbuilder_item table
$query->from($db->quoteName('#__componentbuilder_admin_view', 'a'));
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
{
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
if (($guids = JCBFilterHelper::linked($filter_joomla_component, 'joomla_component_admin_views')) !== null)
{
if (($ids = JCBFilterHelper::linked((int) $filter_joomla_component, 'joomla_component_admin_views')) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $guids) . '")');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
@ -472,7 +445,7 @@ class Admin_viewsModel extends ListModel
else
{
$search = $db->quote('%' . $db->escape($search) . '%');
$query->where('(a.system_name LIKE '.$search.' OR a.name_single LIKE '.$search.' OR a.short_description LIKE '.$search.' OR a.description LIKE '.$search.' OR a.type LIKE '.$search.' OR a.name_list LIKE '.$search.')');
$query->where('(a.system_name LIKE '.$search.' OR a.name_single LIKE '.$search.' OR a.short_description LIKE '.$search.' OR a.name_list LIKE '.$search.' OR a.description LIKE '.$search.' OR a.type LIKE '.$search.')');
}
}
@ -567,26 +540,9 @@ class Admin_viewsModel extends ListModel
{
$query->where('a.add_php_ajax = ' . $db->quote($db->escape($_add_php_ajax)));
}
// Filter by Add_custom_import.
$_add_custom_import = $this->getState('filter.add_custom_import');
if (is_numeric($_add_custom_import))
{
if (is_float($_add_custom_import))
{
$query->where('a.add_custom_import = ' . (float) $_add_custom_import);
}
else
{
$query->where('a.add_custom_import = ' . (int) $_add_custom_import);
}
}
elseif (StringHelper::check($_add_custom_import))
{
$query->where('a.add_custom_import = ' . $db->quote($db->escape($_add_custom_import)));
}
// Add the list ordering clause.
$orderCol = $this->getState('list.ordering', 'a.id');
$orderCol = $this->getState('list.ordering', '');
$orderDirn = $this->getState('list.direction', 'desc');
if ($orderCol != '')
{
@ -640,7 +596,6 @@ class Admin_viewsModel extends ListModel
}
$id .= ':' . $this->getState('filter.add_custom_button');
$id .= ':' . $this->getState('filter.add_php_ajax');
$id .= ':' . $this->getState('filter.add_custom_import');
$id .= ':' . $this->getState('filter.system_name');
$id .= ':' . $this->getState('filter.name_single');
$id .= ':' . $this->getState('filter.short_description');

View File

@ -204,8 +204,8 @@ class Admins_custom_tabsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_admin_custom_tabs', 'a'));
// From the componentbuilder_admin_view table.
$query->select($db->quoteName('g.system_name','admin_view_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['admin_view_system_name','admin_view_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Admins_fieldsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_admin_fields', 'a'));
// From the componentbuilder_admin_view table.
$query->select($db->quoteName('g.system_name','admin_view_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['admin_view_system_name','admin_view_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Admins_fields_conditionsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_admin_fields_conditions', 'a'));
// From the componentbuilder_admin_view table.
$query->select($db->quoteName('g.system_name','admin_view_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['admin_view_system_name','admin_view_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Admins_fields_relationsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_admin_fields_relations', 'a'));
// From the componentbuilder_admin_view table.
$query->select($db->quoteName('g.system_name','admin_view_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['admin_view_system_name','admin_view_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_admin_view', 'g') . ' ON (' . $db->quoteName('a.admin_view') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

File diff suppressed because it is too large Load Diff

View File

@ -29,11 +29,13 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -151,7 +153,7 @@ class Class_extendsModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_extends__'.$id))
if (($vdm = SessionHelper::get('class_extends__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -159,17 +161,17 @@ class Class_extendsModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_extends__'.$id);
ComponentbuilderHelper::set('class_extends__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_extends__'.$id);
SessionHelper::set('class_extends__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -227,7 +229,7 @@ class Class_extendsModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_extends__'.$id))
if (($vdm = SessionHelper::get('class_extends__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -235,17 +237,17 @@ class Class_extendsModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_extends__'.$id);
ComponentbuilderHelper::set('class_extends__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_extends__'.$id);
SessionHelper::set('class_extends__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -359,6 +361,19 @@ class Class_extendsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -376,7 +391,14 @@ class Class_extendsModel extends AdminModel
$form->setFieldAttribute($name, 'editor', $global_editor . '|none');
}
}
// Only load the GUID if new item (or empty)
if (0 == $id || !($val = $form->getValue('guid')))
{
$form->setValue('guid', null, GuidHelper::get());
}
return $form;
}
@ -574,7 +596,7 @@ class Class_extendsModel extends AdminModel
*/
protected function getUniqueFields()
{
return false;
return array('guid');
}
/**
@ -983,7 +1005,21 @@ class Class_extendsModel extends AdminModel
}
// make sure the name is safe to be used as a class name
$data['name'] = ClassfunctionHelper::safe($data['name']);
$data['name'] = ClassfunctionHelper::safe($data['name']);
// Set the GUID if empty or not valid
if (empty($data['guid']) && $data['id'] > 0)
{
// get the existing one
$data['guid'] = (string) GetHelper::var('class_extends', $data['id'], 'id', 'guid');
}
// Set the GUID if empty or not valid
while (!GuidHelper::valid($data['guid'], "class_extends", $data['id']))
{
// must always be set
$data['guid'] = (string) GuidHelper::get();
}
// Set the head string to base64 string.
if (isset($data['head']))

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -155,7 +156,7 @@ class Class_methodModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_method__'.$id))
if (($vdm = SessionHelper::get('class_method__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -163,17 +164,17 @@ class Class_methodModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_method__'.$id);
ComponentbuilderHelper::set('class_method__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_method__'.$id);
SessionHelper::set('class_method__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -237,7 +238,7 @@ class Class_methodModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_method__'.$id))
if (($vdm = SessionHelper::get('class_method__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -245,17 +246,17 @@ class Class_methodModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_method__'.$id);
ComponentbuilderHelper::set('class_method__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_method__'.$id);
SessionHelper::set('class_method__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -369,6 +370,19 @@ class Class_methodModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -611,7 +625,7 @@ class Class_methodModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -286,8 +286,8 @@ class Class_methodsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_class_method', 'a'));
// From the componentbuilder_joomla_plugin_group table.
$query->select($db->quoteName('g.name','joomla_plugin_group_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['joomla_plugin_group_name','joomla_plugin_group_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -284,8 +284,8 @@ class Class_propertiesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_class_property', 'a'));
// From the componentbuilder_joomla_plugin_group table.
$query->select($db->quoteName('g.name','joomla_plugin_group_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['joomla_plugin_group_name','joomla_plugin_group_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');
@ -371,7 +371,7 @@ class Class_propertiesModel extends ListModel
}
// Add the list ordering clause.
$orderCol = $this->getState('list.ordering', 'a.id');
$orderCol = $this->getState('list.ordering', '');
$orderDirn = $this->getState('list.direction', 'desc');
if ($orderCol != '')
{

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -152,7 +153,7 @@ class Class_propertyModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_property__'.$id))
if (($vdm = SessionHelper::get('class_property__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -160,17 +161,17 @@ class Class_propertyModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_property__'.$id);
ComponentbuilderHelper::set('class_property__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_property__'.$id);
SessionHelper::set('class_property__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -228,7 +229,7 @@ class Class_propertyModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('class_property__'.$id))
if (($vdm = SessionHelper::get('class_property__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -236,17 +237,17 @@ class Class_propertyModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'class_property__'.$id);
ComponentbuilderHelper::set('class_property__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'class_property__'.$id);
SessionHelper::set('class_property__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -360,6 +361,19 @@ class Class_propertyModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -602,7 +616,7 @@ class Class_propertyModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -25,6 +25,10 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Componentbuilder\Compiler\Helper\Compiler;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\JsonHelper;
use Joomla\CMS\Filesystem\Folder;
use Joomla\Filesystem\File;
use Joomla\CMS\Installer\InstallerHelper;
use Joomla\CMS\Installer\Installer;
// No direct access to this file
\defined('_JEXEC') or die;
@ -114,9 +118,12 @@ class CompilerModel extends ListModel
];
/**
* A custom property for UIKit components. (not used unless you load v2)
* A custom property for UI Kit components.
*
* @var mixed Property for storing UI Kit component-related data or objects.
* @since 3.2.0
*/
protected $uikitComp;
protected $uikitComp = [];
/**
* Constructor
@ -299,7 +306,7 @@ class CompilerModel extends ListModel
public function emptyFolder($dir, $removeDir = false)
{
if (\JFolder::exists($dir))
if (is_dir($dir))
{
$it = new \RecursiveDirectoryIterator($dir);
$it = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::CHILD_FIRST);
@ -308,19 +315,19 @@ class CompilerModel extends ListModel
if ('.' === $file->getBasename() || '..' === $file->getBasename()) continue;
if ($file->isDir())
{
\JFolder::delete($file->getPathname());
Folder::delete($file->getPathname());
}
else
{
if ($file->getBasename() !== 'index.html')
{
\JFile::delete($file->getPathname());
File::delete($file->getPathname());
}
}
}
if ($removeDir)
{
if (\JFolder::delete($dir))
if (Folder::delete($dir))
{
return true;
}
@ -365,7 +372,7 @@ class CompilerModel extends ListModel
$tmp_dest = $config->get('tmp_path');
// Unpack the downloaded package file.
$package = \JInstallerHelper::unpack($tmp_dest . '/' . $p_file, true);
$package = InstallerHelper::unpack($tmp_dest . '/' . $p_file, true);
// insure the install type is folder (JCB zip file is in the folder)
$installType = 'folder';
@ -390,7 +397,7 @@ class CompilerModel extends ListModel
}
// Get an installer instance.
$installer = \JInstaller::getInstance();
$installer = Installer::getInstance();
// Install the package.
if (!$installer->install($package['dir']))
@ -427,7 +434,7 @@ class CompilerModel extends ListModel
$package['packagefile'] = $config->get('tmp_path') . '/' . $package['packagefile'];
}
\JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']);
InstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']);
// Clear the cached extension data and menu cache
$this->cleanCache('_system', 0);

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -157,37 +158,6 @@ class Component_admin_viewsModel extends AdminModel
$addadmin_views->loadString($item->addadmin_views);
$item->addadmin_views = $addadmin_views->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addadmin_views' => 'adminview'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_admin_views', $objectUpdate, 'id');
}
}
return $item;
@ -299,6 +269,19 @@ class Component_admin_viewsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addadmin_views (sub form) layout
@ -910,7 +893,7 @@ class Component_admin_viewsModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addadmin_views data from clone_me (component_admin_views)
$data['addadmin_views'] = GetHelper::var('component_admin_views', $data['clone_me'], 'joomla_component', 'addadmin_views');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -156,37 +157,6 @@ class Component_configModel extends AdminModel
$addconfig->loadString($item->addconfig);
$item->addconfig = $addconfig->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addconfig' => 'field'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_config', $objectUpdate, 'id');
}
}
return $item;
@ -298,6 +268,19 @@ class Component_configModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -906,7 +889,7 @@ class Component_configModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addconfig data from clone_me (component_config)
$data['addconfig'] = GetHelper::var('component_config', $data['clone_me'], 'joomla_component', 'addconfig');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -156,37 +157,6 @@ class Component_custom_admin_menusModel extends AdminModel
$addcustommenus->loadString($item->addcustommenus);
$item->addcustommenus = $addcustommenus->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addcustommenus' => 'name'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_custom_admin_menus', $objectUpdate, 'id');
}
}
return $item;
@ -298,6 +268,19 @@ class Component_custom_admin_menusModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addcustommenus (sub form) layout
@ -909,7 +892,7 @@ class Component_custom_admin_menusModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addcustommenus data from clone_me (component_custom_admin_menus)
$data['addcustommenus'] = GetHelper::var('component_custom_admin_menus', $data['clone_me'], 'joomla_component', 'addcustommenus');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -157,37 +158,6 @@ class Component_custom_admin_viewsModel extends AdminModel
$addcustom_admin_views->loadString($item->addcustom_admin_views);
$item->addcustom_admin_views = $addcustom_admin_views->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addcustom_admin_views' => 'customadminview'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_custom_admin_views', $objectUpdate, 'id');
}
}
return $item;
@ -299,6 +269,19 @@ class Component_custom_admin_viewsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addcustom_admin_views (sub form) layout
@ -910,7 +893,7 @@ class Component_custom_admin_viewsModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addcustom_admin_views data from clone_me (component_custom_admin_views)
$data['addcustom_admin_views'] = GetHelper::var('component_custom_admin_views', $data['clone_me'], 'joomla_component', 'addcustom_admin_views');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -155,7 +156,7 @@ class Component_dashboardModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('component_dashboard__'.$id))
if (($vdm = SessionHelper::get('component_dashboard__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -163,17 +164,17 @@ class Component_dashboardModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'component_dashboard__'.$id);
ComponentbuilderHelper::set('component_dashboard__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'component_dashboard__'.$id);
SessionHelper::set('component_dashboard__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -233,7 +234,7 @@ class Component_dashboardModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('component_dashboard__'.$id))
if (($vdm = SessionHelper::get('component_dashboard__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -241,48 +242,18 @@ class Component_dashboardModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'component_dashboard__'.$id);
ComponentbuilderHelper::set('component_dashboard__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'component_dashboard__'.$id);
SessionHelper::set('component_dashboard__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'dashboard_tab' => 'name'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_dashboard', $objectUpdate, 'id');
}
}
@ -395,6 +366,19 @@ class Component_dashboardModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the dashboard_tab (sub form) layout
@ -1009,7 +993,7 @@ class Component_dashboardModel extends AdminModel
if (isset($data['clone_me']) && $data['clone_me'] > 0)
{
// get the following data from clone_me (component_dashboard)
$keys = array('php_dashboard_methods','dashboard_tab','params');
$keys = ['php_dashboard_methods','dashboard_tab','params'];
foreach ($keys as $key)
{
$data[$key] = GetHelper::var('component_dashboard', $data['clone_me'], 'joomla_component', $key);

View File

@ -192,38 +192,6 @@ class Component_files_foldersModel extends AdminModel
$addfiles->loadString($item->addfiles);
$item->addfiles = $addfiles->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addfiles' => 'file',
'addfolders' => 'folder'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_files_folders', $objectUpdate, 'id');
}
}
return $item;
@ -335,6 +303,19 @@ class Component_files_foldersModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -946,7 +927,7 @@ class Component_files_foldersModel extends AdminModel
if (isset($data['clone_me']) && $data['clone_me'] > 0)
{
// get the following data from clone_me (component_files_folders)
$keys = array('addfiles','addfolders','addfilesfullpath','addfoldersfullpath');
$keys = ['addfiles','addfolders','addfilesfullpath','addfoldersfullpath'];
foreach ($keys as $key)
{
$data[$key] = GetHelper::var('component_files_folders', $data['clone_me'], 'joomla_component', $key);

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -268,6 +269,19 @@ class Component_modulesModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -876,7 +890,7 @@ class Component_modulesModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addjoomla_modules data from clone_me (component_modules)
$data['addjoomla_modules'] = GetHelper::var('component_modules', $data['clone_me'], 'joomla_component', 'addjoomla_modules');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -156,37 +157,6 @@ class Component_mysql_tweaksModel extends AdminModel
$sql_tweak->loadString($item->sql_tweak);
$item->sql_tweak = $sql_tweak->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'sql_tweak' => 'adminview'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_mysql_tweaks', $objectUpdate, 'id');
}
}
return $item;
@ -298,6 +268,19 @@ class Component_mysql_tweaksModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -906,7 +889,7 @@ class Component_mysql_tweaksModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get sql_tweak data from clone_me (component_mysql_tweaks)
$data['sql_tweak'] = GetHelper::var('component_mysql_tweaks', $data['clone_me'], 'joomla_component', 'sql_tweak');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -267,6 +268,19 @@ class Component_placeholdersModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -875,7 +889,7 @@ class Component_placeholdersModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addplaceholders data from clone_me (component_placeholders)
$data['addplaceholders'] = GetHelper::var('component_placeholders', $data['clone_me'], 'joomla_component', 'addplaceholders');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -268,6 +269,19 @@ class Component_pluginsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -876,7 +890,7 @@ class Component_pluginsModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addjoomla_plugins data from clone_me (component_plugins)
$data['addjoomla_plugins'] = GetHelper::var('component_plugins', $data['clone_me'], 'joomla_component', 'addjoomla_plugins');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -156,7 +157,7 @@ class Component_routerModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('component_router__'.$id))
if (($vdm = SessionHelper::get('component_router__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -164,17 +165,17 @@ class Component_routerModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'component_router__'.$id);
ComponentbuilderHelper::set('component_router__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'component_router__'.$id);
SessionHelper::set('component_router__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -246,7 +247,7 @@ class Component_routerModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('component_router__'.$id))
if (($vdm = SessionHelper::get('component_router__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -254,17 +255,17 @@ class Component_routerModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'component_router__'.$id);
ComponentbuilderHelper::set('component_router__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'component_router__'.$id);
SessionHelper::set('component_router__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -378,6 +379,19 @@ class Component_routerModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -157,37 +158,6 @@ class Component_site_viewsModel extends AdminModel
$addsite_views->loadString($item->addsite_views);
$item->addsite_views = $addsite_views->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addsite_views' => 'siteview'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_site_views', $objectUpdate, 'id');
}
}
return $item;
@ -299,6 +269,19 @@ class Component_site_viewsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the addsite_views (sub form) layout
@ -910,7 +893,7 @@ class Component_site_viewsModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get addsite_views data from clone_me (component_site_views)
$data['addsite_views'] = GetHelper::var('component_site_views', $data['clone_me'], 'joomla_component', 'addsite_views');

View File

@ -31,6 +31,7 @@ use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -156,37 +157,6 @@ class Component_updatesModel extends AdminModel
$version_update->loadString($item->version_update);
$item->version_update = $version_update->toArray();
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'version_update' => 'version'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_component_updates', $objectUpdate, 'id');
}
}
return $item;
@ -298,6 +268,19 @@ class Component_updatesModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the version_update (sub form) layout
@ -909,7 +892,7 @@ class Component_updatesModel extends AdminModel
// check if we have a clone moment
if (isset($data['clone_me']) && $data['clone_me'] > 0)
if (isset($data['clone_me']) && GuidHelper::valid($data['clone_me']))
{
// get version_update data from clone_me (component_updates)
$data['version_update'] = GetHelper::var('component_updates', $data['clone_me'], 'joomla_component', 'version_update');

View File

@ -528,97 +528,6 @@ class ComponentbuilderModel extends ListModel
}
public function getNoticeboard()
{
// get the document to load the scripts
$document = Factory::getDocument();
Html::_('script', "media/com_componentbuilder/js/marked.js", ['version' => 'auto']);
$document->addScriptDeclaration('
var token = "' . Session::getFormToken() . '";
var noticeboard = "https://vdm.bz/componentbuilder-noticeboard-md";
document.addEventListener("DOMContentLoaded", function() {
fetch(noticeboard)
.then(response => {
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.text();
})
.then(board => {
if (board.length > 5) {
document.getElementById("noticeboard-md").innerHTML = marked.parse(board);
getIS(1, board)
.then(result => {
if (result) {
document.querySelectorAll("#cpanel_tabTabs a").forEach(link => {
if (link.href.includes("#vast_development_method") || link.href.includes("#notice_board")) {
var textVDM = link.textContent;
link.innerHTML = "<span class=\"label label-important vdm-new-notice\">1</span> " + textVDM;
link.id = "vdm-new-notice";
document.getElementById("vdm-new-notice").addEventListener("click", () => {
getIS(2, board)
.then(result => {
if (result) {
document.querySelectorAll(".vdm-new-notice").forEach(element => {
element.style.opacity = 0;
});
}
});
});
}
});
}
});
} else {
document.getElementById("noticeboard-md").innerHTML = "'.Text::_('COM_COMPONENTBUILDER_ALL_IS_GOOD_PLEASE_CHECK_AGAIN_LATER').'.";
}
})
.catch(error => {
console.error("There was an error!", error);
document.getElementById("noticeboard-md").innerHTML = "'.Text::_('COM_COMPONENTBUILDER_ALL_IS_GOOD_PLEASE_CHECK_AGAIN_LATER').'.";
});
});
// to check is READ/NEW
function getIS(type, notice) {
let getUrl = "";
if (type === 1) {
getUrl = "index.php?option=com_componentbuilder&task=ajax.isNew&format=json&raw=true";
} else if (type === 2) {
getUrl = "index.php?option=com_componentbuilder&task=ajax.isRead&format=json&raw=true";
}
let request = new URLSearchParams();
if (token.length > 0 && notice.length) {
request.append(token, "1");
request.append("notice", notice);
}
return fetch(getUrl, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
body: request
}).then(response => response.json());
}
document.addEventListener("DOMContentLoaded", function() {
document.querySelectorAll(".loading-dots").forEach(function(loading_dots) {
let x = 0;
let intervalId = setInterval(function() {
if (!loading_dots.classList.contains("loading-dots")) {
clearInterval(intervalId);
return;
}
let dots = ".".repeat(x % 8);
loading_dots.textContent = dots;
x++;
}, 500);
});
});');
return '<div id="noticeboard-md">'.Text::_('COM_COMPONENTBUILDER_THE_NOTICE_BOARD_IS_LOADING').'.<span class="loading-dots">.</span></small></div>';
}
public function getReadme()
{
$document = Factory::getDocument();

View File

@ -204,8 +204,8 @@ class Components_admin_viewsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_admin_views', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_configModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_config', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_custom_admin_menusModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_custom_admin_menus', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_custom_admin_viewsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_custom_admin_views', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_dashboardModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_dashboard', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_files_foldersModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_files_folders', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_modulesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_modules', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_mysql_tweaksModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_mysql_tweaks', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_placeholdersModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_placeholders', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_pluginsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_plugins', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -294,8 +294,8 @@ class Components_routersModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_router', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_site_viewsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_site_views', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Components_updatesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_component_updates', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','joomla_component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_component_system_name','joomla_component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.joomla_component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -213,7 +214,7 @@ class Custom_admin_viewModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('custom_admin_view__'.$id))
if (($vdm = SessionHelper::get('custom_admin_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -221,17 +222,17 @@ class Custom_admin_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'custom_admin_view__'.$id);
ComponentbuilderHelper::set('custom_admin_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'custom_admin_view__'.$id);
SessionHelper::set('custom_admin_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -381,7 +382,7 @@ class Custom_admin_viewModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('custom_admin_view__'.$id))
if (($vdm = SessionHelper::get('custom_admin_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -389,17 +390,17 @@ class Custom_admin_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'custom_admin_view__'.$id);
ComponentbuilderHelper::set('custom_admin_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'custom_admin_view__'.$id);
SessionHelper::set('custom_admin_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
@ -532,8 +533,24 @@ class Custom_admin_viewModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the ajax_input (sub form) layout
$form->setFieldAttribute('ajax_input', 'layout', ComponentbuilderHelper::getSubformLayout('custom_admin_view', 'ajax_input'));
// update all editors to use this components global editor
$global_editor = ComponentHelper::getParams('com_componentbuilder')->get('editor', 'none');
// now get all the editor fields

View File

@ -347,28 +347,24 @@ class Custom_admin_viewsModel extends ListModel
// From the componentbuilder_item table
$query->from($db->quoteName('#__componentbuilder_custom_admin_view', 'a'));
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
{
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
if (($guids = JCBFilterHelper::linked((string) $filter_joomla_component, 'joomla_component_custom_admin_views')) !== null)
{
if (($ids = JCBFilterHelper::linked((int) $filter_joomla_component, 'joomla_component_custom_admin_views')) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $guids) . '")');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// From the componentbuilder_dynamic_get table.
$query->select($db->quoteName('g.name','main_get_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.main_get') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['main_get_name','main_get_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.main_get') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -167,7 +168,7 @@ class Custom_codeModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('custom_code__'.$id))
if (($vdm = SessionHelper::get('custom_code__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -175,17 +176,17 @@ class Custom_codeModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'custom_code__'.$id);
ComponentbuilderHelper::set('custom_code__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'custom_code__'.$id);
SessionHelper::set('custom_code__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -237,7 +238,7 @@ class Custom_codeModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('custom_code__'.$id))
if (($vdm = SessionHelper::get('custom_code__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -245,17 +246,17 @@ class Custom_codeModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'custom_code__'.$id);
ComponentbuilderHelper::set('custom_code__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'custom_code__'.$id);
SessionHelper::set('custom_code__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -369,6 +370,19 @@ class Custom_codeModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -604,7 +618,7 @@ class Custom_codeModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}
@ -831,9 +845,9 @@ class Custom_codeModel extends AdminModel
}
// Only for strings
if (UtilitiesStringHelper::check($this->table->component) && !is_numeric($this->table->component))
if (UtilitiesStringHelper::check($this->table->system_name) && !is_numeric($this->table->system_name))
{
$this->table->component = $this->generateUnique('component',$this->table->component);
$this->table->system_name = $this->generateUnique('system_name',$this->table->system_name);
}
// insert all set values

View File

@ -86,7 +86,6 @@ class Custom_codesModel extends ListModel
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'g.system_name','component',
'a.target','target',
'a.type','type',
'a.comment_type','comment_type',
@ -146,13 +145,6 @@ class Custom_codesModel extends ListModel
$search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$component = $this->getUserStateFromRequest($this->context . '.filter.component', 'filter_component');
if ($formSubmited)
{
$component = $app->input->post->get('component');
$this->setState('filter.component', $component);
}
$target = $this->getUserStateFromRequest($this->context . '.filter.target', 'filter_target');
if ($formSubmited)
{
@ -224,8 +216,8 @@ class Custom_codesModel extends ListModel
continue;
}
// [1641]=> Target (code action)
$item->target_code = $item->target;
// making sure we have the component details
}
}
@ -235,14 +227,17 @@ class Custom_codesModel extends ListModel
{
if ($item->target == 2)
{
$item->component_system_name = $item->system_name;
$item->path = '[CUSTO'.'MCODE='.$item->id.']'; // so it is not detected
$item->path = '[CUSTO' . 'MCODE='.$item->id.']'; // so it is not detected
if (StringHelper::check($item->function_name))
{
$item->path = '[CUSTO'.'MCODE='.$item->function_name.']'; // so it is not detected
$item->path = '[CUSTO' . 'MCODE='.$item->function_name.']'; // so it is not detected
}
$item->type = 2;
}
elseif ($item->target == 1)
{
$item->system_name = $item->component_system_name;
}
}
}
@ -335,8 +330,8 @@ class Custom_codesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_custom_code', 'a'));
// From the componentbuilder_joomla_component table.
$query->select($db->quoteName('g.system_name','component_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.component') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['component_system_name','component_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_component', 'g') . ' ON (' . $db->quoteName('a.component') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');
@ -382,27 +377,10 @@ class Custom_codesModel extends ListModel
else
{
$search = $db->quote('%' . $db->escape($search) . '%');
$query->where('(a.component LIKE '.$search.' OR g.system_name LIKE '.$search.' OR a.path LIKE '.$search.' OR a.comment_type LIKE '.$search.' OR a.joomla_version LIKE '.$search.' OR a.function_name LIKE '.$search.' OR a.system_name LIKE '.$search.')');
$query->where('(a.system_name LIKE '.$search.' OR a.path LIKE '.$search.' OR a.comment_type LIKE '.$search.' OR a.joomla_version LIKE '.$search.' OR a.function_name LIKE '.$search.' OR a.component LIKE '.$search.')');
}
}
// Filter by Component.
$_component = $this->getState('filter.component');
if (is_numeric($_component))
{
if (is_float($_component))
{
$query->where('a.component = ' . (float) $_component);
}
else
{
$query->where('a.component = ' . (int) $_component);
}
}
elseif (StringHelper::check($_component))
{
$query->where('a.component = ' . $db->quote($db->escape($_component)));
}
// Filter by Target.
$_target = $this->getState('filter.target');
if (is_numeric($_target))
@ -495,7 +473,6 @@ class Custom_codesModel extends ListModel
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' . $this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.component');
$id .= ':' . $this->getState('filter.target');
$id .= ':' . $this->getState('filter.type');
$id .= ':' . $this->getState('filter.comment_type');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -207,7 +208,7 @@ class Dynamic_getModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('dynamic_get__'.$id))
if (($vdm = SessionHelper::get('dynamic_get__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -215,17 +216,17 @@ class Dynamic_getModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'dynamic_get__'.$id);
ComponentbuilderHelper::set('dynamic_get__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'dynamic_get__'.$id);
SessionHelper::set('dynamic_get__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -381,7 +382,7 @@ class Dynamic_getModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('dynamic_get__'.$id))
if (($vdm = SessionHelper::get('dynamic_get__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -389,54 +390,18 @@ class Dynamic_getModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'dynamic_get__'.$id);
ComponentbuilderHelper::set('dynamic_get__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'dynamic_get__'.$id);
SessionHelper::set('dynamic_get__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'join_view_table' => 'view_table',
'join_db_table' => 'db_table',
'filter' => 'filter_type',
'where' => 'table_key',
'order' => 'table_key',
'global' => 'name'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_dynamic_get', $objectUpdate, 'id');
}
}
@ -547,6 +512,19 @@ class Dynamic_getModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -795,7 +773,7 @@ class Dynamic_getModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -364,7 +364,7 @@ class Dynamic_getsModel extends ListModel
}
// Add the list ordering clause.
$orderCol = $this->getState('list.ordering', 'a.id');
$orderCol = $this->getState('list.ordering', '');
$orderDirn = $this->getState('list.direction', 'desc');
if ($orderCol != '')
{

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -200,7 +201,7 @@ class FieldModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('field__'.$id))
if (($vdm = SessionHelper::get('field__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -208,17 +209,17 @@ class FieldModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'field__'.$id);
ComponentbuilderHelper::set('field__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'field__'.$id);
SessionHelper::set('field__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -318,7 +319,7 @@ class FieldModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('field__'.$id))
if (($vdm = SessionHelper::get('field__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -326,17 +327,17 @@ class FieldModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'field__'.$id);
ComponentbuilderHelper::set('field__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'field__'.$id);
SessionHelper::set('field__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -448,6 +449,19 @@ class FieldModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -690,7 +704,7 @@ class FieldModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}
@ -1144,7 +1158,7 @@ class FieldModel extends AdminModel
// get the extra properties
$extraproperties = $input->get('extraproperties', null, 'ARRAY');
// get the type php property
$typephp = array();
$typephp = [];
foreach (ComponentbuilderHelper::$phpFieldArray as $x)
{
$typephp[$x] = $input->get('property_type_php' . $x, null, 'RAW');
@ -1153,7 +1167,7 @@ class FieldModel extends AdminModel
if (UtilitiesArrayHelper::check($properties))
{
// set the bucket
$bucket = array();
$bucket = [];
foreach($properties as $property)
{
// make sure we have the correct values

View File

@ -429,55 +429,51 @@ class FieldsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_field', 'a'));
$query->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('c.id') . ')');
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
$field_guids = [];
$get_ids = true;
if ($get_ids && $filter_extension !== null && !empty($filter_extension))
{
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
$field_ids = array();
$get_ids = true;
if ($get_ids && $filter_extension !== null && !empty($filter_extension))
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($guids = JCBFilterHelper::linked((string) $type_extension[1], (string) $type_extension[0])) !== null)
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::linked((int) $type_extension[1], (string) $type_extension[0])) !== null)
{
$field_ids = $ids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
$field_guids = $guids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
}
// Filtering "admin_view"
$filter_admin_view = $this->state->get("filter.admin_view");
if ($get_ids && $filter_admin_view !== null && !empty($filter_admin_view))
// Filtering "admin_view"
$filter_admin_view = $this->state->get("filter.admin_view");
if ($get_ids && $filter_admin_view !== null && !empty($filter_admin_view))
{
if (($guids = JCBFilterHelper::linked((string) $filter_admin_view, 'admin_view')) !== null)
{
if (($ids = JCBFilterHelper::linked((int) $filter_admin_view, 'admin_view')) !== null)
{
// view will return less fields, so we ignore the component
$field_ids = $ids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
// view will return less fields, so we ignore the component
$field_guids = $guids;
}
// now check if we have IDs
if ($get_ids && UtilitiesArrayHelper::check($field_ids))
else
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $field_ids) . ')');
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
}
// now check if we have GUIDs
if ($get_ids && UtilitiesArrayHelper::check($field_guids))
{
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $field_guids) . '")');
}
// From the componentbuilder_fieldtype table.
$query->select($db->quoteName('g.name','fieldtype_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 'g') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['fieldtype_name','fieldtype_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 'g') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -174,7 +175,7 @@ class FieldtypeModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('fieldtype__'.$id))
if (($vdm = SessionHelper::get('fieldtype__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -182,17 +183,17 @@ class FieldtypeModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'fieldtype__'.$id);
ComponentbuilderHelper::set('fieldtype__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'fieldtype__'.$id);
SessionHelper::set('fieldtype__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -246,7 +247,7 @@ class FieldtypeModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('fieldtype__'.$id))
if (($vdm = SessionHelper::get('fieldtype__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -254,17 +255,17 @@ class FieldtypeModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'fieldtype__'.$id);
ComponentbuilderHelper::set('fieldtype__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'fieldtype__'.$id);
SessionHelper::set('fieldtype__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
// check what type of properties array we have here (should be subform... but just incase)
@ -287,7 +288,7 @@ class FieldtypeModel extends AdminModel
$this->db->updateObject('#__componentbuilder_fieldtype', $objectUpdate, 'id');
}
}
$this->fieldtypevvvv = $item->id;
$this->fieldtypevvvv = $item->guid;
return $item;
}
@ -297,7 +298,7 @@ class FieldtypeModel extends AdminModel
*
* @return mixed An array of data items on success, false on failure.
*/
public function getVxsfields()
public function getVxlfields()
{
// Get the user object.
$user = Factory::getApplication()->getIdentity();
@ -313,55 +314,51 @@ class FieldtypeModel extends AdminModel
$query->from($db->quoteName('#__componentbuilder_field', 'a'));
$query->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('c.id') . ')');
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
$field_guids = [];
$get_ids = true;
if ($get_ids && $filter_extension !== null && !empty($filter_extension))
{
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
$field_ids = array();
$get_ids = true;
if ($get_ids && $filter_extension !== null && !empty($filter_extension))
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($guids = JCBFilterHelper::linked((string) $type_extension[1], (string) $type_extension[0])) !== null)
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::linked((int) $type_extension[1], (string) $type_extension[0])) !== null)
{
$field_ids = $ids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
$field_guids = $guids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
}
// Filtering "admin_view"
$filter_admin_view = $this->state->get("filter.admin_view");
if ($get_ids && $filter_admin_view !== null && !empty($filter_admin_view))
// Filtering "admin_view"
$filter_admin_view = $this->state->get("filter.admin_view");
if ($get_ids && $filter_admin_view !== null && !empty($filter_admin_view))
{
if (($guids = JCBFilterHelper::linked((string) $filter_admin_view, 'admin_view')) !== null)
{
if (($ids = JCBFilterHelper::linked((int) $filter_admin_view, 'admin_view')) !== null)
{
// view will return less fields, so we ignore the component
$field_ids = $ids;
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
// view will return less fields, so we ignore the component
$field_guids = $guids;
}
// now check if we have IDs
if ($get_ids && UtilitiesArrayHelper::check($field_ids))
else
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $field_ids) . ')');
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
$get_ids = false;
}
}
// now check if we have GUIDs
if ($get_ids && UtilitiesArrayHelper::check($field_guids))
{
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $field_guids) . '")');
}
// From the componentbuilder_fieldtype table.
$query->select($db->quoteName('g.name','fieldtype_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 'g') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['fieldtype_name','fieldtype_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_fieldtype', 'g') . ' ON (' . $db->quoteName('a.fieldtype') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by fieldtypevvvv global.
$fieldtypevvvv = $this->fieldtypevvvv;
@ -439,13 +436,13 @@ class FieldtypeModel extends AdminModel
foreach ($items as $nr => &$item)
{
// convert datatype
$item->datatype = $this->selectionTranslationVxsfields($item->datatype, 'datatype');
$item->datatype = $this->selectionTranslationVxlfields($item->datatype, 'datatype');
// convert indexes
$item->indexes = $this->selectionTranslationVxsfields($item->indexes, 'indexes');
$item->indexes = $this->selectionTranslationVxlfields($item->indexes, 'indexes');
// convert null_switch
$item->null_switch = $this->selectionTranslationVxsfields($item->null_switch, 'null_switch');
$item->null_switch = $this->selectionTranslationVxlfields($item->null_switch, 'null_switch');
// convert store
$item->store = $this->selectionTranslationVxsfields($item->store, 'store');
$item->store = $this->selectionTranslationVxlfields($item->store, 'store');
}
}
@ -459,7 +456,7 @@ class FieldtypeModel extends AdminModel
*
* @return string The translatable string.
*/
public function selectionTranslationVxsfields($value,$name)
public function selectionTranslationVxlfields($value,$name)
{
// Array of datatype language strings
if ($name === 'datatype')
@ -642,6 +639,19 @@ class FieldtypeModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the properties (sub form) layout
@ -870,7 +880,7 @@ class FieldtypeModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -112,9 +112,12 @@ class Get_snippetsModel extends ListModel
];
/**
* A custom property for UIKit components. (not used unless you load v2)
* A custom property for UI Kit components.
*
* @var mixed Property for storing UI Kit component-related data or objects.
* @since 3.2.0
*/
protected $uikitComp;
protected $uikitComp = [];
/**
* Constructor

View File

@ -272,6 +272,19 @@ class Help_documentModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -490,7 +503,7 @@ class Help_documentModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -31,6 +31,7 @@ use VDM\Joomla\Utilities\GuidHelper;
use Joomla\CMS\Component\ComponentHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use Joomla\Filesystem\File as FilesystemFile;
// No direct access to this file
\defined('_JEXEC') or die;
@ -205,7 +206,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
// set auto loader
ComponentbuilderHelper::autoLoader('smart');
// get install folder
$dir = JFile::stripExt($package['dir']);
$dir = FilesystemFile::stripExt($package['dir']);
// remove unziped folder
ComponentbuilderHelper::removeFolder($dir);
}
@ -311,7 +312,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
// set auto loader
ComponentbuilderHelper::autoLoader('smart');
// extract the package
if (JFile::exists($package['dir']))
if (is_file($package['dir']))
{
// does this package pass a checksum
$checksum = false;
@ -359,12 +360,12 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
// get the zip adapter
$zip = JArchive::getAdapter('zip');
// set the directory name
$this->dir = JFile::stripExt($package['dir']);
$this->dir = FilesystemFile::stripExt($package['dir']);
// unzip the package
$zip->extract($package['dir'], $this->dir);
// check for database file
$infoFile = $this->dir . '/info.vdm';
if (JFile::exists($infoFile))
if (is_file($infoFile))
{
// load the data
if ($info = FileHelper::getContent($infoFile))
@ -635,13 +636,13 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
// set auto loader
ComponentbuilderHelper::autoLoader('smart');
// extract the package
if (JFile::exists($package['dir']))
if (is_file($package['dir']))
{
// set the directory name
$this->dir = JFile::stripExt($package['dir']);
$this->dir = FilesystemFile::stripExt($package['dir']);
// check for database file
$dbFile = $this->dir . '/db.vdm';
if (!JFile::exists($dbFile))
if (!is_file($dbFile))
{
// get the zip adapter
$zip = JArchive::getAdapter('zip');
@ -649,7 +650,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
$zip->extract($package['dir'], $this->dir);
}
// check again
if (JFile::exists($dbFile))
if (is_file($dbFile))
{
// load the data
if ($data = FileHelper::getContent($dbFile))
@ -942,10 +943,10 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
$success = true;
// check if we have custom files
$customDir = str_replace('//', '/', $this->dir . '/custom');
if (JFolder::exists($customDir))
if (is_dir($customDir))
{
// great we have some custom stuff lets move it
if (!JFolder::copy($customDir, $customPath,'',true))
if (!Folder::copy($customDir, $customPath,'',true))
{
$this->app->enqueueMessage(Text::_('COM_COMPONENTBUILDER_BCUSTOM_FILESB_NOT_MOVED_TO_CORRECT_LOCATION'), 'error');
$success = false;
@ -958,10 +959,10 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
}
// check if we have images
$imageDir = str_replace('//', '/', $this->dir . '/images');
if (JFolder::exists($imageDir))
if (is_dir($imageDir))
{
// great we have some images lets move them
if (!JFolder::copy($imageDir, $imagesPath,'',true))
if (!Folder::copy($imageDir, $imagesPath,'',true))
{
$this->app->enqueueMessage(Text::_('COM_COMPONENTBUILDER_BIMAGESB_NOT_MOVED_TO_CORRECT_LOCATION'), 'error');
$success = false;
@ -974,10 +975,10 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
}
// now move the dynamic files if found
$dynamicDir = str_replace('//', '/', $this->dir . '/dynamic');
if (JFolder::exists($dynamicDir))
if (is_dir($dynamicDir))
{
// get a list of folders
$folders = JFolder::folders($dynamicDir);
$folders = Folder::folders($dynamicDir);
// check if we have files
if(UtilitiesArrayHelper::check($folders))
{
@ -985,7 +986,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
{
$destination = $this->setDynamicPath($folder);
$fullPath = str_replace('//', '/', $dynamicDir . '/' . $folder);
if (!JFolder::exists($fullPath) || !JFolder::copy($fullPath, $destination,'',true))
if (!is_dir($fullPath) || !Folder::copy($fullPath, $destination,'',true))
{
$this->app->enqueueMessage(Text::sprintf('COM_COMPONENTBUILDER_FOLDER_BSB_WAS_NOT_MOVED_TO_BSB', $folder, $destination), 'error');
$success = false;
@ -998,7 +999,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
}
}
// get a list of files
$files = JFolder::files($dynamicDir);
$files = Folder::files($dynamicDir);
// check if we have files
if(UtilitiesArrayHelper::check($files))
{
@ -1006,7 +1007,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
{
$destination = $this->setDynamicPath($file);
$fullPath = str_replace('//', '/', $dynamicDir . '/' . $file);
if (!JFile::exists($fullPath) || !JFile::copy($fullPath, $destination))
if (!is_file($fullPath) || !FilesystemFile::copy($fullPath, $destination))
{
$this->app->enqueueMessage(Text::sprintf('COM_COMPONENTBUILDER_FILE_BSB_WAS_NOT_MOVED_TO_BSB', $file, $destination), 'error');
$success = false;
@ -1041,7 +1042,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
{
$subPath = str_replace('//', '/', $this->dir . '/' . $folder);
// go to the package sub folder if found
if (JFolder::exists($subPath))
if (is_dir($subPath))
{
$this->unLockFile($subPath);
}
@ -1061,7 +1062,7 @@ class Import_joomla_componentsimportModel extends BaseDatabaseModel
// we are changing the working directory to the tmp path (important)
chdir($tmpPath);
// get a list of files in the current directory tree (all)
$files = JFolder::files('.', '.', true, true);
$files = Folder::files('.', '.', true, true);
// read in the file content
foreach ($files as $file)
{

View File

@ -29,11 +29,13 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\FOF\Encrypt\AES;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\String\ComponentCodeNameHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Componentbuilder\Extrusion\Helper\Extrusion;
@ -331,7 +333,7 @@ class Joomla_componentModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_component__'.$id))
if (($vdm = SessionHelper::get('joomla_component__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -339,42 +341,23 @@ class Joomla_componentModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_component__'.$id);
ComponentbuilderHelper::set('joomla_component__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_component__'.$id);
SessionHelper::set('joomla_component__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
return $this->vastDevMod;
}
/**
* The assistant form fields
*
* @var array
*/
public $assistantForm = array(
'left' => array(
'name',
'short_description',
'guid',
'copyright'
),
'right' => array(
'name_code',
'license',
'bom',
'image'
)
);
/**
@ -560,7 +543,7 @@ class Joomla_componentModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_component__'.$id))
if (($vdm = SessionHelper::get('joomla_component__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -568,49 +551,18 @@ class Joomla_componentModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_component__'.$id);
ComponentbuilderHelper::set('joomla_component__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_component__'.$id);
SessionHelper::set('joomla_component__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
// update the fields
$objectUpdate = new \stdClass();
$objectUpdate->id = (int) $item->id;
// repeatable values to check
$arrayChecker = array(
'addcontributors' => 'name'
);
foreach ($arrayChecker as $_value => $checker)
{
// check what type of array we have here (should be subform... but just in case)
// This could happen due to huge data sets
if (isset($item->{$_value}) && isset($item->{$_value}[$checker]))
{
$bucket = array();
foreach($item->{$_value} as $option => $values)
{
foreach($values as $nr => $value)
{
$bucket[$_value.$nr][$option] = $value;
}
}
$item->{$_value} = $bucket;
$objectUpdate->{$_value} = json_encode($bucket, JSON_FORCE_OBJECT);
}
}
// be sure to update the table if we found repeatable fields that are still not converted
if (count((array) $objectUpdate) > 1)
{
$this->_db->updateObject('#__componentbuilder_joomla_component', $objectUpdate, 'id');
}
}
@ -723,6 +675,19 @@ class Joomla_componentModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load these values if no id is found
if (0 == $id)
@ -976,7 +941,7 @@ class Joomla_componentModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}
@ -1010,31 +975,54 @@ class Joomla_componentModel extends AdminModel
return false;
}
// we must also delete the linked tables found
if (UtilitiesArrayHelper::check($pks))
// linked tables to update
$_tables_array = [
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component',
'component_placeholders' => 'joomla_component',
'custom_code' => 'component',
'component_router' => 'joomla_component'
];
// we must also update all linked tables
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component',
'component_placeholders' => 'joomla_component',
'custom_code' => 'component',
'component_router' => 'joomla_component'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_delete_table => $_field_name)
{
// get the joomla_component guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_component'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_delete_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
// delete items
$_Model = ComponentbuilderHelper::getModel($_delete_table);
// change publish state to trash (in-case the state was not changed in sync with the parent)
$_Model->publish($_pks, -2);
// delete the items
$_Model->delete($_pks);
}
}
@ -1059,30 +1047,50 @@ class Joomla_componentModel extends AdminModel
return false;
}
// linked tables to update
$_tables_array = [
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component',
'component_placeholders' => 'joomla_component',
'custom_code' => 'component',
'component_router' => 'joomla_component'
];
// we must also update all linked tables
if (UtilitiesArrayHelper::check($pks))
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'component_admin_views' => 'joomla_component',
'component_site_views' => 'joomla_component',
'component_custom_admin_views' => 'joomla_component',
'component_updates' => 'joomla_component',
'component_mysql_tweaks' => 'joomla_component',
'component_custom_admin_menus' => 'joomla_component',
'component_config' => 'joomla_component',
'component_dashboard' => 'joomla_component',
'component_files_folders' => 'joomla_component',
'component_placeholders' => 'joomla_component',
'custom_code' => 'component',
'component_router' => 'joomla_component'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_update_table => $_field_name)
{
// get the admin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_component'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
$_Model = ComponentbuilderHelper::getModel($_update_table);
// change publish state
$_Model->publish($_pks, $value);
}

File diff suppressed because it is too large Load Diff

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
use VDM\Joomla\Utilities\GetHelper;
@ -237,7 +239,7 @@ class Joomla_moduleModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_module__'.$id))
if (($vdm = SessionHelper::get('joomla_module__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -245,17 +247,17 @@ class Joomla_moduleModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_module__'.$id);
ComponentbuilderHelper::set('joomla_module__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_module__'.$id);
SessionHelper::set('joomla_module__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -409,7 +411,7 @@ class Joomla_moduleModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_module__'.$id))
if (($vdm = SessionHelper::get('joomla_module__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -417,17 +419,17 @@ class Joomla_moduleModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_module__'.$id);
ComponentbuilderHelper::set('joomla_module__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_module__'.$id);
SessionHelper::set('joomla_module__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -541,6 +543,19 @@ class Joomla_moduleModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -781,27 +796,48 @@ class Joomla_moduleModel extends AdminModel
return false;
}
// we must also delete the linked tables found
if (UtilitiesArrayHelper::check($pks))
// linked tables to update
$_tables_array = [
'joomla_module_updates' => 'joomla_module',
'joomla_module_files_folders_urls' => 'joomla_module'
];
// we must also update all linked tables
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
// linked tables to update
$_tablesArray = array(
'joomla_module_updates' => 'joomla_module',
'joomla_module_files_folders_urls' => 'joomla_module'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_delete_table => $_field_name)
{
// get the joomla_module guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_module'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_delete_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
// change publish state
$_Model = ComponentbuilderHelper::getModel($_delete_table);
// change publish state to trash (in-case the state was not changed in sync with the parent)
$_Model->publish($_pks, -2);
// delete the items
$_Model->delete($_pks);
}
}
}
}
return true;
}
@ -822,27 +858,45 @@ class Joomla_moduleModel extends AdminModel
return false;
}
// linked tables to update
$_tables_array = [
'joomla_module_updates' => 'joomla_module',
'joomla_module_files_folders_urls' => 'joomla_module'
];
// we must also update all linked tables
if (UtilitiesArrayHelper::check($pks))
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
// linked tables to update
$_tablesArray = array(
'joomla_module_updates' => 'joomla_module',
'joomla_module_files_folders_urls' => 'joomla_module'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_update_table => $_field_name)
{
// get the admin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_module'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
$_Model = ComponentbuilderHelper::getModel($_update_table);
// change publish state
$_Model->publish($_pks, $value);
}
}
}
}
return true;
}

View File

@ -306,6 +306,19 @@ class Joomla_module_files_folders_urlsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -260,6 +260,19 @@ class Joomla_module_updatesModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the version_update (sub form) layout

View File

@ -204,8 +204,8 @@ class Joomla_modules_files_folders_urlsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_module_files_folders_urls', 'a'));
// From the componentbuilder_joomla_module table.
$query->select($db->quoteName('g.system_name','joomla_module_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_module', 'g') . ' ON (' . $db->quoteName('a.joomla_module') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_module_system_name','joomla_module_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_module', 'g') . ' ON (' . $db->quoteName('a.joomla_module') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Joomla_modules_updatesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_module_updates', 'a'));
// From the componentbuilder_joomla_module table.
$query->select($db->quoteName('g.system_name','joomla_module_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_module', 'g') . ' ON (' . $db->quoteName('a.joomla_module') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_module_system_name','joomla_module_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_module', 'g') . ' ON (' . $db->quoteName('a.joomla_module') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
use VDM\Joomla\Utilities\GetHelper;
@ -214,7 +216,7 @@ class Joomla_pluginModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_plugin__'.$id))
if (($vdm = SessionHelper::get('joomla_plugin__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -222,17 +224,17 @@ class Joomla_pluginModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_plugin__'.$id);
ComponentbuilderHelper::set('joomla_plugin__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_plugin__'.$id);
SessionHelper::set('joomla_plugin__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -374,7 +376,7 @@ class Joomla_pluginModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('joomla_plugin__'.$id))
if (($vdm = SessionHelper::get('joomla_plugin__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -382,17 +384,17 @@ class Joomla_pluginModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'joomla_plugin__'.$id);
ComponentbuilderHelper::set('joomla_plugin__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'joomla_plugin__'.$id);
SessionHelper::set('joomla_plugin__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -506,6 +508,19 @@ class Joomla_pluginModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -746,27 +761,48 @@ class Joomla_pluginModel extends AdminModel
return false;
}
// we must also delete the linked tables found
if (UtilitiesArrayHelper::check($pks))
// linked tables to update
$_tables_array = [
'joomla_plugin_updates' => 'joomla_plugin',
'joomla_plugin_files_folders_urls' => 'joomla_plugin'
];
// we must also update all linked tables
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
// linked tables to update
$_tablesArray = array(
'joomla_plugin_updates' => 'joomla_plugin',
'joomla_plugin_files_folders_urls' => 'joomla_plugin'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_delete_table => $_field_name)
{
// get the joomla_plugin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_plugin'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_delete_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
// change publish state
$_Model = ComponentbuilderHelper::getModel($_delete_table);
// change publish state to trash (in-case the state was not changed in sync with the parent)
$_Model->publish($_pks, -2);
// delete the items
$_Model->delete($_pks);
}
}
}
}
return true;
}
@ -787,27 +823,45 @@ class Joomla_pluginModel extends AdminModel
return false;
}
// linked tables to update
$_tables_array = [
'joomla_plugin_updates' => 'joomla_plugin',
'joomla_plugin_files_folders_urls' => 'joomla_plugin'
];
// we must also update all linked tables
if (UtilitiesArrayHelper::check($pks))
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
// linked tables to update
$_tablesArray = array(
'joomla_plugin_updates' => 'joomla_plugin',
'joomla_plugin_files_folders_urls' => 'joomla_plugin'
);
foreach($_tablesArray as $_updateTable => $_key)
foreach($_tables_array as $_update_table => $_field_name)
{
// get the admin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'joomla_plugin'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, $_key, 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
$_Model = ComponentbuilderHelper::getModel($_update_table);
// change publish state
$_Model->publish($_pks, $value);
}
}
}
}
return true;
}

View File

@ -306,6 +306,19 @@ class Joomla_plugin_files_folders_urlsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -29,9 +29,11 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -251,7 +253,27 @@ class Joomla_plugin_groupModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)
if (0 == $id || !($val = $form->getValue('guid')))
{
$form->setValue('guid', null, GuidHelper::get());
}
return $form;
}
@ -448,7 +470,7 @@ class Joomla_plugin_groupModel extends AdminModel
*/
protected function getUniqueFields()
{
return false;
return array('guid');
}
/**
@ -857,7 +879,21 @@ class Joomla_plugin_groupModel extends AdminModel
}
// make sure the name is safe to be used as a function name
$data['name'] = ClassfunctionHelper::safe($data['name']);
$data['name'] = ClassfunctionHelper::safe($data['name']);
// Set the GUID if empty or not valid
if (empty($data['guid']) && $data['id'] > 0)
{
// get the existing one
$data['guid'] = (string) GetHelper::var('joomla_plugin_group', $data['id'], 'id', 'guid');
}
// Set the GUID if empty or not valid
while (!GuidHelper::valid($data['guid'], "joomla_plugin_group", $data['id']))
{
// must always be set
$data['guid'] = (string) GuidHelper::get();
}
// Set the Params Items to data
if (isset($data['params']) && is_array($data['params']))

View File

@ -198,8 +198,8 @@ class Joomla_plugin_groupsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_plugin_group', 'a'));
// From the componentbuilder_class_extends table.
$query->select($db->quoteName('g.name','class_extends_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_class_extends', 'g') . ' ON (' . $db->quoteName('a.class_extends') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['class_extends_name','class_extends_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_class_extends', 'g') . ' ON (' . $db->quoteName('a.class_extends') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -260,6 +260,19 @@ class Joomla_plugin_updatesModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the version_update (sub form) layout

View File

@ -398,12 +398,12 @@ class Joomla_pluginsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_plugin', 'a'));
// From the componentbuilder_class_extends table.
$query->select($db->quoteName('g.name','class_extends_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_class_extends', 'g') . ' ON (' . $db->quoteName('a.class_extends') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['class_extends_name','class_extends_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_class_extends', 'g') . ' ON (' . $db->quoteName('a.class_extends') . ' = ' . $db->quoteName('g.guid') . ')');
// From the componentbuilder_joomla_plugin_group table.
$query->select($db->quoteName('h.name','joomla_plugin_group_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'h') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('h.id') . ')');
$query->select($db->quoteName(['h.name','h.id'],['joomla_plugin_group_name','joomla_plugin_group_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin_group', 'h') . ' ON (' . $db->quoteName('a.joomla_plugin_group') . ' = ' . $db->quoteName('h.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Joomla_plugins_files_folders_urlsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_plugin_files_folders_urls', 'a'));
// From the componentbuilder_joomla_plugin table.
$query->select($db->quoteName('g.system_name','joomla_plugin_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_plugin_system_name','joomla_plugin_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Joomla_plugins_updatesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_joomla_plugin_updates', 'a'));
// From the componentbuilder_joomla_plugin table.
$query->select($db->quoteName('g.system_name','joomla_plugin_system_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.system_name','g.id'],['joomla_plugin_system_name','joomla_plugin_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_joomla_plugin', 'g') . ' ON (' . $db->quoteName('a.joomla_plugin') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -263,6 +263,19 @@ class Joomla_powerModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)

View File

@ -250,6 +250,19 @@ class LanguageModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -147,7 +148,7 @@ class Language_translationModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('language_translation__'.$id))
if (($vdm = SessionHelper::get('language_translation__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -155,17 +156,17 @@ class Language_translationModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'language_translation__'.$id);
ComponentbuilderHelper::set('language_translation__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'language_translation__'.$id);
SessionHelper::set('language_translation__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -237,7 +238,7 @@ class Language_translationModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('language_translation__'.$id))
if (($vdm = SessionHelper::get('language_translation__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -245,17 +246,17 @@ class Language_translationModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'language_translation__'.$id);
ComponentbuilderHelper::set('language_translation__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'language_translation__'.$id);
SessionHelper::set('language_translation__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -367,6 +368,19 @@ class Language_translationModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -169,7 +171,7 @@ class LayoutModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('layout__'.$id))
if (($vdm = SessionHelper::get('layout__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -177,17 +179,17 @@ class LayoutModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'layout__'.$id);
ComponentbuilderHelper::set('layout__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'layout__'.$id);
SessionHelper::set('layout__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -253,7 +255,7 @@ class LayoutModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('layout__'.$id))
if (($vdm = SessionHelper::get('layout__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -261,17 +263,17 @@ class LayoutModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'layout__'.$id);
ComponentbuilderHelper::set('layout__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'layout__'.$id);
SessionHelper::set('layout__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -383,6 +385,19 @@ class LayoutModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -400,7 +415,14 @@ class LayoutModel extends AdminModel
$form->setFieldAttribute($name, 'editor', $global_editor . '|none');
}
}
// Only load the GUID if new item (or empty)
if (0 == $id || !($val = $form->getValue('guid')))
{
$form->setValue('guid', null, GuidHelper::get());
}
return $form;
}
@ -598,7 +620,7 @@ class LayoutModel extends AdminModel
*/
protected function getUniqueFields()
{
return false;
return array('guid');
}
/**
@ -1002,7 +1024,21 @@ class LayoutModel extends AdminModel
}
// always reset the snippets
$data['snippet'] = 0;
$data['snippet'] = 0;
// Set the GUID if empty or not valid
if (empty($data['guid']) && $data['id'] > 0)
{
// get the existing one
$data['guid'] = (string) GetHelper::var('layout', $data['id'], 'id', 'guid');
}
// Set the GUID if empty or not valid
while (!GuidHelper::valid($data['guid'], "layout", $data['id']))
{
// must always be set
$data['guid'] = (string) GuidHelper::get();
}
// Set the libraries items to data.
if (isset($data['libraries']) && is_array($data['libraries']))

View File

@ -270,8 +270,8 @@ class LayoutsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_layout', 'a'));
// From the componentbuilder_dynamic_get table.
$query->select($db->quoteName('g.name','dynamic_get_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.dynamic_get') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['dynamic_get_name','dynamic_get_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.dynamic_get') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Libraries_configModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_library_config', 'a'));
// From the componentbuilder_library table.
$query->select($db->quoteName('g.name','library_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'g') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['library_name','library_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'g') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -204,8 +204,8 @@ class Libraries_files_folders_urlsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_library_files_folders_urls', 'a'));
// From the componentbuilder_library table.
$query->select($db->quoteName('g.name','library_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'g') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['library_name','library_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'g') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
@ -185,7 +187,7 @@ class LibraryModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('library__'.$id))
if (($vdm = SessionHelper::get('library__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -193,17 +195,17 @@ class LibraryModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'library__'.$id);
ComponentbuilderHelper::set('library__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'library__'.$id);
SessionHelper::set('library__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -271,7 +273,7 @@ class LibraryModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('library__'.$id))
if (($vdm = SessionHelper::get('library__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -279,17 +281,17 @@ class LibraryModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'library__'.$id);
ComponentbuilderHelper::set('library__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'library__'.$id);
SessionHelper::set('library__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -401,6 +403,19 @@ class LibraryModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)
@ -626,7 +641,7 @@ class LibraryModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}
@ -678,22 +693,45 @@ class LibraryModel extends AdminModel
return false;
}
// we must also delete the linked tables found
if (UtilitiesArrayHelper::check($pks))
// linked tables to update
$_tablesArray = [
'snippet' => 'library',
'library_config' => 'library',
'library_files_folders_urls' => 'library'
];
// we must also update all linked tables
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'snippet',
'library_config',
'library_files_folders_urls'
);
foreach($_tablesArray as $_updateTable)
foreach($_tables_array as $_delete_table => $_field_name)
{
// get the library guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'library'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, 'library', 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_delete_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
// change publish state
$_Model = ComponentbuilderHelper::getModel($_delete_table);
// change publish state to trash (in-case the state was not changed in sync with the parent)
$_Model->publish($_pks, -2);
// delete the items
$_Model->delete($_pks);
}
}
@ -718,21 +756,41 @@ class LibraryModel extends AdminModel
return false;
}
// linked tables to update
$_tablesArray = [
'snippet' => 'library',
'library_config' => 'library',
'library_files_folders_urls' => 'library'
];
// we must also update all linked tables
if (UtilitiesArrayHelper::check($pks))
if (!empty($_tables_array) && UtilitiesArrayHelper::check($pks))
{
$_tablesArray = array(
'snippet',
'library_config',
'library_files_folders_urls'
);
foreach($_tablesArray as $_updateTable)
foreach($_tables_array as $_update_table => $_field_name)
{
// get the admin guid's
$_guids = DataFactory::_('Load')->values(
['a.guid' => 'guid'], // select
['a' => 'library'], // tables
['a.id' =>
['value' => $pks, 'operator' => 'IN']
] // where
);
// get the linked IDs
if ($_pks = ComponentbuilderHelper::getVars($_updateTable, $pks, 'library', 'id'))
$_pks = DataFactory::_('Load')->values(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name =>
['value' => $_guids, 'operator' => 'IN']
] // where
);
if ($_pks !== null)
{
// load the model
$_Model = ComponentbuilderHelper::getModel($_updateTable);
$_Model = ComponentbuilderHelper::getModel($_update_table);
// change publish state
$_Model->publish($_pks, $value);
}

View File

@ -260,6 +260,19 @@ class Library_configModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -306,6 +306,19 @@ class Library_files_folders_urlsModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -149,7 +150,7 @@ class PlaceholderModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('placeholder__'.$id))
if (($vdm = SessionHelper::get('placeholder__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -157,17 +158,17 @@ class PlaceholderModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'placeholder__'.$id);
ComponentbuilderHelper::set('placeholder__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'placeholder__'.$id);
SessionHelper::set('placeholder__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -219,7 +220,7 @@ class PlaceholderModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('placeholder__'.$id))
if (($vdm = SessionHelper::get('placeholder__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -227,17 +228,17 @@ class PlaceholderModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'placeholder__'.$id);
ComponentbuilderHelper::set('placeholder__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'placeholder__'.$id);
SessionHelper::set('placeholder__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -349,6 +350,19 @@ class PlaceholderModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}

View File

@ -30,6 +30,7 @@ use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Componentbuilder\Power\Factory as PowerFactory;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -195,7 +196,7 @@ class PowerModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('power__'.$id))
if (($vdm = SessionHelper::get('power__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -203,17 +204,17 @@ class PowerModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'power__'.$id);
ComponentbuilderHelper::set('power__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'power__'.$id);
SessionHelper::set('power__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -339,7 +340,7 @@ class PowerModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('power__'.$id))
if (($vdm = SessionHelper::get('power__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -347,17 +348,17 @@ class PowerModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'power__'.$id);
ComponentbuilderHelper::set('power__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'power__'.$id);
SessionHelper::set('power__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -471,6 +472,19 @@ class PowerModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -1132,7 +1146,7 @@ class PowerModel extends AdminModel
if (($existing_id = ComponentbuilderHelper::checkExist('power', ['power_version' => $data['power_version'], 'name' => $data['name'], 'namespace' => $data['namespace']])) !== false)
{
// class of that version already exist so we reset the version
\Factory::getApplication()->enqueueMessage(Text::sprintf("COM_COMPONENTBUILDER_POWERS_A_HREFS_TARGET_BLANK_TITLEOPEN_POWERSA_WITH_VERSION_S_ALREADY_EXIST", $existing_id, 'index.php?option=com_componentbuilder&view=powers&task=power.edit&id=' . $existing_id, $data['namespace'] . '\\' . $data['name'], $data['power_version']), 'error');
Factory::getApplication()->enqueueMessage(Text::sprintf("COM_COMPONENTBUILDER_POWERS_A_HREFS_TARGET_BLANK_TITLEOPEN_POWERSA_WITH_VERSION_S_ALREADY_EXIST", $existing_id, 'index.php?option=com_componentbuilder&view=powers&task=power.edit&id=' . $existing_id, $data['namespace'] . '\\' . $data['name'], $data['power_version']), 'error');
$data['power_version'] = $old_version;
}
else

View File

@ -279,6 +279,19 @@ class RepositoryModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)

View File

@ -125,10 +125,10 @@ class SearchModel extends ItemModel
/**
* A custom property for UI Kit components.
*
* @var array|null Property for storing UI Kit component-related data or objects.
* @var mixed Property for storing UI Kit component-related data or objects.
* @since 3.2.0
*/
protected ?array $uikitComp;
protected $uikitComp = [];
/**
* @var object item

View File

@ -329,6 +329,19 @@ class ServerModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}
@ -547,7 +560,7 @@ class ServerModel extends AdminModel
// change to false
$form->setFieldAttribute($requiredField, 'required', 'false');
// also clear the data set
$data[$requiredField] = '';
unset($data[$requiredField]);
}
}
}

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -216,7 +217,7 @@ class Site_viewModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('site_view__'.$id))
if (($vdm = SessionHelper::get('site_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -224,17 +225,17 @@ class Site_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'site_view__'.$id);
ComponentbuilderHelper::set('site_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'site_view__'.$id);
SessionHelper::set('site_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -384,7 +385,7 @@ class Site_viewModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('site_view__'.$id))
if (($vdm = SessionHelper::get('site_view__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -392,17 +393,17 @@ class Site_viewModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'site_view__'.$id);
ComponentbuilderHelper::set('site_view__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'site_view__'.$id);
SessionHelper::set('site_view__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
@ -553,8 +554,24 @@ class Site_viewModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update the ajax_input (sub form) layout
$form->setFieldAttribute('ajax_input', 'layout', ComponentbuilderHelper::getSubformLayout('site_view', 'ajax_input'));
// update all editors to use this components global editor
$global_editor = ComponentHelper::getParams('com_componentbuilder')->get('editor', 'none');
// now get all the editor fields

View File

@ -355,28 +355,24 @@ class Site_viewsModel extends ListModel
// From the componentbuilder_item table
$query->from($db->quoteName('#__componentbuilder_site_view', 'a'));
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
{
// Filtering "joomla components"
$filter_joomla_component = $this->state->get("filter.joomla_component");
if ($filter_joomla_component !== null && !empty($filter_joomla_component))
if (($guids = JCBFilterHelper::linked((string) $filter_joomla_component, 'joomla_component_site_views')) !== null)
{
if (($ids = JCBFilterHelper::linked((int) $filter_joomla_component, 'joomla_component_site_views')) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.guid') . ' IN ("' . implode('","', $guids) . '")');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// From the componentbuilder_dynamic_get table.
$query->select($db->quoteName('g.name','main_get_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.main_get') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['main_get_name','main_get_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.main_get') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -279,6 +279,19 @@ class SnippetModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)

View File

@ -29,8 +29,10 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -250,7 +252,27 @@ class Snippet_typeModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// Only load the GUID if new item (or empty)
if (0 == $id || !($val = $form->getValue('guid')))
{
$form->setValue('guid', null, GuidHelper::get());
}
return $form;
}
@ -448,7 +470,7 @@ class Snippet_typeModel extends AdminModel
*/
protected function getUniqueFields()
{
return false;
return array('guid');
}
/**
@ -856,6 +878,21 @@ class Snippet_typeModel extends AdminModel
$data['metadata'] = (string) $metadata;
}
// Set the GUID if empty or not valid
if (empty($data['guid']) && $data['id'] > 0)
{
// get the existing one
$data['guid'] = (string) GetHelper::var('snippet_type', $data['id'], 'id', 'guid');
}
// Set the GUID if empty or not valid
while (!GuidHelper::valid($data['guid'], "snippet_type", $data['id']))
{
// must always be set
$data['guid'] = (string) GuidHelper::get();
}
// Set the Params Items to data
if (isset($data['params']) && is_array($data['params']))
{

View File

@ -26,6 +26,8 @@ use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Filesystem\Folder;
use Joomla\Filesystem\File;
// No direct access to this file
\defined('_JEXEC') or die;
@ -161,20 +163,20 @@ class SnippetsModel extends ListModel
// get the shared paths
$this->fullPath = rtrim(ComponentbuilderHelper::getFolderPath('path', 'sharepath', Factory::getConfig()->get('tmp_path')), '/') . '/snippets';
// remove old folder with the same name
if (JFolder::exists($this->fullPath))
if (is_dir($this->fullPath))
{
// remove if old folder is found
ComponentbuilderHelper::removeFolder($this->fullPath);
}
// create the full path
JFolder::create($this->fullPath);
Folder::create($this->fullPath);
// set zip path
$this->zipPath = $this->fullPath .'.zip';
// remove old zip files with the same name
if (JFile::exists($this->zipPath))
if (is_file($this->zipPath))
{
// remove file if found
JFile::delete($this->zipPath);
File::delete($this->zipPath);
}
// prep the item
foreach($items as $item)
@ -358,12 +360,12 @@ class SnippetsModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_snippet', 'a'));
// From the componentbuilder_snippet_type table.
$query->select($db->quoteName('g.name','type_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_snippet_type', 'g') . ' ON (' . $db->quoteName('a.type') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['type_name','type_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_snippet_type', 'g') . ' ON (' . $db->quoteName('a.type') . ' = ' . $db->quoteName('g.guid') . ')');
// From the componentbuilder_library table.
$query->select($db->quoteName('h.name','library_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'h') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('h.id') . ')');
$query->select($db->quoteName(['h.name','h.id'],['library_name','library_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_library', 'h') . ' ON (' . $db->quoteName('a.library') . ' = ' . $db->quoteName('h.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,10 +29,12 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\GetHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -169,7 +171,7 @@ class TemplateModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('template__'.$id))
if (($vdm = SessionHelper::get('template__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -177,17 +179,17 @@ class TemplateModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'template__'.$id);
ComponentbuilderHelper::set('template__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'template__'.$id);
SessionHelper::set('template__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -253,7 +255,7 @@ class TemplateModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('template__'.$id))
if (($vdm = SessionHelper::get('template__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -261,17 +263,17 @@ class TemplateModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'template__'.$id);
ComponentbuilderHelper::set('template__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'template__'.$id);
SessionHelper::set('template__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -383,6 +385,19 @@ class TemplateModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
// update all editors to use this components global editor
@ -400,7 +415,14 @@ class TemplateModel extends AdminModel
$form->setFieldAttribute($name, 'editor', $global_editor . '|none');
}
}
// Only load the GUID if new item (or empty)
if (0 == $id || !($val = $form->getValue('guid')))
{
$form->setValue('guid', null, GuidHelper::get());
}
return $form;
}
@ -598,7 +620,7 @@ class TemplateModel extends AdminModel
*/
protected function getUniqueFields()
{
return false;
return array('guid');
}
/**
@ -1002,7 +1024,21 @@ class TemplateModel extends AdminModel
}
// always reset the snippets
$data['snippet'] = 0;
$data['snippet'] = 0;
// Set the GUID if empty or not valid
if (empty($data['guid']) && $data['id'] > 0)
{
// get the existing one
$data['guid'] = (string) GetHelper::var('template', $data['id'], 'id', 'guid');
}
// Set the GUID if empty or not valid
while (!GuidHelper::valid($data['guid'], "template", $data['id']))
{
// must always be set
$data['guid'] = (string) GuidHelper::get();
}
// Set the libraries items to data.
if (isset($data['libraries']) && is_array($data['libraries']))

View File

@ -270,8 +270,8 @@ class TemplatesModel extends ListModel
$query->from($db->quoteName('#__componentbuilder_template', 'a'));
// From the componentbuilder_dynamic_get table.
$query->select($db->quoteName('g.name','dynamic_get_name'));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.dynamic_get') . ' = ' . $db->quoteName('g.id') . ')');
$query->select($db->quoteName(['g.name','g.id'],['dynamic_get_name','dynamic_get_id']));
$query->join('LEFT', $db->quoteName('#__componentbuilder_dynamic_get', 'g') . ' ON (' . $db->quoteName('a.dynamic_get') . ' = ' . $db->quoteName('g.guid') . ')');
// Filter by published state
$published = $this->getState('filter.published');

View File

@ -29,6 +29,7 @@ use Joomla\Utilities\ArrayHelper;
use Joomla\Input\Input;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Helper\TagsHelper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Utilities\StringHelper as UtilitiesStringHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\GuidHelper;
@ -152,7 +153,7 @@ class Validation_ruleModel extends AdminModel
$id = $_id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('validation_rule__'.$id))
if (($vdm = SessionHelper::get('validation_rule__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -160,17 +161,17 @@ class Validation_ruleModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'validation_rule__'.$id);
ComponentbuilderHelper::set('validation_rule__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'validation_rule__'.$id);
SessionHelper::set('validation_rule__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -222,7 +223,7 @@ class Validation_ruleModel extends AdminModel
$id = $item->id;
}
// set the id and view name to session
if ($vdm = ComponentbuilderHelper::get('validation_rule__'.$id))
if (($vdm = SessionHelper::get('validation_rule__'.$id)) !== null)
{
$this->vastDevMod = $vdm;
}
@ -230,17 +231,17 @@ class Validation_ruleModel extends AdminModel
{
// set the vast development method key
$this->vastDevMod = UtilitiesStringHelper::random(50);
ComponentbuilderHelper::set($this->vastDevMod, 'validation_rule__'.$id);
ComponentbuilderHelper::set('validation_rule__'.$id, $this->vastDevMod);
SessionHelper::set($this->vastDevMod, 'validation_rule__'.$id);
SessionHelper::set('validation_rule__'.$id, $this->vastDevMod);
// set a return value if found
$jinput = Factory::getApplication()->input;
$return = $jinput->get('return', null, 'base64');
ComponentbuilderHelper::set($this->vastDevMod . '__return', $return);
SessionHelper::set($this->vastDevMod . '__return', $return);
// set a GUID value if found
if (isset($item) && ObjectHelper::check($item) && isset($item->guid)
&& GuidHelper::valid($item->guid))
{
ComponentbuilderHelper::set($this->vastDevMod . '__guid', $item->guid);
SessionHelper::set($this->vastDevMod . '__guid', $item->guid);
}
}
}
@ -352,6 +353,19 @@ class Validation_ruleModel extends AdminModel
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
$initDefaults = $jinput->get('init_defaults', null, 'STRING');
if (!empty($initDefaults))
{
// Now check if this json values are valid
$initDefaults = json_decode(urldecode($initDefaults), true);
if (is_array($initDefaults))
{
foreach ($initDefaults as $field => $value)
{
$form->setValue($field, null, $value);
}
}
}
}
return $form;
}