示例#1
0
 /**
  * Method to get the field options.
  *
  * @return	array	The field option objects.
  * @since	1.6
  */
 protected function getOptions()
 {
     // Initialize variables.
     $session = JFactory::getSession();
     $options = array();
     // Initialize some field attributes.
     $extension = $this->element['extension'] ? (string) $this->element['extension'] : (string) $this->element['scope'];
     $published = (string) $this->element['published'];
     // OLD values
     // Load the category options for a given extension.
     if (!empty($extension)) {
         // Filter over published state or not depending upon if it is present.
         if ($published) {
             $options = JHtml::_('category.options', $extension, array('filter.published' => explode(',', $published)));
         } else {
             $options = JHtml::_('category.options', $extension);
         }
         // Verify permissions.  If the action attribute is set, then we scan the options.
         if ($action = (string) $this->element['action']) {
             // Get the current user object.
             $user = JFactory::getUser();
             // TODO: Add a preload method to JAccess so that we can get all the asset rules in one query and cache them.
             // eg JAccess::preload('core.create', 'com_content.category')
             foreach ($options as $i => $option) {
                 // Unset the option if the user isn't authorised for it.
                 if (!$user->authorise($action, $extension . '.category.' . $option->value)) {
                     unset($options[$i]);
                 }
             }
         }
     } else {
         JError::raiseWarning(500, JText::_('JLIB_FORM_ERROR_FIELDS_CATEGORY_ERROR_EXTENSION_EMPTY'));
     }
     // if no value exists, try to load a selected filter category from the old category filters
     if (!$this->value && $this->form instanceof JForm) {
         $context = $this->form->getName();
         $this->value = array();
         for ($i = 0; $i < 20; $i++) {
             if ($this->form->getValue("catid{$i}", "params", 0)) {
                 $this->value[] = $this->form->getValue("catid{$i}", "params", 0);
             }
         }
     }
     // Merge any additional options in the XML definition.
     $options = array_merge(parent::getOptions(), $options);
     return $options;
 }