Файл: adultscript-2.0.3-pro/files/modules/channel/components/browse.php
Строк: 119
<?php
defined('_VALID') or die('Restricted Access!');
class VComponent_channel_browse extends VModule_channel
{
public function __construct()
{
parent::__construct();
}
public function render()
{
$args = $this->get_query();
$letter = $args['letter'];
$order = $args['order'];
$page = $args['page'];
$url = ($letter != 'all') ? 'channels/'.$letter.'/' : 'channels/';
if ($order != 'recent' or $page > 1) {
$url .= $order.'/';
}
if ($page > 1) {
$url .= $page.'/';
}
if (!VUri::match($url)) {
VModule::load('404', true);
}
VLanguage::load('frontend.channel');
$sql = "SELECT channel_id, name, slug, thumb,
total_videos, total_likes, total_votes
FROM #__channel";
$sql_count = "SELECT COUNT(*) AS total_channels
FROM #__channel";
$sql_delim = " WHERE";
$letter_name = '';
if ($letter != 'all') {
$sql .= $sql_delim." slug LIKE '".$letter."%'";
$sql_count .= $sql_delim." slug LIKE '".$letter."%'";
$sql_delim = " AND";
$letter_name = ' '.__('with-letter', array(strtoupper($letter)));
}
$order_name = '';
if ($order == 'recent') {
$sql .= " ORDER BY add_time DESC";
$order_name = __('recent');
} elseif ($order == 'popular') {
$sql .= " ORDER BY total_likes+total_subscribers DESC";
$order_name = __('popular');
} elseif ($order == 'videos') {
$sql .= " ORDER BY total_videos DESC";
$order_name = __('most-videos');
}
$total_channels = $this->db->get_field($sql_count, 'total_channels');
$pagination = VPagination::get($page, $total_channels, VF::cfg_item('module.channel.channels_per_page'));
$channels = $this->db->get_rows($sql.' LIMIT '.$pagination['limit']);
$page_name = ($page > 1) ? ' - '.__('page').' '.$page : '';
$this->tpl->menu = 'channel';
$this->tpl->css = array(TPL_REL.'/css/style_channel.css');
$this->tpl->title = $order_name.' '.__('channels').$letter_name;
$this->tpl->meta_title = $this->tpl->title.$page_name.' - '.VF::cfg_item('site_name');
$this->tpl->meta_desc = $this->tpl->title.$page_name.'. '.VF::cfg_item('meta_desc');
$this->tpl->meta_keys = '';
$this->tpl->canonical = BASE_URL.'/'.$url;
$this->tpl->canonicalm = MOBILE_URL.'/'.$url;
$this->tpl->order = $order;
$this->tpl->letter = $letter;
$this->tpl->page = $page;
$this->tpl->channels = $channels;
$this->tpl->pagination = $pagination;
$this->tpl->load(array('header', 'channel_browse', 'footer'));
$this->tpl->display();
}
protected function get_query()
{
$options = array(
'order' => 'recent',
'letter' => 'all',
'page' => 1,
'clean' => false
);
$query = array_slice(VUri::query(), 1);
$orders = array('recent' => 1, 'videos' => 1, 'popular' => 1, 'name' => 1);
$letters = range('a', 'z');
$arg = (isset($query['0']) && $query['0'] != '') ? $query['0'] : null;
if (isset($arg) && strlen($arg) === 1 && ctype_alpha($arg)) {
$options['letter'] = $arg;
array_shift($query);
}
$arg = (isset($query['0']) && $query['0'] != '') ? $query['0'] : null;
if (isset($arg)) {
if (isset($orders[$arg])) {
$options['order'] = $arg;
array_shift($query);
} else {
VModule::load('404', true);
}
}
$arg = (isset($query['0']) && $query['0'] != '') ? $query['0'] : null;
if (isset($arg)) {
if (ctype_digit($arg)) {
$options['page'] = (int) $arg;
} else {
VModule::load('404', true);
}
} else {
$options['clean'] = true;
}
if ($options['page'] === 0) {
VModule::load('404', true);
}
return $options;
}
}
function build_url($order = '', $letter = '', $page = 1)
{
$url = RELATIVE_URL.'/channels/';
if ($letter != '' && $letter != 'all') {
$url .= $letter.'/';
}
if ($order != 'recent' or $page > 1 or $page === true) {
$url .= $order.'/';
}
if ($page === true) {
$url .= '#PAGE#/';
} elseif ($page !== 1) {
$url .= $page.'/';
}
return $url;
}