コード例 #1
0
ファイル: AbstractLayout.php プロジェクト: densem-2013/exikom
 /**
  * @param RokSprocket_Item $item
  * @param bool             $default_field
  * @param bool             $defaults_custom_field
  * @param bool             $per_item_field
  *
  * @return bool|null|RokSprocket_Item_Image
  */
 protected function setupText(RokSprocket_Item &$item, $default_field = false, $defaults_custom_field = false, $per_item_field = false)
 {
     $text = false;
     $deftext = false;
     if (!$default_field) {
         $deftext = false;
     } else {
         $default_field_value = str_replace($item->getProvider() . '_', '', $this->parameters->get($default_field, 'primary'));
         switch ($default_field_value) {
             case 'none':
                 $deftext = false;
                 break;
             case 'title':
                 $deftext = $item->getTitle();
                 break;
             case 'primary':
                 $deftext = $item->getText();
                 break;
             case 'custom':
                 if ($defaults_custom_field) {
                     $deftext = $this->parameters->get($defaults_custom_field, false) ? $this->parameters->get($defaults_custom_field, false) : false;
                     break;
                 }
             default:
                 $deftext = $item->getTextField($default_field_value);
         }
     }
     if (!$per_item_field) {
         $text = $deftext;
     } else {
         switch (trim($item->getParam($per_item_field, '-default-'))) {
             case '-none-':
                 $text = false;
                 break;
             case '-title-':
                 $text = $item->getTitle();
                 break;
             case '-article-':
                 $text = $item->getText();
                 break;
             case '-default-':
                 $text = $deftext;
                 break;
             default:
                 $text = $item->getParam($per_item_field, $deftext) ? $item->getParam($per_item_field, $deftext) : $deftext;
         }
     }
     return $text;
 }
コード例 #2
0
 /**
  * Method to validate form data.
  *
  * Validation warnings will be pushed into RokCommon_Form::errors and should be
  * retrieved with RokCommon_Form::getErrors() when validate returns boolean false.
  *
  * @param   array   $data   An array of field values to validate.
  * @param   string  $group  The optional dot-separated form group path on which to filter the
  *                          fields to be validated.
  *
  * @return  mixed  True on sucess.
  *
  * @since   11.1
  */
 public function validate($data, $group = null)
 {
     // Make sure there is a valid RokCommon_Form XML document.
     if (!$this->xml instanceof SimpleXMLElement) {
         return false;
     }
     // Initialise variables.
     $return = true;
     // Create an input registry object from the data to validate.
     $input = new RokCommon_Registry($data);
     // Get the fields for which to validate the data.
     $fields = $this->findFieldsByGroup($group);
     if (!$fields) {
         // PANIC!
         return false;
     }
     // Validate the fields.
     foreach ($fields as $field) {
         // Initialise variables.
         $value = null;
         $name = (string) $field['name'];
         // Get the group names as strings for ancestor fields elements.
         $attrs = $field->xpath('ancestor::fields[@name]/@name');
         $groups = array_map('strval', $attrs ? $attrs : array());
         $group = implode('.', $groups);
         // Get the value from the input data.
         if ($group) {
             $value = $input->get($group . '.' . $name);
         } else {
             $value = $input->get($name);
         }
         // Validate the field.
         $valid = $this->validateField($field, $group, $value, $input);
         // Check for an error.
         if ($valid instanceof Exception) {
             switch ($valid->get('level')) {
                 case E_ERROR:
                     JError::raiseWarning(0, $valid->getMessage());
                     return false;
                     break;
                 default:
                     array_push($this->errors, $valid);
                     $return = false;
                     break;
             }
         }
     }
     return $return;
 }
