/** * Save file * * @return Maged_Model_Config */ public function save() { if (!is_writable($this->getFilename()) && is_file($this->getFilename()) || dirname($this->getFilename()) != '' && !is_writable(dirname($this->getFilename()))) { if (isset($this->_data['ftp']) && !empty($this->_data['ftp']) && strlen($this->get('downloader_path')) > 0) { $confFile = $this->get('downloader_path') . DIRECTORY_SEPARATOR . basename($this->getFilename()); $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($this->_data['ftp']); $tempFile = tempnam(sys_get_temp_dir(), 'configini'); $fp = fopen($tempFile, 'w'); foreach ($this->_data as $k => $v) { fwrite($fp, $k . '=' . $v . "\n"); } fclose($fp); $ret = $ftpObj->upload($confFile, $tempFile); $ftpObj->close(); } else { /* @TODO: show Warning message*/ $this->controller()->session()->addMessage('warning', 'Invalid file permissions, could not save configuration.'); return $this; } /**/ } else { $fp = fopen($this->getFilename(), 'w'); foreach ($this->_data as $k => $v) { fwrite($fp, $k . '=' . $v . "\n"); } fclose($fp); } return $this; }
/** * Save config file on the disk or over ftp * * @return bool */ public function store() { $result = false; if ($this->_forceSave || $this->_configLoaded || strlen($this->remote_config) > 0) { $data = serialize($this->toArray()); if (strlen($this->remote_config) > 0) { //save config over ftp $confFile = $this->downloader_path . DIRECTORY_SEPARATOR . "connect.cfg"; try { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($this->remote_config); } catch (Exception $e) { $this->_configError = 'Cannot access to deployment FTP path. ' . 'Check deployment FTP Installation path settings.'; return $result; } try { $tempFile = tempnam(sys_get_temp_dir(), 'config'); $f = fopen($tempFile, "w+"); fwrite($f, self::HEADER); fwrite($f, $data); fclose($f); } catch (Exception $e) { $this->_configError = 'Cannot access to temporary file storage to save Settings.' . 'Contact your system administrator.'; return $result; } try { $result = $ftpObj->upload($confFile, $tempFile); $ftpObj->close(); } catch (Exception $e) { $this->_configError = 'Cannot write file over FTP. ' . 'Check deployment FTP Installation path settings.'; return $result; } if (!$result) { $this->_configError = ''; } } elseif (is_file($this->_configFile) && is_writable($this->_configFile) || is_writable(getcwd())) { try { $f = fopen($this->_configFile, "w+"); fwrite($f, self::HEADER); fwrite($f, $data); fclose($f); $result = true; } catch (Exception $e) { $result = false; } } } return $result; }
protected function cleanCache() { $result = true; $message = ''; try { if ($this->isInstalled()) { if (!empty($_REQUEST['clean_sessions'])) { Mage::app()->cleanAllSessions(); $message .= 'Session cleaned successfully. '; } Mage::app()->cleanCache(); // reinit config and apply all updates Mage::app()->getConfig()->reinit(); Mage_Core_Model_Resource_Setup::applyAllUpdates(); Mage_Core_Model_Resource_Setup::applyAllDataUpdates(); $message .= 'Cache cleaned successfully'; } else { $result = true; } } catch (Exception $e) { $result = false; $message = "Exception during cache and session cleaning: " . $e->getMessage(); $this->session()->addMessage('error', $message); } if ($result && $this->_getMaintenanceFlag()) { $maintenance_filename = 'maintenance.flag'; $config = $this->config(); if (!$this->isWritable() && strlen($config->__get('remote_config')) > 0) { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($config->__get('remote_config')); $ftpObj->delete($maintenance_filename); $ftpObj->close(); } else { @unlink($this->_getMaintenanceFilePath()); } } return array('result' => $result, 'message' => $message); }
public function getRemoteConfig($ftpString) { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($ftpString); $cfgFile = self::CONFIG_FILE_NAME; $wd = $ftpObj->getcwd(); $remoteConfigExists = $ftpObj->fileExists($cfgFile); $tempConfigFile = tempnam(sys_get_temp_dir(), 'conf_'); if (!$remoteConfigExists) { $remoteCfg = new Mage_Connect_Config($tempConfigFile); $remoteCfg->store(); $ftpObj->upload($cfgFile, $tempConfigFile); } else { $ftpObj->get($tempConfigFile, $cfgFile); $remoteCfg = new Mage_Connect_Config($tempConfigFile); } $ftpObj->chdir($wd); return array($remoteCfg, $ftpObj); }
/** * Validate settings post data. * * @param array $p */ public function validateConfigPost($p) { $errors = array(); $configTestFile = 'connect.cfgt'; $configObj = $this->connect()->getConfig(); if ('ftp' == $p['deployment_type'] || '1' == $p['inst_protocol']) { /*check ftp*/ $confFile = $configObj->downloader_path . DIRECTORY_SEPARATOR . $configTestFile; try { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($p['ftp']); $tempFile = tempnam(sys_get_temp_dir(), 'config'); $serial = md5('config test file'); $f = @fopen($tempFile, "w+"); @fwrite($f, $serial); @fclose($f); $ret = $ftpObj->upload($confFile, $tempFile); //read file if (!$errors && is_file($configTestFile)) { $size = filesize($configTestFile); if (!$size) { $errors[] = 'Unable to read saved settings. Please check Installation Path of FTP Connection.'; } if (!$errors) { $f = @fopen($configTestFile, "r"); @fseek($f, 0, SEEK_SET); $contents = @fread($f, strlen($serial)); if ($serial != $contents) { $errors[] = 'Wrong Installation Path of FTP Connection.'; } fclose($f); } } else { $errors[] = 'Unable to read saved settings. Please check Installation Path of FTP Connection.'; } $ftpObj->delete($confFile); $ftpObj->close(); } catch (Exception $e) { $errors[] = 'Deployment FTP Error. ' . $e->getMessage(); } } else { $p['ftp'] = ''; } if ('1' == $p['use_custom_permissions_mode']) { /*check permissions*/ if (octdec(intval($p['mkdir_mode'])) < 73 || octdec(intval($p['mkdir_mode'])) > 511) { $errors[] = 'Folders permissions not valid. '; } if (octdec(intval($p['chmod_file_mode'])) < 73 || octdec(intval($p['chmod_file_mode'])) > 511) { $errors[] = 'Files permissions not valid. '; } } //$this->controller()->session()->addMessage('success', 'Settings has been successfully saved'); return $errors; }
public function getRemoteConfig($ftpString) { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($ftpString); $cfgFile = "connect.cfg"; $wd = $ftpObj->getcwd(); $remoteConfigExists = $ftpObj->fileExists($cfgFile); $tempConfigFile = uniqid($cfgFile . "_temp"); if (!$remoteConfigExists) { $remoteCfg = new Mage_Connect_Config($tempConfigFile); $remoteCfg->store(); $ftpObj->upload($cfgFile, $tempConfigFile); } else { $ftpObj->get($tempConfigFile, $cfgFile); $remoteCfg = new Mage_Connect_Config($tempConfigFile); } $ftpObj->chdir($wd); return array($remoteCfg, $ftpObj); }
public function store() { if ($this->_configLoaded || strlen($this->remote_config) > 0) { // @TODO: use ftp to save config $data = serialize($this->toArray()); if (strlen($this->remote_config) > 0) { $confFile = $this->downloader_path . DIRECTORY_SEPARATOR . "connect.cfg"; $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($this->remote_config); $tempFile = tempnam(sys_get_temp_dir(), 'config'); $f = @fopen($tempFile, "w+"); @fwrite($f, self::HEADER); @fwrite($f, $data); @fclose($f); $ret = $ftpObj->upload($confFile, $tempFile); $ftpObj->close(); } elseif (is_file($this->_configFile) && is_writable($this->_configFile) || is_writable(getcwd())) { $f = @fopen($this->_configFile, "w+"); @fwrite($f, self::HEADER); @fwrite($f, $data); @fclose($f); } } }
/** * End install package(s) * */ public function endInstall() { if ($this->isInstalled()) { try { if (!empty($_GET['clean_sessions'])) { Mage::app()->cleanAllSessions(); } Mage::app()->cleanCache(); } catch (Exception $e) { $this->session()->addMessage('error', "Exception during cache and session cleaning: " . $e->getMessage()); } // reinit config and apply all updates Mage::app()->getConfig()->reinit(); Mage_Core_Model_Resource_Setup::applyAllUpdates(); Mage_Core_Model_Resource_Setup::applyAllDataUpdates(); } if ($this->_getMaintenanceFlag()) { $maintenance_filename = 'maintenance.flag'; $config = $this->config(); if (!$this->isWritable() && strlen($config->__get('remote_config')) > 0) { $ftpObj = new Mage_Connect_Ftp(); $ftpObj->connect($config->__get('remote_config')); $ftpObj->delete($maintenance_filename); $ftpObj->close(); } else { @unlink($this->_getMaintenanceFilePath()); } } }