Current Path : /var/www/html/clients/kampol.e-nk.ru/plugins/system/nnframework/helpers/ |
Current File : /var/www/html/clients/kampol.e-nk.ru/plugins/system/nnframework/helpers/search.php |
<?php /** * @package NoNumber Framework * @version 12.11.6 * * @author Peter van Westen <peter@nonumber.nl> * @link http://www.nonumber.nl * @copyright Copyright © 2012 NoNumber * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ /** * BASE ON JOOMLA CORE FILE: * /components/com_search/models/search.php */ /** * @version $Id: search.php 14401 2010-01-26 14:10:00Z louis $ * @package Joomla * @subpackage Search * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); jimport('joomla.application.component.model'); /** * Search Component Search Model * * @package Joomla * @subpackage Search * @since 1.5 */ class SearchModelSearch extends JModel { /** * Sezrch data array * * @var array */ var $_data = null; /** * Search total * * @var integer */ var $_total = null; /** * Search areas * * @var integer */ var $_areas = null; /** * Pagination object * * @var object */ var $_pagination = null; /** * Constructor * * @since 1.5 */ function __construct() { parent::__construct(); global $mainframe; //Get configuration $config = JFactory::getConfig(); // Get the pagination request variables $this->setState('limit', $mainframe->getUserStateFromRequest('com_search.limit', 'limit', $config->getValue('config.list_limit'), 'int')); $this->setState('limitstart', JRequest::getVar('limitstart', 0, '', 'int')); // Set the search parameters $keyword = urldecode(JRequest::getString('searchword')); $match = JRequest::getWord('searchphrase', 'all'); $ordering = JRequest::getWord('ordering', 'newest'); $this->setSearch($keyword, $match, $ordering); //Set the search areas $areas = JRequest::getVar('areas'); $this->setAreas($areas); } /** * Method to set the search parameters * * @access public * * @param string search string * @param string mathcing option, exact|any|all * @param string ordering option, newest|oldest|popular|alpha|category */ function setSearch($keyword, $match = 'all', $ordering = 'newest') { if (isset($keyword)) { $this->setState('keyword', $keyword); } if (isset($match)) { $this->setState('match', $match); } if (isset($ordering)) { $this->setState('ordering', $ordering); } } /** * Method to set the search areas * * @access public * * @param array Active areas * @param array Search areas */ function setAreas($active = array(), $search = array()) { $this->_areas['active'] = $active; $this->_areas['search'] = $search; } /** * Method to get weblink item data for the category * * @access public * @return array */ function getData() { // Lets load the content if it doesn't already exist if (empty($this->_data)) { $areas = $this->getAreas(); JPluginHelper::importPlugin('search'); $dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger('onSearch', array( $this->getState('keyword'), $this->getState('match'), $this->getState('ordering'), $areas['active'])); $rows = array(); foreach ($results AS $result) { $rows = array_merge((array) $rows, (array) $result); } $this->_total = count($rows); if ($this->getState('limit') > 0) { $this->_data = array_splice($rows, $this->getState('limitstart'), $this->getState('limit')); } else { $this->_data = $rows; } /* >>> ADDED: Run content plugins over results */ $mainframe = JFactory::getApplication(); $params = $mainframe->getParams('com_content'); $params->set('nn_search', 1); foreach ($this->_data as $item) { if ($item->text != '') { $results = $dispatcher->trigger('onPrepareContent', array(&$item, &$params, 0)); // strip html tags from title $item->title = strip_tags($item->title); } } /* <<< */ } return $this->_data; } /** * Method to get the total number of weblink items for the category * * @access public * @return integer */ function getTotal() { return $this->_total; } /** * Method to get a pagination object of the weblink items for the category * * @access public * @return integer */ function getPagination() { // Lets load the content if it doesn't already exist if (empty($this->_pagination)) { jimport('joomla.html.pagination'); $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit')); } return $this->_pagination; } /** * Method to get the search areas * * @since 1.5 */ function getAreas() { global $mainframe; // Load the Category data if (empty($this->_areas['search'])) { $areas = array(); JPluginHelper::importPlugin('search'); $dispatcher =& JDispatcher::getInstance(); $searchareas = $dispatcher->trigger('onSearchAreas'); foreach ($searchareas as $area) { $areas = array_merge($areas, $area); } $this->_areas['search'] = $areas; } return $this->_areas; } }