/** * Aplicar template de um arquivo único. * * @param $file * @param $target */ public function file($file, $target) { // Verificar se template existe na lista if ($this->files->exists($file) != true) { error('Template %s não foi encontrado', $file); } $this->outpath = ''; $this->filters = [$target]; // Criar diretório destino $path = $this->files->path($target); $this->files->force($path); // Copiar arquivo $this->files->copy($file, $target); return $this; }
public function processThumb($imgsrc, $_id, $isUrl = true) { $_id = empty($_id) ? $this->_id : $_id; $storage = Yii::app()->params['feed_path']; $temp = Yii::app()->params['temp']; $fileInfo = explode('.', $imgsrc); $fileType = $fileInfo[count($fileInfo) - 1]; $fileName = 'tmp_' . $_id . "." . $fileType; $tmpFile = $temp . DS . $fileName; if ($isUrl) { $res_get_file = FileRemote::getFromUrl($imgsrc, $tmpFile); } else { $fileSystem = new Filesystem(); $res_get_file = $fileSystem->copy($imgsrc, $tmpFile); } if (file_exists($tmpFile)) { $fileDest = StorageHelper::generalStoragePath($_id, $fileType, $storage); /*$fileSystem = new Filesystem(); $copy = $fileSystem->copy($tmpFile,$fileDest);*/ $width = Yii::app()->params['profile_image']['thumb']['width']; $height = Yii::app()->params['profile_image']['thumb']['height']; $resizeObj = new ResizeImage($tmpFile); $rs = $resizeObj->resizeImage($width, $height, 0); $res = $resizeObj->saveImage($fileDest, 100); if ($resizeObj) { $feed = self::model()->findByPk(new MongoId($_id)); $fileDest = str_replace($storage, '', $fileDest); $feed->thumb = $fileDest; $res = $feed->save(); return $res; } } else { throw new Exception("create file temp error!", 7); } }
protected function beforeGetContentBody() { $sn = time(); $i = 0; $tmpFile = $temp = Yii::app()->params['temp']; $storage = Yii::app()->params['feed_path']; $cdn = Yii::app()->params['cdn_url']; $contentParttern = $this->config['content_pattern']; foreach ($this->html->find("{$contentParttern} img") as $e) { $imgSrc = $e->src; if (!empty($imgSrc)) { $fileInfo = explode('.', $imgSrc); $fileType = $fileInfo[count($fileInfo) - 1]; $fileName = 'tmp_' . $sn . $i . "." . $fileType; $sfile = $tmpFile . DS . $fileName; $res_get_file = FileRemote::getFromUrl($imgSrc, $sfile); if ($res_get_file && file_exists($sfile)) { $fileDest = StorageHelper::generalStoragePath($sn . $i, $fileType, $storage); $fileSystem = new Filesystem(); $copy = $fileSystem->copy($sfile, $fileDest); if ($copy) { echo $fileDest . "\n"; $fileDestUrl = str_replace($storage, $cdn, $fileDest); $fileDestUrl = str_replace(DS, "/", $fileDestUrl); echo $fileDestUrl . "\n"; $e->src = $fileDestUrl; echo 'replace file content success' . "\n"; } else { echo 'replace file content error' . "\n"; } } $i++; } } }
private function moveDefaultTemplate() { $this->log('Moving default template...'); $fileDir = $this->container->getParameter('claroline.param.files_directory'); $defaultTemplate = $this->container->getParameter('claroline.param.default_template'); $newTemplateDir = $fileDir . '/templates'; $newTemplate = $newTemplateDir . '/default.zip'; $fs = new Filesystem(); $fs->mkdir($newTemplateDir); $fs->copy($defaultTemplate, $newTemplate); }
/** * Compile PDF/image preview for any kind of file * * * @return mixed array or false */ protected function _compile() { // Combine file and folder data $items = $this->_sortIncoming(); // Get stored remote connections $remotes = $this->_getRemoteConnections(); // Params for repo call $params = array('subdir' => $this->subdir, 'remoteConnections' => $remotes); // Incoming $commit = Request::getInt('commit', 0); $download = Request::getInt('download', 0); // Check that we have compile enabled if (!$this->params->get('latex')) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_COMPILE_NOTALLOWED')); return; } // Output HTML $view = new \Hubzero\Plugin\View(array('folder' => 'projects', 'element' => 'files', 'name' => 'compiled')); // Get selected item if (!$items) { $view->setError(Lang::txt('PLG_PROJECTS_FILES_ERROR_NO_FILES_TO_COMPILE')); $view->loadTemplate(); return; } else { foreach ($items as $element) { foreach ($element as $type => $item) { // Get our metadata $file = $this->repo->getMetadata($item, 'file', $params); break; } } } // We need a file if (empty($file)) { $view->setError(Lang::txt('PLG_PROJECTS_FILES_ERROR_NO_FILES_TO_COMPILE')); $view->loadTemplate(); return; } // Path for storing temp previews $imagePath = trim($this->model->config()->get('imagepath', '/site/projects'), DS); $outputDir = DS . $imagePath . DS . strtolower($this->model->get('alias')) . DS . 'compiled'; // Make sure output dir exists if (!is_dir(PATH_APP . $outputDir)) { if (!Filesystem::makeDirectory(PATH_APP . $outputDir)) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_UNABLE_TO_CREATE_UPLOAD_PATH')); return; } } // Get LaTeX helper $compiler = new \Components\Projects\Helpers\Compiler(); // Tex compiler path $texPath = DS . trim($this->params->get('texpath'), DS); $view->file = $file; $view->oWidth = '780'; $view->oHeight = '460'; $view->url = Route::url($this->model->link('files')); $cExt = 'pdf'; // Take out Google native extension if present $fileName = $file->get('name'); if (in_array($file->get('ext'), \Components\Projects\Helpers\Google::getGoogleNativeExts())) { $fileName = preg_replace("/." . $file->get('ext') . "\\z/", "", $file->get('name')); } // Tex file? $tex = $compiler->isTexFile($fileName); // Build temp name $tempBase = $tex ? 'temp__' . \Components\Projects\Helpers\Html::takeOutExt($fileName) : $fileName; $tempBase = str_replace(' ', '_', $tempBase); // Get file contents if (!empty($this->_remoteService) && $file->get('converted')) { // Load remote resource $this->_connect->setUser($this->model->get('owned_by_user')); $resource = $this->_connect->loadRemoteResource($this->_remoteService, $this->model->get('owned_by_user'), $file->get('remoteId')); $cExt = $tex ? 'tex' : \Components\Projects\Helpers\Google::getGoogleImportExt($resource['mimeType']); $cExt = in_array($cExt, array('tex', 'jpeg')) ? $cExt : 'pdf'; $url = \Components\Projects\Helpers\Google::getDownloadUrl($resource, $cExt); // Get data $view->data = $this->_connect->sendHttpRequest($this->_remoteService, $this->model->get('owned_by_user'), $url); } elseif ($file->exists()) { $view->data = $file->isImage() ? NULL : $file->contents(); } else { $this->setError(Lang::txt('PLG_PROJECTS_FILES_ERROR_COMPILE_NO_DATA')); } // LaTeX file? if ($tex && !empty($view->data)) { // Clean up data from Windows characters - important! $view->data = preg_replace('/[^(\\x20-\\x7F)\\x0A]*/', '', $view->data); // Compile and get path to PDF $contentFile = $compiler->compileTex($file->get('fullPath'), $view->data, $texPath, PATH_APP . $outputDir, 1, $tempBase); // Read log (to show in case of error) $logFile = $tempBase . '.log'; if (file_exists(PATH_APP . $outputDir . DS . $logFile)) { $view->log = Filesystem::read(PATH_APP . $outputDir . DS . $logFile); } if (!$contentFile) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_ERROR_COMPILE_TEX_FAILED')); } } elseif ($file->get('converted') && !empty($view->data)) { $tempBase = \Components\Projects\Helpers\Google::getImportFilename($file->get('name'), $cExt); // Write content to temp file $this->_connect->fetchFile($view->data, $tempBase, PATH_APP . $outputDir); $contentFile = $tempBase; } elseif (!$this->getError()) { // Make sure we can handle preview of this type of file if ($file->get('ext') == 'pdf' || $file->isImage() || !$file->isBinary()) { Filesystem::copy($file->get('fullPath'), PATH_APP . $outputDir . DS . $tempBase); $contentFile = $tempBase; } } $url = $this->model->link('files'); $url .= $this->repo->isLocal() ? '' : '&repo=' . $this->repo->get('name'); $url .= $this->subdir ? '&subdir=' . urlencode($this->subdir) : ''; // Parse output if (!empty($contentFile) && file_exists(PATH_APP . $outputDir . DS . $contentFile)) { // Get compiled content mimetype $cType = Filesystem::mimetype(PATH_APP . $outputDir . DS . $contentFile); // Is image? if (strpos($cType, 'image/') !== false) { // Fix up object width & height list($width, $height, $type, $attr) = getimagesize(PATH_APP . $outputDir . DS . $contentFile); $xRatio = $view->oWidth / $width; $yRatio = $view->oHeight / $height; if ($xRatio * $height < $view->oHeight) { // Resize the image based on width $view->oHeight = ceil($xRatio * $height); } else { // Resize the image based on height $view->oWidth = ceil($yRatio * $width); } } // Download compiled file? if ($download) { $pdfName = $tex ? str_replace('temp__', '', basename($contentFile)) : basename($contentFile); // Serve up file $server = new \Hubzero\Content\Server(); $server->filename(PATH_APP . $outputDir . DS . $contentFile); $server->disposition('attachment'); $server->acceptranges(false); $server->saveas($pdfName); $result = $server->serve_attachment(PATH_APP . $outputDir . DS . $contentFile, $pdfName, false); if (!$result) { // Should only get here on error App::abort(404, Lang::txt('PLG_PROJECTS_FILES_SERVER_ERROR')); } else { exit; } } // Add compiled PDF to repository? if ($commit && $tex) { $pdfName = str_replace('temp__', '', basename($contentFile)); $where = $this->subdir ? $this->subdir . DS . $pdfName : $pdfName; if (Filesystem::copy(PATH_APP . $outputDir . DS . $contentFile, $this->_path . DS . $where)) { // Checkin into repo $params = array('subdir' => $this->subdir); $params['file'] = $this->repo->getMetadata($pdfName, 'file', $params); $this->repo->call('checkin', $params); if ($this->repo->isLocal()) { $this->model->saveParam('google_sync_queue', 1); } \Notify::message(Lang::txt('PLG_PROJECTS_FILES_SUCCESS_COMPILED'), 'success', 'projects'); // Redirect to file list App::redirect(Route::url($url)); return; } } // Generate preview image for browsers that cannot embed pdf if ($cType == 'application/pdf') { // GS path $gspath = trim($this->params->get('gspath'), DS); if ($gspath && file_exists(DS . $gspath . DS . 'gs')) { $gspath = DS . $gspath . DS; $pdfName = $tex ? str_replace('temp__', '', basename($contentFile)) : basename($contentFile); $pdfPath = PATH_APP . $outputDir . DS . $contentFile; $exportPath = PATH_APP . $outputDir . DS . $tempBase . '%d.jpg'; exec($gspath . "gs -dNOPAUSE -sDEVICE=jpeg -r300 -dFirstPage=1 -dLastPage=1 -sOutputFile={$exportPath} {$pdfPath} 2>&1", $out); if (is_file(PATH_APP . $outputDir . DS . $tempBase . '1.jpg')) { $hi = new \Hubzero\Image\Processor(PATH_APP . $outputDir . DS . $tempBase . '1.jpg'); if (count($hi->getErrors()) == 0) { $hi->resize($view->oWidth, false, false, true); $hi->save(PATH_APP . $outputDir . DS . $tempBase . '1.jpg'); } else { return false; } } if (is_file(PATH_APP . $outputDir . DS . $tempBase . '1.jpg')) { $image = $tempBase . '1.jpg'; } } } } elseif (!$this->getError()) { $this->setError(Lang::txt('PLG_PROJECTS_FILES_ERROR_COMPILE_PREVIEW_FAILED')); } $view->file = $file; $view->outputDir = $outputDir; $view->embed = $contentFile; $view->cType = $cType; $view->subdir = $this->subdir; $view->option = $this->_option; $view->image = !empty($image) ? $image : NULL; $view->model = $this->model; $view->repo = $this->repo; if ($this->getError()) { $view->setError($this->getError()); } return $view->loadTemplate(); }
/** * Get preview image * * @return mixed */ public function getPreview($model, $hash = '', $get = 'name', $render = '', $hashed = NULL) { if (!$model instanceof Project) { return false; } $image = NULL; if (!$hashed) { $hash = $hash ? $hash : $this->get('hash'); $hash = $hash ? substr($hash, 0, 10) : ''; // Determine name and size switch ($render) { case 'medium': $hashed = md5($this->get('name') . '-' . $hash) . '.png'; $maxWidth = 600; $maxHeight = 600; break; case 'thumb': $hashed = $hash ? Helpers\Html::createThumbName($this->get('name'), '-' . $hash, 'png') : NULL; $maxWidth = 80; $maxHeight = 80; break; default: $hashed = $hash ? Helpers\Html::createThumbName($this->get('name'), '-' . $hash . '-thumb', 'png') : NULL; $maxWidth = 180; $maxHeight = 180; break; } } // Target directory $target = PATH_APP . DS . trim($model->config()->get('imagepath', '/site/projects'), DS); $target .= DS . strtolower($model->get('alias')) . DS . 'preview'; $remoteThumb = NULL; if ($this->get('remoteId') && $this->get('modified')) { $remoteThumb = substr($this->get('remoteId'), 0, 20) . '_' . strtotime($this->get('modified')) . '.png'; } if ($hashed && is_file($target . DS . $hashed)) { // First check locally generated thumbnail $image = $target . DS . $hashed; } elseif ($remoteThumb && is_file($target . DS . $remoteThumb)) { // Check remotely generated thumbnail $image = $target . DS . $remoteThumb; // Copy this over as local thumb if ($hashed && Filesystem::copy($target . DS . $remoteThumb, $target . DS . $hashed)) { Filesystem::delete($target . DS . $remoteThumb); } } else { // Generate thumbnail locally if (!file_exists($target)) { Filesystem::makeDirectory($target, 0755, true, true); } // Make sure it's an image file if (!$this->isImage() || !is_file($this->get('fullPath'))) { return false; } if (!Filesystem::copy($this->get('fullPath'), $target . DS . $hashed)) { return false; } // Resize the image if necessary $hi = new \Hubzero\Image\Processor($target . DS . $hashed); $square = $render == 'thumb' ? true : false; $hi->resize($maxWidth, false, false, $square); $hi->save($target . DS . $hashed); $image = $target . DS . $hashed; } // Return image if ($get == 'localPath') { return str_replace(PATH_APP, '', $image); } elseif ($get == 'fullPath') { return $image; } elseif ($get == 'url') { return Route::url('index.php?option=com_projects&alias=' . $model->get('alias') . '&controller=media&media=' . urlencode(basename($image))); } return basename($image); }
/** * Publish supporting database files * * @param object $objPD * * @return boolean or error */ public function publishDataFiles($objPD, $configs) { if (!$objPD->id) { return false; } // Get data definition $dd = json_decode($objPD->data_definition, true); $files = array(); $columns = array(); foreach ($dd['cols'] as $colname => $col) { if (isset($col['linktype']) && $col['linktype'] == "repofiles") { $dir = ''; if (isset($col['linkpath']) && $col['linkpath'] != '') { $dir = $col['linkpath']; } $columns[$col['idx']] = $dir; } } // No files to publish if (empty($columns)) { return false; } $repoPath = $objPD->source_dir ? $configs->path . DS . $objPD->source_dir : $configs->path; $csv = $repoPath . DS . $objPD->source_file; if (file_exists($csv) && ($handle = fopen($csv, "r")) !== FALSE) { // Check if expert mode CSV $expert_mode = false; $col_labels = fgetcsv($handle); $col_prop = fgetcsv($handle); $data_start = fgetcsv($handle); if (isset($data_start[0]) && $data_start[0] == 'DATASTART') { $expert_mode = true; } while ($r = fgetcsv($handle)) { for ($i = 0; $i < count($col_labels); $i++) { if (isset($columns[$i])) { if (isset($r[$i]) && $r[$i] != '') { $file = $columns[$i] ? $columns[$i] . DS . trim($r[$i]) : trim($r[$i]); if (file_exists($repoPath . DS . $file)) { $files[] = $file; } } } } } } // Copy files from repo to published location if (!empty($files)) { foreach ($files as $file) { if (!file_exists($repoPath . DS . $file)) { continue; } // If parent dir does not exist, we must create it if (!file_exists(dirname($configs->dataPath . DS . $file))) { Filesystem::makeDirectory(dirname($configs->dataPath . DS . $file), 0755, true, true); } if (Filesystem::copy($repoPath . DS . $file, $configs->dataPath . DS . $file)) { // Generate thumbnail $thumb = \Components\Publications\Helpers\Html::createThumbName($file, '_tn', $extension = 'gif'); Filesystem::copy($repoPath . DS . $file, $configs->dataPath . DS . $thumb); $hi = new \Hubzero\Image\Processor($configs->dataPath . DS . $thumb); if (count($hi->getErrors()) == 0) { $hi->resize(180, false, false, false); $hi->save($configs->dataPath . DS . $thumb); } else { return false; } // Generate medium image $med = \Components\Publications\Helpers\Html::createThumbName($file, '_medium', $extension = 'gif'); Filesystem::copy($repoPath . DS . $file, $configs->dataPath . DS . $med); $hi = new \Hubzero\Image\Processor($configs->dataPath . DS . $med); if (count($hi->getErrors()) == 0) { $hi->resize(800, false, false, false); $hi->save($configs->dataPath . DS . $med); } else { return false; } } } } }
private function moveFile($id, $type, $fileSource) { try { $pathUpload = Yii::app()->params['storage']['radioDir'] . DS . "channel" . DS; $filePath = $pathUpload . $id . ".png"; $fileSystem = new Filesystem(); $fileSystem->copy($fileSource, $filePath); //$fileSystem->remove($fileSource); } catch (Exception $e) { echo $e->getMessage(); } }
/** * Publish file attachment * * @param object $objPA * @param object $pub * @param object $configs * @param boolean $update force update of file * * @return boolean or error */ public function publishAttachment($objPA, $pub, $configs, $update = 0) { // Create pub version path if (!is_dir($configs->pubPath)) { if (!Filesystem::makeDirectory($configs->pubPath, 0755, true, true)) { $this->setError(Lang::txt('PLG_PROJECTS_PUBLICATIONS_PUBLICATION_UNABLE_TO_CREATE_PATH')); return false; } } $file = $objPA->path; $copyFrom = isset($configs->copyFrom) ? $configs->copyFrom : $configs->path . DS . $file; $copyTo = $this->getFilePath($file, $objPA->id, $configs, $objPA->params); // Copy if (is_file($copyFrom)) { // If parent dir does not exist, we must create it if ($configs->dirHierarchy && !file_exists(dirname($copyTo))) { Filesystem::makeDirectory(dirname($copyTo), 0755, true, true); } if (!is_file($copyTo) || $update) { Filesystem::copy($copyFrom, $copyTo); } } // Store content hash if (is_file($copyTo)) { $md5hash = hash_file('sha256', $copyTo); $objPA->content_hash = $md5hash; // Create hash file $hfile = $copyTo . '.hash'; if (!is_file($hfile)) { $handle = fopen($hfile, 'w'); fwrite($handle, $md5hash); fclose($handle); chmod($hfile, 0644); } $objPA->store(); // Produce thumbnail (if applicable) if ($configs->handler && $configs->handler->getName() == 'imageviewer') { $configs->handler->makeThumbnail($objPA, $pub, $configs); } } else { return false; } return true; }
public function actionIndex() { $my_file = Yii::app()->params['storage'] . DS . 'meme_page.txt'; $handle = fopen($my_file, 'r'); $page = fread($handle, filesize($my_file)); $page = intval($page); for ($i = $page; $i < $page + 2; $i++) { echo $url = 'http://www.lolhappens.com/page/' . $i; echo "\n"; $html = file_get_html($url); $content = $html->find(".content-wrap", 0); foreach ($content->find(".social-bar") as $e) { $e->outertext = ""; } //echo $content;exit; $storage = Yii::app()->params['storage']; $temp = Yii::app()->params['temp']; $j = 0; foreach ($content->find(".hentry") as $e) { $title = $e->find(".post-title h2 a", 0)->plaintext; $link = $e->find(".post-title h2 a", 0)->href; $imageUrl = $img = $e->find(".post-content p img", 0)->src; $fileInfo = explode('.', $img); $fileType = $fileInfo[count($fileInfo) - 1]; $fileName = 's_' . $j . '_' . $i . time() . "." . $fileType; $fileDesc = $storage . DS . $fileName; $tmpFile = $temp . DS . $fileName; if (!$this->isExists($link)) { $res_get_file = FileRemote::getFromUrl($img, $tmpFile); if ($res_get_file && file_exists($tmpFile)) { $meme = new MemeLink(); $meme->title = trim($title); $meme->code = trim($link); $meme->link = trim($link); $meme->content = $imageUrl; $meme->type = 'image'; $meme->source = 'lolhappens.com'; $meme->status = 0; $meme->created_datetime = date('Y-m-d H:i:s'); if ($meme->save()) { //copy file $storage = Yii::app()->params['meme_path']; $mId = $meme->_id; $fileDest = StorageHelper::generalStoragePath($meme->_id, $fileType, $storage); $fileSystem = new Filesystem(); $copy = $fileSystem->copy($tmpFile, $fileDest); if ($copy) { echo 'Copy file success' . "\n"; $img = str_replace($storage, '', $fileDest); $img = str_replace(DS, '_', $img); $meme->img = $img; $meme->save(); } else { if ($meme->delete()) { echo 'deleted:' . $mId . "\n"; } } echo 'save success!' . "\n"; echo $meme->_id . "\n"; } else { $error = $meme->getErrors(); var_dump($error); } } } else { continue; } echo 'File source:' . $img . "<br />"; echo 'File dest:' . $fileDesc . "<br />"; $j++; } } //write page end $data = $i; $handle = fopen($my_file, 'w') or die('Cannot open file: ' . $my_file); fwrite($handle, $data); fclose($handle); }
/** * Add files to repo from extracted archive * * @return boolean */ protected function _addFromExtracted($extractPath, $zipName, $target, $params, &$available) { $reserved = isset($params['reserved']) ? $params['reserved'] : array(); $dirPath = isset($params['subdir']) ? $params['subdir'] : NULL; $extracted = Filesystem::files($extractPath, '.', true, true, $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX')); // check for viruses - scans the directory for efficency $command = "clamscan -i --no-summary --block-encrypted -r " . $extractPath; exec($command, $output, $virus_status); $virusChecked = FALSE; if ($virus_status == 0) { $virusChecked = TRUE; } else { Filesystem::deleteDirectory($extractPath); $this->setError('The antivirus software has rejected your files.'); return false; } $z = 0; foreach ($extracted as $e) { $fileinfo = pathinfo($e); $a_dir = $fileinfo['dirname']; $a_dir = str_replace($extractPath . DS, '', $a_dir); // Skip certain system files if (preg_match("/__MACOSX/", $e) or preg_match("/.DS_Store/", $e)) { continue; } $file = $fileinfo['basename']; $size = filesize($e); // Run some checks, stop in case of a problem if (!$this->_check($file, $e, $size, $available, $virusChecked)) { return false; } // Clean up filename $safe_dir = $a_dir && $a_dir != '.' ? Filesystem::cleanPath($a_dir) : ''; $safe_dir = trim($safe_dir, DS); $safe_file = Filesystem::clean($file); // Strips out temporary path if (strpos($safe_dir, 'tmp/') !== FALSE) { $parts = explode('/', $safe_dir); $safe_dir = str_replace($parts[0] . '/', '', $safe_dir); $safe_dir = str_replace($parts[1] . '/', '', $safe_dir); } $skipDir = false; if (is_array($reserved) && $safe_dir && in_array(strtolower($safe_dir), $reserved)) { $skipDir = true; } $safeName = $safe_dir && !$skipDir ? $safe_dir . DS . $safe_file : $safe_file; $localPath = $dirPath ? $dirPath . DS . $safeName : $safeName; $where = $target . DS . $safeName; $exists = is_file($where) ? true : false; // Provision directory if ($safe_dir && !$skipDir && !is_dir($target . DS . $safe_dir)) { if (Filesystem::makeDirectory($target . DS . $safe_dir, 0755, true, true)) { // File object $localDirPath = $dirPath ? $dirPath . DS . $safe_dir : $safe_dir; $fileObject = new Models\File(trim($localDirPath), $this->get('path')); $fileObject->set('type', 'folder'); $params['file'] = $fileObject; $params['replace'] = false; // Success - check in change $this->call('checkin', $params); $z++; } } // Strips out temporary path if (strpos($safeName, 'tmp/') !== FALSE) { $parts = explode('/', $safeName); $safeName = str_replace($parts[0] . '/', '', $safeName); $safeName = str_replace($parts[1] . '/', '', $safeName); } // Copy file into project if (Filesystem::copy($e, $target . DS . $safeName)) { // File object $fileObject = new Models\File(trim($localPath), $this->get('path')); $params['file'] = $fileObject; $params['replace'] = $exists; // Success - check in change $this->call('checkin', $params); $z++; } } return $z; }
/** * Add files to repo from extracted archive * * @return boolean */ protected function _addFromExtracted($extractPath, $zipName, $target, $params, &$available) { $reserved = isset($params['reserved']) ? $params['reserved'] : array(); $dirPath = isset($params['subdir']) ? $params['subdir'] : NULL; $extracted = Filesystem::files($extractPath, '.', true, true, $exclude = array('.svn', 'CVS', '.DS_Store', '__MACOSX')); $z = 0; foreach ($extracted as $e) { $fileinfo = pathinfo($e); $a_dir = $fileinfo['dirname']; $a_dir = str_replace($extractPath . DS, '', $a_dir); // Skip certain system files if (preg_match("/__MACOSX/", $e) or preg_match("/.DS_Store/", $e)) { continue; } $file = $fileinfo['basename']; $size = filesize($e); // Run some checks, stop in case of a problem if (!$this->_check($file, $e, $size, $available)) { return false; } // Clean up filename $safe_dir = $a_dir && $a_dir != '.' ? Filesystem::cleanPath($a_dir) : ''; $safe_dir = trim($safe_dir, DS); $safe_file = Filesystem::clean($file); $skipDir = false; if (is_array($reserved) && $safe_dir && in_array(strtolower($safe_dir), $reserved)) { $skipDir = true; } $safeName = $safe_dir && !$skipDir ? $safe_dir . DS . $safe_file : $safe_file; $localPath = $dirPath ? $dirPath . DS . $safeName : $safeName; $where = $target . DS . $safeName; $exists = is_file($where) ? true : false; // Provision directory if ($safe_dir && !$skipDir && !is_dir($target . DS . $safe_dir)) { if (Filesystem::makeDirectory($target . DS . $safe_dir, 0755, true, true)) { // File object $localDirPath = $dirPath ? $dirPath . DS . $safe_dir : $safe_dir; $fileObject = new Models\File(trim($localDirPath), $this->get('path')); $fileObject->set('type', 'folder'); $params['file'] = $fileObject; $params['replace'] = false; // Success - check in change $this->call('checkin', $params); $z++; } } // Copy file into project if (Filesystem::copy($e, $target . DS . $safeName)) { // File object $fileObject = new Models\File(trim($localPath), $this->get('path')); $params['file'] = $fileObject; $params['replace'] = $exists; // Success - check in change $this->call('checkin', $params); $z++; } } return $z; }
function createImage($model, $image_path) { if (file_exists($image_path)) { $fileSystem = new Filesystem(); $s0Path = $model->getAvatarPath($model->id, "s0", false); // Origin $s1Path = $model->getAvatarPath($model->id, "s1", false); // Resize $s2Path = $model->getAvatarPath($model->id, "s2", false); // Thumb $fileSystem->mkdirs(dirname($s0Path)); $fileSystem->mkdirs(dirname($s1Path)); $fileSystem->mkdirs(dirname($s2Path)); list($width, $height) = getimagesize($image_path); $imgCrop = new ImageCrop($image_path, 0, 0, $width, $height); $fileSystem->copy($image_path, $s0Path); $imgCrop->resizeFix($s1Path, 690, 250); $imgCrop->resizeFix($s2Path, 100, 100); $fileSystem->remove($image_path); } }
/** * This method allows you to do any additional work beyond unpacking * the files that is required. This could include work such as downloading * and unpacking an archive. * * The following are some of the methods available to you in this file: * $this->curlFile($url, $destFolder) * $this->move($src, $dest) * $this->unzip($file, $destFolder) */ public function doWork() { $fs = new Filesystem(); // Ensure tmp working dir exists $tmp = $this->mRootPath . "\\tmp"; $this->log("Creating temporary build directory: " . $tmp); $fs->mkdir($tmp); if ($this->p->get('source') != '' && $fs->exists($this->p->get('source'))) { // Use WordPress codebase from source parameter $this->log("Copying WordPress from " . $this->p->get('source')); $fs->copy($this->p->get('source'), $this->mAppRoot); } else { // Download and unpack WordPress $this->log('Downloading WordPress'); $file = $this->curlFile(WP_URL, $tmp); $this->log('Extracting WordPress'); $this->unzip($file, $tmp); $this->log('Moving WordPress files to ' . $this->mAppRoot); $fs->move("{$tmp}\\wordpress", $this->mAppRoot); } // Download and unpack DB abstraction layer $this->log('Downloading Database Abstraction Layer'); $file = $this->curlFile(DB_ABSTRACTION_URL, $tmp); $this->log('Extracting Database Abstraction Layer'); $this->unzip($file, $tmp); $this->log('Moving Database Abstraction Layer files to ' . $this->mAppRoot . "\\wp-content\\mu-plugins"); $fs->copy("{$tmp}\\wordpress-database-abstraction\\wp-db-abstraction\\db.php", $this->mAppRoot . "\\wp-content\\db.php"); $fs->move("{$tmp}\\wordpress-database-abstraction", $this->mAppRoot . "\\wp-content\\mu-plugins"); // Download and unpack Azure Storage Plugin $this->log('Downloading Azure Storage Plugin'); $file = $this->curlFile(WAZ_STORAGE_URL, $tmp); $this->log('Extracting Azure Storage Plugin'); $this->unzip($file, $tmp); $this->log('Moving Azure Storage Plugin files to ' . $this->mAppRoot . "\\wp-content\\plugins"); $fs->move("{$tmp}\\windows-azure-storage", $this->mAppRoot . "\\wp-content\\plugins\\windows-azure-storage"); if ($this->p->get('WP_ALLOW_MULTISITE') && $this->p->get('WP_ALLOW_MULTISITE') != 'false') { $fs->mkdir($this->mAppRoot . "\\wp-content\\blogs.dir"); unlink("{$this->mAppRoot}.config"); if ($this->p->get('SUBDOMAIN_INSTALL')) { copy($this->mAppRoot . "\\resources\\Web-network-subdomains.config", $this->mAppRoot . "\\Web.config"); } else { copy($this->mAppRoot . "\\resources\\Web-network-subfolders.config", $this->mAppRoot . "\\Web.config"); } } // Remove tmp build folder $fs->rm($tmp); $fs->rm($this->mRootPath . "/Params.class.php"); $fs->rm($this->mRootPath . "/FileSystem.class.php"); $this->updateWpConfig(); echo "\n\nCongratulations! You now have a brand new Windows Azure WordPress project at " . $this->mRootPath . "\n"; }
/** * Make thumb * * @return void */ public function makeThumbnail($row, $pub, $configs) { // Make sure we got config if (!$this->_config) { $this->getConfig(); } $fpath = $this->getFilePath($row->path, $row->id, $configs, $row->params); $thumbName = \Components\Publications\Helpers\Html::createThumbName(basename($fpath), $this->_config->params->thumbSuffix, $this->_config->params->thumbFormat); $thumbPath = $configs->pubPath . DS . $thumbName; // No file found if (!is_file($fpath)) { return; } // Check if image if (!getimagesize($fpath)) { return false; } $md5 = hash_file('sha256', $fpath); // Create/update thumb if doesn't exist or file changed if (!is_file($thumbPath) || $md5 != $row->content_hash) { Filesystem::copy($fpath, $thumbPath); $hi = new \Hubzero\Image\Processor($thumbPath); if (count($hi->getErrors()) == 0) { $hi->resize($this->_config->params->thumbWidth, false, true, true); $hi->save($thumbPath); } else { return false; } } return true; }
protected function afterGetContentBody() { $sn = time(); $tmpFile = $temp = Yii::app()->params['temp']; $storage = Yii::app()->params['feed_path']; $cdn = Yii::app()->params['cdn_url']; $contentParttern = $this->config['content_pattern']; $contentPage = ''; $k = 0; foreach ($this->html->find("{$contentParttern} .item-list ul li") as $e) { $k++; } if ($k > 0) { $numPage = $k - 1; for ($j = 2; $j < $numPage; $j++) { $link = $this->url . '&page=' . $j; echo $link . "\n"; $htmlBodyPage = file_get_html($link); if (is_object($htmlBodyPage)) { if (isset($this->config['remove_pattern']) || !empty($this->config['remove_pattern'])) { $removePattern = explode('|', $this->config['remove_pattern']); foreach ($removePattern as $rpt) { if ($rpt != '') { foreach ($htmlBodyPage->find("{$rpt}") as $e) { $e->outertext = ''; } } } } foreach ($htmlBodyPage->find("a") as $e) { $innerText = $e->plaintext; $e->outertext = $innerText; //$e->href = '#'; } //get image for content $i = 0; foreach ($htmlBodyPage->find("{$contentParttern} img") as $e) { $imgSrc = $e->src; if (!empty($imgSrc)) { $fileInfo = explode('.', $imgSrc); $fileType = $fileInfo[count($fileInfo) - 1]; $fileName = 'tmp_' . $sn . $i . "." . $fileType; $sfile = $tmpFile . DS . $fileName; $res_get_file = FileRemote::getFromUrl($imgSrc, $sfile); if ($res_get_file && file_exists($sfile)) { $fileDest = StorageHelper::generalStoragePath($sn . $i, $fileType, $storage); list($width, $height) = getimagesize($sfile); if ($width > 500) { $width = 500; $height = 0; $resizeObj = new ResizeImage($sfile); $resizeObj->resizeImage($width, $height); $resizeObj->saveImage($fileDest, 100); } else { $fileSystem = new Filesystem(); $copy = $fileSystem->copy($sfile, $fileDest); } //resize image unlink($sfile); if (file_exists($fileDest)) { echo $fileDest . "\n"; $fileDestUrl = str_replace($storage, $cdn, $fileDest); $fileDestUrl = str_replace(DS, "/", $fileDestUrl); echo $fileDestUrl . "\n"; //$e->src = $fileDestUrl; $e->outertext = '<img src="' . $fileDestUrl . '" title="' . $e->title . '" alt="' . $e->alt . '" />'; echo 'replace file content success in page' . $j . "\n"; } else { echo 'replace file content error' . "\n"; } } $i++; } } $contentPage .= $htmlBodyPage->find($this->config['content_pattern'], 0)->innertext; } } } $this->content .= $contentPage; }