Пример #1
0
 /**
  * Retrieve (cached) metadata of a file
  *
  * @param Model $Model
  * @param string $file An absolute path to a file
  * @param integer $level level of amount of info to add, `0` disable, `1` for basic, `2` for detailed info
  * @return mixed Array with results or false if file is not readable
  */
 function metadata(&$Model, $file, $level = 1)
 {
     if ($level < 1) {
         return array();
     }
     extract($this->settings[$Model->alias]);
     $File = new File($file);
     if (!$File->readable()) {
         return false;
     }
     $checksum = $File->md5(true);
     if (isset($this->__cached[$Model->alias][$checksum])) {
         $data = $this->__cached[$Model->alias][$checksum];
     }
     if ($level > 0 && !isset($data[1])) {
         $data[1] = array('size' => $File->size(), 'mime_type' => Mime_Type::guessType($File->pwd()), 'checksum' => $checksum);
     }
     if ($level > 1 && !isset($data[2])) {
         $data[2] = array();
         try {
             $Info = Media_Info::factory(array('source' => $File->pwd()));
             foreach ($Info->all() as $key => $value) {
                 $data[2][Inflector::underscore($key)] = $value;
             }
         } catch (Exception $E) {
         }
     }
     for ($i = $level, $result = array(); $i > 0; $i--) {
         $result = array_merge($result, $data[$i]);
     }
     $this->__cached[$Model->alias][$checksum] = $data;
     return $result;
 }
Пример #2
0
 public function testMediaFactorySourceFailStream()
 {
     $this->setExpectedException('InvalidArgumentException');
     Media_Info::factory(array('source' => fopen("{$this->_files}/image_jpg.jpg", 'rb')));
 }