Файл: 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() ;
}
}