Вход Регистрация
Файл: share/sys/classes/share.class.php
Строк: 81
<?php
/**
 * Закладки
 */
class share{
    
/**
     *
     * @var int ID закладки 
     */
    
private $id ;
    
/**
     *
     * @var array Массив для хранения данных закладки 
     */
    
private $data ;
    
/**
     *
     * @var object Объект для работы с анкетой автора 
     */
    
public $ank ;
    
/**
     *
     * @var array Массив для хранения ключей которые необходимо обновить
     */
    
private $update = array() ;
    
    public function 
__construct($id) {
        
$this->id = $id ;
        
$this->data = $this->getData() ; // получаем данные закладки
        
$this->ank = new user($this->id_user) ; // данные анкеты
    
}
    
/**
     * 
     * @return array возвращаем данные закладки
     */
    
private function getData(){
        
$q = DB::me()->prepare("SELECT * FROM `share` WHERE `id` = ? LIMIT 1") ;
        
$q->execute(Array($this->id)) ;
        return 
$q->fetch() ;
    }
    
/**
     * 
     * @global object $dcms настройки сайта
     * @param int $web раширение скриншота для пользователей ПК
     * @param int $wap раширение скриншота для остальных
     * @return string путь к скриншоту
     */
    
public function image($web = 240, $wap = 64){
        global 
$dcms ;
        
$size = $dcms->browser_type == 'full' ? $web : $wap ;
    if(
$screen = $this->getScreen()){
            return 
$screen->getScreen($size, 0) ;
    }
    }
    
/**
     * 
     * @param int $size расширение скриншота
     * @return string путь к скриншоту
     */
    
private function getScreen(){
    
$file_name = $this->id . '.jpeg' ;
    
$file_path = SHARE_SCREEN . $this->id_user ;
    
$file_dir = new files($file_path);
        if(!
$file_dir->is_file($file_name)){
            
$file_path = SHARE_SCREEN ;
            
$file_name = 'default.png' ;
            
$this->copyScreen() ;
        }
        
        return 
$file = new files_file($file_path, $file_name) ;
    }
    
/**
     * копируем скриншот если его нету
     */
    
private function copyScreen(){
        if(!
is_dir(SHARE_SCREEN . $this->id_user)){
            
filesystem::mkdir(SHARE_SCREEN . $this->id_user) ;
        }
        @
copy('http://mini.s-shot.ru/1024x768/JPEG/1024/Z100/?' . $this->url, SHARE_SCREEN . $this->id_user . '/' . $this->id . '.jpeg') ;
    }
    
/**
     * 
     * @return boolean удаляем скриншот
     */
    
private function deleteScreen(){
        
$screen = $this->getScreen() ;
        if(
$screen->runame == 'default.png')
            return 
false ;
        return 
$screen->delete() ;
    }
    
/**
     * Обновляем скриншот
     */
    
public function updateScreen(){
        
$this->deleteScreen() ; // удалили скриншот
        
$this->copyScreen() ; // загрузили новый
    
}
    
/**
     * обновляем данные закладки
     */
    
private function update(){
        foreach(
$this->update AS $k => $v){
            
$q = DB::me()->prepare("UPDATE `share` SET `$k` = ? WHERE `id` = ? LIMIT 1") ;
            
$q->execute(Array($v, $this->id)) ;
        }
    }
    
/**
     * Разрешает доступ над управлением закладки
     * @global object $user
     */
    
public function onlyMy(){
        global 
$user ;
        if(!
$this->id)
            return 
false ;
        if(
$this->id_user != $user->id)
            return 
false ;
        return 
true ;
    }
    
/**
     * Удаляем закладку
     */
    
public function delete(){
        
$this->deleteScreen() ; // удалили скриншот
        
$q = DB::me()->prepare("DELETE FROM `share` WHERE `id` = ? LIMIT 1") ;
        
$q->execute(Array($this->id)) ;
    }
    public function 
__set($k, $v){
        if(isset(
$this->data[$k])){
            
$this->update[$k] = $v ;
            return 
$this->data[$k] = $v ;
        }
    }
    public function 
__get($name){
        return 
$this->data[$name] ;
    }
    public function 
__destruct() {
        
$this->update() ;
    }
}
Онлайн: 1
Реклама