chevereto-free/app/routes/route.search.php

117 lines
3.5 KiB
PHP
Raw Normal View History

2016-08-18 20:39:31 +00:00
<?php
/* --------------------------------------------------------------------
Chevereto
http://chevereto.com/
@author Rodolfo Berrios A. <http://rodolfoberrios.com/>
<inbox@rodolfoberrios.com>
Copyright (C) Rodolfo Berrios A. All rights reserved.
BY USING THIS SOFTWARE YOU DECLARE TO ACCEPT THE CHEVERETO EULA
http://chevereto.com/license
--------------------------------------------------------------------- */
$route = function($handler) {
try {
$logged_user = CHV\Login::getUser();
if(!CHV\getSetting('website_search') && !$logged_user['is_admin']) {
return $handler->issue404();
}
if($_POST and !$handler::checkAuthToken($_REQUEST['auth_token'])) {
$handler->template = 'request-denied';
return;
}
if($handler->isRequestLevel(4)) return $handler->issue404(); // Allow only 3 levels
if(empty($handler->request[0])) {
return $handler->issue404();
}
// User status override redirect
CHV\User::statusRedirect($logged_user['status']);
// Valid search type
if(!in_array($handler->request[0], ['images', 'albums', 'users'])) {
return $handler->issue404();
}
// Build search params
$search = new CHV\Search;
$search->q = $_REQUEST['q'];
$search->type = $handler->request[0];
$search->request = $_REQUEST;
$search->requester = CHV\Login::getUser();
$search->build();
if(!G\check_value($search->q)) {
return G\redirect();
}
$safe_html_search = G\safe_html($search->display);
try {
/*** Listing ***/
$list_params = CHV\Listing::getParams(); // Use CHV magic params
$list = new CHV\Listing;
$list->setType($search->type);
$list->setOffset($list_params['offset']);
$list->setLimit($list_params['limit']); // how many results?
$list->setItemsPerPage($list_params['items_per_page']); // must
$list->setSortType($list_params['sort'][0]); // date | size | views
$list->setSortOrder($list_params['sort'][1]); // asc | desc
$list->setWhere($search->wheres);
$list->setRequester(CHV\Login::getUser());
foreach($search->binds as $k => $v) {
$list->bind($v['param'], $v['value']);
}
$list->output_tpl = $search->type;
$list->exec();
} catch(Exception $e) {} // Silence to avoid wrong input queries
2017-11-09 19:02:18 +00:00
$tabs = CHV\Listing::getTabs([
'listing' => 'search',
'basename' => 'search',
'params' => ['q' => $safe_html_search['q'], 'page' => '1'],
'params_remove_keys' => ['sort'],
]);
foreach($tabs as $k => &$v) {
$v['current'] = $v['type'] == $search->type;
2016-08-18 20:39:31 +00:00
}
// _s() must be bind in this way for the PO grabber
switch($search->type) {
case 'images':
$meta_description = _s('Image search results for %s');
break;
case 'albums':
$meta_description = _s('Album search results for %s');
break;
case 'users':
$meta_description = _s('User search results for %s');
break;
}
$handler::setVar('pre_doctitle', _s('Search'));
$handler::setVar('meta_description', sprintf($meta_description, $safe_html_search['q']));
//$handler::setVar('meta_keywords', NULL);
$handler::setVar('search', $search->display);
$handler::setVar('safe_html_search', $safe_html_search);
$handler::setVar('tabs', $tabs);
$handler::setVar('list', $list);
if($logged_user['is_admin']) {
$handler::setVar('user_items_editor', false);
}
} catch(Exception $e) {
G\exception_to_error($e);
}
};