Вход Регистрация
Файл: sys/inc/classes/class.DB_Friends.php
Строк: 63
<?php 

class DB_Friends 
{
    public 
$args = array(); 
    public 
$paged 1
    public 
$pages 1
    public 
$total 0
    public 
$request ''
    public 
$items

    public function 
__construct($args = array()) 
    {
        
$set get_settings(); 

        if (!isset(
$args['p_str'])) {
            
$args['p_str'] = $set['p_str']; 
        }

        if (!isset(
$args['paged'])) {
            
$args['paged'] = get_paged(); 
        }

        if (!isset(
$args['order'])) {
            
$args['order'] = 'DESC'
        }

        if (!isset(
$args['orderby'])) {
            
$args['orderby'] = 'id'
        }

        
$this->paged $args['paged']; 

        
$this->args array_merge($this->args$args); 
        
$this->query($this->args); 
    }

    public function 
query($args
    {
        if (!isset(
$args['status'])) {
            
$args['status'] = 'friends'
        }

        
$SQLConst['%select%'] = "user.id"
        
$SQLConst['%join%'] = "LEFT JOIN user ON (friends.friend_id = user.id)";

        
$where = array(); 

        if (isset(
$args['friend_id'])) {
            
$where[] = "(user.friend_id IN(" $args['friend_id'] . "))"
        }

        
// Друзья
        
if ($args['status'] == 'friends') {
            
$where[] = "(friends.user_id = '" $args['user_id'] . "' AND friends.status = '1')"
        }

        
// На кого подписан
        
if ($args['status'] == 'subscriptions') {
            
$where[] = "(friends.user_id = '" $args['user_id'] . "' AND friends.status IN('0', 2))"
        }

        
// Подписчики
        
if ($args['status'] == 'subscribers') { 
            
$SQLConst['%join%'] = "LEFT JOIN user ON (friends.user_id = user.id)";
            
$where[] = "(friends.friend_id = '" $args['user_id'] . "' AND friends.status IN('0', 2))"
        }

        
// Заявки в друзья
        
if ($args['status'] == 'requests') { 
            
$SQLConst['%join%'] = "LEFT JOIN user ON (friends.user_id = user.id)";
            
$where[] = "(friends.friend_id = '" $args['user_id'] . "' AND friends.status = '0')"
        }

        
// Исходящие заявки в друзья
        
if ($args['status'] == 'out_requests') { 
            
$SQLConst['%join%'] = "LEFT JOIN user ON (friends.friend_id = user.id)";
            
$where[] = "(friends.user_id = '" $args['user_id'] . "' AND friends.status = '0')"
        }

        if (isset(
$args['where'])) {
            if (
is_array($args['where'])) { 
                
$where[] = db::get_construct_query_where('friends'$args['where'], ''); 
            } elseif (
is_string($args['where'])) {
                
$where[] = $args['where']; 
            }
        }
        
        
$SQLConst['%where%'] = ($where 'AND ' implode(' AND '$where) : ''); 
        
$SQLConst['%order%'] = "ORDER BY user." $args['orderby'] . " " $args['order']; 
        
        
$SQLConst['%limit%'] = ''
        if (
$args['p_str'] != '-1') {
            
$start  $args['p_str'] * $args['paged'] - $args['p_str'];
            
$SQLConst['%limit%'] = "LIMIT " $start ", " $args['p_str']; 
        }

        
$SQLCount str_replace(array_keys($SQLConst), array_values($SQLConst), "SELECT COUNT(%select%) FROM friends %join% WHERE 1=1 %where%"); 
        
$this->total db::count($SQLCount); 
        if (
$this->total $this->args['p_str']) {
            
$this->pages ceil($this->total $this->args['p_str']); 
        }

        
$SQLSelect str_replace(array_keys($SQLConst), array_values($SQLConst), "SELECT %select% FROM friends %join% WHERE 1=1 %where% GROUP BY user.id %order% %limit%"); 

        
$this->request $SQLSelect

        
$ids_friends db::select($SQLSelect); 

        
$items = array(); 
        foreach(
$ids_friends AS $friend) {
            
$items[] = $friend['id']; 
        }

        
$this->items $items
    }
}
Онлайн: 2
Реклама