getParams(); $id = $app->input->getInt('id', 0); if (empty($id)) { $id = $params->get('id', 1); } $this->setId((int)$id); parent::__construct(); } /** * Set Date */ public function setdate($date) { $this->_date = $date; } /** * Method to set the category id */ public function setId($id) { // Set new category ID and wipe data $this->_id = $id; $this->_item = null; //$this->_data = null; } /** * set limit * @param int value */ public function setLimit($value) { $this->setState('list.limit', (int) $value); } /** * set limitstart * @param int value */ public function setLimitStart($value) { $this->setState('list.start', (int) $value); } /** * Method to auto-populate the model state. */ protected function populateState($ordering = null, $direction = null) { // Initiliase variables. $app = Factory::getApplication('site'); $jemsettings = JemHelper::config(); $task = $app->input->getCmd('task',''); $format = $app->input->getCmd('format',false); $pk = $app->input->getInt('id', 0); $itemid = $pk . ':' . $app->input->getInt('Itemid', 0); $this->setState('category.id', $pk); $this->setState('filter.req_catid', $pk); // Load the parameters. Merge Global and Menu Item params into new object $params = $app->getParams(); $menuParams = new Registry; if ($menu = $app->getMenu()->getActive()) { // $menu_params = $menu->getParams(); // $menuParams->loadString($menu->params); $menuParams->loadString($menu->getParams()); } $mergedParams = clone $menuParams; $mergedParams->merge($params); $this->setState('params', $mergedParams); # limit/start /* in J! 3.3.6 limitstart is removed from request - but we need it! */ if ($app->input->getInt('limitstart', null) === null) { $app->setUserState('com_jem.category.'.$itemid.'.limitstart', 0); } if (empty($format) || ($format == 'html')) { $limit = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.limit', 'limit', $jemsettings->display_num, 'int'); $this->setState('list.limit', $limit); $limitstart = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.limitstart', 'limitstart', 0, 'int'); // correct start value if required $limitstart = $limit ? (int)(floor($limitstart / $limit) * $limit) : 0; $this->setState('list.start', $limitstart); } # Search - variables $search = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.filter_search', 'filter_search', '', 'string'); $this->setState('filter.filter_search', $search); $month = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.filter_month', 'filter_month', '', 'string'); $this->setState('filter.filter_month', $month); $filtertype = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.filter_type', 'filter_type', 0, 'int'); $this->setState('filter.filter_type', $filtertype); # show open date events # (there is no menu item option yet so show all events) $this->setState('filter.opendates', 1); # publish state $this->_populatePublishState($task); ########### ## ORDER ## ########### $filter_order = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.filter_order', 'filter_order', 'a.dates', 'cmd'); $filter_order_DirDefault = 'ASC'; // Reverse default order for dates in archive mode if($task == 'archive' && $filter_order == 'a.dates') { $filter_order_DirDefault = 'DESC'; } $filter_order_Dir = $app->getUserStateFromRequest('com_jem.category.'.$itemid.'.filter_order_Dir', 'filter_order_Dir', $filter_order_DirDefault, 'word'); $filter_order = InputFilter::getInstance()->clean($filter_order, 'cmd'); $filter_order_Dir = InputFilter::getInstance()->clean($filter_order_Dir, 'word'); $default_order_Dir = ($task == 'archive') ? 'DESC' : 'ASC'; if ($filter_order == 'a.dates') { $orderby = array('a.dates ' . $filter_order_Dir, 'a.times ' . $filter_order_Dir, 'a.created ' . $filter_order_Dir); } else { $orderby = array($filter_order . ' ' . $filter_order_Dir, 'a.dates ' . $default_order_Dir, 'a.times ' . $default_order_Dir, 'a.created ' . $default_order_Dir); } $this->setState('filter.orderby',$orderby); } /** * Get the events in the category */ public function getItems() { //$params = clone $this->getState('params'); $items = parent::getItems(); if ($items) { return $items; } return array(); } /** * Method to get category data for the current category */ public function getCategory() { if (!is_object($this->_item)) { $options = array(); if (isset($this->state->params)) { $params = $this->state->params; $options['countItems'] = ($params->get('show_cat_num_articles', 1) || !$params->get('show_empty_categories_cat', 0)) ? 1 : 0; } else { $options['countItems'] = 0; } $where_pub = $this->_getPublishWhere('i'); if (!empty($where_pub)) { $options['published_where'] = '(' . implode(' OR ', $where_pub) . ')'; } else { // something wrong - fallback to published events $options['published_where'] = 'i.published = 1'; } $catId = $this->getState('category.id', 'root'); $categories = new JemCategories($catId, $options); $this->_item = $categories->get($catId); // Compute selected asset permissions. if (is_object($this->_item)) { // a JemCategoryNode object $user = JemFactory::getUser(); $asset = 'com_jem.category.'.$this->_item->id; // Check general create permission. if ($user->authorise('core.create', $asset)) { $this->_item->getParams()->set('access-create', true); } $this->_children = $this->_item->getChildren(); $this->_parent = $this->_item->getParent(); if (empty($this->_parent)) { $this->_parent = false; } $this->_rightsibling = $this->_item->getSibling(); $this->_leftsibling = $this->_item->getSibling(false); } else { $this->_children = false; $this->_parent = false; } } return $this->_item; } /** * @return JDatabaseQuery */ protected function getListQuery() { //$params = $this->state->params; //$jinput = Factory::getApplication()->input; //$task = $jinput->getCmd('task','','cmd'); // Create a new query object. $query = parent::getListQuery(); // here we can extend the query of the Eventslist model return $query; } /** * Get the parent categorie. */ public function getParent() { if (!is_object($this->_item)) { $this->getCategory(); } return $this->_parent; } /** * Get the left sibling (adjacent) categories. */ public function &getLeftSibling() { if (!is_object($this->_item)) { $this->getCategory(); } return $this->_leftsibling; } /** * Get the right sibling (adjacent) categories. */ public function &getRightSibling() { if (!is_object($this->_item)) { $this->getCategory(); } return $this->_rightsibling; } /** * Get the child categories. */ public function &getChildren() { if (!is_object($this->_item)) { $this->getCategory(); } // Order subcategories if ($this->_children) { if (sizeof($this->_children)) { $params = $this->getState()->get('params'); if ($params->get('orderby_pri') == 'alpha' || $params->get('orderby_pri') == 'ralpha') { ArrayHelper::sortObjects($this->_children, 'title', ($params->get('orderby_pri') == 'alpha') ? 1 : -1); } } } return $this->_children; } } ?>