private function processDir($relativePath = '')
 {
     if (!$this->zendSourceDir) {
         throw new Exception('Undefined source dir');
     }
     echo "\nProcess dir: {$relativePath} ";
     $zendSourceFolder = Lms_FileSystem::getFolder($this->zendSourceDir . '/' . $relativePath);
     Lms_FileSystem::createFolder($this->zendOutputDir . '/' . $relativePath);
     $subFolders = $zendSourceFolder->getFolders();
     while (Lms_Enumerator::FAIL !== ($subFolder = $subFolders->getEach())) {
         $folderPath = $relativePath . '/' . $subFolder->getName();
         $this->processDir($folderPath);
     }
     $files = $zendSourceFolder->getFiles();
     while (Lms_Enumerator::FAIL !== ($file = $files->getEach())) {
         $filePath = $relativePath . '/' . $file->getName();
         $this->processFile($filePath);
     }
     echo "\n/Process dir: {$relativePath} ";
 }
 public static function downloadImage($url, $saveTo)
 {
     if (!self::$httpClient) {
         self::$httpClient = new Zend_Http_Client();
     }
     $headers = array();
     $headers['Accept'] = '*/*';
     $headers['Accept-Language'] = 'ru';
     $headers['Accept-Encoding'] = 'gzip, deflate';
     $headers['Referer'] = dirname($url);
     $response = self::$httpClient->setUri($url)->setHeaders($headers)->request(Zend_Http_Client::GET);
     $imageContent = $response->getBody();
     Lms_FileSystem::createFolder(dirname($saveTo), 0777, true);
     file_put_contents($saveTo, $imageContent);
 }
 private function getCompiledItem()
 {
     $compress = Lms_Application::getConfig('optimize', 'js_compress');
     $filename = md5(serialize($this->_cache));
     $path = self::$cacheDir . $filename . ($compress ? '_compressed' : '') . '.js';
     if (!file_exists($path)) {
         Lms_Debug::debug("Combine javascripts to {$path}...");
         Lms_FileSystem::createFolder(dirname($path), 0777, true);
         $jsContent = '';
         foreach ($this->_cache as $js) {
             if (is_array($js)) {
                 $jsContent .= file_get_contents($js['filepath']) . "\n\n";
                 Lms_Debug::debug($js['filepath'] . ' ... OK');
             } else {
                 $jsContent .= $js . "\n\n";
                 Lms_Debug::debug('Inline JavaScript ... OK');
             }
         }
         if ($compress) {
             $jsContent = JSMin::minify($jsContent);
         }
         file_put_contents($path, $jsContent);
     }
     $url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path);
     $item = $this->createData('text/javascript', array('src' => $url));
     return $item;
 }
 private function getCompiledItem()
 {
     $compress = Lms_Application::getConfig('optimize', 'css_compress');
     $filename = md5(serialize($this->_cache));
     $path = self::$cacheDir . $filename . ($compress ? '_compressed' : '') . '.css';
     if (!file_exists($path)) {
         Lms_Debug::debug("Combine css to {$path}...");
         Lms_FileSystem::createFolder(dirname($path), 0777, true);
         $cssContent = '';
         foreach ($this->_cache as $css) {
             $content = file_get_contents($css['filepath']);
             if ($compress) {
                 $cssContent .= Minify_CSS::minify($content, array('prependRelativePath' => dirname($path), 'currentDir' => dirname($css['filepath']), 'symlinks' => Lms_Application::getConfig('symlinks')));
             } else {
                 $cssContent .= Minify_CSS_UriRewriter::rewrite($content, dirname($css['filepath']), $_SERVER['DOCUMENT_ROOT'], Lms_Application::getConfig('symlinks'));
             }
             $cssContent .= "\n\n";
             Lms_Debug::debug($css['filepath'] . ' ... OK');
         }
         file_put_contents($path, $cssContent);
     }
     $url = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path);
     $item = $this->createDataStylesheet(array('href' => $url));
     return $item;
 }