Re: [Релиз] Разработка расширения "Developer Helper"
1. Добавлен фильтр контроллера, чтобы предотвратить передачу "неправильных" параметров. По-умолчанию включен фильтр параметра id, он должен быть типа int.
Фильтр устанавливается в конструкторе контроллера:
$this->set_filter(array(
'id' => 'int',
'param_name2' => 'bool',
'param_name3' => 'float',
'param_name4' => 'string',
'param_name5' => 'array',
'param_name6' => 'object'
));Если будет запрос вида r=my_extension/controller/action/id/test
то фильтр его не пропустит, т.к. для id ожидается тип int
Возможна установка одиночного фильтра без передачи массива:
$this->set_filter( 'id', 'string');2. Добавлена функция генерирования пажинации в App.
Теперь вместо кода:
$forum_page['num_pages'] = ceil(($cur_topic['num_replies'] + 1) / $forum_user['disp_posts']);
$forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
$forum_page['start_from'] = $forum_user['disp_posts'] * ($forum_page['page'] - 1);
$forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_posts']), ($cur_topic['num_replies'] + 1));можно вызвать например:
App::paginate($total_count, $items_per_page, App::$forum_url['topic']);3. В контроллер добавлена функция проверки токена. Например если мы делаем простейшую операцию типа выхода, мы добавляем токен в параметры GET.
Для таких случаев сделана функция
$this->_check_csrf_token($generated_token)Добавляем токен к ссылке, а потом при обработке сверяем свое сгенерированное значение $generated_token с тем которое прислали.