# Модуль поиска

## Установка при помощи composer ##

В файл composer.json добавить

```
#!php

"require": {
...
"ciext/search":"1.0.*"

}

```

## Настройка ##

Для каждого модуля добавить файл bootstrap.php в котором указать расположение модели поиска текущего модуля

```
#!php

<?php

return [
    'search_models' => [
        'news/news_search' // модель поиска вашего модуля
    ],
];
```
Модель поиска должна быть унаследована от класса SearchModelAbstract.

Пример модели поиска

```
#!php

class news_search extends SearchModelAbstract
{

    public function __construct()
    {
        parent::__construct();
        $this->config->load('news/config');
    }

    public function find($search = '')
    {
        if (empty($search)) {

            return FALSE;
        }

        $likes = explode(' ', $search);

        if (empty($likes)) {

            return FALSE;
        }

        $like = '';
        foreach ($likes as $v) {
            $like .= ' OR LOWER(nt.text) LIKE ' . $this->db->escape('%' . mb_strtolower($v) . '%');
        }
        $like = '(' . ltrim($like, ' OR ') . ')';

        $this->load->library('db_lang_lib');
        $id_lan = $this->db_lang_lib->get_current_lang_id();

        $q = $this->db->
                        select('n.alias, nt.name, nt.text')->
                        join('news n', 'n.id_news=nt.id_news', 'left')->
                        where('nt.id_lan', $id_lan)->
                        where('n.active', TRUE)->
                        where($like)->
                        get('news_translate nt')->result_array();

        $items = array();
        foreach ($q as $page) {
            $tmpItem = $this->createOneSearchItem($likes, $this->createHref($page['alias']), $page['name'], $page['text']);
            if (!empty($tmpItem)) {
                $items[] = $tmpItem;
            }
        }

        return $items;
    }

    protected function createHref($alias = '')
    {
        return (($this->uri->current_language == $this->config->item('language_short')) ? '' :
                        $this->uri->current_language)
                . '/'
                . $this->config->item('news_page')
                . '/'
                . $alias;
    }

}
```

## Использование ##

Для вывода форма поиска добавить {module_search/search_site/search_form}

Для вывода результата поиска добавить {module_search/search_site/result}