コード例 #3
0
ファイル: Articles.php プロジェクト: densem-2013/exikom
 /**
  * Get the items for the module and provider based on the filters passed and paginated
  * $params object should be a json like
  * <code>
  * {
  *  "page": 3,
  *  "items_per_page":6,
  *  "module_id": 5,
  *  "provider":"joomla",
  *  "filters":  {"1":{"root":{"access":"1"}},"2":{"root":{"author":"43"}}},
  *  "sortby":"date",
  *  "get_remaining": true
  * }
  * </code>
  *
  * @param $params
  *
  * @throws Exception
  * @throws RokCommon_Ajax_Exception
  * @return \RokCommon_Ajax_Result
  */
 public function getItems($params)
 {
     $result = new RokCommon_Ajax_Result();
     try {
         $html = '';
         $provider_filters = null;
         $provider_articles = null;
         if (isset($params->filters)) {
             $provider_filters = RokCommon_JSON::decode($params->filters);
         }
         if (isset($params->articles)) {
             $provider_articles = RokCommon_JSON::decode($params->articles);
         }
         $decoded_sort_parameters = array();
         try {
             $decoded_sort_parameters = RokCommon_Utils_ArrayHelper::fromObject(RokCommon_JSON::decode($params->sort));
         } catch (RokCommon_JSON_Exception $jse) {
             throw new RokCommon_Ajax_Exception('Invalid Sort Parameters passed in.');
         }
         $sort_params = new RokCommon_Registry($decoded_sort_parameters);
         $sort_filters = RokCommon_Utils_ArrayHelper::fromObject($sort_params->get('rules'));
         $sort_append = $sort_params->get('append', 'after');
         $sort_type = $sort_params->get('type');
         $extras = array();
         if (isset($params->extras)) {
             $extras = $params->extras;
         }
         if ($params->uuid != '0') {
             $params->module_id = $params->uuid;
         }
         $items = RokSprocket::getItemsWithFilters($params->module_id, $params->provider, $provider_filters, $provider_articles, $sort_filters, $sort_type, $sort_append, new RokCommon_Registry($extras), false, true);
         $container = RokCommon_Service::getContainer();
         $template_path_param = sprintf('roksprocket.providers.registered.%s.templatepath', strtolower($params->provider));
         if ($container->hasParameter($template_path_param)) {
             RokCommon_Composite::addPackagePath('roksprocket', $container->getParameter($template_path_param), 30);
         }
         $total_items_count = $items->count();
         $page = $params->page;
         $more = false;
         $limit = 10;
         $offset = ($page - 1) * $limit;
         if ($params->load_all) {
             $limit = $total_items_count - $offset;
         }
         $items = $items->slice($offset, $limit);
         $page = (int) $page == 0 ? 1 : $page;
         $next_page = $page;
         if ($total_items_count > $offset + $limit) {
             $more = true;
             $next_page = $page + 1;
         }
         $order = 0;
         $this->loadLayoutLanguage($params->layout);
         ob_start();
         foreach ($items as $article) {
             $per_item_form = $this->getPerItemsForm($params->layout);
             $per_item_form->setFormControl(sprintf('items[%s]', $article->getArticleId()));
             $per_item_form->bind(array('params' => $article->getParams()));
             echo RokCommon_Composite::get('roksprocket.module.edit')->load('edit_article.php', array('itemform' => $per_item_form, 'article' => $article, 'order' => $order));
             $order++;
         }
         $html .= ob_get_clean();
         $result->setPayload(array('more' => $more, 'page' => $page, 'next_page' => $next_page, 'amount' => $total_items_count, 'html' => $html));
     } catch (Exception $e) {
         throw $e;
     }
     return $result;
 }
コード例 #4
0
 /**
  * @static
  *
  * @param                    $moduleId
  * @param RokCommon_Registry $parameters
  * @param bool               $apply_random
  *
  * @param bool               $unpublished
  *
  * @return RokSprocket_ItemCollection
  */
 public static function getItemsWithParams($moduleId, RokCommon_Registry $parameters, $apply_random = true, $unpublished = false)
 {
     $container = RokCommon_Service::getContainer();
     /** @var $platformHelper RokSprocket_PlatformHelper */
     $platformHelper = $container->roksprocket_platformhelper;
     $provider_type = $parameters->get('provider', 'joomla');
     /** @var $provider RokSprocket_IProvider */
     $provider_service = $container['roksprocket.providers.registered.' . $provider_type . '.service'];
     $provider = $container->{$provider_service};
     $provider->setParams($parameters);
     $provider_filters = $parameters->get($provider_type . '_filters', array());
     $provider_articles = $parameters->get($provider_type . '_articles', array());
     $sort_type = $parameters->get($provider_type . '_sort', 'automatic');
     $sort_append = $parameters->get(sprintf('%s_sort_%s_append', $provider_type, $sort_type));
     $sort_filters = RokCommon_Utils_ArrayHelper::fromObject($parameters->get(sprintf('%s_sort_%s_filters', $provider_type, $sort_type), array()));
     $filters = array();
     if (!empty($provider_filters)) {
         $filters = array_merge($filters, RokCommon_Utils_ArrayHelper::fromObject($provider_filters));
     }
     if (!empty($provider_articles)) {
         $filters = array_merge($filters, RokCommon_Utils_ArrayHelper::fromObject($provider_articles));
     }
     return self::getItems($provider, $moduleId, $filters, $sort_filters, $sort_type, $sort_append, $apply_random);
 }
コード例 #5
0
ファイル: Request.php プロジェクト: densem-2013/exikom
 /**
  * @param $context
  * @return bool
  */
 protected function _exists($context)
 {
     return $this->_storage->exists($context);
 }
コード例 #6
0
 /**
  * Returns true if a parameter name is defined.
  *
  * @param  string  $name       The parameter name
  *
  * @return Boolean true if the parameter name is defined, false otherwise
  */
 public function hasParameter($name)
 {
     return $this->parameters->exists($name);
 }