/**
  * Update Module from zip file
  * @param Vtiger_Module Instance of the module to update
  * @param String Zip file name
  * @param Boolean True for overwriting existing module
  */
 function update($moduleInstance, $zipfile, $overwrite = true)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if ($module != null) {
         // If data is not yet available
         if (empty($this->_modulexml)) {
             $this->__parseManifestFile($unzip);
         }
         $buildModuleArray = array();
         $installSequenceArray = array();
         $moduleBundle = (bool) $this->_modulexml->modulebundle;
         if ($moduleBundle == true) {
             $moduleList = (array) $this->_modulexml->modulelist;
             foreach ($moduleList as $moduleInfos) {
                 foreach ($moduleInfos as $moduleInfo) {
                     $moduleInfo = (array) $moduleInfo;
                     $buildModuleArray[] = $moduleInfo;
                     $installSequenceArray[] = $moduleInfo['install_sequence'];
                 }
             }
             sort($installSequenceArray);
             $unzip = new Vtiger_Unzip($zipfile);
             $unzip->unzipAllEx($this->getTemporaryFilePath());
             foreach ($installSequenceArray as $sequence) {
                 foreach ($buildModuleArray as $moduleInfo) {
                     if ($moduleInfo['install_sequence'] == $sequence) {
                         $moduleInstance = Vtiger_Module::getInstance($moduleInfo['name']);
                         $this->update($moduleInstance, $this->getTemporaryFilePath($moduleInfo['filepath']), $overwrite);
                     }
                 }
             }
         } else {
             if (!$moduleInstance || $moduleInstance->name != $module) {
                 self::log('Module name mismatch!');
                 return false;
             }
             $module = $this->initUpdate($moduleInstance, $zipfile, $overwrite);
             // Call module update function
             $this->update_Module($moduleInstance);
         }
     }
 }
 /**
  * Initialize Update
  * @access private
  */
 function initUpdate($moduleInstance, $zipfile, $overwrite)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if (!$moduleInstance || $moduleInstance->name != $module) {
         self::log('Module name mismatch!');
         return false;
     }
     if ($module != null) {
         $unzip = new Vtiger_Unzip($zipfile, $overwrite);
         // Unzip selectively
         $unzip->unzipAllEx(".", array('include' => array('templates', "modules/{$module}")), array('templates' => "Smarty/templates/modules/{$module}"), array('cron' => "cron/modules/{$module}"));
         // If data is not yet available
         if (empty($this->_modulexml)) {
             $this->__parseManifestFile($unzip);
         }
         if ($unzip) {
             $unzip->close();
         }
     }
     return $module;
 }
Example #3
0
 /**
  * Import Module from zip file
  * @param String Zip file name
  * @param Boolean True for overwriting existing module
  *
  * @todo overwrite feature is not functionally currently.
  */
 function import($zipfile, $overwrite = false)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if ($module != null) {
         // If data is not yet available
         if (empty($this->_modulexml)) {
             $this->__parseManifestFile($unzip);
         }
         $buildModuleArray = array();
         $installSequenceArray = array();
         $moduleBundle = (bool) $this->_modulexml->modulebundle;
         if ($moduleBundle == true) {
             $moduleList = (array) $this->_modulexml->modulelist;
             foreach ($moduleList as $moduleInfos) {
                 foreach ($moduleInfos as $moduleInfo) {
                     $moduleInfo = (array) $moduleInfo;
                     $buildModuleArray[] = $moduleInfo;
                     $installSequenceArray[] = $moduleInfo['install_sequence'];
                 }
             }
             sort($installSequenceArray);
             $unzip = new Vtiger_Unzip($zipfile);
             $unzip->unzipAllEx($this->getTemporaryFilePath());
             foreach ($installSequenceArray as $sequence) {
                 foreach ($buildModuleArray as $moduleInfo) {
                     if ($moduleInfo['install_sequence'] == $sequence) {
                         $this->import($this->getTemporaryFilePath($moduleInfo['filepath']), $overwrite);
                     }
                 }
             }
         } else {
             $module = $this->initImport($zipfile, $overwrite);
             // Call module import function
             $this->import_Module();
         }
     }
 }
 /**
  * Unzip all zip files and delete unzipped archives. 
  */
 private function unzipLoadedFiles()
 {
     $files = $this->getFiles(self::UPLOAD_DIR, "*.zip");
     foreach ($files as $file) {
         $unzip = new Vtiger_Unzip(self::UPLOAD_DIR . $file);
         if (!$unzip) {
             unlink(self::UPLOAD_DIR . $file);
             continue;
         }
         $unzip->unzipAllEx(self::UPLOAD_DIR);
         $unzip->close();
         unlink(self::UPLOAD_DIR . $file);
     }
 }
