示例#1
0
 /**
  * Функция установки обновления
  * @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;
 }