API: Functions (список функций)

$this->outputHTML - используется для вывода основной информации в шаблоне [main] точка вывода основного контента.

<?=$this->outputHTML(function($tpl){$this->get($tpl);})?>

$this->listPosts - используется для вывода информации в шаблонах [short_post, tags], дополняет первоначальный массив полными данными о посте.

<?php
    $this
->listPosts(function($_data){
        
#$_data['files']['индекс массива']      - хранит список файлов;
        #$_data['dopFileds']['индекс массива']  - хранит спиcок дополнительных полей
        #$_data['cat-link']                     - содержит ссылку на категорию
        #$_data['full-link']                    - содержит ссылку на пост 
    
});
?>

<?php foreach( $this->listPosts() as $key=>$value ){ /* do sumthing */ }    ?>

$this->tags - используется для вывода тегов в шаблоне [full_post]

<?php
    $this
->tags(function($tag){
        
#$tag - тег
    
});
?>

$this->files - используется для вывода файлов в шаблоне [static, full_post]

<?php
    $this
->files(function($file){
        
#$file->name - имя файла
        #$file->dir - путь к файлу
    
});
?>

$this->is_home() - возвращает TRUE если главная страница, также возможно использовать $_callback в качестве аргумента функции

<?php
    $this
->is_home(function(){
        
#... do something
    
});
?>

$this->custom($options, $_callback) - возвращает набор данных по указанному шаблону, используя массив настроек $options

Пример использования:
$this->custom(['tpl'=>'custom', 'category'=>[5,3], 'lang'=>'ru', 'limit'=>5, 'order'=>['incr'=>'DESC']])

  • tpl = шаблон для вывода
  • category = список категорий
  • lang = язык страници
  • where = фильтр, пример параметра where=>['status'=>'active']
    Доступные ключи [incr, user_id, count, price, views, rating, status, post_date, date]
  • limit = лимит вывода данных
  • order = сортировка (в случайном порядке Medoo::raw('RAND()') )
  • group = группировка данных
  • return = ВОЗВРАЩАЕТ НАБОР ДАННЫХ В СЛУЧАЕ ЕСЛИ [ return=>true ] УКАЗЫВАТЬ ШАБЛОН tpl НЕ НУЖНО
  • view = указывает представление для запроса данных с бд ( работает только при активированном кешировании систему) Пример: 'view'=>'cache_post' виртуальная таблица содержит минимальные данные о посте
В шаблоне tpl для вывода полученных данных используется массив $this->_custom[]
Чтобы посмотреть ключи массива используйте print_r($this->_custom)
    $this->_custom['cat-link']     - содержит ссылку на категорию
    $this->_custom['full-link']     - содержит ссылку на пост 
    $this->_custom['i']             - счетчик итераций 


$_callback = используется для обработки полученных данных по шаблону $this->custom($options, function(&$data){} ) ;

$this->pagination($options) - используется для вывода нумерации страниц в шаблоне [short_post]

Аргумент $options может быть массивом или же функцией обратного вызова.
Список ключей: $options[selector, total, page, maxVisible]

Примеры использования: <?=$this->pagination(['selector'=>'.short_post'])?>

