function setAll($messages)
 {
     if (empty($messages) || !is_array($messages)) {
         return zmgError::throwError('Illegal access to zmgMessageCenter::setAll');
     }
     $this->_messages = $messages;
 }
 function embed()
 {
     $os = zmgCmsPlugin::_guessCMS();
     $os_dir = ZMG_ABS_PATH . DS . 'var' . DS . 'plugins' . DS . 'cms' . DS . $os;
     if (is_dir($os_dir)) {
         $os_path = 'org.zoomfactory.var.plugins.cms.' . $os;
         zmgimport($os_path . '.aclEmbed');
         zmgimport($os_path . '.databaseEmbed');
         zmgimport($os_path . '.envEmbed');
         return true;
     }
     zmgError::throwError('zmgCmsPlugin: no CMS found.');
     return false;
 }
 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;
 }
 function throwError($message)
 {
     if (true) {
         //!zmgEnv::isRPC()) {
         return zmgError::throwError($message);
     } else {
         return zmgFactory::getRequest()->sendHeaders($this->_viewtype, true, $message);
     }
 }
 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 setMimeType($mime = null)
 {
     if (!$this->filename) {
         zmgError::throwError('zmgMedium: medium data not loaded yet');
     }
     if ($mime === null) {
         $path = $this->getAbsPath();
         zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper');
         zmgimport('org.zoomfactory.lib.mime.zmgMimeHelper');
         $mime = zmgMimeHelper::getMime($path, null, $this->getExtension());
     }
     $this->_mime_type = $mime;
 }
 /**
  * Autodetect a file's MIME-type with 'file' and System_Command
  *
  * This function may be called staticly.
  *
  * @param  string $file   Path to the file to get the type of
  * @return string $file's MIME-type
  * @since 1.0.0beta1
  * @static
  */
 function _fileAutoDetect($file)
 {
     // Sanity checks
     if (!file_exists($file)) {
         return zmgError::throwError("zmgMime: File \"{$file}\" doesn't exist");
     }
     if (!is_readable($file)) {
         return zmgError::throwError("zmgMime: File \"{$file}\" is not readable");
     }
     $output = '';
     $status = null;
     @exec("file -bi '{$file}'", $output, $status);
     if (@$status) {
         return false;
     } else {
         return $output;
     }
 }
 function delete()
 {
     if (!$this->hasStarted()) {
         return zmgError::throwError('zmgSession: session not started yet.');
     }
     if (empty($this->_vars)) {
         return zmgError::throwError('zmgSession: no variables to fetch.');
     }
     $name = trim($name);
     if ($this->_vars[$this->_var_prefix . $name]) {
         unset($this->_vars[$this->_var_prefix . $name]);
     }
     if ($this->_vars[$name]) {
         unset($this->_vars[$name]);
     }
 }
 /**
  * Recieves the string you want lo log. This function is used by "logThis"
  * function, which offers simplified logging with some practical functions.
  *
  * @param String $logString
  * @return void
  */
 function writeLog($logString)
 {
     global $logNumber;
     //depending on selected log mode...
     //use only one log file, or one file per log instance
     $logFile = $this->_logDir . DS . $this->_logFile . ".log";
     if ($this->_logMode == "oneFilePerLog") {
         $logFile = $this->_logDir . DS . $this->_logFile . $this->_logNumber . ".log";
     }
     //in case file does not exist
     if (!zmgFileHelper::exists($logFile)) {
         //if log file does not exist, I create it
         touch($logFile);
         //generate file header
         $logHeader = $this->_headerTitle . "\n" . "--------------------------------------------------------------------\n" . "--------------------------------------------------------------------\n\n\n";
         $fp = fopen($logFile, "w+");
         if (fwrite($fp, $logHeader) === false) {
             zmgError::throwError("Could not write LOG Header");
         }
         fclose($fp);
     }
     //write to log file
     $fp = fopen($logFile, "a");
     if (fwrite($fp, $logString) === false) {
         zmgError::throwError("Could not write to LOG file");
     }
     fclose($fp);
 }
 function getViewToken($which = 'last')
 {
     $tokens = zmgFactory::getView()->getViewTokens();
     if (count($tokens) == 0) {
         return zmgError::throwError('No tokens available.');
     }
     $token = "";
     switch ($which) {
         case 'first':
             $token = $tokens[0];
             break;
         default:
         case 'last':
             $token = $tokens[count($tokens) - 1];
             break;
     }
     return $token;
 }
 function embedSettings(&$plugin, $xml_path)
 {
     //echo "DEBUG: ".$xml_path;
     if (!empty($plugin)) {
         if (is_string($plugin)) {
             $plugin =& $this->get($plugin);
         }
     } else {
         return zmgError::throwError('embedSettings::Invalid plugin.');
     }
     if (!file_exists($xml_path)) {
         return zmgError::throwError('Settings file not found (' . $xml_path . ').');
     }
     require_once ZMG_ABS_PATH . DS . 'lib' . DS . 'domit' . DS . 'xml_domit_lite_include.php';
     $xmldoc =& new DOMIT_Lite_Document();
     $xmldoc->resolveErrors(true);
     if (!$xmldoc->loadXML($xml_path, false, true)) {
         unset($xmldoc);
         return zmgError::throwError('DOMIT error: could not open document.');
     }
     if ($xmldoc->documentElement->getTagName() != "settings") {
         unset($xmldoc);
         return zmgError::throwError('Invalid plugin settings file.');
     }
     $plugin['settings'] = array();
     if ($xmldoc->documentElement->hasAttribute('plugin')) {
         $plugin['settings_name'] = $xmldoc->documentElement->getAttribute('plugin');
     } else {
         $plugin['settings_name'] = $this->prettifyName($plugin['name']);
     }
     $els =& $xmldoc->getElementsByTagName('category');
     for ($i = 0; $i < $els->getLength(); $i++) {
         $res =& $els->item($i);
         if ($res->hasAttribute('name')) {
             $cat = $res->getAttribute('name');
             $plugin['settings'][$cat] = array();
             $settings =& $res->getElementsByTagName('setting');
             for ($j = 0; $j < $settings->getLength(); $j++) {
                 $setting =& $settings->item($j);
                 if (!$setting->hasAttribute('name')) {
                     zmgError::throwError('zmgPluginHelper::invalid setting in ' . $xml_path);
                     continue;
                 }
                 $name = trim($setting->getAttribute('name'));
                 $plugin['settings'][$cat][$name] = array();
                 if ($setting->hasAttribute('type')) {
                     $type = $setting->getAttribute('type');
                     $plugin['settings'][$cat][$name]['type'] = $type;
                     if ($type == "select") {
                         $options =& $setting->getElementsByTagName('option');
                         for ($k = 0; $k < $options->getLength(); $k++) {
                             $option =& $options->item($k);
                             $plugin['settings'][$cat][$name]['option' . $k] = array('value' => $option->getAttribute('value'), 'caption' => $option->firstChild->nodeValue);
                         }
                     }
                 }
                 if ($setting->hasAttribute('size')) {
                     $plugin['settings'][$cat][$name]['size'] = $setting->getAttribute('size');
                 }
                 if ($setting->hasAttribute('default')) {
                     $plugin['settings'][$cat][$name]['default'] = $setting->getAttribute('default');
                 }
                 if ($setting->hasAttribute('value')) {
                     $plugin['settings'][$cat][$name]['value'] = $setting->getAttribute('value');
                 }
                 if ($setting->hasAttribute('label')) {
                     $plugin['settings'][$cat][$name]['label'] = $setting->getAttribute('label');
                 }
                 if ($setting->hasAttribute('description')) {
                     $plugin['settings'][$cat][$name]['description'] = $setting->getAttribute('description');
                 }
                 if ($setting->hasAttribute('disabled')) {
                     $plugin['settings'][$cat][$name]['disabled'] = $setting->getAttribute('description') == "true" ? true : false;
                 } else {
                     $plugin['settings'][$cat][$name]['disabled'] = false;
                 }
                 if ($setting->hasAttribute('readonly')) {
                     $plugin['settings'][$cat][$name]['readonly'] = $setting->getAttribute('readonly') == "true" ? true : false;
                 } else {
                     $plugin['settings'][$cat][$name]['readonly'] = false;
                 }
             }
         }
     }
     //TODO: access fromXML with a public API call
     zmgFactory::getConfig()->fromPlugin($plugin);
 }
 /**
  * remove a gallery completely including sub-directories.
  * @param string $path
  * @return boolean
  */
 function deleteDir($path)
 {
     // Sanity check
     if (!$path) {
         // Bad programmer! Bad Bad programmer!
         zmgError::throwError('zmgFileHelper: ' . _('Attempt to delete base directory'));
         return false;
     }
     $res = true;
     $current_dir = opendir($path);
     while ($entryname = readdir($current_dir)) {
         if (is_dir($path . DS . $entryname) && ($entryname != "." && $entryname != "..")) {
             $res = zmgFileHelper::deleteDir($path . DS . $entryname);
         } else {
             if ($entryname != "." && $entryname != "..") {
                 $res = zmgFileHelper::delete($path . DS . $entryname);
             }
         }
     }
     closedir($current_dir);
     if (zmgFactory::getConfig()->get('plugins/safemode/general/enable') == 1) {
         $res = zmgFactory::getEvents()->fire('ondirdelete', $path);
     } else {
         $res = rmdir($path);
     }
     return $res;
 }
 /**
  * Set transfer mode
  *
  * @access private
  * @param int $mode Integer representation of data transfer mode [1:Binary|0:Ascii]
  *  Defined constants can also be used [FTP_BINARY|FTP_ASCII]
  * @return boolean True if successful
  */
 function _mode($mode)
 {
     if ($mode == FTP_BINARY) {
         if (!$this->_putCmd("TYPE I", 200)) {
             zmgError::throwError('zmgFTP::_mode: Bad response', 'Server response: ' . $this->_response . ' [Expected: 200] Mode sent: Binary');
             //'35'
             return false;
         }
     } else {
         if (!$this->_putCmd("TYPE A", 200)) {
             zmgError::throwError('zmgFTP::_mode: Bad response', 'Server response: ' . $this->_response . ' [Expected: 200] Mode sent: Ascii');
             //'35'
             return false;
         }
     }
     return true;
 }