Вход Регистрация
Файл: adultscript-2.0.3-pro/files/modules/photo/components/photo.php
Строк: 91
<?php
defined
('_VALID') or die('Restricted Access!');
class 
VComponent_photo_photo extends VModule_photo
{
    public function 
__construct()
    {
        
parent::__construct();
    }
    
    public function 
render()
    {
        
$photo_id     VUri::request(1);
        
$cache_id    'photo_'.$photo_id;
        if (!
$photo $this->cache->get($cache_id3600)) {
            
$this->db->query("SELECT p.photo_id, p.album_id, p.server, p.caption, p.ext,
                                     p.total_views, p.allow_comment, p.total_comments, p.likes,
                                     p.rating, p.rated_by, p.total_favorites, p.description,
                                     a.title, a.slug, a.user_id, a.add_time, a.type, 
                                     a.password, u.username, s.url
                              FROM #__photo AS p
                              LEFT JOIN #__photo_albums AS a ON (a.album_id = p.album_id)
                              LEFT JOIN #__user AS u ON (u.user_id = a.user_id)
                              LEFT JOIN #__photo_servers AS s ON (s.server_id = p.server)
                              WHERE p.photo_id = "
.$photo_id."
                              AND p.status = '1'
                              LIMIT 1"
);
            if (
$this->db->affected_rows()) {
                
$photo $this->db->fetch_assoc();
                
$this->cache->store($cache_id$photo3600);
            } else {
                
VModule::load('404'TRUE);
            }
        }
        
        if (!
VUri::match('photo/'.$photo_id.'/')) {
            
VF::redirect(BASE_URL.'/photo/'.$photo_id.'/');
        }
        
        
VLanguage::load('frontend.photo');
        
        if (
VCfg::get('photo.allow_password')) {
            
$allowed    = (isset($_SESSION['albums']) && isset($_SESSION['albums'][$photo['album_id']])) ? true false;
              if (isset(
$_POST['submit-password']) && !$allowed) {
                  
$password   trim($_POST['password']);
                  if (
VHash::check($password$photo['password'])) {
                      if (!isset(
$_SESSION['albums'])) {
                          
$_SESSION['albums'] = array();
                      }

                      
$_SESSION['albums'][$photo['album_id']] = 1;

                      
$messages[] = __('password-accept');
                      
$allowed    true;
                  } else {
                      
$errors[]   = __('password-invalid');
                  }
              }

            if (
$photo['password'] != '' && !$allowed) {
                  
$this->tpl->menu        'photo';
                  
$this->tpl->css         = array(TPL_REL.'/css/style_photo.css');
                  
$this->tpl->meta_title  $photo['title'].' '.$photo['photo_id'].' - '.$this->tpl->cfg['site_name'];
                  
$this->tpl->meta_desc   $photo['title'].' '.$photo['photo_id'].' - '.$this->tpl->cfg['site_name'];
                  
$this->tpl->errors        $errors;
                  
$this->tpl->load(array('header''photo_view_password''footer'));
                  
$this->tpl->display();
                  exit;
            }
        }
        
        
$album_id    = (int) $photo['album_id'];
        
$ip            VServer::ip(TRUE);
        
$user_id    = (VAuth::loggedin()) ? (int) $_SESSION['user_id'] : 0;
        
$friends    TRUE;
        if (
$photo['type'] == 'private') {
            if (
$user_id) {
                
$owner_id = (int) $photo['user_id'];
                if (
$owner_id !== $user_id) {
                    
$this->db->query("SELECT user_id
                                      FROM #__user_friends
                                      WHERE user_id = "
.$owner_id."
                                      AND friend_id = "
.$user_id."
                                      AND status = 'approved'
                                      LIMIT 1"
);
                    if (!
$this->db->affected_rows()) {
                        
$friends FALSE;
                    }
                }
            } else {
                
$friends FALSE;
            }
        }        
        
        
$prev_photo NULL;
        
$this->db->query("SELECT photo_id
                          FROM #__photo
                          WHERE album_id = "
.$album_id."
                          AND photo_id != "
.$photo_id."
                          AND photo_id < "
.$photo_id."
                          ORDER BY photo_id DESC
                          LIMIT 1"
);
        if (
$this->db->affected_rows()) {
            
$arr        $this->db->fetch_assoc();
            
$prev_photo $arr['photo_id'];
        }
        
        
$next_photo NULL;
        
$this->db->query("SELECT photo_id
                          FROM #__photo
                          WHERE album_id = "
.$album_id."
                          AND photo_id != "
.$photo_id."
                          AND photo_id > "
.$photo_id."
                          ORDER BY photo_id ASC
                          LIMIT 1"
);
        if (
$this->db->affected_rows()) {
            
$arr        $this->db->fetch_assoc();
            
$next_photo $arr['photo_id'];
        }
        
        if (!
VBrowser::get('is_robot')) {
            
$this->db->query("UPDATE #__photo
                              SET total_views = total_views+1
                              WHERE photo_id = "
.$photo_id."
                              LIMIT 1"
);
            
            if (
VCfg::get('photo.track_views')) {
                
$this->db->query("INSERT INTO #__photo_views
                                  SET photo_id = "
.$photo_id.",
                                      user_id = "
.$user_id.",
                                      ip = "
.$ip.",
                                      view_time = "
.time());
            }
        }
        
        if (
VCfg::get('photo.view_comments')) {
            
$this->get_photo_comments($photo_id);
        }
        
        
$this->tpl->menu        'photo';
        
$this->tpl->css            = array(TPL_REL.'/css/style_photo.css');
        
$this->tpl->meta_title    $photo['title'].' '.$photo['photo_id'].' - '.$this->tpl->cfg['site_name'];
        
$this->tpl->meta_desc    $photo['title'].' '.$photo['photo_id'].' - '.$this->tpl->cfg['site_name'];

        
$this->tpl->canonical    BASE_URL.'/photo/'.$photo_id.'/';
        
$this->tpl->canonicalm    MOBILE_URL.'/photo/'.$photo_id.'/';

        
$this->tpl->user_id        $user_id;
        
$this->tpl->friends        $friends;
        
$this->tpl->photo        $photo;
        
$this->tpl->prev_photo    $prev_photo;
        
$this->tpl->next_photo    $next_photo;

        
$this->tpl->load(array('header''photo_view''footer'));
        
$this->tpl->display();
    }
    
    private function 
get_photo_comments($photo_id)
    {
        
$sql_count        "SELECT COUNT(*) AS total_comments
                           FROM #__photo_comments
                           WHERE photo_id = "
.$photo_id."
                           AND status = '1'"
;
        
$total_comments    $this->db->get_field($sql_count'total_comments');
        
$pagination        VPagination::get(1$total_commentsVCfg::get('photo.comments_per_page'));
        
$sql            "SELECT c.comment_id, c.parent_id, c.user_id,
                                  c.comment, c.add_time, c.nickname,
                                  c.likes, c.rated_by,
                                  u.username, u.gender, u.avatar
                           FROM #__photo_comments AS c
                           LEFT JOIN #__user AS u ON (u.user_id = c.user_id)
                           WHERE c.photo_id = "
.$photo_id."
                           AND c.status = '1'
                           ORDER BY c.comment_id DESC
                           LIMIT "
.$pagination['limit'];
        
$cache_id       $sql.$total_comments;
        if (!
$comments $this->cache->get($cache_id3600)) {
            
$this->db->query($sql);
            if (
$this->db->affected_rows()) {
                
$comments $this->db->fetch_rows();
                
$this->cache->store($cache_id$comments3600);
            }
        }
        
        
$this->tpl->comments        $comments;
        
$this->tpl->pagination        $pagination;
        
$this->tpl->total_comments    $total_comments;
    }
}
Онлайн: 1
Реклама