verbose('-> Extraction successfull'); } else { report('Extraction error...', true); } unset($archive); } //Check files content report('Start patching process...'); $automnePatch = new CMS_patch($cms_user); //read patch or export param file and check versions verbose('Read patch file...'); $patchFile = new CMS_file(PATH_TMP_FS . "/patch"); $exportFile = new CMS_file(PATH_TMP_FS . "/export.xml"); if ($patchFile->exists()) { $patch = $patchFile->readContent("array"); if (!$automnePatch->checkPatch($patch)) { report('Error : Patch does not match current version ...', true); } else { verbose('-> Patch version match.'); } //read install param file and do maximum check on it before starting the installation process verbose('Read install file...'); $installFile = new CMS_file(PATH_TMP_FS . "/install"); if ($installFile->exists()) { $install = $installFile->readContent("array"); } else { report('Error : File ' . PATH_TMP_FS . '/install does not exists ... This file is not a valid Automne patch.', true); } $installError = $automnePatch->checkInstall($install, $errorsInfos); if ($installError) { report('Error : Invalid install file :');
function patch($patchFile, &$error) { $archive = new CMS_gzip_file($patchFile); if (!$archive->hasError()) { $archive->set_options(array('basedir' => PATH_TMP_FS . "/", 'overwrite' => 1, 'level' => 1, 'dontUseFilePerms' => 1, 'forceWriting' => 1)); if (is_dir(PATH_TMP_FS)) { if (!method_exists($archive, 'extract_files') || !$archive->extract_files()) { $error = 'Error : Extraction error...'; return false; } } else { $error = 'Error : Extraction directory does not exist'; return false; } } else { $error = 'Error : Unable to extract archive wanted ' . $filename . '. It is not a valid format...'; return false; } if (!$archive->hasError()) { unset($archive); } else { $error = 'Extraction error...'; return false; } //Check files content $automnePatch = new CMS_patch(); //read patch param file and check versions $patchFile = new CMS_file(PATH_TMP_FS . "/patch"); if ($patchFile->exists()) { $patch = $patchFile->readContent("array"); } else { $error = 'Error : File ' . PATH_TMP_FS . '/patch does not exists ...'; return false; } if (!$automnePatch->checkPatch($patch)) { $error = 'Error : Patch does not match current version ...'; return false; } //read install param file and do maximum check on it before starting the installation process $installFile = new CMS_file(PATH_TMP_FS . "/install"); if ($installFile->exists()) { $install = $installFile->readContent("array"); } else { $error = 'Error : File ' . PATH_TMP_FS . '/install does not exists ...'; return false; } $installError = $automnePatch->checkInstall($install, $errorsInfos); if ($installError) { $error = 'Error : Invalid install file :'; $error .= $installError; return false; } //start Installation process $automnePatch->doInstall($install); $installError = false; $return = $automnePatch->getReturn(); foreach ($return as $line) { if ($line['type'] == 'report') { $error .= $line['text']; } } if ($installError) { $error = 'Error during installation process : ' . $error; return false; } //remove temporary files !CMS_file::deltree(PATH_TMP_FS); return true; }