<?php $this->pagination(function($paging){
        
#$paging['total']
        #$paging['page']
        #$paging['maxVisible']});
?>

$this->autocomplete($options) - используется для автозаполнения формы поиска, используя tags

массив $options имеет следующие параметры.

  • selector = основной элемент в форме заполнения
  • minLength = задает минимальное значение введенных символов, при котором активируеться автозаполнение формы
  • limit = лимит найденных совпадений для автозаполнения
Примеры использования: <?=$this->autocomplete(['selector'=>'#autocomplete''minLength'=>1])?>

$this->Breadcrumb($_callback, $_callbackLast) - Навигационная цепочка

Примеры использования: <?=$this->Breadcrumb(function($chain){
  
# chain - Раздел
})?>


Альтернативный способ ( возврат массива ячеек для обработки в цикле ):
<?php foreach($this->Breadcrumb() as $chain ?>

$_callbackLast = функция обратного вызова для последнего элемента.

$this->chain_post($direction = '', $_callback = null) - Навигационная цепочка постов предыдущий / следующий

Примеры использования:
        <?php
            $this
->chain_post('prev', function($data){
                echo 
'<a href="'.$data['full-link'].'">PREV</a>';
            });
        
?>
        
<?php
            $this
->chain_post('next', function($data){
                echo 
'<a href="'.$data['full-link'].'">NEXT</a>';
            });
        
?>

$direction = направление перемещения.
$_callbackLast = функция обратного вызова для последнего элемента.

$this->StaticPage($options) - получает и возвращает набор данных статической страници, используя массив настроек $options

Пример использования:
<?php $dataPage $this->StaticPage(['name'=>'about''lang'=>'ru'])); ?>

  • name = название страници
  • lang = язык страници
  • in_buffer = в случае указание данного ключа массива, возврата данных не будет они будут храниться в:
    $this->_buffer[ $key=>$options['in_buffer'] ]
Список ключей в массиве $dataPage: [ incr, incr_lang, user_id, tpl, login, name, lang, title, template, status, date, files[] ]

$this->is_cat($cat, $option = null) - возвращает True или другое указанное значение если открытый раздел (категория сайта) = $cat

Пример использования:
<?php $this->is_cat('game''class="active"'?>

  • $cat[] = может испольтзоваться в качестве массива для поиска совпадения $cat['cat1','cat2']
  • $option = не указан = вернет True
  • $option = $val = вернет $val
  • $option = callback = также может выступать в качестве callback функции
  • <?php $this->is_cat() ?> = вернет true если открыт любой раздел сайта
На практике удобно применять для подсветки выбранного раздела.

$this->is_page($page, $option = null) - полный аналог функции $this->is_cat только для статических страниц.

$this->is_fullPost() - Возращает true если ( $this->chpu->options['section'] == 'full_post') Внутренняя страница

$this->is_static() - Возращает true если ( $this->chpu->options['section'] == 'static') Статическая страница

$this->getPostData($option) - возвращает данные post используя в качестве идентификатора incr

Пример использования:
<?php $this->getPostData(['incr'=>1'lang'=>'ru']) ?>

  • incr = уникальный идентификатор для post
  • lang = язык (данный параметр можно не заполнять при этом язык будет взят автоматически)

$this->is_cats_post($option) - возвращает true если указанные категории установлены на данный post в противном случае вернет false

Пример использования:
<?php $this->is_cats_post(['incr'=>1'incr_cats'=>['1','2']]) ?>

  • incr = уникальный идентификатор для post
  • incr_cats = массив категорий

$this->findSubCat($options) - поиск дочерной категории. В случае совпадения вернет массив с дочерними категориями.

Пример использования:
<?php $this->findSubCat(['incr_cats'=>[2,3,4], 'incr_parent'=>1]]) ?>

  • incr_parent = индекс категории родителя для поиска
  • incr_cats = список индексов категорий

$this->friends($options, $_callback = null) - вывод друзей.

Пример использования:
<?php $this->friends(['user_id'=>1'status'=>'active']]) ?>

  • user_id = идентификатор основного пользователя
  • friend_id = идентификатор пользователя друга
  • status = имеет три возможных параметра 'active', 'banned', 'wait'
В данном примере использования функции мы получим массив друзей пользователя user_id котрого равен 1. Также данный массив можно обработать с помощью $_callback функции.

$this->TextMessages($options, $_callback) - вывод текстовых сообщений (коментарии, переписка, сообщения на профиле)

Пример использования:
<?php $this->TextMessages'type'=>'post''pkey'=>1'tpl'=>'comments'
                            
'selector-data'=>'.data-messages''limit'=>20'order'=>'incr DESC',
                            [
'pagination'=>['selector'=>'.text_messages',  'limit_output'=>5],
                                    
'done'=>'$("._showText").click(function(){
                                                $(this).parent().find("._textHide").show();
                                                $(this).hide();
                                            });'
                                    
]);  ?>


$_callback = функция обратного вызова для обработки сообщений, работает только если пагинация не активирована.

  • type = тип сообщения (post, profile, correspondence)
  • pkey = идентификатор для (type) например для post будет incr, для user id
  • tpl = шаблон для вывод
  • selector-data = селектор для вывода данных
  • limit = лимит вывода сообщений, работает в том случае если пагинация не активирована
  • order = сортировка данных
  • pagination = активация Ajax Pagination
  • pagination[selector] = селектор для вывода нумерации страниц
  • pagination[limit_output] = лимит вывода данных на страницу
  • pagination[done] = происходит когда данные от ajax получены

