<?php
/**
* СодеÑÐ¶Ð¸Ñ ÐºÐ»Ð°ÑÑ FileSystemObject
*
* @package energine
* @subpackage core
* @author dr.Pavka
* @copyright ColoCall 2006
* @version $Id: FileSystemObject.class.php,v 1.9 2007/12/17 14:16:03 pavka Exp $
*/
//require_once('core/framework/DBWorker.class.php');
/**
* ÐбÑÑÑакÑнÑй клаÑÑ - Ð¼Ð¾Ð´ÐµÐ»Ñ Ð¾Ð±ÑекÑа Ñайловой ÑиÑÑемÑ
*
* @package energine
* @subpackage core
* @abstract
*/
abstract class FileSystemObject extends DBWorker {
/**
* Файл ÑвлÑеÑÑÑ Ð¿Ð°Ð¿ÐºÐ¾Ð¹
*
*/
const IS_FOLDER = 0;
/**
* Файл - изобÑажение
*
*/
const IS_IMAGE = 1;
/**
* Файл
*
*/
const IS_FILE = 2;
/**
* ÐÐ¼Ñ ÑаблиÑÑ Ð² коÑоÑой Ñ
ÑаниÑÑÑ Ð¼ÐµÑа опиÑÐ°Ð½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸
*
*/
const TABLE_NAME = 'share_uploads';
/**
* ÐолнÑй пÑÑÑ Ðº ÑайлÑ
*
* @var string
* @access private
*/
private $path;
/**
* ÐÐ¼Ñ Ð¿Ð°Ð¿ÐºÐ¸
* ÐÑли ÑÑÑеÑÑвÑÐµÑ Ð¾Ð¿Ð¸Ñание в ÐÐ - беÑеÑÑÑ Ð¸Ð· нее, еÑли неÑ. Ñо из $this->path
*
* @var string
* @access private
*/
private $name;
/**
* ÐаннÑе пÑиÑоединеннÑе к ÑайлÑ
*
* @var mixed
* @access private
*/
private $data = null;
/**
* ÐденÑиÑикаÑÐ¾Ñ Ð·Ð°Ð¿Ð¸Ñи, Ñ
ÑанÑÑей даннÑе о папке в ÐÐ
* ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑÑÑÑм
*
* @var mixed
* @access private
*/
private $id = false;
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа
*
* @return void
*/
public function __construct() {
parent::__construct();
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ð² виде маÑÑива
* ÐÑли он не оÑкÑÑÑ, возвÑаÑаеÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñамом обÑекÑе - инаÑе, о вÑеÑ
вложеннÑÑ
обÑекÑаÑ
*
* @return array
* @access public
*/
public function asArray() {
$result = array(
'upl_id'=>$this->id,
'upl_mime_type' => self::getTypeInfo($this->path),
'upl_name' => $this->name,
'upl_path' => $this->path,
'upl_data'=>$this->data
);
return $result;
}
/**
* ÐагÑÑÐ¶Ð°ÐµÑ Ð¼ÐµÑа опиÑание даннÑÑ
о обÑекÑе из ÐÐ
*
* @return void
* @access protected
*/
protected function loadData($path) {
$this->path = $path;
$this->name = basename($this->path);
$res = $this->dbh->select(self::TABLE_NAME, true, array('upl_path'=>$this->path));
if (is_array($res)) {
list($res) = $res;
$this->id = $res['upl_id'];
$this->name = $res['upl_name'];
$this->data = ($res['upl_data'])?unserialize($res['upl_data']):null;
}
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе пÑиÑоединеннÑе к ÑайлÑ
*
* @return mixed
* @access public
*/
public function getData() {
return $this->data;
}
/**
* УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе
*
* @return void
* @access public
*/
public function setData($data) {
$this->data = $data;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¿ÑÑÑ
*
* @return string
* @access public
*/
public function getPath() {
return $this->path;
}
/**
* СÑаÑиÑеÑкий меÑод возвÑаÑаÑÑий Ñип Ñайла
*
* @param string path пÑÑÑ Ðº ÑайлÑ
* @return string
* @access public
*/
public static function getTypeInfo($path) {
$result = self::IS_FILE;
if (!file_exists($path)) {
throw new SystemException('ERR_NO_FILE', SystemException::ERR_WARNING, $path);
}
if (is_dir($path)) {
$result = self::IS_FOLDER;
}
else {
if(getimagesize($path))$result = self::IS_IMAGE;
}
return $result;
}
/**
* Удаление из ÐРзапиÑи о Ñайле
*
* @return void
* @access public
*/
public function delete() {
$this->dbh->modify(QAL::DELETE, self::TABLE_NAME, null, array('upl_path'=>$this->getPath()));
}
/**
* ÐеÑеименование Ñайла/папки
*
* @return bool
* @access public
*/
public function rename($name) {
if($this->dbh->select(self::TABLE_NAME, array('upl_name'), array('upl_path'=>$this->getPath())) === true) {
$this->dbh->modify(QAL::INSERT, self::TABLE_NAME, array('upl_name'=>$name,'upl_path'=>$this->getPath()));
}
else {
$this->dbh->modify(QAL::UPDATE, self::TABLE_NAME, array('upl_name'=>$name), array('upl_path'=>$this->getPath()));
}
}
}