/** * 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; }
/** * 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); } }
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; }
function delete() { Lms_Ufs::unlink($this->getPath()); }