$this->postFullSearch($options, $_callback) - абсолютный поиск постов используя все фильтры (столбцы, доп. поля)

Параметры:
<?php
        $this
->postFullSearch([
                 
'pagination'=>[
                 
'selector'=>'.post-search'
                 
'limit_output'=>10
                
], 
                
                
'fields'=>['incr','title''date'],
                
'conf'=>'_conf',
                
'func'=>'setPostFilter',
                
'data-selector'  =>'.dataFind',
                
'inner-selector' =>'.num_rows',
                
'tpl'=>'dataFind'
                
'limit'=>40,
                
'order'=>['incr'=>'DESC'],
                
'group'=>'incr',
                
'where'=> ['_name'=>'dev']
                
'debug'=>'1'
                'done'
=>''
        
]); 
    
?>


$_callback = функция обратного вызова для обработки сообщений, работает только если пагинация не активирована.

  • pagination = активация Ajax Pagination
  • pagination[selector] = селектор для вывода нумерации страниц
  • pagination[limit_output] = лимит вывода данных на страницу
  • pagination[done] = происходит когда данные от ajax получены
  • fields = поля данных, по умолчанию выводятся все (*)
  • conf = переменная хранящая настройки поиска
  • func = имя функции для установки нового фильтра вывода данных
  • data-selector = селектор для вывода данных
  • inner-selector = селектор для вывода данных внутри блока родителем которого являеться верхний блок [data-selector]
  • limit = лимит вывода данных
  • order = сортировка данных
  • group = группировка данных
  • where = критерии поиска
  • debug = отладка
  • done = срабатывает когда данные получены, для того чтобы можно было навесить javascript обработчики на полученные данные
  • view = указывает представление для запроса данных с бд Пример: 'view'=>'cache_post_full_search' виртуальная таблица содержит минимальные данные о посте
Пример использования:

<div class="dataFind">
<?php
        $this
->postFullSearch([
                 
'pagination'=>[
                 
'selector'=>'.post-search'
                 
'limit_output'=>10
                
], 
                
                
'conf'=>'_conf',
                
'func'=>'setPostFilter',
                
'data-selector'  =>'.dataFind',
                
'inner-selector' =>'.num_rows',
                
'tpl'=>'dataFind',
                
'order'=>'incr DESC',
                
'group'=>'incr',
        ]); 
?>
</div>

Шаблон [dataFind.tpl]

<div class="<?=$options['innerClass']?>" data-total="<?=$options['total']?>">
<?php foreach($options['data'] as $_data): ?>
<?=$_data['title']?>-<?=$_data['date']?>
<?php endforeach; ?>
</div>


Управление фильтром происходит по принципу передачи переменной [conf] значений данных по типу ключ значение, после установки фильтра необходимо вызвать функцию [func]

Пример

Назовем переменную хранящую конфигурацию фильтра [conf] - _conf и функцию для вывода данных по фимльтру [func] - setPostFilter
    <script>
        _conf['where'] = { 'title[~]': 'test' };
        setPostFilter();
    </script>


Это будет в запросе title LIKE '%test%', не пугайтесь ключика [~] это все работает на уровне фреймовка medoo.in для работы с бд, все ключи вы сможете посмотреть в документации данного фрейморка, основные таковы [>] [<] [>=] [<=] [!] [=] . Все просто, вы делаете набор фильтра пример еще раз _conf['where'] = { 'title[~]': 'test', 'incr_cat': [1, 2, 3] } после чего вызываете функцию setPostFilter()

Посмотреть все имена полей можно в представлении v_wst_post_full_search

