Beispiel #1
0
 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);
 }
Beispiel #2
0
 /**
  * Install package over FTP
  *
  * @param Mage_Connect_Package $package
  * @param string $file
  * @param Mage_Connect_Config $configObj
  * @param Mage_Connect_Ftp $ftp
  * @return void
  */
 public function processInstallPackageFtp($package, $file, $configObj, $ftp)
 {
     $ftpDir = $ftp->getcwd();
     $contents = $package->getContents();
     $arc = $this->getArchiver();
     $target = dirname($file) . DS . $package->getReleaseFilename();
     @mkdir($target, 0777, true);
     $tar = $arc->unpack($file, $target);
     $modeFile = $this->_getFileMode($configObj);
     $modeDir = $this->_getDirMode($configObj);
     foreach ($contents as $file) {
         $source = $tar . DS . $file;
         if (file_exists($source) && is_file($source)) {
             $args = array(ltrim($file, "/"), $source);
             if ($modeDir || $modeFile) {
                 $args[] = $modeDir;
                 $args[] = $modeFile;
             }
             call_user_func_array(array($ftp, 'upload'), $args);
         }
     }
     $localXml = $tar . Mage_Connect_Package_Reader::DEFAULT_NAME_PACKAGE;
     if (is_file($localXml)) {
         $remoteXml = Mage_Connect_Package::PACKAGE_XML_DIR . DS . $package->getReleaseFilename() . '.xml';
         $ftp->upload($remoteXml, $localXml, $modeDir, $modeFile);
     }
     $ftp->chdir($ftpDir);
     Mage_System_Dirs::rm(array("-r", $target));
 }
Beispiel #3
0
 /**
  *
  * @param $chanName
  * @param $package
  * @param Mage_Connect_Singleconfig $cacheObj
  * @param Mage_Connect_Ftp $ftp
  * @return unknown_type
  */
 public function processUninstallPackageFtp($chanName, $package, $cacheObj, $ftp)
 {
     $ftpDir = $ftp->getcwd();
     $package = $cacheObj->getPackageObject($chanName, $package);
     $contents = $package->getContents();
     foreach ($contents as $file) {
         $res = $ftp->delete($file);
     }
     $ftp->chdir($ftpDir);
 }
Beispiel #4
0
 /**
  * Install package over FTP
  *
  * @param Mage_Connect_Package $package
  * @param string $file
  * @param Mage_Connect_Config $configObj
  * @param Mage_Connect_Ftp $ftp
  * @throws RuntimeException
  */
 public function processInstallPackageFtp($package, $file, $configObj, $ftp)
 {
     $ftpDir = $ftp->getcwd();
     $contents = $package->getContents();
     $arc = $this->getArchiver();
     $target = dirname($file) . DS . $package->getReleaseFilename();
     if (!@mkdir($target, 0777, true)) {
         throw new RuntimeException("Can't create directory " . $target);
     }
     $tar = $arc->unpack($file, $target);
     $modeFile = $this->_getFileMode($configObj);
     $modeDir = $this->_getDirMode($configObj);
     $failedFiles = array();
     foreach ($contents as $file) {
         $source = $tar . DS . $file;
         if (file_exists($source) && is_file($source)) {
             $args = array(ltrim($file, "/"), $source);
             if ($modeDir || $modeFile) {
                 $args[] = $modeDir;
                 $args[] = $modeFile;
             }
             if (call_user_func_array(array($ftp, 'upload'), $args) === false) {
                 $failedFiles[] = $source;
             }
         }
     }
     if (!empty($failedFiles)) {
         $msg = sprintf("Failed to upload files: %s \r\n Check permissions", implode("\r\n", $failedFiles));
         throw new RuntimeException($msg);
     }
     $localXml = $tar . Mage_Connect_Package_Reader::DEFAULT_NAME_PACKAGE;
     if (is_file($localXml)) {
         $remoteXml = Mage_Connect_Package::PACKAGE_XML_DIR . DS . $package->getReleaseFilename() . '.xml';
         $ftp->upload($remoteXml, $localXml, $modeDir, $modeFile);
     }
     $ftp->chdir($ftpDir);
     Mage_System_Dirs::rm(array("-r", $target));
 }