Source for file FileObject.class.php

Documentation is available at FileObject.class.php

  1. /**
  2.  * Содержит класс FileObject и интерфейс FileSystemObject
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine_core_frameworkFileObject.class.php.html,v 1.1 2007/09/17 14:32:34 pavka Exp $
  9.  */
  10.  
  11. require_once('core/framework/FileSystemObject.class.php');
  12. require_once('core/modules/image/components/Image.class.php');
  13.  
  14. /**
  15.  * Класс - модель файла
  16.  *
  17.  * @package energine
  18.  * @subpackage core
  19.  */
  20. class FileObject extends FileSystemObject {
  21.     /**
  22.      * Полный путь к файлу
  23.      *
  24.      * @var string 
  25.      * @access private
  26.      */
  27.     private $path;
  28.     /**
  29.      * Конструктор класса
  30.      *
  31.      * @return void 
  32.      */
  33.     public function __construct({
  34.         parent::__construct();
  35.     }
  36.  
  37.     /**
  38.      * Статический метод загрузки возвращающий self
  39.      *
  40.      * @param string путь к файлу
  41.      * @return FileObject 
  42.      * @access public
  43.      * @static
  44.      */
  45.  
  46.     public static function loadFrom($path{
  47.         if (!file_exists($path)) {
  48.             throw new SystemException('ERR_DEV_NO_FILE'SystemException::ERR_DEVELOPER$path);
  49.         }
  50.         if (!is_writeable($path)) {
  51.             throw new SystemException('ERR_DEV_UPLOADS_FILE_NOT_WRITABLE'SystemException::ERR_DEVELOPER$path);
  52.         }
  53.  
  54.         $result new FileObject();
  55.         $result->loadData($path);
  56.         $fileName = dirname($path).'/.'.basename($path);
  57.         $data array();
  58.         //Для изображений добавляем высоту и ширину
  59.         if ($result->getMimeType(== FileSystemObject::IMAGE_TYPE_FAMILY {
  60.             try {
  61.                 $imgData = getimagesize($path);
  62.                 if (!file_exists($fileName)) {
  63.                     $thumb new Image();
  64.                     $thumb->loadFromFile($path);
  65.                     $thumb->resize(50,50);
  66.                     $thumb->saveToFile($fileName);
  67.                 }
  68.                 $data array('thumb'=>$fileName);
  69.             }
  70.             catch (Exception $e{
  71.                 //В этом случае ничего делать не нужно
  72.  
  73.             }
  74.             $data = array_merge($dataarray('width'=>$imgData[0]'height'=>$imgData[1]));
  75.         }
  76.  
  77.         $result->setData($data);
  78.  
  79.         return $result;
  80.     }
  81.  
  82.     /**
  83.      * Удаление файла
  84.      *
  85.      * @return boolean 
  86.      * @access public
  87.      */
  88.  
  89.     public function delete({
  90.         if (@unlink($this->getPath())) {
  91.             $path = dirname($this->getPath()).'/.'.basename($this->getPath());
  92.             if (file_exists($path)) {
  93.                 @unlink($path);
  94.             }
  95.             parent::delete();
  96.  
  97.         }
  98.     }
  99.  
  100.     /**
  101.      * Сохранение файла
  102.      *
  103.      * @param array 
  104.      * @return boolean 
  105.      * @access public
  106.      */
  107.  
  108.     public function create($data{
  109.         $data $data[self::TABLE_NAME];
  110.         $fileName $data['upl_path'];
  111.         //Копируем файл из временной директории на нужное место
  112.         copy('tmp/'.basename($fileName)$fileName);
  113.         unlink('tmp/'.basename($fileName));
  114.         $this->dbh->modify(QAL::INSERTself::TABLE_NAME$data);
  115.     }
  116.  
  117.     /**
  118.      * Создание файла из существующего
  119.      *
  120.      * @return void 
  121.      * @access public
  122.      */
  123.  
  124.     public function createFromPath($path$name{
  125.         $this->dbh->modify(QAL::INSERTself::TABLE_NAMEarray('upl_path'=>$path'upl_name'=>$name));
  126.     }
  127. }

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