Поиск используя поля [incr_cats, incr_generals, incr_extras, extra_values]
Структура данных - [ {'AND': [ { '[~]': 101 }, { '[~]': 102 } ] }, {'OR': [ { '[~]': 103 }, { '[~]': 104 } ]} ]
Объект массива - {'AND': [ { '[~]': 101 }, { '[~]': 102 } ] } Разделим его на детали чтобы было понятно,
1: { AND: [] } объект хранящий критерий отбора AND и массив с фильтром.
2: { AND: [ { '[~]': 101 } ] } - элемент массива хранит ключ [~] который указывать по документации фреймворка medoo.in LIKE '%data%', второй вариант ключа [!~] - NOT LIKE '%data%'
PHP example for multi cats: [ 'incr_cats'=> [ 0=>[ 'AND'=>[ 0=>['[~]'=>$cat['incr'] ] ] ] ]
Структура
[incr_extras] => Array ( [0] => Array ( [OR] => Array ( [0] => Array ( [[~]] => 1262 ) ) )

$this->subPosts($options) - возвращает массив ключей подчиненных постов.

Пример использования:
<?php $this->subPosts(['incr_post'=>1'lang'=>'ru']]); ?>

  • incr_post = идентификатор основного поста
  • lang = язык, данный параметр можно не указывать тогда языке будет взят автоматически

$this->retranslate($lang) - формирует и возвращает линк перевода данной страницы на указанной язык.

Пример использования:
<?php $this->retranslate('ru'); ?>

  • lang = язык перевода

$this->moreData($options) - возвращает набор данных используя Ajax запрос по указанному шаблону добавляя их в указанный блок без перезагрузки страницы, используя массив настроек $options

Пример использования:
<?=$this->moreData(['tpl'=>'more''selectorData'=>'#content_more''selectorEvent'=>'#objEvent''begin'=>0'category'=>[237171446], 'limit'=>[05], 'order'=>['incr'=>'DESC'],
                        
'before'=>function(){
                            
// do sumhing
                        
}, 
                        
'after'=>function(){
                            echo 
'if(_status == "no-data"){
                                // do sumhing
                            }'
;
                        }
                    ])
?>


  • selectorData = идентификатор для добавления данных методом append
  • selectorEvent = идентификатор для активация события добавления данных (также примнимает строковое значение - scroll в этом случае загрузка данных будет производиться когда скролл будет находиться в самом нижнем положении)
  • begin = автоматически выполнит при инициализация загрузку данных (данный параметр не обязательный) /li>
  • before, after = обработчики событий до загрузки и после (данные параметры не обязательны)
  • tpl = шаблон для вывода
  • limit = лимит может принимать чсиловое значение указывающее сколько данных подгружать при каждом запросе, в случая использования массива как показано в данном примере можно указать с какого номере начинать загрузку данных
  • category = список категорий
  • lang = язык страницы
  • where = фильтр, пример параметра where=>['status'=>'active']
    Доступные ключи [incr, user_id, count, price, views, rating, status, post_date, date]
  • order = сортировка
  • return=>true = вернет массив в шаблон tpl данные которые храняться в $options['data']
В шаблоне tpl для вывода полученных данных используется массив $this->_custom[]
Чтобы посмотреть ключи массива используйте print_r($this->_custom)
    $this->_custom['cat-link']     - содержит ссылку на категорию
    $this->_custom['full-link']     - содержит ссылку на пост 
    $this->_custom['i']             - счетчик итераций 


Добавления эффектов вывода данных

  • 'effect'=>['selector'=>'.col-md-3', 'fadeIn'=>'slow']
  • 'effect'=>['selector'=>'.col-md-3', 'fadeIn'=>5000]
  • 'effect'=>['selector'=>'.col-md-3', 'show'=>'slow']
  • 'effect'=>['selector'=>'.col-md-3', 'show'=>5000]
Спец. ключ для работы по таблице файлов

  • 'table'=>'post_files'

$this->getFile($optins, bool) - возвращает объект данных файла используя $options['type'], в случае если bool = true вернет массив данных файла.

Пример использования ($arr['files'] должен содержать массив с ключом dir для каждого элемента):
<?=$this->getFile(['files'=>$arr['files'], 'type'=>'big'])->dir?>

  • type = принимает два типа big - самый большей файл, small - маленький
  • imgsize = принимает два ключа width - ширина картинки, height - высота картинки
  • bool = если true то функция вернет массив с ключами ['name', 'dir']
  • position = возвращает файл по номеру позиции файла

