/** * Функция установки обновления * @param string $file - путь к архиву обновления * @return bool */ static function extractUpdate($file) { // проверяем файл if (!file_exists($file)) { self::$errorMessage = ERROR_UPDATES_UPDATE_FILE_NOT_FOUND; return false; } function pEC($p_event, &$p_header) { return updates::preExtractCallBack($p_event, $p_header); } // создаем объект $zip = new PclZip($file); // извлекаем файлы self::clearLogData(); self::setLogData(array('error' => 2, 'message' => 'Try extract update files', 'object' => $file)); self::saveLogData(); if (!($resExtract = $zip->extract(PCLZIP_OPT_PATH, '', PCLZIP_CB_PRE_EXTRACT, 'pEC'))) { self::setLogData(array('error' => 1, 'message' => $zip->errorInfo(true), 'object' => $file)); self::saveLogData(); self::$errorMessage = ERROR_UPDATES_UNABLE_EXTRACT_FILES; return false; } self::saveLogData(); // Выполняем патч (patch.php) if (file_exists('patch.php')) { self::clearLogData(); self::setLogData(array('error' => 2, 'message' => 'Try execute patch file', 'object' => 'patch.php')); self::saveLogData(); include_once 'patch.php'; if (unlink('patch.php')) { self::clearLogData(); self::setLogData(array('error' => 0, 'message' => 'Patch file execute and deleted success', 'object' => 'patch.php')); self::saveLogData(); } else { self::clearLogData(); self::setLogData(array('error' => 1, 'message' => 'Patch file not deleted', 'object' => 'patch.php')); self::saveLogData(); } } self::$message = MESSAGE_UPDATE_SUCCESSFULLY_SETUP; return true; }