/** * @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; }
/** * Sets a service container parameter. * * @param string $name The parameter name * @param $value * * @internal param mixed $parameters The parameter value */ public function setParameter($name, $value) { if (is_array($value) && RokCommon_Utils_ArrayHelper::isAssociative($value)) { foreach ($value as $key => $subvalue) { $subname = $name . RokCommon_Registry::SEPARATOR . $key; $this->setParameter($name . RokCommon_Registry::SEPARATOR . $key, $subvalue); } } elseif (is_array($value) && $this->parameters->exists($name)) { $current = $this->parameters->get($name); if (is_array($current)) { $merged = array_merge($current, $value); $this->parameters->set(strtolower($name), $merged); } else { $this->parameters->set(strtolower($name), $value); } } else { $this->parameters->set(strtolower($name), $value); } }
/** * 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; }
/** * 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; }
/** * @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); }
/** * @param $context * @param $default * @return mixed */ protected function _get($context, $default) { return $this->_storage->get($context, $default); }