Альтернативный пример использования:
<?=$this->getFile(['files'=>$arr['files'], 'type'=>'big'], true)['dir']?>

$this->getCurrency($sign) - возвращает массив данных указанной валюты.

Пример использования:
<?=$this->getCurrency($sign)['Доступный ключ данных']?>

  • sign = для вывода основной валюты используйте значение main
  • Ключи данных [sign, name, rate, main]

$this->getPrice($options) - возвращает цену исходя из курса к основной валюте.

Пример использования:
<?=$this->getCurrency(['sign'=>'$''money'=>28'round'=>2])?>

  • sign = знак валюты
  • money = сумма
  • round = округление

$this->is_chpu($options) - возвращает значение если ЧПУ соответствует заданным критериям.

Пример использования:
<?=$this->is_chpu(['chpu'=>['contect''about'], 'val'=>'<h1>WORK WORK Value</h1>''do'=>'<h1>DONT FIND!</h1>' ]);?>

  • chpu = принимает массив ЧПУ для сверки
  • home = устанавливает значение для главной страницы
  • val = возвращаемое значение в случае нахождения ЧПУ
  • do = выполняется в случае если ни одного совпадения по ЧПУ не найдено ( данный параметр можно не использовать )

Второй пример использования:
<?=$this->is_chpu(['chpu'=>['contect'=>'<h1>YES GOOD</h1>''about'=>'ITS WORK'], 'do'=>'<h1>DONT FIND!</h1>' ]);?>

В данном примере значение устанавливается непосредственно на ЧПУ без использования ключа [ val ]

$this->getSubCats($incrParent) - возвращает массив номеров подчинённых категорий

Пример использования:
<?php $this->getSubCats($incrParent); ?>

  • incrParent = номер родительской категории

$this->getLink($options) - возвращает ЧПУ исходя из родительской категории

Пример использования:
<?=$this->getLink(['incr_parent'=>40'incr_cats'=>[474477461]]);?>

  • incr_parent = номер родительской категории
  • incr_cats = массив категорий

$this->getCatData($options)) - возвращает данные категории

Пример использования:
<?=$this->getCatData(['incr_cats'=>[1,2,3]]));?>

  • incr_cats = массив категорий

$this->is_groupPage($options) - возвращает true или false при проверки группы на статической странице

Пример использования:
<?php if($this->is_groupPage(['incr'=>1])) { /* do sumthing */ ?>

  • incr = номер группы
  • incr[] = принимает массив и ищет совпадение в массиве номеров
  • name = имя группы

$this->getCatTree($options) - возвращает дерево категорий

Пример использования:
<?=$this->getCatTree(['parent'=>function($key$cat$next){
        return 
'<li>'.$key.'<ul>'.$next.'</ul> </li>';
    }, 
    
'child'=>function($key$cat){
        return 
'<li>'.$key.'</li>';
    }
'from'=>'catName''to'=>'catName']); ?>


  • parent = калбек функция для обработки вывода родителя
  • child = калбек функция для обработки дочернего элемента
  • from (не обязательный параметр) = вывод категории начиная с текущей
  • to (не обязательный параметр) = вывод категории до текущей

$this->hasGroupPostAccess($incrGroup, $user_id) - возвращает true если у пользователя есть группа доступка к файлу

Пример использования:
<?=$this->hasGroupPostAccess($incrGroup$_SESSION['id']);?>

  • incrGroup = группа доступа к файлу
  • user_id = ID пользователя

$this->genPagination($opt) - возвращает массив страниц

Пример использования:
<?=$this->genPagination(['prev'=>2'count'=>10]) ;?>

  • prev = Количестве предыдущих страниц
  • count = Количество страниц на вывод включая (prev - страницы)

$this->groupFiles($files, $typeArray = false) - возвращает сгруппированные файлы по расширению, отдельно собирая картинки в [image]

Пример использования:
<?=$this->groupFiles($this->dataPage['files']) ;?>

  • files = Массив файлов в посте
  • typeArray = Вывод данных в массиве

$this->filterDopFields($data, $filter = []) - возращает массив доп полей по фильтру

Пример использования:
<?=$this->filterDopFields($data['dopFields'], ['incr_general'=>1]) ;?>

  • data = массив доп. полей
  • filter = массив фильтр