Source for file FileSystemObject.class.php

Documentation is available at FileSystemObject.class.php

  1. /**
  2.  * Содержит класс FileSystemObject
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine_core_frameworkFileSystemObject.class.php.html,v 1.1 2007/09/17 14:32:34 pavka Exp $
  9.  */
  10.  
  11. require_once('core/framework/DBWorker.class.php');
  12.  
  13. /**
  14.  * Абстрактный класс  - модель объекта файловой системы
  15.  *
  16.  * @package energine
  17.  * @subpackage core
  18.  * @abstract
  19.  */
  20. abstract class FileSystemObject extends DBWorker {
  21.     /**
  22.      * Набор типов - папка
  23.      *
  24.      */
  25.     const FOLDER_TYPE_FAMILY = 0;
  26.     /**
  27.      * Набор типов - файлы изображений
  28.      *
  29.      */
  30.     const IMAGE_TYPE_FAMILY = 1;
  31.     /**
  32.      * Набор типов - текстовые файлы
  33.      *
  34.      */
  35.     const TXT_TYPE_FAMILY = 2;
  36.     /**
  37.      * Набор типов - неопределенный файл
  38.      *
  39.      */
  40.     const UNDEF_TYPE_FAMILY = 4;
  41.     /**
  42.      * Набор типов - PDF
  43.      *
  44.      */
  45.     const PDF_TYPE_FAMILY = 8;
  46.     /**
  47.      * Набор типов
  48.      *
  49.      * @access public
  50.      * @var array 
  51.      * @static
  52.      */
  53.      public static $typeFamily array(
  54.         self::FOLDER_TYPE_FAMILY => array('application/x-not-regular-file'),
  55.         self::IMAGE_TYPE_FAMILY => array('image/gif''image/png''image/jpeg'),
  56.         self::TXT_TYPE_FAMILY =>array('text/plain'),
  57.         self::PDF_TYPE_FAMILY=>array('application/pdf')
  58.      );
  59.  
  60.     /**
  61.      * Имя таблицы в которой хранится мета описания папки
  62.      *
  63.      */
  64.     const TABLE_NAME = 'share_Uploads';
  65.     /**
  66.      * Полный путь к файлу
  67.      *
  68.      * @var string 
  69.      * @access private
  70.      */
  71.     private $path;
  72.     /**
  73.      * Имя папки
  74.      * Если существует описание в БД - берется из нее, если нет. то из $this->path
  75.      *
  76.      * @var string 
  77.      * @access private
  78.      */
  79.     private $name;
  80.  
  81.     /**
  82.      * Данные присоединенные к файлу
  83.      *
  84.      * @var mixed 
  85.      * @access private
  86.      */
  87.     private $data = null;
  88.  
  89.     /**
  90.      * Идентификатор записи, хранящей данные о папке в БД
  91.      * Может быть  пустым
  92.      *
  93.      * @var mixed 
  94.      * @access private
  95.      */
  96.     private $id = false;
  97.  
  98.     /**
  99.      * Конструктор класса
  100.      *
  101.      * @return void 
  102.      */
  103.     public function __construct({
  104.         parent::__construct();
  105.     }
  106.  
  107.     /**
  108.      * Возвращает объект в виде массива
  109.      * Если он не открыт, возвращается информация о самом объекте - иначе, о всех вложенных объектах
  110.      *
  111.      * @return array 
  112.      * @access public
  113.      */
  114.  
  115.     public function asArray({
  116.         $result array(
  117.         'upl_id'=>$this->id,
  118.         'upl_mime_type' => $this->getMimeType(),
  119.         'upl_name' => $this->name,
  120.         'upl_path' => $this->path,
  121.         'upl_data'=>$this->data
  122.         );
  123.         return $result;
  124.     }
  125.  
  126.     /**
  127.      * Загружает мета описание данных о объекте из БД
  128.      *
  129.      * @return void 
  130.      * @access protected
  131.      */
  132.  
  133.     protected function loadData($path{
  134.         $this->path = $path;
  135.         $this->name = basename($this->path);
  136.         $res $this->dbh->select(self::TABLE_NAMEtruearray('upl_path'=>$this->path));
  137.         if (is_array($res)) {
  138.             list($res$res;
  139.             $this->id = $res['upl_id'];
  140.             $this->name = $res['upl_name'];
  141.             $this->data = ($res['upl_data'])?unserialize($res['upl_data']):null;
  142.         }
  143.     }
  144.  
  145.     /**
  146.      * Возвращает данные присоединенные к файлу
  147.      *
  148.      * @return mixed 
  149.      * @access public
  150.      */
  151.  
  152.     public function getData({
  153.         return $this->data;
  154.     }
  155.     /**
  156.      * Устанавливает данные
  157.      *
  158.      * @return void 
  159.      * @access public
  160.      */
  161.  
  162.     public function setData($data{
  163.         $this->data = $data;
  164.     }
  165.  
  166.     /**
  167.      * Возвращает путь
  168.      *
  169.      * @return string 
  170.      * @access public
  171.      */
  172.  
  173.     public function getPath({
  174.         return $this->path;
  175.     }
  176.  
  177.     /**
  178.      * Mime type
  179.      *
  180.      * @return string 
  181.      * @access public
  182.      */
  183.  
  184.     public function getMimeType({
  185.         return self::getTypeInfo($this->pathtrue);
  186.     }
  187.  
  188.     /**
  189.      * Статический метод возвращающий MimeType файла
  190.      *
  191.      * @param string path путь к файлу
  192.      * @param bool флаг указывающий возвращать ли mime type или type Family
  193.      * @return string 
  194.      * @access public
  195.      */
  196.  
  197.     public static function getTypeInfo($path$returnTypeFamily false{
  198.         $res = finfo_open(FILEINFO_MIME);
  199.         $mimeType = finfo_file($res$path);
  200.         finfo_close($res);
  201.  
  202.         if ($returnTypeFamily{
  203.             $result self::UNDEF_TYPE_FAMILY;
  204.             foreach (self::$typeFamily as $key => $value{
  205.                 if (in_array($mimeType$value)) {
  206.                     $result $key;
  207.                     break;
  208.                 }
  209.             }
  210.         }
  211.         else {
  212.             $result $mimeType;
  213.         }
  214.  
  215.         return $result;
  216.     }
  217.  
  218.     /**
  219.      * Удаление из БД записи о файле
  220.      *
  221.      * @return void 
  222.      * @access public
  223.      */
  224.  
  225.     public function delete({
  226.         $this->dbh->modify(QAL::DELETEself::TABLE_NAMEnullarray('upl_path'=>$this->getPath()));
  227.     }
  228.  
  229.     /**
  230.      * Переименование файла/папки
  231.      *
  232.      * @return bool 
  233.      * @access public
  234.      */
  235.  
  236.     public function rename($name{
  237.         if($this->dbh->select(self::TABLE_NAMEarray('upl_name')array('upl_path'=>$this->getPath())) === true{
  238.             $this->dbh->modify(QAL::INSERTself::TABLE_NAMEarray('upl_name'=>$name,'upl_path'=>$this->getPath()));
  239.         }
  240.         else {
  241.             $this->dbh->modify(QAL::UPDATEself::TABLE_NAMEarray('upl_name'=>$name)array('upl_path'=>$this->getPath()));
  242.         }
  243.  
  244.     }
  245. }

Documentation generated on Mon, 17 Sep 2007 13:29:16 +0300 by phpDocumentor 1.4.0a2