Вход Регистрация
Файл: adultscript-2.0.3-pro/files/templates/defboot/extend/ajax/video_related.plugin.php
Строк: 86
<?php
function ajax_plugin_video_related()
{
    
$data = array('status' => 0'code' => '''msg' => '''debug' => '''end' => 0);
    
    if (isset(
$_POST['video_id']) && isset($_POST['page'])) {
          
$video_id   = (int) $_POST['video_id'];
        
$page       = (int) $_POST['page'];

        
$db VF::factory('database');
        
$db->query("SELECT v.title, GROUP_CONCAT(DISTINCT vt.name) AS tags
                    FROM #__video AS v
                    INNER JOIN #__video_tags AS vt ON (vt.video_id = v.video_id)
                    WHERE v.video_id = "
.$video_id."
                    AND v.status = 1
                    GROUP BY v.video_id
                    LIMIT 1"
);
        if (
$db->affected_rows()) {
            
VLanguage::load('frontend.video');
            
            
$video  $db->fetch_assoc();
            
$limit  VCfg::get('video.related_per_page');
            
$start  = ($page === 1) ? : ($page*$limit);
            
$query  = (VCfg::get('video.related_method') == 'simple')
                    ? 
get_related_simple($video_id$video['title'], $start$limit)
                    : 
get_related_complex($video_id$video['tags'], $start$limit);

            
$related_total  $query['total'];
            if (
$related_total VCfg::get('video.related_total')) {
                
$related_total VCfg::get('video.related_total');
            }

            
$related        $db->get_rows($query['sql']);
            
$pagination     VPagination::get($page$related_total$limit);
            
            
$hd_trans        __('hd').' ';
            
$code            = array();
            foreach (
$related as $video) {
                  
$percent     = ($video['likes'] > && $video['rated_by']) ? round($video['likes']*100/$video['rated_by']) : 100;
                  
$class        = ($percent 50) ? 'up' 'down';
                  
$views        = ($video['total_views'] == '1') ? __('view') : __('views');
                  
$hd            = ($video['hd']) ? $hd_trans '';
            
                  
$code[]    = '<li id="video-'.$video['video_id'].'">';
                
$code[]    = '<div class="video">';
                
$code[]    = '<a href="'.REL_URL.'/'.$video['video_id'].'/'.$video['slug'].'/" title="'.e($video['title']).'" class="thumbnail">';
                
$code[]    = '<img src="'.THUMB_URL.'/'.path($video['video_id']).'/'.$video['thumb'].'.jpg" alt="'.e($video['title']).'" id="preview-'.$video['video_id'].'-'.$video['thumb'].'-'.$video['thumbs'].'-related" />';
                
$code[]    = '<span class="video-rating"><i class="fa fa-lg fa-thumbs-'.$class.'"></i>'.$percent.'%</span>';
                
$code[]    = '<span class="video-title">'.e($video['title']).'</span>';
                
$code[]    = '<span class="video-overlay badge transparent">'.$hd.VDate::duration($video['duration']).'</span>';
                
$code[]    = '<div class="video-details hidden-xs hidden-sm">';
                
$code[]    = '<span class="pull-left">'.VDate::nice($video['add_time']).'</span>';
                
$code[]    = '<span class="pull-right text-right">'.$video['total_views'].' '.$views.'</span>';
                
$code[]    = '</div>';
                
$code[]    = '</a>';
                
$code[]    = '</div>';
                
$code[]    = '</li>';
            }
            
            
$data['status']    = 1;
            
$data['code']    = implode(''$code);
            
$data['page']    = $page+1;
            
            if (
$related_total <= $limit*$page) {
                  
$data['end']    = 1;
            }
        } else {
            
$data['msg']    = 'Invalid video!';
        }
    } else {
          
$data['msg']    = 'Invalid request!';
    }
    
    return 
json_encode($data);
}

function 
get_related_simple($video_id$title$start$limit)
{
    
$db         VF::factory('database');
    
$title      $db->escape($title);
    
$sql_count  "SELECT COUNT(*) AS total_related
                   FROM #__video AS v
                   WHERE MATCH (v.title) AGAINST ('"
.$title."')
                   AND v.status = 1"
;
    return array(
        
'total' => $db->get_field($sql_count'total_related'),
        
'sql'   => "SELECT v.video_id, v.title, v.slug, v.likes, v.rating, v.rated_by, v.duration, v.thumb,
                           v.thumbs, v.total_views, v.add_time, v.ext, v.premium, u.username, v.hd,
                           MATCH (v.title) AGAINST ('"
.$title."') AS relevance
                    FROM #__video AS v
                    LEFT JOIN #__user AS u ON (u.user_id = v.user_id)
                    WHERE MATCH (v.title) AGAINST ('"
.$title."')
                    AND v.status = 1
                    AND v.video_id != "
.$video_id."
                    ORDER BY relevance DESC
                    LIMIT "
.$start.",".$limit
    
);
}

function 
get_related_complex($video_id$tags$start$limit)
{
    
VF::load('sphinxapi.sphinxapi');
    
$sphinx     = new SphinxClient();
    
$sphinx->SetServer(VF::cfg_item('sphinx_host'), VF::cfg_item('sphinx_port'));
    
$sphinx->SetConnectTimeout(1);
    
$sphinx->SetFieldWeights(array('tags' => 100'title' => 70'description' => 30));
    
$sphinx->SetMatchMode(SPH_MATCH_ANY);
    
$sphinx->SetFilter('video', array($video_id), true);
    
$sphinx->SetLimits($start$limit1000);

    
$tags       str_replace(','' 'VText::truncate_words($title40''));
    
$results    $sphinx->Query($tagsVF::cfg_item('sphinx_index'));

    if (isset(
$results['total']) && isset($results['matches'])) {
        
$ids    implode(','array_keys($results['matches']));
        return array(
            
'total' => $results['total'],
            
'sql'   => 'SELECT v.video_id, v.title, v.slug, v.likes, v.rating, v.rated_by, v.duration, v.thumb,
                               v.thumbs, v.total_views, v.add_time, v.ext, v.premium, u.username, v.hd
                        FROM #__video AS v
                        LEFT JOIN #__user AS u on (u.user_id = v.user_id)
                        WHERE v.video_id IN ('
.$ids.')
                        ORDER BY FIELD (v.video_id, '
.$ids.')'
        
);
    }

    return array(
'total' => 0'sql' => FALSE);
}
Онлайн: 0
Реклама