primo commit
This commit is contained in:
45
components/com_config/src/Model/ConfigModel.php
Normal file
45
components/com_config/src/Model/ConfigModel.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_config
|
||||
*
|
||||
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Config\Site\Model;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Model for the global configuration
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
class ConfigModel extends FormModel
|
||||
{
|
||||
/**
|
||||
* Method to get a form object.
|
||||
*
|
||||
* @param array $data Data for the form.
|
||||
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
|
||||
*
|
||||
* @return mixed A Form object on success, false on failure
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public function getForm($data = [], $loadData = true)
|
||||
{
|
||||
// Get the form.
|
||||
$form = $this->loadForm('com_config.config', 'config', ['control' => 'jform', 'load_data' => $loadData]);
|
||||
|
||||
if (empty($form)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
271
components/com_config/src/Model/FormModel.php
Normal file
271
components/com_config/src/Model/FormModel.php
Normal file
@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_config
|
||||
*
|
||||
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Config\Site\Model;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\MVC\Model\FormModel as BaseForm;
|
||||
use Joomla\CMS\Plugin\PluginHelper;
|
||||
use Joomla\Utilities\ArrayHelper;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Prototype form model.
|
||||
*
|
||||
* @see JForm
|
||||
* @see \Joomla\CMS\Form\FormField
|
||||
* @see \Joomla\CMS\Form\FormRule
|
||||
* @since 3.2
|
||||
*/
|
||||
abstract class FormModel extends BaseForm
|
||||
{
|
||||
/**
|
||||
* Array of form objects.
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2
|
||||
*/
|
||||
protected $forms = [];
|
||||
|
||||
/**
|
||||
* Method to checkin a row.
|
||||
*
|
||||
* @param integer $pk The numeric id of the primary key.
|
||||
*
|
||||
* @return boolean False on failure or error, true otherwise.
|
||||
*
|
||||
* @since 3.2
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
public function checkin($pk = null)
|
||||
{
|
||||
// Only attempt to check the row in if it exists.
|
||||
if ($pk) {
|
||||
$user = $this->getCurrentUser();
|
||||
|
||||
// Get an instance of the row to checkin.
|
||||
$table = $this->getTable();
|
||||
|
||||
if (!$table->load($pk)) {
|
||||
throw new \RuntimeException($table->getError());
|
||||
}
|
||||
|
||||
// Check if this is the user has previously checked out the row.
|
||||
if (!\is_null($table->checked_out) && $table->checked_out != $user->id && !$user->authorise('core.admin', 'com_checkin')) {
|
||||
throw new \RuntimeException($table->getError());
|
||||
}
|
||||
|
||||
// Attempt to check the row in.
|
||||
if (!$table->checkIn($pk)) {
|
||||
throw new \RuntimeException($table->getError());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to check-out a row for editing.
|
||||
*
|
||||
* @param integer $pk The numeric id of the primary key.
|
||||
*
|
||||
* @return boolean False on failure or error, true otherwise.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public function checkout($pk = null)
|
||||
{
|
||||
// Only attempt to check the row in if it exists.
|
||||
if ($pk) {
|
||||
$user = $this->getCurrentUser();
|
||||
|
||||
// Get an instance of the row to checkout.
|
||||
$table = $this->getTable();
|
||||
|
||||
if (!$table->load($pk)) {
|
||||
throw new \RuntimeException($table->getError());
|
||||
}
|
||||
|
||||
// Check if this is the user having previously checked out the row.
|
||||
if (!\is_null($table->checked_out) && $table->checked_out != $user->id) {
|
||||
throw new \RuntimeException(Text::_('JLIB_APPLICATION_ERROR_CHECKOUT_USER_MISMATCH'));
|
||||
}
|
||||
|
||||
// Attempt to check the row out.
|
||||
if (!$table->checkOut($user->id, $pk)) {
|
||||
throw new \RuntimeException($table->getError());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get a form object.
|
||||
*
|
||||
* @param string $name The name of the form.
|
||||
* @param string $source The form source. Can be XML string if file flag is set to false.
|
||||
* @param array $options Optional array of options for the form creation.
|
||||
* @param boolean $clear Optional argument to force load a new form.
|
||||
* @param string $xpath An optional xpath to search for the fields.
|
||||
*
|
||||
* @return mixed JForm object on success, False on error.
|
||||
*
|
||||
* @see JForm
|
||||
* @since 3.2
|
||||
*/
|
||||
protected function loadForm($name, $source = null, $options = [], $clear = false, $xpath = false)
|
||||
{
|
||||
// Handle the optional arguments.
|
||||
$options['control'] = ArrayHelper::getValue($options, 'control', false);
|
||||
|
||||
// Create a signature hash.
|
||||
$hash = sha1($source . serialize($options));
|
||||
|
||||
// Check if we can use a previously loaded form.
|
||||
if (isset($this->_forms[$hash]) && !$clear) {
|
||||
return $this->_forms[$hash];
|
||||
}
|
||||
|
||||
// Register the paths for the form.
|
||||
Form::addFormPath(JPATH_SITE . '/components/com_config/forms');
|
||||
Form::addFormPath(JPATH_ADMINISTRATOR . '/components/com_config/forms');
|
||||
|
||||
try {
|
||||
// Get the form.
|
||||
$form = Form::getInstance($name, $source, $options, false, $xpath);
|
||||
|
||||
if (isset($options['load_data']) && $options['load_data']) {
|
||||
// Get the data for the form.
|
||||
$data = $this->loadFormData();
|
||||
} else {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Allow for additional modification of the form, and events to be triggered.
|
||||
// We pass the data because plugins may require it.
|
||||
$this->preprocessForm($form, $data);
|
||||
|
||||
// Load the data into the form after the plugins have operated.
|
||||
$form->bind($data);
|
||||
} catch (\Exception $e) {
|
||||
Factory::getApplication()->enqueueMessage($e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store the form for later.
|
||||
$this->_forms[$hash] = $form;
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get the data that should be injected in the form.
|
||||
*
|
||||
* @return array The default data is an empty array.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
protected function loadFormData()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to allow derived classes to preprocess the data.
|
||||
*
|
||||
* @param string $context The context identifier.
|
||||
* @param mixed &$data The data to be processed. It gets altered directly.
|
||||
* @param string $group The name of the plugin group to import (defaults to "content").
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
protected function preprocessData($context, &$data, $group = 'content')
|
||||
{
|
||||
// Get the dispatcher and load the users plugins.
|
||||
PluginHelper::importPlugin('content');
|
||||
|
||||
// Trigger the data preparation event.
|
||||
Factory::getApplication()->triggerEvent('onContentPrepareData', [$context, $data]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to allow derived classes to preprocess the form.
|
||||
*
|
||||
* @param Form $form A Form object.
|
||||
* @param mixed $data The data expected for the form.
|
||||
* @param string $group The name of the plugin group to import (defaults to "content").
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @see \Joomla\CMS\Form\FormField
|
||||
* @since 3.2
|
||||
* @throws \Exception if there is an error in the form event.
|
||||
*/
|
||||
protected function preprocessForm(Form $form, $data, $group = 'content')
|
||||
{
|
||||
// Import the appropriate plugin group.
|
||||
PluginHelper::importPlugin($group);
|
||||
|
||||
// Trigger the form preparation event.
|
||||
Factory::getApplication()->triggerEvent('onContentPrepareForm', [$form, $data]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to validate the form data.
|
||||
*
|
||||
* @param Form $form The form to validate against.
|
||||
* @param array $data The data to validate.
|
||||
* @param string $group The name of the field group to validate.
|
||||
*
|
||||
* @return mixed Array of filtered data if valid, false otherwise.
|
||||
*
|
||||
* @see \Joomla\CMS\Form\FormRule
|
||||
* @see \Joomla\CMS\Filter\InputFilter
|
||||
* @since 3.2
|
||||
*/
|
||||
public function validate($form, $data, $group = null)
|
||||
{
|
||||
// Filter and validate the form data.
|
||||
$data = $form->filter($data);
|
||||
$return = $form->validate($data, $group);
|
||||
|
||||
// Check for an error.
|
||||
if ($return instanceof \Exception) {
|
||||
Factory::getApplication()->enqueueMessage($return->getMessage(), 'error');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check the validation results.
|
||||
if ($return === false) {
|
||||
// Get the validation messages from the form.
|
||||
foreach ($form->getErrors() as $message) {
|
||||
if ($message instanceof \Exception) {
|
||||
$message = $message->getMessage();
|
||||
}
|
||||
|
||||
Factory::getApplication()->enqueueMessage($message, 'error');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
253
components/com_config/src/Model/ModulesModel.php
Normal file
253
components/com_config/src/Model/ModulesModel.php
Normal file
@ -0,0 +1,253 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_config
|
||||
*
|
||||
* @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Config\Site\Model;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\HTML\HTMLHelper;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Filesystem\Path;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Config Module model.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
class ModulesModel extends FormModel
|
||||
{
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
*
|
||||
* Note. Calling getState in this method will result in recursion.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
protected function populateState()
|
||||
{
|
||||
$app = Factory::getApplication();
|
||||
|
||||
// Load the User state.
|
||||
$pk = $app->getInput()->getInt('id');
|
||||
|
||||
$this->setState('module.id', $pk);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get the record form.
|
||||
*
|
||||
* @param array $data Data for the form.
|
||||
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
|
||||
*
|
||||
* @return Form A Form object on success, false on failure
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public function getForm($data = [], $loadData = true)
|
||||
{
|
||||
// Get the form.
|
||||
$form = $this->loadForm('com_config.modules', 'modules', ['control' => 'jform', 'load_data' => $loadData]);
|
||||
|
||||
if (empty($form)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to preprocess the form
|
||||
*
|
||||
* @param Form $form A form object.
|
||||
* @param mixed $data The data expected for the form.
|
||||
* @param string $group The name of the plugin group to import (defaults to "content").
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.2
|
||||
* @throws \Exception if there is an error loading the form.
|
||||
*/
|
||||
protected function preprocessForm(Form $form, $data, $group = 'content')
|
||||
{
|
||||
$lang = Factory::getLanguage();
|
||||
$module = $this->getState()->get('module.name');
|
||||
$basePath = JPATH_BASE;
|
||||
|
||||
$formFile = Path::clean($basePath . '/modules/' . $module . '/' . $module . '.xml');
|
||||
|
||||
// Load the core and/or local language file(s).
|
||||
$lang->load($module, $basePath)
|
||||
|| $lang->load($module, $basePath . '/modules/' . $module);
|
||||
|
||||
if (file_exists($formFile)) {
|
||||
// Get the module form.
|
||||
if (!$form->loadFile($formFile, false, '//config')) {
|
||||
throw new \Exception(Text::_('JERROR_LOADFILE_FAILED'));
|
||||
}
|
||||
|
||||
// Attempt to load the xml file.
|
||||
if (!$xml = simplexml_load_file($formFile)) {
|
||||
throw new \Exception(Text::_('JERROR_LOADFILE_FAILED'));
|
||||
}
|
||||
}
|
||||
|
||||
// Load the default advanced params
|
||||
Form::addFormPath(JPATH_BASE . '/components/com_config/model/form');
|
||||
$form->loadFile('modules_advanced', false);
|
||||
|
||||
// Trigger the default form events.
|
||||
parent::preprocessForm($form, $data, $group);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get list of module positions in current template
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public function getPositions()
|
||||
{
|
||||
$lang = Factory::getLanguage();
|
||||
$templateName = Factory::getApplication()->getTemplate();
|
||||
|
||||
// Load templateDetails.xml file
|
||||
$path = Path::clean(JPATH_BASE . '/templates/' . $templateName . '/templateDetails.xml');
|
||||
$currentTemplatePositions = [];
|
||||
|
||||
if (file_exists($path)) {
|
||||
$xml = simplexml_load_file($path);
|
||||
|
||||
if (isset($xml->positions[0])) {
|
||||
// Load language files
|
||||
$lang->load('tpl_' . $templateName . '.sys', JPATH_BASE)
|
||||
|| $lang->load('tpl_' . $templateName . '.sys', JPATH_BASE . '/templates/' . $templateName);
|
||||
|
||||
foreach ($xml->positions[0] as $position) {
|
||||
$value = (string) $position;
|
||||
$text = preg_replace('/[^a-zA-Z0-9_\-]/', '_', 'TPL_' . strtoupper($templateName) . '_POSITION_' . strtoupper($value));
|
||||
|
||||
// Construct list of positions
|
||||
$currentTemplatePositions[] = self::createOption($value, Text::_($text) . ' [' . $value . ']');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$templateGroups = [];
|
||||
|
||||
// Add an empty value to be able to deselect a module position
|
||||
$option = self::createOption();
|
||||
$templateGroups[''] = self::createOptionGroup('', [$option]);
|
||||
|
||||
$templateGroups[$templateName] = self::createOptionGroup($templateName, $currentTemplatePositions);
|
||||
|
||||
// Add custom position to options
|
||||
$customGroupText = Text::_('COM_MODULES_CUSTOM_POSITION');
|
||||
|
||||
$editPositions = true;
|
||||
$customPositions = self::getActivePositions(0, $editPositions);
|
||||
$templateGroups[$customGroupText] = self::createOptionGroup($customGroupText, $customPositions);
|
||||
|
||||
return $templateGroups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of modules positions
|
||||
*
|
||||
* @param integer $clientId Client ID
|
||||
* @param boolean $editPositions Allow to edit the positions
|
||||
*
|
||||
* @return array A list of positions
|
||||
*
|
||||
* @since 3.6.3
|
||||
*/
|
||||
public static function getActivePositions($clientId, $editPositions = false)
|
||||
{
|
||||
$db = Factory::getDbo();
|
||||
$query = $db->getQuery(true)
|
||||
->select('DISTINCT position')
|
||||
->from($db->quoteName('#__modules'))
|
||||
->where($db->quoteName('client_id') . ' = ' . (int) $clientId)
|
||||
->order($db->quoteName('position'));
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
try {
|
||||
$positions = $db->loadColumn();
|
||||
$positions = \is_array($positions) ? $positions : [];
|
||||
} catch (\RuntimeException $e) {
|
||||
Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Build the list
|
||||
$options = [];
|
||||
|
||||
foreach ($positions as $position) {
|
||||
if (!$position && !$editPositions) {
|
||||
$options[] = HTMLHelper::_('select.option', 'none', ':: ' . Text::_('JNONE') . ' ::');
|
||||
} else {
|
||||
$options[] = HTMLHelper::_('select.option', $position, $position);
|
||||
}
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and return a new Option
|
||||
*
|
||||
* @param string $value The option value [optional]
|
||||
* @param string $text The option text [optional]
|
||||
*
|
||||
* @return object The option as an object (stdClass instance)
|
||||
*
|
||||
* @since 3.6.3
|
||||
*/
|
||||
private static function createOption($value = '', $text = '')
|
||||
{
|
||||
if (empty($text)) {
|
||||
$text = $value;
|
||||
}
|
||||
|
||||
$option = new \stdClass();
|
||||
$option->value = $value;
|
||||
$option->text = $text;
|
||||
|
||||
return $option;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and return a new Option Group
|
||||
*
|
||||
* @param string $label Value and label for group [optional]
|
||||
* @param array $options Array of options to insert into group [optional]
|
||||
*
|
||||
* @return array Return the new group as an array
|
||||
*
|
||||
* @since 3.6.3
|
||||
*/
|
||||
private static function createOptionGroup($label = '', $options = [])
|
||||
{
|
||||
$group = [];
|
||||
$group['value'] = $label;
|
||||
$group['text'] = $label;
|
||||
$group['items'] = $options;
|
||||
|
||||
return $group;
|
||||
}
|
||||
}
|
||||
123
components/com_config/src/Model/TemplatesModel.php
Normal file
123
components/com_config/src/Model/TemplatesModel.php
Normal file
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_config
|
||||
*
|
||||
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Config\Site\Model;
|
||||
|
||||
use Joomla\CMS\Component\ComponentHelper;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Filesystem\Path;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Template style model.
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
class TemplatesModel extends FormModel
|
||||
{
|
||||
/**
|
||||
* Method to auto-populate the model state.
|
||||
*
|
||||
* Note. Calling getState in this method will result in recursion.
|
||||
*
|
||||
* @return null
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
protected function populateState()
|
||||
{
|
||||
parent::populateState();
|
||||
|
||||
$this->setState('params', ComponentHelper::getParams('com_templates'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get the record form.
|
||||
*
|
||||
* @param array $data An optional array of data for the form to interrogate.
|
||||
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
|
||||
*
|
||||
* @return Form|bool A Form object on success, false on failure
|
||||
*
|
||||
* @since 3.2
|
||||
*/
|
||||
public function getForm($data = [], $loadData = true)
|
||||
{
|
||||
try {
|
||||
// Get the form.
|
||||
$form = $this->loadForm('com_config.templates', 'templates', ['load_data' => $loadData]);
|
||||
|
||||
$data = [];
|
||||
$this->preprocessForm($form, $data);
|
||||
|
||||
// Load the data into the form
|
||||
$form->bind($data);
|
||||
} catch (\Exception $e) {
|
||||
Factory::getApplication()->enqueueMessage($e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($form)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to preprocess the form
|
||||
*
|
||||
* @param Form $form A form object.
|
||||
* @param mixed $data The data expected for the form.
|
||||
* @param string $group Plugin group to load
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.2
|
||||
* @throws \Exception if there is an error in the form event.
|
||||
*/
|
||||
protected function preprocessForm(Form $form, $data, $group = 'content')
|
||||
{
|
||||
$lang = Factory::getLanguage();
|
||||
|
||||
$template = Factory::getApplication()->getTemplate();
|
||||
|
||||
// Load the core and/or local language file(s).
|
||||
$lang->load('tpl_' . $template, JPATH_BASE)
|
||||
|| $lang->load('tpl_' . $template, JPATH_BASE . '/templates/' . $template);
|
||||
|
||||
// Look for com_config.xml, which contains fields to display
|
||||
$formFile = Path::clean(JPATH_BASE . '/templates/' . $template . '/com_config.xml');
|
||||
|
||||
if (!file_exists($formFile)) {
|
||||
// If com_config.xml not found, fall back to templateDetails.xml
|
||||
$formFile = Path::clean(JPATH_BASE . '/templates/' . $template . '/templateDetails.xml');
|
||||
}
|
||||
|
||||
// Get the template form.
|
||||
if (file_exists($formFile) && !$form->loadFile($formFile, false, '//config')) {
|
||||
throw new \Exception(Text::_('JERROR_LOADFILE_FAILED'));
|
||||
}
|
||||
|
||||
// Attempt to load the xml file.
|
||||
if (!$xml = simplexml_load_file($formFile)) {
|
||||
throw new \Exception(Text::_('JERROR_LOADFILE_FAILED'));
|
||||
}
|
||||
|
||||
// Trigger the default form events.
|
||||
parent::preprocessForm($form, $data, $group);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user