/**
  * 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);
 }
Exemplo n.º 14
0
 /**
  * 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;
 }