/**
  * Save file from remote machine to localhost
  *
  * @param string $strategy
  * @param array $params
  */
 public static function localize($path, $strategy, $params = array())
 {
     $oldPath = $path;
     $depth = 3;
     $imageDir = self::$imageDir;
     switch ($strategy) {
         case "cover":
             $imageDir .= 'covers/';
             $depth = 2;
             break;
         case "photo":
             $imageDir .= 'photos/';
             $depth = 3;
             break;
         case "screenshot":
             $imageDir .= 'screenshots/';
             $depth = 3;
             break;
         case "poster":
             $imageDir .= 'posters/';
             $depth = 2;
             break;
         case "cache":
             $imageDir .= 'cache/';
             $depth = 2;
             break;
     }
     if (isset($params['extension'])) {
         $extension = $params['extension'];
     } else {
         $extension = strtolower(pathinfo($oldPath, PATHINFO_EXTENSION));
     }
     $basename = isset($params['name']) && $params['name'] ? $params['name'] : basename($oldPath);
     $basename = Lms_LangHelpers::translit($basename);
     $basename = strtolower($basename);
     $basename = Lms_Ufu::nameToUrl($basename);
     $basename = ereg_replace('[^a-z0-9!@_\\.-]', '', $basename);
     if (strlen(trim($basename))) {
         do {
             $newPath = $imageDir . self::_generateRandomPrefixFolders($depth) . $basename . '.' . $extension;
             $depth++;
         } while (Lms_Ufs::file_exists($newPath));
         Lms_FileSystem::createFolder(dirname($newPath), 0777, true);
         if (preg_match('{^https?://}i', $oldPath)) {
             self::downloadImage($oldPath, $newPath);
         } else {
             Lms_Ufs::copy($oldPath, $newPath);
         }
         return $newPath;
     }
     return $oldPath;
 }
Exemplo n.º 2
0
 /**
  * Set callback function which perform logging 
  *
  * @param string $callback
  */
 public static function setLogger($callback)
 {
     self::$logger = $callback;
 }
 function move($sourcePath, $destinationPath)
 {
     Lms_Ufs::rename($sourcePath, $destinationPath);
 }
 /**
  * Parse url
  *
  * @param string $url
  * @return unknown
  */
 public static function parseUrl($url)
 {
     $fileSize = Lms_Ufs::filesize($url);
     //Для удалённых файлов не отработает т.к. нет модулей UFS_HTTP, UFS_FTP ...
     $filePath = Lms_Ufs::getAbsolutePath($url);
     $extension = strtolower(pathinfo($url, PATHINFO_EXTENSION));
     $demuxer = self::_getDemuxer($fileSize, $extension);
     $localtempfilename = false;
     $info = array();
     if ($demuxer) {
         if (self::_isRemote($url)) {
             if ($fp_remote = fopen($url, 'rb')) {
                 $localtempfilename = tempnam('/tmp', 'getID3');
                 if ($fp_local = fopen($localtempfilename, 'wb')) {
                     $buffer = '';
                     while (!feof($fp_remote) && strlen($buffer) < 32768) {
                         $buffer .= fread($fp_remote, 8192);
                     }
                     fwrite($fp_local, $buffer);
                     fclose($fp_local);
                     self::_log("Localize {$filePath} to {$localtempfilename}");
                     $filePath = $localtempfilename;
                 }
                 fclose($fp_remote);
             }
         }
         do {
             $curAdapter = Lms_Modular::loadModule('Adapter_' . ucfirst($demuxer), true);
             if (!$curAdapter) {
                 throw new Exception("Can't get instance of Adapter_" . ucfirst($demuxer));
             }
             if (isset(self::$_config['instances'][$demuxer]) && is_object(self::$_config['instances'][$demuxer])) {
                 $instance = self::$_config['instances'][$demuxer];
                 try {
                     $next = false;
                     self::_log("Parse {$filePath} with {$demuxer}");
                     $info = call_user_func(array($curAdapter, 'analyze'), $instance, $filePath, $fileSize);
                 } catch (Exception $e) {
                     self::_log("{$demuxer} failed");
                     if ($nextDemuxer = self::_getNextDemuxer($fileSize, $extension, $demuxer)) {
                         $next = true;
                         $demuxer = $nextDemuxer;
                     } else {
                         $next = false;
                     }
                 }
             } else {
                 self::_log("You must get an instance of demuxer: {$demuxer} before parsing url! ");
                 if ($nextDemuxer = self::_getNextDemuxer($fileSize, $extension, $demuxer)) {
                     $next = true;
                     $demuxer = $nextDemuxer;
                 } else {
                     $next = false;
                 }
             }
         } while ($next);
         if ($localtempfilename) {
             self::_log("Unlink {$localtempfilename}");
             unlink($localtempfilename);
             $localtempfilename = false;
         }
         return $info;
     } else {
         throw new Exception("There is no demuxer to parse this extension: " . $extension);
     }
 }
Exemplo n.º 5
0
 function _readFolder()
 {
     $this->_files = new Lms_FileSystem_Files();
     $this->_folders = new Lms_FileSystem_Folders();
     $path = $this->getPath();
     if (Lms_Ufs::is_dir($path)) {
         if ($dh = Lms_Ufs::opendir($path)) {
             while (($file = Lms_Ufs::readdir($dh)) !== false) {
                 if ($file != '.' && $file != '..') {
                     $filePath = $path . "/" . $file;
                     if (Lms_Ufs::is_dir($filePath)) {
                         $this->_folders->add(new Lms_FileSystem_Folder($filePath));
                     } else {
                         $this->_files->add(new Lms_FileSystem_File($filePath));
                     }
                 }
             }
             Lms_Ufs::closedir($dh);
         }
     }
     $this->_readed = true;
 }
Exemplo n.º 6
0
 function delete()
 {
     Lms_Ufs::unlink($this->getPath());
 }