Example #5
0
 public static function installSelectedOptionalModules($selected_modules, $source_directory = '', $destination_directory = '')
 {
     require_once 'vtlib/Vtiger/Package.php';
     require_once 'vtlib/Vtiger/Module.php';
     require_once 'include/utils/utils.php';
     $selected_modules = explode(":", $selected_modules);
     $languagePacks = array();
     if ($handle = opendir('packages/vtiger/optional')) {
         while (false !== ($file = readdir($handle))) {
             $filename_arr = explode(".", $file);
             if ($filename_arr[count($filename_arr) - 1] != 'zip') {
                 continue;
             }
             $packagename = $filename_arr[0];
             $packagepath = "packages/vtiger/optional/{$file}";
             $package = new Vtiger_Package();
             $module = $package->getModuleNameFromZip($packagepath);
             if (!empty($packagename) && in_array($module, $selected_modules)) {
                 if ($package->isLanguageType($packagepath)) {
                     $languagePacks[$module] = $packagepath;
                     continue;
                 }
                 if ($module != null) {
                     if ($package->isModuleBundle()) {
                         $unzip = new Vtiger_Unzip($packagepath);
                         $unzip->unzipAllEx($package->getTemporaryFilePath());
                         $moduleInfoList = $package->getAvailableModuleInfoFromModuleBundle();
                         foreach ($moduleInfoList as $moduleInfo) {
                             $moduleInfo = (array) $moduleInfo;
                             $packagepath = $package->getTemporaryFilePath($moduleInfo['filepath']);
                             $subModule = new Vtiger_Package();
                             $subModuleName = $subModule->getModuleNameFromZip($packagepath);
                             $moduleInstance = Vtiger_Module::getInstance($subModuleName);
                             if ($moduleInstance) {
                                 updateVtlibModule($subModuleName, $packagepath);
                             } else {
                                 installVtlibModule($subModuleName, $packagepath);
                             }
                         }
                     } else {
                         $moduleInstance = Vtiger_Module::getInstance($module);
                         if ($moduleInstance) {
                             updateVtlibModule($module, $packagepath);
                         } else {
                             installVtlibModule($module, $packagepath);
                         }
                     }
                 }
             }
         }
         closedir($handle);
     }
     foreach ($languagePacks as $module => $packagepath) {
         installVtlibModule($module, $packagepath);
         continue;
     }
 }
 /**
  * Initialize Import
  * @access private
  */
 function initImport($zipfile, $overwrite)
 {
     $module = $this->getModuleNameFromZip($zipfile);
     if ($module != null) {
         $unzip = new Vtiger_Unzip($zipfile, $overwrite);
         // Unzip selectively
         $unzip->unzipAllEx(".", array('include' => array('templates', "modules/{$module}", 'cron')), array('templates' => "Smarty/templates/modules/{$module}", 'cron' => "cron/modules/{$module}"));
         // If data is not yet available
         if (empty($this->_modulexml)) {
             $this->__parseManifestFile($unzip);
         }
         if ($unzip) {
             $unzip->close();
         }
     }
     return $module;
 }