File manager - Edit - /home/capoccitel/www/components/com_tz_portfolio_plus/models/search.php
Back
<?php /*------------------------------------------------------------------------ # TZ Portfolio Plus Extension # ------------------------------------------------------------------------ # author DuongTVTemPlaza # copyright Copyright (C) 2015 templaza.com. All Rights Reserved. # @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL # Websites: http://www.templaza.com # Technical Support: Forum - http://templaza.com/Forum -------------------------------------------------------------------------*/ // no direct access defined('_JEXEC') or die(); use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; jimport('joomla.application.component.modellist'); jimport('joomla.html.pagination'); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); class TZ_Portfolio_PlusModelSearch extends JModelList { protected $pagNav = null; protected $rowsTag = null; protected $categories = null; function populateState($ordering = null, $direction = null){ parent::populateState($ordering,$direction); $app = JFactory::getApplication('site'); $params = $app -> getParams('com_tz_portfolio_plus'); $global_params = JComponentHelper::getParams('com_tz_portfolio_plus'); if($layout_type = $params -> get('layout_type',array())){ if(!count($layout_type)){ $params -> set('layout_type',$global_params -> get('layout_type',array())); } }else{ $params -> set('layout_type',$global_params -> get('layout_type',array())); } $user = JFactory::getUser(); $offset = $app -> input -> getUInt('limitstart',0); if($params -> get('show_limit_box',0) ){ $limit = $app->getUserStateFromRequest('com_tz_portfolio_plus.portfolio.limit','limit',$params -> get('tz_article_limit',10)); } else{ $limit = (int) $params -> get('tz_article_limit',10); } $db = $this->getDbo(); $query = $db->getQuery(true); if ((!$user->authorise('core.edit.state', 'com_tz_portfolio_plus')) && (!$user->authorise('core.edit', 'com_tz_portfolio_plus'))){ // limit to published for people who can't edit or edit.state. $this->setState('filter.published', 1); // Filter by start and end dates. $nullDate = $db->quote($db->getNullDate()); $nowDate = $db->quote(JFactory::getDate()->toSql()); $query->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')'); $query->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')'); } else { $this->setState('filter.published', array(0, 1, 2)); } $this->setState('filter.language', JLanguageMultilang::isEnabled()); $this -> setState('params',$params); $this -> setState('list.start', $offset); $this -> setState('Itemid',$params -> get('id')); $this -> setState('list.limit',$limit); $this -> setState('catid',$params -> get('catid')); $this -> setState('filter.char',$app -> input -> getString('char',null)); $this -> setState('filter.tagId',null); $this -> setState('filter.userId',null); $this -> setState('filter.featured',null); $this -> setState('filter.year',null); $this -> setState('filter.month',null); $data = $app -> input -> getArray(); $this -> setState('filter.category_id',isset($data['id'])?$app -> input -> getInt('id'):null); $this -> setState('filter.searchword', $app->input->getString('searchword')); $this -> setState('filter.fields', $app -> input -> get('fields', array(), 'array')); } protected function getListQuery(){ $params = $this -> getState('params'); $user = JFactory::getUser(); $app = JFactory::getApplication(); $input = $app -> input; $db = JFactory::getDbo(); $query = $db -> getQuery(true); $catid = $this -> getState('filter.category_id'); $searchWord = $this -> getState('filter.searchword'); $fields = $input -> get('fields', array(), 'array'); if($searchWord || count($fields) || (!$searchWord && !count($fields) && $catid)) { $query->select('c.*,t.title AS tagName, m.catid AS catid ,cc.title AS category_title,u.name AS author'); $query->select('CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as slug'); $query->select('CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'); $query->select('CASE WHEN CHAR_LENGTH(c.fulltext) THEN c.fulltext ELSE null END as readmore'); $query->from($db->quoteName('#__tz_portfolio_plus_content') . ' AS c'); $query->join('INNER', $db->quoteName('#__tz_portfolio_plus_content_category_map') . ' AS m ON m.contentid=c.id'); $query->join('LEFT', $db->quoteName('#__tz_portfolio_plus_categories') . ' AS cc ON cc.id=m.catid'); $query->join('LEFT', $db->quoteName('#__tz_portfolio_plus_tag_content_map') . ' AS x ON x.contentid=c.id'); $query->join('LEFT', $db->quoteName('#__tz_portfolio_plus_tags') . ' AS t ON t.id=x.tagsid'); $query->join('LEFT', $db->quoteName('#__users') . ' AS u ON u.id=c.created_by'); // Join over the categories to get parent category titles $query->select('parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias'); $query->join('LEFT', '#__tz_portfolio_plus_categories as parent ON parent.id = cc.parent_id'); // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { // Use article state if badcats.id is null, otherwise, force 0 for unpublished $query->where('c.state = ' . (int)$published); } elseif (is_array($published)) { $published = ArrayHelper::toInteger($published); $published = implode(',', $published); // Use article state if badcats.id is null, otherwise, force 0 for unpublished $query->where('c.state IN (' . $published . ')'); } if ((!$user->authorise('core.edit.state', 'com_tz_portfolio_plus')) && (!$user->authorise('core.edit', 'com_tz_portfolio_plus'))) { // Filter by start and end dates. $nullDate = $db->Quote($db->getNullDate()); $nowDate = $db->Quote(JFactory::getDate()->toSQL()); $query->where('(c.publish_up = ' . $nullDate . ' OR c.publish_up <= ' . $nowDate . ')'); $query->where('(c.publish_down = ' . $nullDate . ' OR c.publish_down >= ' . $nowDate . ')'); } // Filter by access level. if (!$params->get('show_noauth')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('c.access IN (' . $groups . ')'); $query->where('cc.access IN (' . $groups . ')'); } // Filter by category if ($this->getState('filter.category_id')) { $catid = $this->getState('filter.category_id'); if (is_array($catid)) { $catid = array_filter($catid); if (count($catid)) { $categoryEquals = 'm.catid IN(' . implode(',', $catid) . ')'; } } elseif (!empty($catid)) { $categoryEquals = 'm.catid = '. (int) $catid; } // Filter by sub categories // Create a subquery for the subcategory list if($params -> get('search_subcategory', 0)) { $subQuery = $db->getQuery(true) ->select('sub.id') ->from('#__tz_portfolio_plus_categories as sub') ->join('INNER', '#__tz_portfolio_plus_categories as this ON sub.lft > this.lft AND sub.rgt < this.rgt') ->where('this.id = ' . (int)$catid); // Add the subquery to the main query $query->where('(' . $categoryEquals . ' OR m.catid IN (' . (string)$subQuery . '))'); }else{ $query -> where($categoryEquals); } } // Filter by word if ($searchWord = $this->getState('filter.searchword')) { $searchWord = $db->quote('%' . $db->escape($searchWord, true) . '%', true); $query->where('(c.title LIKE ' . $searchWord . ' OR c.introtext LIKE ' . $searchWord.')'); } // Filter by extrafields if ($fields = $input->get('fields', array(), 'array')) { if (count($fields)) { $fields = array_filter($fields); $fieldIds = array_keys($fields); $fieldIds = array_unique($fieldIds); JLoader::import('extrafields', JPATH_SITE . '/components/com_tz_portfolio_plus/helpers'); if ($extraFields = TZ_Portfolio_PlusFrontHelperExtraFields::getExtraFieldObjectById($fieldIds)) { $where = array(); if (count($extraFields)) { foreach ($extraFields as $field) { $field->onSearch($query, $where, $fields[$field->id]); } } if (count($where)) { $query->where('(' . implode(' AND ', $where) . ')'); } } } } // Order by artilce switch ($params->get('orderby_pri')) { default: $cateOrder = null; break; case 'alpha' : $cateOrder = 'cc.path, '; break; case 'ralpha' : $cateOrder = 'cc.path DESC, '; break; case 'order' : $cateOrder = 'cc.lft, '; break; } switch ($params->get('orderby_sec', 'rdate')) { default: $orderby = 'c.id DESC'; break; case 'rdate': $orderby = 'c.created DESC'; break; case 'date': $orderby = 'c.created ASC'; break; case 'alpha': $orderby = 'c.title ASC'; break; case 'ralpha': $orderby = 'c.title DESC'; break; case 'author': $orderby = 'u.name ASC'; break; case 'rauthor': $orderby = 'u.name DESC'; break; case 'hits': $orderby = 'c.hits DESC'; break; case 'rhits': $orderby = 'c.hits ASC'; break; case 'order': $orderby = 'c.ordering ASC'; break; } $query->order($cateOrder . $orderby); // Filter by language if ($this->getState('filter.language')) { $query->where('c.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')'); } $query->group('c.id'); } return $query; } function getAvailableLetter(){ $params = $this -> getState('params'); if($params -> get('use_filter_first_letter',1)){ if($letters = $params -> get('tz_letters','a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z')){ $db = JFactory::getDbo(); $letters = explode(',',$letters); $arr = null; if($catids = $params -> get('catid')){ if(count($catids) > 1){ if(empty($catids[0])){ array_shift($catids); } $catids = implode(',',$catids); } else{ if(!empty($catids[0])){ $catids = $catids[0]; } else $catids = null; } } $where = null; if($catids){ $where = ' AND cc.id IN('.$catids.')'; } if($featured = $this -> getState('filter.featured')){ if(is_array($featured)){ $featured = implode(',',$featured); } $where .= ' AND c.featured IN('.$featured.')'; } if($tagId = $this -> getState('filter.tagId')){ $where .= ' AND t.id='.$tagId; } if($userId = $this -> getState('filter.userId')){ $where .= ' AND c.created_by='.$userId; } if($year = $this -> getState('filter.year')){ $where .= ' AND YEAR(c.created) = '.$year; } if($month = $this -> getState('filter.month')){ $where .= ' AND MONTH(c.created) = '.$month; } foreach($letters as $i => &$letter){ $letter = trim($letter); $query = 'SELECT c.*' .' FROM #__tz_portfolio_plus_content AS c' .' LEFT JOIN #__tz_portfolio_plus_content_category_map AS m ON m.contentid = c.id' .' LEFT JOIN #__tz_portfolio_plus_categories AS cc ON cc.id=m.catid' .' LEFT JOIN #__tz_portfolio_plus_tag_content_map AS x ON x.contentid=c.id' .' LEFT JOIN #__tz_portfolio_plus_tags AS t ON t.id=x.tagsid' .' LEFT JOIN #__users AS u ON c.created_by=u.id' .' WHERE c.state=1' .$where .' AND ASCII(SUBSTR(LOWER(c.title),1,1)) = ASCII("'.mb_strtolower($letter).'")' .' GROUP BY c.id'; $db -> setQuery($query); $count = $db -> loadResult(); $arr[$i] = false; if($count){ $arr[$i] = true; } } return $arr; } } return false; } public function getCategoriesOptions(){ $leveltmp = 1; $options = array(); $option = new stdClass(); $option -> text = JText::_('JOPTION_SELECT_CATEGORY'); $option -> value = ''; $options[] = $option; $params = $this -> getState('params'); if($parentid = $params -> get('search_parent_cat', 0)){ if($categories = TZ_Portfolio_PlusFrontHelperCategories::getSubCategoriesByParentId((int) $parentid)){ $leveltmp = $categories[0] -> level - 1; foreach($categories as $i => $item){ if(!$params -> get('show_s_parent_root', 1) && $parentid == $item -> id){ if(isset($categories[$i + 1]) && $categories[$i + 1]) { $leveltmp = $categories[$i + 1] -> level - 1; } unset($categories[$i]); continue; } $option = new stdClass(); $repeat = ($item->level - $leveltmp - 1 >= 0) ? $item->level - $leveltmp - 1 : 0; $title = str_repeat('- ', $repeat) . $item->title; $option -> text = $title; $option -> value = $item -> id; $options[] = $option; } } }else{ JHtml::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tz_portfolio_plus/helpers/html'); $_options = JHtml::_('tzcategory.options', 'com_tz_portfolio_plus',array('filter.published' => 1)); $options = array_merge($options, $_options); } return $options; } public function getAdvFilterFields(){ JLoader::import('extrafields', JPATH_SITE.'/components/com_tz_portfolio_plus/helpers'); $params = $this -> getState('params'); $groupIds = $params -> get('search_groupid', array()); $groupIds = array_filter($groupIds); if(count($groupIds)){ if($advfilter = TZ_Portfolio_PlusFrontHelperExtraFields::getAdvFilterFields(null, array( 'filter.groupid' => $groupIds, 'filter.group' => $params -> get('order_fieldgroup', 'rdate')))) { return $advfilter; } } return false; } } ?>
| ver. 1.6 |
Github
|
.
| PHP 7.4.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings