Файл: adultscript-2.0.3-pro/files/modules/video/components/category.php
Строк: 138
<?php
defined('_VALID') or die('Restricted Access!');
class VComponent_video_category extends VModule_video
{
public function __construct()
{
parent::__construct();
}
public function render()
{
$args = $this->get_query(true);
$slug = $args['slug'];
$order = $args['order'];
$timeline = $args['timeline'];
$page = $args['page'];
$url = $slug.'/';
if ($order != 'recent' or $timeline or $page > 1) {
$url .= $order.'/';
}
if ($timeline) {
$url .= $timeline.'/';
}
if ($page > 1) {
$url .= $page.'/';
}
if (!VUri::match($url)) {
VModule::load('404', TRUE);
}
$categories = $this->get_video_categories();
foreach ($categories as $category) {
if ($slug == $category['slug']) {
$cat_id = (int) $category['cat_id'];
$name = ' '.$category['name'];
$desc = $category['description'];
$title = $category['name'];
$meta_title = $category['meta_title'];
$meta_desc = $category['meta_desc'];
$meta_keys = $category['meta_keys'];
break;
}
if (isset($category['subcategories'])) {
foreach ($category['subcategories'] as $subcategory) {
if ($slug == $subcategory['slug']) {
$cat_id = (int) $subcategory['cat_id'];
$name = ' '.$subcategory['name'];
$desc = $subcategory['description'];
$title = $category['name'];
$meta_title = $category['meta_title'];
$meta_desc = $category['meta_desc'];
$meta_keys = $category['meta_keys'];
break;
}
}
}
}
if (!isset($cat_id)) {
VModule::load('404', true);
}
VLanguage::load('frontend.video');
$sql_count = 'SELECT COUNT(*) AS total_videos
FROM #__video_category AS c
INNER JOIN #__video AS v ON (v.video_id = c.video_id AND v.status = 1)
WHERE c.cat_id = '.$cat_id;
$sql = 'SELECT v.video_id, v.title, v.slug, v.rating, v.rated_by, v.duration, v.thumb,
v.thumbs, v.total_views, v.add_time, v.ext, v.hd, v.premium, v.likes,
u.username
FROM #__video_category AS vc
INNER JOIN #__video AS v ON (v.video_id = vc.video_id AND v.status = 1)
INNER JOIN #__user AS u ON (u.user_id = v.user_id)
WHERE vc.cat_id = '.$cat_id;
$time_name = '';
if ($timeline) {
switch ($timeline) {
case 'today':
$start_time = strtotime('today');
$end_time = $start_time+86400;
$sql .= " AND v.add_time > ".$start_time." AND v.add_time < ".$end_time;
$sql_count .= " AND v.add_time > ".$start_time." AND v.add_time < ".$end_time;
$time_name = __('todays').' ';
break;
case 'yesterday':
$start_time = strtotime('yesterday');
$end_time = $start_time+86400;
$sql .= " AND v.add_time > ".$start_time." AND v.add_time < ".$end_time;
$sql_count .= " AND v.add_time > ".$start_time." AND v.add_time < ".$end_time;
$time_name = __('yesterdays').' ';
break;
case 'week':
$now = time();
$start_time = (date('w', $now) === 1) ? strtotime('today', $now) : strtotime('last Monday', $now);
$sql .= " AND v.add_time > ".$start_time;
$sql_count .= " AND v.add_time > ".$start_time;
$time_name = __('this-weeks').' ';
break;
case 'month':
$start_time = strtotime('first day of '.date('F Y'));
$sql .= " AND v.add_time > ".$start_time;
$sql_count .= " AND v.add_time > ".$start_time;
$time_name = __('this-months').' ';
break;
case 'year':
$start_time = strtotime('first day of '.date('Y'));
$sql .= " AND v.add_time > ".$start_time;
$sql_count .= " AND v.add_time > ".$start_time;
$time_name = __('this-years').' ';
break;
}
}
if (VModule::enabled('premium') && VF::cfg_item('module.premium.browse_premium') == '0') {
$sql .= " AND v.premium = '0'";
$sql_count .= " AND v.premium = '0'";
}
switch ($order) {
case 'recent':
$sql .= ' ORDER BY v.add_time DESC';
$order_name = __('most-recent');
break;
case 'popular':
$sql .= ' ORDER BY v.total_views DESC';
$order_name = __('popular');
break;
case 'discussed':
$sql .= ' ORDER BY v.total_comments DESC';
$order_name = __('most-discussed');
break;
case 'rated':
$sql .= ' ORDER BY (v.rating+v.rated_by) DESC';
$order_name = __('top-rated');
break;
case 'downloaded':
$sql .= ' ORDER BY v.total_downloads DESC';
$order_name = __('most-downloaded');
break;
case 'longest':
$sql .= ' ORDER BY v.duration DESC';
$order_name = __('longest');
break;
case 'watched':
$sql .= ' ORDER BY v.view_time DESC';
$order_name = __('being-watched');
break;
}
$total_videos = $this->db->get_field($sql_count, 'total_videos');
$pagination = VPagination::get($page, $total_videos, VCfg::get('video.browse_per_page'));
$sql = $sql.' LIMIT '.$pagination['limit'];
$videos = array();
if (!$videos = $this->cache->get($sql, 3600)) {
$this->db->query($sql);
if ($this->db->affected_rows()) {
$videos = $this->db->fetch_rows();
$this->cache->store($sql, $videos, 3600);
}
}
// lets do some SEO here
$time_name = ($time_name != '') ? $time_name.' ' : '';
$page_name = ($page > 1) ? ' - '.__('page').' '.$page : '';
$site_name = VF::cfg_item('site_name');
$this->tpl->title = __('browse-title', array($time_name.$order_name.$name, ''));
$this->tpl->meta_title = ($meta_title != '')
? vsprintf($meta_title, array($time_name.$order_name, $page_name, $site_name))
: __('browse-meta-title', array($time_name.$order_name.$name, $page_name, $site_name));
$this->tpl->meta_desc = ($meta_desc != '')
? vsprintf($meta_desc, array($time_name.$order_name, $site_name))
: __('browse-meta-title', array($time_name.$order_name.$name, $page, $site_name)).' '.VF::cfg_item('meta_desc');
$this->tpl->meta_keys = ($meta_keys != '') ? $meta_keys : utf8_strtolower($name).', '.VF::cfg_item('meta_keys');
$this->tpl->canonical = BASE_URL.'/'.$url;
$this->tpl->canonicalm = MOBILE_URL.'/'.$url;
if ($page > 1) {
$sort = '';
if ($order != 'recent' or $page > 2 or $timeline) {
$sort = $order;
}
$this->tpl->prev_url = build_url($sort, $timeline, $slug, $page-1);
}
if ($page < $pagination['total_pages']) {
$this->tpl->next_url = build_url($order, $timeline, $slug, $page+1);
}
$this->tpl->menu = 'video';
$this->tpl->slug = $slug;
$this->tpl->cat_id = $cat_id;
$this->tpl->order = $order;
$this->tpl->timeline = $timeline;
$this->tpl->tag = null;
$this->tpl->name = $name;
$this->tpl->desc = $desc;
$this->tpl->page = $page;
$this->tpl->categories = $categories;
$this->tpl->videos = $videos;
$this->tpl->pagination = $pagination;
$this->tpl->load(array('header', 'video_browse', 'footer'));
$this->tpl->display();
}
}