/** * Function to strip additional / or \ in a path name * * @static * @param string $path The path to clean * @param string $ds Directory separator (optional) * @return string The cleaned path * @since 1.5 */ function cleanPath($path, $ds = DS) { $path = trim($path); if (empty($path)) { $path = zmgEnv::getRootPath(); } else { // Remove double slashes and backslahses and convert all slashes and backslashes to DS $path = preg_replace('#[/\\\\]+#', $ds, $path); } return $path; }
function firstRun() { // do the check again, for safety reasons: if ($this->_config['date_lch'] !== null) { $this->_installed = true; return zmgError::throwError('Illegal way of accessing firstRun'); } zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper'); if (zmgFileHelper::exists(ZMG_ABS_PATH . DS . 'etc' . DS . 'app.config.php.bak')) { $this->_installed = true; return zmgError::throwError('Illegal access: component already installed.'); } $messages =& zmgFactory::getMessages(); $html_file = "<html><body bgcolor=\"#FFFFFF\"></body></html>"; //make all the necessary folders writable for ZMG $config_dir = ZMG_ABS_PATH . DS . "etc"; if (!zmgFileHelper::chmodRecursive($config_dir)) { $messages->append('Installation Error!', 'Unable to set directory permissions for: ' . $config_dir); } //make sure the configuration file itself is writable if (!zmgFileHelper::chmodRecursive($config_dir . DS . 'app.config.php')) { $messages->append('Installation Error!', 'Unable to set file permissions for: ' . $config_dir . DS . 'app.config.php'); } $media_dir = zmgEnv::getRootPath() . DS . $this->get('filesystem/mediapath'); if (!is_dir($media_dir)) { if (zmgFileHelper::createDir($media_dir)) { if (!zmgFileHelper::write($media_dir . DS . 'index.html', $html_file)) { $messages->append('Installation Error!', 'Unable to write to file: ' . $media_dir . DS . 'index.html'); } } else { $messages->append('Installation Error!', 'Unable to create directory: ' . $media_dir); } } //backup the original config file that came with the distribution package if (!zmgFileHelper::copy('app.config.php', 'app.config.php.bak', ZMG_ABS_PATH . DS . 'etc')) { $messages->append('Installation Error!', 'Unable to copy file: ' . ZMG_ABS_PATH . DS . 'etc' . DS . 'app.config.php'); } $this->_installed = $this->save(); if ($this->_installed) { $messages->append('Installation Success!', 'Your component is ready to use now.'); } else { $messages->append('Installation Error!', 'Settings could not be saved.'); } return $this->_installed; }
/** * Extract the raw text from a PDF document (format: '{filename}.txt') with the Xpdf library (pdftotext) * * @param string $file * @param string $filename * @return boolean */ function process(&$medium, &$gallery) { // this function will contain the algorithm to index a document (like a pdf)... // Method: use PDFtoText to create a plain ASCII text-file, which can be easily // searched through. The text-file will be placed into the same dir as the // original pdf. // Note: support for MS Word, Excel and Powerpoint indexing will be added later. $file = $medium->getAbsPath(); $filename = ereg_replace("(.*)\\.([^\\.]*)\$", "\\1", $medium->filename) . ".txt"; $target_file = zmgEnv::getRootPath() . DS . zmgFactory::getConfig()->get('filesystem/mediapath') . $gallery->dir . DS . $filename; $cmd = zmgDocumentTool::getPath() . "pdftotext \"{$file}\" \"{$target_file}\""; $output = $retval = null; exec($cmd, $output, $retval); if ($retval) { return zmgToolboxPlugin::registerError($file, 'Xpdf: Could not index document: ' . $output); } return true; }
function getAbsPath($type = ZMG_MEDIUM_ORIGINAL, $mediapath = '') { if (!$this->filename) { zmgError::throwError('zmgMedium: medium data not loaded yet;' . $this->_gallery_dir . ' ' . $this->filename); } $path = zmgEnv::getRootPath() . DS; if (empty($mediapath)) { $mediapath = zmgFactory::getConfig()->get('filesystem/mediapath'); } $path .= $mediapath . $this->getGalleryDir() . DS; if ($type & ZMG_MEDIUM_ORIGINAL) { $path .= ""; } else { if ($type & ZMG_MEDIUM_VIEWSIZE) { $path .= "viewsize" . DS; } else { if ($type & ZMG_MEDIUM_THUMBNAIL) { $path .= "thumbs" . DS; } } } return $path . $this->filename; }
function dirDelete($event) { $path = $event->getArgument('path'); $ftp =& zmgSafemodePlugin::getFTPClient(); //Translate the destination path for the FTP account $path = zmgFileHelper::cleanPath(str_replace(zmgEnv::getRootPath(), $ftp->getRoot(), $path), '/'); if (!$ftp->rmdir($path)) { // FTP connector throws an error return false; } return true; }
function buildDirStructure() { zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper'); $html_file = "<html><body bgcolor=\"#FFFFFF\"></body></html>"; $root = zmgEnv::getRootPath(); $mediapath = $root . DS . zmgFactory::getConfig()->get('filesystem/mediapath'); $dirs = array($mediapath . $this->dir, $mediapath . $this->dir . DS . 'thumbs', $mediapath . $this->dir . DS . 'viewsize'); foreach ($dirs as $dir) { if (zmgFileHelper::createDir($dir, 0777)) { if (!zmgFileHelper::write($dir . DS . 'index.html', $html_file)) { zmgError::throwError(T_('Unable to write to file: ') . $dir . DS . 'index.html'); } } else { zmgError::throwError(T_('Unable to create directory: ') . $dir); } } return true; }
function finalizeUpload($gid = 0) { //finish the SwfUpload sequence... if ($gid === 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No valid gallery ID provided')); } $session =& zmgFactory::getSession(); $events =& zmgFactory::getEvents(); $config =& zmgFactory::getConfig(); $db =& zmgDatabase::getDBO(); $gallery = new zmgGallery($db); $gallery->load($gid); //now we got the gallery and its data, retrieve the uploaded media $media = $session->get('uploadtool.fancyfiles'); if (!is_array($media) || count($media) == 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No media have been uploaded; nothing to do.')); } zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper'); $src_path = ZMG_ABS_PATH . DS . "etc" . DS . "cache" . DS; $dest_path = zmgEnv::getRootPath() . DS . $config->get('filesystem/mediapath') . $gallery->dir . DS; foreach ($media as $medium) { $obj = new zmgMedium($db); $name = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_name', '')); $descr = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_descr', '')); $data = array('name' => $name, 'filename' => $medium, 'descr' => $descr, 'published' => 1, 'gid' => $gallery->gid); $obj->setGalleryDir($gallery->dir); //saves a SQL query later on... //do some additional validation of strings $data['name'] = $events->fire('onvalidate', $data['name']); if (!$data['name']) { $data['name'] = $name; } $data['descr'] = $events->fire('onvalidate', $data['descr']); if (!$data['descr']) { $data['descr'] = $descr; } if (!$obj->bind($data)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } else { if (!zmgFileHelper::copy($src_path . $medium, $dest_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to copy file') . ' ' . $medium); } else { if (!zmgFileHelper::delete($src_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to delete temporary file') . ' ' . $medium); } else { if (!zmgToolboxPlugin::processMedium($obj, $gallery)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be processed') . ' ' . $medium); } else { if (!$obj->store()) { //now save this medium in our DB zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } } } } } //delete medium from session data: fourth parameter as TRUE $session->update('uploadtool.fancyfiles', $medium, ZMG_DATATYPE_ARRAY, true); } zmgToolboxPlugin::throwErrors(); }
function getTempDir() { return zmgEnv::getRootPath() . DS . "media"; }