/**
  * Sets the 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 setType($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_type']));
     $name = $options->get('name');
     $typeMode = $options->get('type_mode');
     $modes = FieldsandfiltersModes::getMode()->get($typeMode);
     $type = FieldsandfiltersFactory::getTypes()->getTypesByName($name)->get($name);
     if ($name && $modes && $type && $recordId == $options->get('id', 0)) {
         $data['type'] = $name;
         $data['type_mode'] = $typeMode;
         //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;
 }
 /**
  * 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();
     $valueTable = $this->getTable('Fieldvalue', 'FieldsandfiltersTable');
     $elementTable = $this->getTable('Element', 'FieldsandfiltersTable');
     $filterMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER);
     $otherMode = (array) FieldsandfiltersModes::getModes(null, array(), true, $filterMode);
     // Include the content plugins for the on delete events.
     JPluginHelper::importPlugin('content');
     // Include the fieldsandfilters Types plugins for the on save events.
     JPluginHelper::importPlugin(FieldsandfiltersTypes::PLUGIN_FOLDER);
     try {
         // Iterate the items to delete each one.
         foreach ($pks as $i => $pk) {
             if (!$table->load($pk) || !$this->canDelete($table)) {
                 throw new Exception($table->getError());
             }
             $context = $this->option . '.' . $this->name;
             // 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());
             }
             // Get old item
             $item = $this->getItem($pk);
             // Trigger the onFieldsandfiltersBeforeSaveData event.
             $result = $app->triggerEvent('onFieldsandfiltersBeforeDeleteData', array($context, $item));
             if (in_array(false, $result, true)) {
                 throw new Exception($table->getError());
             }
             $objectTable = new stdClass();
             $objectTable->field_id = $table->id;
             $objectTable->element_id = null;
             //delete fields values and connections
             if (in_array($table->mode, $filterMode)) {
                 if (!$valueTable->deleteByFieldID($table->id)) {
                     throw new Exception($valueTable->getError());
                 }
                 if (!$elementTable->deleteConnections($objectTable)) {
                     throw new Exception($elementTable->getError());
                 }
             } else {
                 if (in_array($table->mode, $otherMode) && !$elementTable->deleteData($objectTable)) {
                     throw new Exception($elementTable->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();
     } catch (Exception $e) {
         $this->setError($e->getMessage());
         return false;
     }
     return true;
 }
 /**
  * onFieldsandfiltersPrepareFormField
  *
  * @param    KextensionsForm $form     The form to be altered.
  * @param    JObject         $data     The associated data for the form.
  * @param   boolean          $isNew    Is element is new
  * @param   string           $fieldset Fieldset name
  *
  * @return    boolean
  * @since    1.1.0
  */
 public function onFieldsandfiltersPrepareFormField(KextensionsForm $form, JObject $data, $isNew = false, $fieldset = 'fieldsandfilters')
 {
     if (!($fields = $data->get($this->_name))) {
         return true;
     }
     // Load Array Helper
     $fields = is_array($fields) ? $fields : array($fields);
     $staticMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_STATIC);
     $syntax = KextensionsPlugin::getParams('system', 'fieldsandfilters')->get('syntax', '#{%s}');
     while ($field = array_shift($fields)) {
         $root = new SimpleXMLElement('<fields />');
         $root->addAttribute('name', 'data');
         if ($field->params->get('type.hidden', 0)) {
             $element = $root->addChild('field');
             $element->addAttribute('type', 'hidden');
         } else {
             if (!empty($field->description) && $field->params->get('base.admin_enabled_description', 0)) {
                 switch ($field->params->get('base.admin_description_type', 'description')) {
                     case 'tip':
                         $element = $root->addChild('field');
                         $element->addAttribute('description', $field->description);
                         $element->addAttribute('translate_description', 'false');
                         break;
                     case 'description':
                     default:
                         $element = $root->addChild('field');
                         $element->addAttribute('type', 'spacer');
                         $element->addAttribute('name', 'description_spacer_' . $field->id);
                         $element->addAttribute('label', $field->description);
                         $element->addAttribute('translate_label', 'false');
                         $element->addAttribute('fieldset', $fieldset);
                         $element = $root->addChild('field');
                         break;
                 }
             } else {
                 $element = $root->addChild('field');
             }
             $label = '<strong>' . $field->name . '</strong> ' . sprintf($syntax, $field->id);
             if ($field->state == -1) {
                 $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_ONLY_ADMIN') . ']';
             }
             if (in_array($field->mode, $staticMode)) {
                 $element->addAttribute('type', 'spacer');
                 $element->addAttribute('description', $field->data);
                 $element->addAttribute('translate_description', 'false');
                 $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_GROUP_STATIC_TITLE') . ']';
             } else {
                 if ($field->params->get('type.readonly', 0)) {
                     $element->addAttribute('class', 'readonly');
                 } else {
                     $element->addAttribute('class', 'inputbox');
                 }
                 $element->addAttribute('type', 'text');
                 if ($field->required) {
                     $element->addAttribute('required', 'true');
                 }
             }
             $element->addAttribute('labelclass', 'control-label');
             $element->addAttribute('label', $label);
             $element->addAttribute('translate_label', 'false');
         }
         $element->addAttribute('id', $field->id);
         $element->addAttribute('name', $field->id);
         $element->addAttribute('fieldset', $fieldset);
         // hr bottom spacer
         $element = $root->addChild('field');
         $element->addAttribute('type', 'spacer');
         $element->addAttribute('name', 'hr_bottom_spacer_' . $field->id);
         $element->addAttribute('hr', 'true');
         $element->addAttribute('fieldset', $fieldset);
         $form->addOrder($field->id, $field->ordering)->setField($field->id, $root);
     }
     return true;
 }
 /**
  * onFieldsandfiltersPrepareFormField
  *
  * @param    KextensionsForm $form     The form to be altered.
  * @param    JObject         $data     The associated data for the form.
  * @param   boolean          $isNew    Is element is new
  * @param   string           $fieldset Fieldset name
  *
  * @return    boolean
  * @since    1.1.0
  */
 public function onFieldsandfiltersPrepareFormField(KextensionsForm $form, JObject $data, $isNew = false, $fieldset = 'fieldsandfilters')
 {
     if (!($fields = $data->get($this->_name))) {
         return true;
     }
     $fields = is_array($fields) ? $fields : array($fields);
     $staticMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_STATIC);
     $syntax = KextensionsPlugin::getParams('system', 'fieldsandfilters')->get('syntax', '#{%s}');
     while ($field = array_shift($fields)) {
         $root = new SimpleXMLElement('<fields />');
         $root->addAttribute('name', 'data');
         $rootJson = $root->addChild('fields');
         $rootJson->addAttribute('name', $field->id);
         $label = '<strong>' . $field->name . '</strong> ' . sprintf($syntax, $field->id);
         if ($field->state == -1) {
             $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_ONLY_ADMIN') . ']';
         }
         if (!($isStaticMode = in_array($field->mode, $staticMode))) {
             // name spacer
             $element = $rootJson->addChild('field');
             $element->addAttribute('type', 'spacer');
             $element->addAttribute('name', 'name_spacer_' . $field->id);
             $element->addAttribute('label', $label);
             $element->addAttribute('translate_label', 'false');
             $element->addAttribute('class', 'text');
             $element->addAttribute('fieldset', $fieldset);
         }
         if (!empty($field->description) && $field->params->get('base.admin_enabled_description', 0)) {
             switch ($field->params->get('base.admin_description_type', 'description')) {
                 case 'tip':
                     $element->addAttribute('description', $field->description);
                     $element->addAttribute('translate_description', 'false');
                     break;
                 case 'description':
                 default:
                     $element = $rootJson->addChild('field');
                     $element->addAttribute('type', 'spacer');
                     $element->addAttribute('name', 'description_spacer_' . $field->id);
                     $element->addAttribute('label', $field->description);
                     $element->addAttribute('translate_label', 'false');
                     $element->addAttribute('fieldset', $fieldset);
                     break;
             }
         }
         $element = $rootJson->addChild('field');
         $element->addAttribute('labelclass', 'control-label');
         $element->addAttribute('fieldset', $fieldset);
         if ($isStaticMode) {
             $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_GROUP_STATIC_TITLE') . ']';
             $element->addAttribute('type', 'spacer');
             $element->addAttribute('description', $field->data);
             $element->addAttribute('name', $field->id);
             $element->addAttribute('label', $label);
             $element->addAttribute('translate_label', 'false');
             $element->addAttribute('translate_description', 'false');
         } else {
             //image
             $element->addAttribute('name', 'image');
             $element->addAttribute('type', 'media');
             $element->addAttribute('class', 'inputbox');
             $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_IMAGE_LBL');
             $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_IMAGE_DESC');
             $element->addAttribute('filter', 'safehtml');
             if ($field->required) {
                 $element->addAttribute('required', 'true');
             }
             //src
             $element = $rootJson->addChild('field');
             $element->addAttribute('name', 'src');
             $element->addAttribute('type', 'hidden');
             $element->addAttribute('filter', 'safehtml');
             $element->addAttribute('fieldset', $fieldset);
             // caption
             $element = $rootJson->addChild('field');
             $element->addAttribute('name', 'caption');
             $element->addAttribute('type', 'text');
             $element->addAttribute('class', 'inputbox');
             $element->addAttribute('labelclass', 'control-label');
             $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_CAPTION_LBL');
             $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_CAPTION_DESC');
             $element->addAttribute('filter', 'safehtml');
             $element->addAttribute('fieldset', $fieldset);
             // alt
             $element = $rootJson->addChild('field');
             $element->addAttribute('name', 'alt');
             $element->addAttribute('type', 'text');
             $element->addAttribute('class', 'inputbox');
             $element->addAttribute('labelclass', 'control-label');
             $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_ALT_LBL');
             $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_ALT_DESC');
             $element->addAttribute('filter', 'safehtml');
             $element->addAttribute('fieldset', $fieldset);
             if ($field->params->get('type.create_thumb')) {
                 //src thumb
                 $element = $rootJson->addChild('field');
                 $element->addAttribute('name', 'src_thumb');
                 $element->addAttribute('type', 'hidden');
                 $element->addAttribute('filter', 'safehtml');
                 $element->addAttribute('fieldset', $fieldset);
             } else {
                 // link
                 $element = $rootJson->addChild('field');
                 $element->addAttribute('name', 'link');
                 $element->addAttribute('type', 'text');
                 $element->addAttribute('class', 'inputbox');
                 $element->addAttribute('labelclass', 'control-label');
                 $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_LINK_LBL');
                 $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_LINK_DESC');
                 $element->addAttribute('filter', 'safehtml');
                 $element->addAttribute('fieldset', $fieldset);
                 // link target
                 $element = $rootJson->addChild('field');
                 $element->addAttribute('name', 'target');
                 $element->addAttribute('type', 'list');
                 $element->addAttribute('class', 'inputbox');
                 $element->addAttribute('labelclass', 'control-label');
                 $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_TARGET_LBL');
                 $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_TARGET_DESC');
                 $element->addAttribute('fieldset', $fieldset);
                 KextensionsXML::addOptionsNode($element, array('PLG_FAF_TS_IE_FORM_TARGET_OPTION_DEFAULT' => '', 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_BLANK' => 1, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_POPUP' => 2, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_MODAL' => 3, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_PARENT' => 4));
             }
         }
         // hr bottom spacer
         $element = $rootJson->addChild('field');
         $element->addAttribute('type', 'spacer');
         $element->addAttribute('name', 'hr_bottom_spacer_' . $field->id);
         $element->addAttribute('hr', 'true');
         $element->addAttribute('fieldset', $fieldset);
         $form->addOrder($field->id, $field->ordering)->setField($field->id, $root);
     }
     return true;
 }
 /**
  * Method to save the form data.
  *
  * @param   array $data The form data.
  *
  * @return  boolean  True on success, False on error.
  *
  * @since       1.1.0
  */
 public function save($data)
 {
     $app = JFactory::getApplication();
     $table = $this->getTable();
     $key = $table->getKeyName();
     $pk = !empty($data[$key]) ? $data[$key] : (int) $this->getState($this->getName() . '.id');
     $isNew = true;
     // Include the content plugins for the on save events.
     JPluginHelper::importPlugin('content');
     JPluginHelper::importPlugin('fieldsandfilterstypes');
     // Allow an exception to be thrown.
     try {
         // Load the row if saving an existing record.
         if ($pk > 0) {
             $table->load($pk);
             $isNew = false;
         }
         // Bind the data.
         if (!$table->bind($data)) {
             throw new Exception($table->getError());
         }
         // Prepare the row for saving
         $this->prepareTable($table);
         // Check the data.
         if (!$table->check()) {
             throw new Exception($table->getError());
         }
         // Load PluginExtensions Helper
         $extensionName = ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeIDPivot('content_type_id', $table->content_type_id)->get($table->content_type_id)) ? $extension->name : '';
         $context = $this->option . '.' . $this->name . '.' . $extensionName;
         // Trigger the onContentBeforeSave event.
         $result = $app->triggerEvent($this->event_before_save, array($context, $table, $isNew));
         if (in_array(false, $result, true)) {
             throw new Exception($table->getError());
         }
         $tableFields = (array) $table->get('fields');
         // Get old item
         $item = $this->getItem($table->{$key});
         // Store the data.
         if (!$table->store()) {
             throw new Exception($table->getError());
         }
         $table->set('fields', JArrayHelper::toObject($tableFields, 'JObject'));
         // Store fields data and connections
         // Trigger the onFieldsandfiltersBeforeSaveData event.
         $result = $app->triggerEvent('onFieldsandfiltersBeforeSaveData', array($this->option . '.' . $this->name, $table, $item, $isNew));
         // array($newItem, $oldItem)
         if (in_array(false, $result, true)) {
             throw new Exception($table->getError());
         }
         $item = $item->get('fields', new JObject());
         $dataItem = $item->get('data', new JObject());
         $connectionsItem = $item->get('connections', new JObject());
         $tableFields = $table->get('fields', new JObject());
         $data = $tableFields->get('data', new JObject());
         $connections = $tableFields->get('connections', new JObject());
         $filterMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER, array());
         $otherMode = (array) FieldsandfiltersModes::getModes(null, array(), true, $filterMode);
         $fields = FieldsandfiltersFieldsHelper::getFieldsByTypeIDColumnFieldType($table->content_type_id);
         $fields = KextensionsArray::flatten(get_object_vars($fields));
         while ($field = array_shift($fields)) {
             $_data = (string) $data->get($field->id, '');
             $_dataItem = (string) $dataItem->get($field->id, '');
             $_connections = (array) $connections->get($field->id, new JObject())->getProperties(true);
             $_connectionsItem = (array) $connectionsItem->get($field->id, new JObject())->getProperties(true);
             // other (field/static)
             if (in_array($field->mode, $otherMode) && (!empty($_data) || !empty($_dataItem))) {
                 $tableObject = new stdClass();
                 $tableObject->field_id = (int) $field->id;
                 // delete text
                 if (!empty($_dataItem) && empty($_data)) {
                     $table->deleteData($tableObject);
                 } elseif (empty($_dataItem) && !empty($_data)) {
                     $tableObject->data = $_data;
                     $table->insertData($tableObject);
                 } elseif ($_dataItem != $_data) {
                     $tableObject->data = $_data;
                     $table->updateData($tableObject);
                 }
             } elseif (in_array($field->mode, $filterMode) && (!empty($_connections) || !empty($_connectionsItem))) {
                 $tableObject = new stdClass();
                 $tableObject->field_id = (int) $field->id;
                 $field_valuesID = array_keys($field->values->getProperties(true));
                 $_connections = array_intersect($field_valuesID, $_connections);
                 $__connections = array_unique(array_diff($_connections, $_connectionsItem));
                 JArrayHelper::toInteger($__connections);
                 if (!empty($__connections)) {
                     $tableObject->field_value_id = $__connections;
                     $table->insertConnections($tableObject);
                 }
                 $__connections = array_unique(array_diff($_connectionsItem, $_connections));
                 JArrayHelper::toInteger($__connections);
                 if (!empty($__connections)) {
                     $tableObject = new stdClass();
                     $tableObject->field_value_id = $__connections;
                     $table->deleteConnections($tableObject);
                 }
             }
         }
         // Trigger the onContentAfterSave event.
         $app->triggerEvent($this->event_after_save, array($context, $table, $isNew));
         // Clean the cache.
         $this->cleanCache();
     } catch (Exception $e) {
         $this->setError($e->getMessage());
         return false;
     }
     $pkName = $table->getKeyName();
     if (isset($table->{$pkName})) {
         $this->setState($this->getName() . '.id', $table->{$pkName});
     }
     $this->setState($this->getName() . '.new', $isNew);
     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 onFieldsandfiltersPrepareFiltersHTML($context, Jobject $filters, $fieldsID = null, $getAllextensions = true, JRegistry $params = null, $ordering = 'ordering')
 {
     if (!in_array($context, $this->_contexts)) {
         return;
     }
     $app = JFactory::getApplication();
     $jinput = $app->input;
     $id = $jinput->get('id', 0, 'int');
     // Load PluginExtensions Helper
     $extensionsHelper = FieldsandfiltersFactory::getExtensions();
     $extensionContent = $extensionsHelper->getExtensionsByName($this->_name)->get($this->_name);
     if ($context == $this->_contexts['category'] && !$id || !$extensionContent) {
         return;
     }
     // add model path
     $prefix = get_class($this);
     list($option, $class) = explode('.', $context);
     JModelLegacy::addIncludePath(sprintf('%s/%s/%s/overrides/models', JPATH_PLUGINS, $this->_type, $this->_name), $prefix . 'Model');
     if (!($model = JModelLegacy::getInstance($class, $prefix . 'Model', array('ignore_request' => false, 'table_path' => JPATH_ADMINISTRATOR . '/components/' . $option . '/tables')))) {
         return;
     }
     $itemsID = $model->getContentItemsID();
     if (empty($itemsID)) {
         return;
     }
     // Load Filters Helper
     $counts = FieldsandfiltersFiltersHelper::getFiltersValuesCount($extensionContent->content_type_id, $fieldsID, $itemsID, $model->getState('filter.published'));
     if (empty($counts)) {
         return;
     }
     $extensionsID = $getAllextensions ? $extensionsHelper->getExtensionsByNameColumn('content_type_id', array(FieldsandfiltersExtensions::EXTENSION_DEFAULT, $this->_name)) : $extensionContent->content_type_id;
     // Load Fields Helper
     $fieldsHelper = FieldsandfiltersFactory::getFields();
     if (is_null($fieldsID)) {
         // Load PluginTypes Helper
         if ($modes = FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER)) {
         }
         // multi extensions array( $this->_name, 'allextensions' )
         // $fields = $fieldsHelper->getFieldsByModeIDPivot( 'type', $extensionsID, $modes, 1, true );
         // single extension $this->_name
         $fields = $fieldsHelper->getFieldsByModeIDPivot('type', $extensionsID, $modes, 1, FieldsandfiltersFields::VALUES_VALUES, true);
     } else {
         if (is_numeric($fieldsID) || is_array($fieldsID)) {
             // multi extensions array( $this->_name, 'allextensions' )
             // $fields = $fieldsHelper->getFieldsByIDPivot( 'type', $extensionContent->content_type_id, $fieldsID, 1, true );
             // single extension $this->_name
             $fields = $fieldsHelper->getFieldsByIDPivot('type', $extensionsID, $fieldsID, 1, FieldsandfiltersFields::VALUES_VALUES, true);
         } else {
             return;
         }
     }
     $templateFields = new JObject();
     JPluginHelper::importPlugin('fieldsandfilterstypes');
     // Trigger the onFieldsandfiltersPrepareFormField event.
     $app->triggerEvent('getFieldsandfiltersFiltersHTML', array($templateFields, $fields, $context, $params, $ordering));
     $templateFields = $templateFields->getProperties(true);
     if (empty($templateFields)) {
         return;
     }
     ksort($templateFields);
     $filters->set('layouts', $templateFields);
     $filters->set('request', array('extensionID' => (int) $extensionContent->content_type_id, 'id' => $app->input->get('id', 0, 'int')));
     $filters->set('counts', (array) $counts);
     $router = JFactory::getApplication()->getRouter();
     if ($router->getMode() == JROUTER_MODE_SEF) {
         $filters->set('pagination', array('start' => 0));
     } else {
         $filters->set('pagination', array('limitstart' => 0));
     }
     $selectors = $filters->get('selectors');
     if ($context == $this->_contexts['category'] && ($selector = trim($this->params->get('selector_other_category', '#adminForm')))) {
         $selectors['other'] = $selector;
     } elseif ($context == $this->_contexts['archive'] && ($selector = trim($this->params->get('selector_other_archive', '#adminForm')))) {
         $selectors['other'] = $selector;
     } elseif ($context == $this->_contexts['featured'] && ($selector = trim($this->params->get('selector_other_featured', '')))) {
         $selectors['other'] = $selector;
     }
     $filters->set('selectors', $selectors);
     return implode("\n", $templateFields);
 }
 /**
  *
  * @since       1.1.0
  */
 public function __construct($debug = false)
 {
     parent::__construct($debug);
     $this->_valuesModes = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER);
     $this->_staticModes = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_STATIC);
 }
 /**
  * Overrides JTable::store to set modified data and user id.
  *
  * @param   boolean $updateNulls True to update fields even if they are null.
  *
  * @return  boolean  True on success.
  * @since    1.1.0
  */
 public function store($updateNulls = false)
 {
     // Check mode field
     if (in_array($this->mode, (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_FILTER))) {
         // Verify that the alias is unique
         $table = JTable::getInstance('Field', 'FieldsandfiltersTable');
         if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) {
             $this->setError(JText::sprintf('COM_FIELDSANDFILTERS_DATABASE_ERROR_FIELD_ALIAS_EXISTS', $this->alias));
             return false;
         }
     }
     return parent::store($updateNulls);
 }