%PDF- %PDF-
Direktori : /home/lightco1/www/feiss.com.au/plugins/jsnpoweradmin/content/models/ |
Current File : /home/lightco1/www/feiss.com.au/plugins/jsnpoweradmin/content/models/category.php |
<?php /** * @version $Id$ * @package JSNPoweradmin * @subpackage item * @author JoomlaShine Team <support@joomlashine.com> * @copyright Copyright (C) 2012 JoomlaShine.com. All Rights Reserved. * @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html * * Websites: http://www.joomlashine.com * Technical Support: Feedback - http://www.joomlashine.com/contact-us/get-support.html * */ // No direct access to this file defined('_JEXEC') or die('Restricted access'); //error_reporting(0); JSNFactory::import('components.com_content.models.category', 'site'); JSNFactory::import('components.com_content.helpers.query', 'site'); JSNFactory::import('components.com_content.helpers.route', 'site'); JSNFactory::import('components.com_content.models.articles', 'site'); class PoweradminContentModelCategory extends ContentModelCategory { protected $_data; protected $_context = 'com_poweradmin.category'; /** * * Get params of current view */ protected function populateState($ordering = null, $direction = null){ $params = JComponentHelper::getParams('com_content'); $this->setState('params', $params); } /** * * Get model * * @param $type * @param $prefix */ protected function getModel( $type, $prefix = '', $config ) { $type = preg_replace('/[^A-Z0-9_\.-]/i', '', $type); $modelClass = $prefix.ucfirst($type); if ( !class_exists($modelClass) ) { $extension = 'com_'.str_replace('model', '', JString::strtolower($prefix)); $path = JPATH_ROOT.DS.'components'.DS.$extension.DS.'models'.DS.JString::strtolower($type).'.php'; if ($path) { require_once $path; if ( !class_exists($modelClass) ) { JError::raiseWarning(0, JText::sprintf('JLIB_APPLICATION_ERROR_MODELCLASS_NOT_FOUND', $modelClass)); return false; } }else{ return false; } } return new $modelClass($config); } /** * Get the articles in the category * * @return mixed An array of articles or false if an error occurs. * @since 1.5 */ function getSpecificItems( $Itemid ) { $app = JFactory::getApplication('site'); $JSNConfig = JSNFactory::getConfig(); $this->_data->params = $this->getState('params'); $this->setState('params', $this->_data->params); if ($this->_data->params->get('layout_type') == 'blog') { $limit = (int) $this->_data->params->def('num_leading_articles', 1) + (int) $this->_data->params->get('num_intro_articles', 4) + (int) $this->_data->params->def('num_links', 4); }else{ $this->setState('filter.published', 1); $limit = $app->getUserStateFromRequest('com_content.category.list.' . $Itemid . '.limit', 'limit', $this->_data->params->get('display_num')); } if ($category = $this->getCategory()) { $model = $this->getModel('Articles', 'ContentModel', array('ignore_request' => true)); $activeAllParams = new JRegistry(); foreach($this->_data->params->toArray() as $key => $val ){ if ( strpos($key, 'show_') !== false && (int) $this->_data->params->get($key) == 0 && $this->_data->params->get('layout_type') == 'blog'){ $activeAllParams->set($key, 1); }else if($this->_data->params->get('layout_type') == '' && strpos($key, 'list_') !== false){ if ($this->_data->params->get($key) == ''){ if ( $key == 'filter_field'){ $activeAllParams->set($key, 'title'); }else if( $key == 'list_show_date'){ $activeAllParams->set($key, 'published'); }else if ($key == 'date_format'){ $activeAllParams->set($key, 'DD-MM-YY'); }else{ $activeAllParams->set($key, 1); } } }else{ $activeAllParams->set($key, $val); } } $activeAllParams->set('layout_type', ''); $model->setState('params', $activeAllParams ); $model->setState('filter.category_id', $category->id); $model->setState('filter.published', $this->getState('filter.published')); $model->setState('filter.access', 1); $model->setState('list.ordering', $this->_buildContentOrderBy()); $model->setState('list.start', 0); $model->setState('list.limit', $limit); $model->setState('list.direction', ''); $model->setState('list.filter', ''); // filter.subcategories indicates whether to include articles from subcategories in the list or blog $model->setState('filter.subcategories', $this->_data->params->get('show_subcat_desc')); $model->setState('filter.max_category_levels', $this->_data->params->get('show_subcategory_content')); $model->setState('list.links', $this->_data->params->get('num_links')); if ( $limit >= 0 ) { $this->_data->items = $model->getSpecificItems(); if ( $this->_data->items === false) { $this->setError( $model->getError() ); } }else{ $this->_data->items = array(); } $this->_data->pagination = $model->getPagination(); } } /** * * Get data * * @param Array $pk */ public function prepareDisplayedData( $pk ) { $this->_data = new stdClass(); $this->_data->items = array(); $this->_data->children = null; $this->_data->category = null; jimport('joomla.application.categories'); $this->setState('category.id', $pk['id']); $this->_data->items = $this->getItems(); // Get some data from the models if( isset( $this->state->params ) ) { $this->_data->params = $this->state->params; $options = array(); $options['countItems'] = $this->_data->params->get('show_cat_num_articles', 1) || !$this->_data->params->get('show_empty_categories_cat', 0); }else{ $options['countItems'] = 0; } $categories = JCategories::getInstance('Content', $options); $this->_data->category = $categories->get( $this->getState('category.id', 'root') ); // Compute selected asset permissions. if ( is_object( $this->_data->category ) ) { // TODO: Why aren't we lazy loading the children and siblings? $this->_data->children = $this->_data->category->getChildren(); $this->_data->parent = false; if ($this->_data->category->getParent()) { $this->_data->parent = $this->_data->category->getParent(); } // Setup the category parameters. $cparams = $this->_data->category->getParams(); $this->_data->category->params = clone($this->_data->params); $this->_data->category->params->merge($cparams); } else { $this->_data->children = false; $this->_data->parent = false; } // PREPARE THE DATA // Get the metrics for the structural page layout. $numLeading = $this->_data->params->def('num_leading_articles', 1); $numIntro = $this->_data->params->def('num_intro_articles', 4); $numLinks = $this->_data->params->def('num_links', 4); // Compute the article slugs and prepare introtext (runs content plugins). for ($i = 0, $n = count($this->_data->items); $i < $n; $i++) { $item = &$this->_data->items[$i]; $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; // No link for ROOT category if ( $item->parent_alias == 'root' ) { $item->parent_slug = null; } // Ignore content plugins on links. if ( $i < $numLeading + $numIntro ) { $item->introtext = JHtml::_('content.prepare', $item->introtext); } } // For blog layouts, preprocess the breakdown of leading, intro and linked articles. // This makes it much easier for the designer to just interrogate the arrays. if ( ( $this->_data->params->get('layout_type') == 'blog' ) || ( @$pk['layout'] == 'blog') ) { $max = count($this->_data->items); // The first group is the leading articles. $limit = $numLeading; for ($i = 0; $i < $limit && $i < $max; $i++) { $this->_data->lead_items[$i] = &$this->_data->items[$i]; // Add router helpers. $item = &$this->_data->lead_items[$i]; $item->slug = $item->alias ? ($item->id.':'.$item->alias) : $item->id; $item->catslug = $item->category_alias ? ($item->catid.':'.$item->category_alias) : $item->catid; $item->parent_slug = $item->category_alias ? ($item->parent_id.':'.$item->parent_alias) : $item->parent_id; } // The second group is the intro articles. $limit = $numLeading + $numIntro; // Order articles across, then down (or single column mode) for ($i = $numLeading; $i < $limit && $i < $max; $i++) { $this->_data->intro_items[$i] = &$this->_data->items[$i]; // Add router helpers. $item = &$this->_data->intro_items[$i]; $item->slug = $item->alias ? ($item->id.':'.$item->alias) : $item->id; $item->catslug = $item->category_alias ? ($item->catid.':'.$item->category_alias) : $item->catid; $item->parent_slug = $item->category_alias ? ($item->parent_id.':'.$item->parent_alias) : $item->parent_id; } $this->_data->columns = max(1, $this->_data->params->def('num_columns', 1)); $order = $this->_data->params->def('multi_column_order', 1); if ( $order == 0 && $this->_data->columns > 1 ) { // call order down helper $this->_data->intro_items = ContentHelperQuery::orderDownColumns($this->_data->intro_items, $this->_data->columns); } $limit = $numLeading + $numIntro + $numLinks; // The remainder are the links. for ($i = $numLeading + $numIntro; $i < $limit && $i < $max; $i++) { $this->_data->link_items[$i] = &$this->_data->items[$i]; } } // Order subcategories if (sizeof($this->_data->children)) { if ($this->_data->params->get('orderby_pri') == 'alpha' || $this->_data->params->get('orderby_pri') == 'ralpha') { jimport('joomla.utilities.arrayhelper'); JArrayHelper::sortObjects($this->_data->children, 'title', ($this->_data->params->get('orderby_pri') == 'alpha') ? 1 : -1); } } if ( isset( $this->_data->category->id ) ){ $this->_data->children = array( $this->_data->category->id => $this->_data->children ); } $JSNConfig = JSNFactory::getConfig(); $JSNConfig->megreMenuParams( $pk['Itemid'], $this->_data->params ); $JSNConfig->megreGlobalParams( 'com_content', $this->_data->params, true ); //Escape strings for HTML output $this->_data->pageclass_sfx = htmlspecialchars($this->_data->params->get('pageclass_sfx')); $this->_data->maxLevel = $this->_data->params->get('maxLevel', -1); $this->_data->state = $this->state; return $this->_data; } function getItems() { $params = $this->getState()->get('params'); $limit = $this->getState('list.limit'); if ($this->_articles === null && $category = $this->getCategory()) { $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); $model->setState('params', $this->state->params); $model->setState('filter.category_id', $category->id); $model->setState('filter.published', $this->getState('filter.published')); $model->setState('filter.access', $this->getState('filter.access')); $model->setState('filter.language', $this->getState('filter.language')); $model->setState('list.ordering', $this->_buildContentOrderBy()); $model->setState('list.start', $this->getState('list.start')); $model->setState('list.limit', $limit); $model->setState('list.direction', $this->getState('list.direction')); $model->setState('list.filter', $this->getState('list.filter')); // filter.subcategories indicates whether to include articles from subcategories in the list or blog $model->setState('filter.subcategories', $this->getState('filter.subcategories')); $model->setState('filter.max_category_levels', $this->setState('filter.max_category_levels')); $model->setState('list.links', $this->getState('list.links')); if ($limit >= 0) { $this->_articles = $model->getItems(); if ($this->_articles === false) { $this->setError($model->getError()); } } else { $this->_articles=array(); } $this->_pagination = $model->getPagination(); $this->_data->pagination = $this->_pagination; } return $this->_articles; } }