/** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @since 1.1.0 */ protected function populateState($ordering = null, $direction = null) { // Initialise variables. $app = JFactory::getApplication(); $filters = $app->getUserStateFromRequest($this->context . '.filter', 'filter', array(), 'array'); // If the context is set, assume that stateful lists are used. // @deprecated v.1.2 && J3.x if (!FieldsandfiltersFactory::isVersion() && $this->context) { // Receive & set filters if ($filters) { foreach ($filters as $name => $value) { $this->setState('filter.' . $name, $value); } } } else { $this->state->set('filter.content_type_id', JArrayHelper::getValue($filters, 'content_type_id', 0, 'int')); } // Load the parameters. $params = JComponentHelper::getParams('com_fieldsandfilters'); $this->setState('params', $params); $contentTypeID = (int) $this->state->get('filter.content_type_id'); if ($contentTypeID && ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeIDPivot('content_type_id', $contentTypeID)->get($contentTypeID))) { // Include the content plugins for the on delete events. JPluginHelper::importPlugin('fieldsandfiltersextensions'); // Trigger the onContentBeforeDelete event. $app->triggerEvent('onFieldsandfiltersPopulateState', array($this->context . '.' . $extension->name, $this->state, &$this->filter_fields)); $this->setState('filter.extension_name', $extension->name); } // List state information. parent::populateState($this->state->get('list.query.ordering', 'e.item_id'), 'asc'); }
/** * Display the view * * @since 1.1.0 */ public function display($tpl = null) { $tpl = is_null($tpl) && !FieldsandfiltersFactory::isVersion() ? '2.5' : $tpl; switch ($this->getLayout()) { case 'types': // Load PluginTypes Helper - getTypesGroup $this->plugins = FieldsandfiltersFactory::getTypes()->getTypesGroup(); break; case 'extensions': // Load PluginExtensions Helper - $this->plugins = FieldsandfiltersFactory::getExtensions()->getExtensionsGroup(); break; } if (is_null($this->plugins)) { echo JText::sprintf('COM_FIELDSANDFILTERS_ERROR_NOT_PLUGINS_TPL', $this->getLayout()); return false; } $this->addToolbar(); parent::display($tpl); }
/** * Sets the extension type of the field item currently being edited. * * @param string $urlVar The name of the URL variable if different from the primary key * * @return void * @since 1.1.0 */ function setExtension($urlVar = 'id') { // Get the posted values from the request. $data = $this->input->post->get('jform', array(), 'array'); $recordId = $this->input->get($urlVar, 0, 'int'); // Get the type. $options = new JRegistry(base64_decode($data['temp_extension'])); $contentTypeId = (int) $options->get('content_type_id'); $form = $options->get('form'); $extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($contentTypeId)->get($contentTypeId); if ($contentTypeId && $extension && $extension->content_type_alias == $options->get('content_type_alias') && $recordId == $options->get('id', 0)) { $data['content_type_id'] = $contentTypeId; $data['extension_form'] = $form; //Save the data in the session. JFactory::getApplication()->setUserState('com_fieldsandfilters.edit.field.data', $data); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $urlVar), false)); return true; } $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list, false)); return false; }
public static function setUserStateFieldID($context, $name = 'field_id') { $app = JFactory::getApplication(); $userState = (array) $app->getUserState($context); if ($fieldID = $app->input->getInt($name)) { if ($fieldID != JArrayHelper::getValue($userState, $name)) { $userState[$name] = $fieldID; $app->setUserState($context, $userState); return true; } } else { if (!JArrayHelper::getValue($userState, $name)) { $filterMode = FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER); $extensionsID = FieldsandfiltersFactory::getExtensions()->getExtensionsColumn('content_type_id'); $fieldsID = FieldsandfiltersFactory::getFields()->getFieldsByModeIDColumn('id', $extensionsID, $filterMode, array(1, -1)); $fieldID = current($fieldsID); $userState[$name] = $fieldID; $app->setUserState($context, $userState); return true; } } return false; }
/** * @since 1.1.0 */ public function fields() { // Check for a valid token. If invalid, send a 403 with the error message. JSession::checkToken('request') or die; $app = JFactory::getApplication(); $fieldID = $app->input->get('fid', 0, 'int'); $extensionTypeID = $app->input->get('etid', 0, 'int'); if ($app->input->get('format') == 'raw' && $extensionTypeID && $fieldID) { // Load PluginExtensions Helper if (!($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($extensionTypeID)->get($extensionTypeID))) { // $app->enqueueMessage( JText::_( JText::_( 'COM_FILEDSANDFILTERS_FILTERS_ERROR_EXTENSION_NOT_EXISTS' ), 'error' ) ); } else { if (!($field = FieldsandfiltersFactory::getFields()->getFieldsByID($extension->extension_type_id, $fieldID)->get($fieldID))) { // $app->enqueueMessage( JText::_( JText::_( 'COM_FILEDSANDFILTERS_FILTERS_ERROR_FIELD_NOT_EXISTS' ), 'error' ) ); } else { JPluginHelper::importPlugin('fieldsandfilterstypes'); $context = 'com_fieldsandfilters.fields.' . $field->field_type; $app->triggerEvent('onFieldsandfiltersFieldsRequestRaw', array($context, $field)); } } } $this->setRedirect(JURI::root(true)); }
/** * @param object $form A form object. * @param mixed $data The data expected for the form. * * @return void * @since 1.1.0 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { $data = $data instanceof JRegistry ? $data : new JRegistry($data); $fieldType = $data->get('type', $this->getState($this->getName() . '.type')); $typeMode = $data->get('type_mode', FieldsandfiltersModes::getModeName($data->get('mode', $this->getState($this->getName() . '.mode')), FieldsandfiltersModes::MODE_NAME_TYPE)); try { if ($fieldType && $typeMode && ($type = FieldsandfiltersFactory::getTypes()->getTypes(true)->get($fieldType))) { $path = $type->forms->get($typeMode, new JObject())->get('path'); $form::addFormPath($path); if (!$form->loadFile($typeMode, true, '/metadata/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } if ($layoutType = $data->get('params.type.' . $typeMode . '_layout', $this->getState($this->getName() . '.layoutType'))) { $paths = array(JPath::clean(JPATH_PLUGINS . '/' . $type->type . '/' . $type->name . '/tmpl/' . $typeMode)); if (strpos($layoutType, ':') > 0 && strpos($layoutType, '_:') !== 0) { list($template, $layoutType) = explode(':', $layoutType); $paths[] = JPATH::clean(JPATH_SITE . '/templates/' . $template . '/html/plg_' . $type->type . '_' . $type->name . '/' . $typeMode); } $path = JPath::find($paths, $layoutType . '.xml'); if (is_file($path)) { if (!$form->loadFile($path, true, '/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } } } // load plugin language KextensionsLanguage::load('plg_' . $type->type . '_' . $type->name, JPATH_ADMINISTRATOR); } $contentTypeId = $data->get('content_type_id', $this->getState($this->getName() . '.content_type_id')); $extensionForm = $data->get('extension_form', 'extension'); // get extension type objet by type id or plugin type if ($contentTypeId && ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($contentTypeId, true, true)->get($contentTypeId))) { $path = $extension->forms->get($extensionForm, new JObject())->get('path'); $form::addFormPath($path); if (!$form->loadFile($extensionForm, true, '/metadata/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // load plugin language KextensionsLanguage::load('plg_' . $extension->type . '_' . $extension->name, JPATH_ADMINISTRATOR); } } catch (Exception $e) { $this->setError($e->getMessage()); return; } // overwrite the mode default of the plugin type mode $form->setFieldAttribute('mode', 'default', FieldsandfiltersModes::getMode($form->getFieldAttribute('mode', 'value', 'field.text', 'properties'))); // Trigger the default form events. parent::preprocessForm($form, $data, $group); }
/** * Method to delete one or more records. * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 1.1.0 */ public function delete(&$pks) { $app = JFactory::getApplication(); $pks = (array) $pks; $table = $this->getTable(); $dispatcher = FieldsandfiltersFactory::getDispatcher(); // Include the content plugins for the on delete events. JPluginHelper::importPlugin('content'); JPluginHelper::importPlugin('fieldsandfilterstypes'); // Load PluginExtensions Helper $extensionsHelper = FieldsandfiltersFactory::getExtensions(); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if (!$table->load($pk) || !$this->canDelete($table)) { throw new Exception($table->getError()); } $extensionName = ($extension = $extensionsHelper->getExtensionsByTypeID($table->content_type_id)->get($table->content_type_id)) ? $extension->name : ''; $context = $this->option . '.' . $this->name . '.' . $extensionName; // Trigger the onContentBeforeDelete event. $result = $app->triggerEvent($this->event_before_delete, array($context, $table)); if (in_array(false, $result, true)) { throw new Exception($table->getError()); } // Trigger the onFieldsandfiltersBeforeDeleteData event. $result = $app->triggerEvent('onFieldsandfiltersBeforeDeleteData', array($this->option . '.' . $this->name, $this->getItem($pk))); if (in_array(false, $result, true)) { throw new Exception($table->getError()); } // delete fields data element if (!$table->deleteData($pk)) { throw new Exception($table->getError()); } // delete fields connections element if (!$table->deleteConnections($pk)) { throw new Exception($table->getError()); } if (!$table->delete($pk)) { throw new Exception($table->getError()); } // Trigger the onContentAfterDelete event. $app->triggerEvent($this->event_after_delete, array($context, $table)); } // Clear the component's cache $this->cleanCache(); return true; }
/** * @since 1.2.0 **/ public static function getFieldsByTypeIDColumnFieldType($contentTypeID, $withStatic = null, $states = array(1, -1), $getAllextensions = true) { $withStatic = !is_null($withStatic) ? $withStatic : JComponentHelper::getParams('com_fieldsandfilters')->get('show_static_fields', true); $contentTypeID = (array) $contentTypeID; if ($getAllextensions && ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByName(FieldsandfiltersExtensions::EXTENSION_DEFAULT)->get(FieldsandfiltersExtensions::EXTENSION_DEFAULT))) { $contentTypeID[] = (int) $extension->content_type_id; } $fieldsHelper = FieldsandfiltersFactory::getFields(); if ($withStatic) { $fields = $fieldsHelper->getFieldsPivot('type', $contentTypeID, $states, FieldsandfiltersFields::VALUES_BOTH); } else { $staticMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_STATIC, array()); $otherMode = (array) FieldsandfiltersModes::getModes(null, array(), true, $staticMode); $fields = $fieldsHelper->getFieldsByModeIDPivot('type', $contentTypeID, $otherMode, $states, FieldsandfiltersFields::VALUES_BOTH); } return $fields; }
<?php /** * @package com_fieldsandfilters * @copyright Copyright (C) 2012 KES - Kulka Tomasz . All rights reserved. * @license GNU General Public License version 3 or later; see License.txt * @author KES - Kulka Tomasz <*****@*****.**> - http://www.kextensions.com */ // no direct access defined('_JEXEC') or die; // Load PluginTypes Helper $typesHelper = FieldsandfiltersFactory::getTypes(); $valuesMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER); // Load PluginExtensions Helper $extensionsHelper = FieldsandfiltersFactory::getExtensions(); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('dropdown.init'); JHtml::_('formbehavior.chosen', 'select'); // Import CSS JHtml::_('stylesheet', 'fieldsandfilters/administrator/fieldsandfilters.css', array(), true); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_fieldsandfilters'); $saveOrder = $listOrder == 'f.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_fieldsandfilters&task=fields.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'fieldList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
/** * @since 1.1.0 */ public function onFieldsandfiltersRequestJSON($context, JObject $data) { if ($context != 'com_fieldsandfilters.filters.content') { return; } $app = JFactory::getApplication(); $jinput = $app->input; $document = JFactory::getDocument(); $basePath = sprintf('%s/%s/%s/overrides', JPATH_PLUGINS, $this->_type, $this->_name); $contentPath = JPATH_SITE . '/components/com_content'; $id = $jinput->get('id', 0, 'int'); $context = $jinput->get('context'); if (!in_array($context, $this->_contexts)) { return false; } // Load PluginExtensions Helper $extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByName($this->_name)->get($this->_name); if ($context == $this->_contexts['category'] && !$id || !$extension) { return false; } list($option, $class) = explode('.', $context); // set new jinput values $jinput->set('option', $option); $jinput->set('view', $class); $jinput->set('id', $jinput->get('id', 0, 'int')); // Include dependancies JLoader::import('com_content.helpers.route', JPATH_SITE . '/components'); JLoader::import('com_content.helpers.query', JPATH_SITE . '/components'); // Get controller Instance if (!($controller = KextensionsController::getInstance(null, 'contentController', array('base_path' => $contentPath, 'view_path' => $basePath . '/views')))) { return false; } // add model path $prefix = get_class($this); $controller->addModelPath($basePath . '/models', $prefix . 'Model'); if (!($model = $controller->getModel($class, $prefix . 'Model', array('ignore_request' => false, 'table_path' => JPATH_ADMINISTRATOR . '/components/' . $option . '/tables')))) { return false; } $fieldsandfilters = $jinput->get('fieldsandfilters', array(), 'array'); if (!empty($fieldsandfilters)) { $extensionsParams = new JObject(array('plugin.value' => $this->params->get('comparison_between_filters'))); if ($moduleID = $jinput->get('module', 0, 'int')) { $extensionsParams->set('module.id', $moduleID); } $betweenFilters = FieldsandfiltersExtensionsHelper::getParams('comparison_between_filters', $extensionsParams, 'OR'); $extensionsParams->set('plugin.value', $this->params->get('comparison_between_values_filters')); $betweenValues = FieldsandfiltersExtensionsHelper::getParams('comparison_between_values_filters', $extensionsParams, 'OR'); $itemsID = FieldsandfiltersFiltersHelper::getItemsIDByFilters($extension->content_type_id, $fieldsandfilters, $model->getState('filter.published'), $betweenFilters, $betweenValues); } else { $itemsID = FieldsandfiltersFiltersHelper::getSimpleItemsID(false); } // load view if (!($view = $controller->getView($class, 'html', $prefix . 'View', array('base_path' => $contentPath, 'layout' => $jinput->get('layout', 'default'))))) { return false; } // For joomla 2.5 && Key Reference if (!FieldsandfiltersFactory::isVersion()) { $view->addTemplatePath(JPATH_THEMES . '/' . $app->getTemplate() . '/html/com_content/' . $class); } // set module to view $view->setModel($model, true); $view->document = $document; // add helpers JHtml::addIncludePath(JPATH_SITE . '/components/com_content/helpers'); JHtml::addIncludePath(JPATH_SITE . '/components/com_content/helpers/html'); KextensionsLanguage::load($option); $emptyItemsID = $itemsID->get('empty', false); $model->setState('fieldsandfilters.itemsID', (array) $itemsID->get('itemsID')); $model->setState('fieldsandfilters.emptyItemsID', $emptyItemsID); if ($jinput->get('random', false) && KextensionsModule::getParams($jinput->get('module'))->get('show_random', 0) && JComponentHelper::getParams('com_fieldsandfilters')->get('random_type_filters') == 'selected') { $model->setState('fieldsandfilters.random.selected', true); $model->setState('fieldsandfilters.random.limit', JComponentHelper::getParams('com_fieldsandfilters')->get('random_items_limit_filters', 0)); } if (!$emptyItemsID) { ob_start(); $view->display(); $body = ob_get_contents(); ob_end_clean(); } else { $this->loadLanguage(); $variables = new JObject(); $variables->type = $this->_type; $variables->name = $this->_name; $variables->params = $this->params; $variables->extension = $extension; $body = KextensionsPlugin::renderLayout($variables, FieldsandfiltersPlugin::getLayout($this->params, 'empty_layout', 'empty')); } $itemsID = $model->getState('fieldsandfilters.itemsID', array()); $fieldsID = $jinput->get('fields', array(), 'array'); if (!empty($itemsID) && !empty($fieldsID) && !$emptyItemsID) { // Load Filters Helper $counts = (array) FieldsandfiltersFiltersHelper::getFiltersValuesCount($extension->content_type_id, $fieldsID, $itemsID, $model->getState('filter.published')); $data->set('counts', $counts); } else { if ($emptyItemsID) { // [TODO] when is empty display all fields with 0 counts or display special buttons to reset filters $data->set('empty', $emptyItemsID); } } $document->setBuffer($body, array('type' => 'component', 'name' => 'fieldsandfilters', 'title' => null)); if (!$emptyItemsID) { // [TODO] move to another place because we need this only once $script[] = 'jQuery(document).ready(function($) {'; $script[] = ' $("' . $this->params->get('selector_pagination_filters', '.pagination') . '").fieldsandfilters("pagination"' . ($app->get('sef', 0) ? ',{pagination: "start"}' : '') . ');'; $script[] = '});'; $document->addScriptDeclaration(implode("\n", $script)); } }
/** * Method to get the available options field values item. value & text * * @return array array associate value and text * @since 1.1.0 */ public static function fieldValues($fieldID, $state = 1) { $options = array(); $extenionsID = FieldsandfiltersFactory::getExtensions()->getExtensionsColumn('content_type_id'); $field = FieldsandfiltersFactory::getFields()->getFieldsByID($extenionsID, $fieldID, $state, true); if (($field = $field->get($fieldID)) && ($values = $field->values->getProperties(true))) { while ($value = array_shift($values)) { $options[] = JHtml::_('select.option', $value->id, $value->value); } } return $options; }
/** * @since 1.1.0 */ public function fields() { // Is ajax requerst KextensionsRequest::isAjax() or die; // Check for a valid token. If invalid, send a 403 with the error message. JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403)); $app = JFactory::getApplication(); $requestID = $app->input->get('requestID', 0, 'alnum'); $fieldID = $app->input->get('fieldID', 0, 'int'); $extensionTypeID = $app->input->get('extensionID', 0, 'int'); try { // Check if exist requestID and extention type id if (!$requestID) { throw new Exception(JText::_('COM_FILEDSANDFILTERS_FILTERS_ERROR_REQUEST_ID'), 403); } elseif (!$extensionTypeID) { throw new Exception(JText::_('COM_FILEDSANDFILTERS_FILTERS_ERROR_REQUEST_ID'), 403); } elseif (!$fieldID) { throw new Exception(JText::_('COM_FILEDSANDFILTERS_FILTERS_ERROR_FIELD_ID'), 403); } // Load PluginExtensions Helper if (!($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($extensionTypeID)->get($extensionTypeID))) { throw new Exception(JText::_('COM_FILEDSANDFILTERS_FILTERS_ERROR_EXTENSION_NOT_EXISTS'), 403); } elseif (!($field = FieldsandfiltersFactory::getFields()->getFieldsByID($extension->extension_type_id, $fieldID)->get($fieldID))) { throw new Exception(JText::_('COM_FILEDSANDFILTERS_FILTERS_ERROR_FIELD_NOT_EXISTS'), 403); } self::_prepareDocument(); JPluginHelper::importPlugin('fieldsandfilterstypes'); // Trigger the onFieldsandfiltersPrepareFormField event. $context = 'com_fieldsandfilters.fields.' . $field->field_type; $data = new JObject(); $app->triggerEvent('onFieldsandfiltersRequestJSON', array($context, $field, $data)); // Send the response. $this->sendResponse($data); } catch (Exception $e) { $this->sendResponse($e); } }
/** * Method to get the field input markup. * * @return string The field input markup. * @since 1.2.0 */ protected function getInput() { // Initialise variables $value = ''; $html = array(); $size = !empty($this->size) ? ' size="' . $this->size . '"' : ''; $class = !empty($this->class) ? ' class="' . $this->class . '"' : 'class="inputbox"'; $recordId = (int) $this->form->getValue('id', 0); $typeExtension = 'extension'; if ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsPivot('content_type_id', true)->get($this->value)) { // Load Extensions Helper KextensionsLanguage::load('plg_' . $extension->type . '_' . $extension->name, JPATH_ADMINISTRATOR); $extensionForm = $extension->forms->get($typeExtension, new JObject()); if (isset($extensionForm->group->title)) { $value = JText::_($extensionForm->title) . ' [' . JText::_($extensionForm->group->title) . ']'; } elseif (isset($extensionForm->title)) { $value = JText::_($extensionForm->title); } } // Load the javascript and css JHtml::_('behavior.framework'); JHtml::_('behavior.modal'); $query = array('option' => 'com_fieldsandfilters', 'view' => 'plugins', 'tmpl' => 'component', 'layout' => 'extensions', 'recordId' => $recordId); $link = JRoute::_('index.php?' . JURI::buildQuery($query)); if (FieldsandfiltersFactory::isVersion()) { $html[] = '<span class="input-append">'; $html[] = ' <input type="text" readonly="readonly" disabled="disabled" value="' . $value . '"' . $size . $class . ' />'; $html[] = ' <a class="btn btn-primary" onclick="SqueezeBox.fromElement(this, {handler:\'iframe\', size: {x: 600, y: 450}, url:\'' . $link . '\'})">'; $html[] = ' <i class="icon-list icon-white"></i>'; $html[] = JText::_('JSELECT'); $html[] = ' </a>'; $html[] = '</span>'; $html[] = '<input class="input-small" type="hidden" name="' . $this->name . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" />'; } else { $html[] = '<input type="text" readonly="readonly" disabled="disabled" value="' . $value . '"' . $size . $class . ' />'; $html[] = '<input type="button" value="' . JText::_('JSELECT') . '" onclick="SqueezeBox.fromElement(this, {handler:\'iframe\', size: {x: 600, y: 450}, url:\'' . $link . '\'})" />'; $html[] = '<input type="hidden" name="' . $this->name . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" />'; } return implode("\n", $html); }
/** * Method to perform sanity checks on the JTable instance properties to ensure * they are safe to store in the database. Child classes should override this * method to make sure the data they are storing in the database is safe and * as expected before storage. * * @return boolean True if the instance is sane and able to be stored in the database. * * @link http://docs.joomla.org/JTable/check * @since 1.1.0 */ public function check() { //If there is an ordering column and this is a new row then get the next ordering value if ($this->id == 0) { $this->ordering = self::getNextOrder(); } try { // Check for exist mode field if (!in_array($this->mode, (array) FieldsandfiltersModes::getModes(null, array(), true))) { throw new RuntimeException(JText::_('COM_FIELDSANDFILTERS_DATABASE_ERROR_VALID_FIELD_MODE')); return false; } // Check for a field name. if (trim($this->name) == '') { throw new RuntimeException(JText::_('COM_FIELDSANDFILTERS_DATABASE_ERROR_VALID_FIELD_NAME')); } // Check for a field type. if (trim($this->type) == '') { throw new RuntimeException(JText::_('COM_FIELDSANDFILTERS_DATABASE_ERROR_VALID_FIELD_TYPE')); } elseif (!FieldsandfiltersFactory::getTypes()->getTypes()->get($this->type)) { throw new RuntimeException(JText::sprintf('COM_FIELDSANDFILTERS_DATABASE_ERROR_FIELD_TYPE_NOT_EXISTS', $this->type)); } // Check for a field extension type id. if (!$this->content_type_id) { throw new RuntimeException(JText::_('COM_FIELDSANDFILTERS_DATABASE_ERROR_VALID_FIELD_CONTENT_TYPE_ID')); } elseif (!FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($this->content_type_id)->get($this->content_type_id)) { throw new RuntimeException(JText::sprintf('COM_FIELDSANDFILTERS_DATABASE_ERROR_CONTENT_TYPE_ID_NOT_EXISTS', $this->content_type_id)); } } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Check mode field if (in_array($this->mode, (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER))) { // Check for a field alias if (trim($this->alias) == '') { $this->alias = $this->name; } $this->alias = JApplication::stringURLSafe($this->alias); if (trim(str_replace('-', '', $this->alias)) == '') { $this->alias = JFactory::getDate()->format('Y-m-d-H-i-s'); } } elseif (trim($this->alias) != '') { $this->alias = ''; } return true; }