diff --git a/pandora_console/include/ajax/update_manager.ajax.php b/pandora_console/include/ajax/update_manager.ajax.php
index dcf0ebf7e1..d947bbb78a 100644
--- a/pandora_console/include/ajax/update_manager.ajax.php
+++ b/pandora_console/include/ajax/update_manager.ajax.php
@@ -1,504 +1,502 @@
-open($path) === true) {
- // The files will be extracted one by one
- for($i = 0; $i < $zip->numFiles; $i++) {
- $filename = $zip->getNameIndex($i);
-
- if ($zip->extractTo($destination, array($filename))) {
- // Creates a file with the name of the files extracted
- file_put_contents ($destination."/files.txt", $filename."\n", FILE_APPEND | LOCK_EX);
- } else {
- // Deletes the entire extraction directory if a file can not be extracted
- delete_directory($destination);
- $return["status"] = "error";
- $return["message"] = __("There was an error extracting the file '".$filename."' from the package.");
- echo json_encode($return);
- return;
- }
- }
- // Creates a file with the number of files extracted
- file_put_contents ($destination."/files.info.txt", $zip->numFiles);
- // Zip close
- $zip->close();
-
- $return["status"] = "success";
- $return["package"] = $destination;
- echo json_encode($return);
- return;
- } else {
- $return["status"] = "error";
- $return["message"] = __("The package was not extracted.");
- echo json_encode($return);
- return;
- }
- } else {
- $return["status"] = "error";
- $return["message"] = __("Invalid extension. The package must have the extension .oum.");
- echo json_encode($return);
- return;
- }
- }
-
- $return["status"] = "error";
- $return["message"] = __("The file was not uploaded succesfully.");
- echo json_encode($return);
- return;
-}
-
-if ($install_package) {
- global $config;
- ob_clean();
-
- $package = (string) get_parameter("package");
- $package = trim($package);
-
- $chunks = explode("_", basename($package));
- $chunks = explode(".", $chunks[1]);
- $version = $chunks[0];
-
- // All files extracted
- $files_total = $package . "/files.txt";
- // Files copied
- $files_copied = $package . "/files.copied.txt";
- $return = array();
-
- if (file_exists($files_copied)) {
- unlink($files_copied);
- }
-
- if (file_exists($package)) {
-
- if ($files_h = fopen($files_total, "r")) {
-
- while ($line = stream_get_line($files_h, 65535, "\n")) {
- $line = trim($line);
-
- // Tries to move the old file to the directory backup inside the extracted package
- if (file_exists($config["homedir"] . "/" . $line)) {
- rename($config["homedir"] . "/" . $line,
- $package . "/backup/" . $line);
- }
- // Tries to move the new file to the Pandora directory
- $dirname = dirname($line);
- if (!file_exists($config["homedir"] . "/" . $dirname)) {
- $dir_array = explode("/", $dirname);
- $temp_dir = "";
- foreach ($dir_array as $dir) {
- $temp_dir .= "/" . $dir;
- if (!file_exists($config["homedir"] . $temp_dir)) {
- mkdir($config["homedir"] . $temp_dir);
- }
- }
- }
- if (is_dir($package . "/" . $line)) {
- if (!file_exists($config["homedir"] . "/" . $line)) {
- mkdir($config["homedir"] . "/" . $line);
- file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX);
- }
- }
- else {
- if (rename($package."/".$line, $config["homedir"]."/".$line)) {
-
- // Append the moved file to the copied files txt
- if (!file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX)) {
-
- // If the copy process fail, this code tries to restore the files backed up before
- if ($files_copied_h = fopen($files_copied, "r")) {
- while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
- $line_c = trim($line_c);
- if (!rename($package."/backup/".$line, $config["homedir"]."/".$line_c)) {
- $backup_status = __("Some of your files might not be recovered.");
- }
- }
- if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
- $backup_status = __("Some of your files might not be recovered.");
- }
- fclose($files_copied_h);
- } else {
- $backup_status = __("Some of your old files might not be recovered.");
- }
-
- fclose($files_h);
- $return["status"] = "error";
- $return["message"]= __("Line '$line' not copied to the progress file.")." ".$backup_status;
- echo json_encode($return);
- return;
- }
- }
- else {
-
- // If the copy process fail, this code tries to restore the files backed up before
- if ($files_copied_h = fopen($files_copied, "r")) {
- while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
- $line_c = trim($line_c);
- if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
- $backup_status = __("Some of your old files might not be recovered.");
- }
- }
- fclose($files_copied_h);
- }
- else {
- $backup_status = __("Some of your files might not be recovered.");
- }
-
- fclose($files_h);
- $return["status"] = "error";
- $return["message"]= __("File '$line' not copied.")." ".$backup_status;
- echo json_encode($return);
- return;
- }
- }
- }
- fclose($files_h);
- }
- else {
- $return["status"] = "error";
- $return["message"]= __("An error ocurred while reading a file.");
- echo json_encode($return);
- return;
- }
- }
- else {
- $return["status"] = "error";
- $return["message"]= __("The package does not exist");
- echo json_encode($return);
- return;
- }
-
- update_manager_enterprise_set_version($version);
- db_pandora_audit("Update Pandora", "Update version: $version of Pandora FMS by ".$config['id_user']);
-
- $return["status"] = "success";
- echo json_encode($return);
- return;
-}
-
-if ($check_install_package) {
- // 1 second
- //sleep(1);
- // Half second
- usleep(500000);
-
- ob_clean();
-
- $package = (string) get_parameter("package");
- // All files extracted
- $files_total = $package."/files.txt";
- // Number of files extracted
- $files_num = $package."/files.info.txt";
- // Files copied
- $files_copied = $package."/files.copied.txt";
-
- $files = @file($files_copied);
- if (empty($files))
- $files = array();
- $total = (int)@file_get_contents($files_num);
-
- $progress = 0;
- if ((count($files) > 0) && ($total > 0)) {
- $progress = format_numeric((count($files) / $total) * 100, 2);
- if ($progress > 100)
- $progress = 100;
- }
-
- $return = array();
- $return['info'] = (string) implode("
", $files);
- $return['progress'] = $progress;
-
- if ($progress >= 100) {
- unlink($files_total);
- unlink($files_num);
- unlink($files_copied);
- }
-
- echo json_encode($return);
- return;
-}
-
-if ($check_online_enterprise_packages) {
-
- update_manager_check_online_enterprise_packages();
-
- return;
-
-}
-
-if ($check_online_packages) {
-
- return;
-}
-
-if ($update_last_enterprise_package) {
-
- update_manager_update_last_enterprise_package();
-
- return;
-
-}
-
-if ($update_last_package) {
-
- return;
-}
-
-if ($install_package_online) {
-
- return;
-}
-
-if ($install_package_step2) {
- update_manager_install_package_step2();
-
- return;
-}
-
-if ($check_progress_enterprise_update) {
- update_manager_check_progress_enterprise();
-
- return;
-}
-
-if ($check_progress_update) {
-
- return;
-}
-
-if ($enterprise_install_package) {
- $package = get_parameter('package', '');
-
-
- update_manager_enterprise_starting_update($package,
- $config['attachment_store'] . "/downloads/" . $package);
-
- return;
-}
-
-if ($enterprise_install_package_step2) {
- update_manager_install_enterprise_package_step2();
-
- return;
-}
-
-if ($check_online_free_packages) {
-
- update_manager_check_online_free_packages();
-
- return;
-}
-
-if ($update_last_free_package) {
-
- $package = get_parameter('package', '');
- $version = get_parameter('version', '');
- $package_url = base64_decode($package);
-
- $params = array('action' => 'get_package',
- 'license' => $license,
- 'limit_count' => $users,
- 'current_package' => $current_package,
- 'package' => $package,
- 'version' => $config['version'],
- 'build' => $config['build']);
-
- $curlObj = curl_init();
- //curl_setopt($curlObj, CURLOPT_URL, $config['url_updatemanager']);
- curl_setopt($curlObj, CURLOPT_URL, $package_url);
- curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, true);
- //curl_setopt($curlObj, CURLOPT_POST, true);
- //curl_setopt($curlObj, CURLOPT_POSTFIELDS, $params);
- curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, false);
- if (isset($config['update_manager_proxy_server'])) {
- curl_setopt($curlObj, CURLOPT_PROXY, $config['update_manager_proxy_server']);
- }
- if (isset($config['update_manager_proxy_port'])) {
- curl_setopt($curlObj, CURLOPT_PROXYPORT, $config['update_manager_proxy_port']);
- }
- if (isset($config['update_manager_proxy_user'])) {
- curl_setopt($curlObj, CURLOPT_PROXYUSERPWD, $config['update_manager_proxy_user'] . ':' . $config['update_manager_proxy_password']);
- }
-
- $result = curl_exec($curlObj);
- $http_status = curl_getinfo($curlObj, CURLINFO_HTTP_CODE);
-
- curl_close($curlObj);
-
-
-
-
-
- if (empty($result)) {
- echo json_encode(array(
- 'in_progress' => false,
- 'message' => __('Fail to update to the last package.')));
- }
- else {
- file_put_contents(
- $config['attachment_store'] . "/downloads/last_package.tgz" , $result);
-
- echo json_encode(array(
- 'in_progress' => true,
- 'message' => __('Starting to update to the last package.')));
-
-
- $progress_update_status = db_get_value(
- 'value', 'tconfig', 'token', 'progress_update_status');
-
-
-
- if (empty($progress_update_status)) {
- db_process_sql_insert('tconfig',
- array(
- 'value' => 0,
- 'token' => 'progress_update')
- );
-
- db_process_sql_insert('tconfig',
- array(
- 'value' => json_encode(
- array(
- 'status' => 'in_progress',
- 'message' => ''
- )),
- 'token' => 'progress_update_status')
- );
- }
- else {
- db_process_sql_update('tconfig',
- array('value' => 0),
- array('token' => 'progress_update'));
-
- db_process_sql_update('tconfig',
- array('value' => json_encode(
- array(
- 'status' => 'in_progress',
- 'message' => ''
- )
- )
- ),
- array('token' => 'progress_update_status'));
- }
- }
-
- return;
-}
-
-if ($check_update_free_package) {
-
-
- $progress_update = db_get_value('value', 'tconfig',
- 'token', 'progress_update');
-
- $progress_update_status = db_get_value('value', 'tconfig',
- 'token', 'progress_update_status');
- $progress_update_status = json_decode($progress_update_status, true);
-
- switch ($progress_update_status['status']) {
- case 'in_progress':
- $correct = true;
- $end = false;
- break;
- case 'fail':
- $correct = false;
- $end = false;
- break;
- case 'end':
- $correct = true;
- $end = true;
- break;
- }
-
- $progressbar_tag = progressbar($progress_update, 400, 20,
- __("progress"), $config['fontpath']);
- preg_match("/src='(.*)'/", $progressbar_tag, $matches);
- $progressbar = $matches[1];
-
- echo json_encode(array(
- 'correct' => $correct,
- 'end' => $end,
- 'message' => $progress_update_status['message'],
- 'progressbar' => $progressbar
- ));
-
- return;
-}
-
-if ($install_free_package) {
- $version = get_parameter('version', '');
-
- update_manager_starting_update();
-
- $result = update_manager_starting_update();
-
- if ($result)
- update_manager_set_current_package($version);
-
-
- sleep(3);
-
-
-
- $return["status"] = "success";
- $return["message"]= __("The package is installed.");
- echo json_encode($return);
-}
-?>
+open($path) === true) {
+ // The files will be extracted one by one
+ for($i = 0; $i < $zip->numFiles; $i++) {
+ $filename = $zip->getNameIndex($i);
+
+ if ($zip->extractTo($destination, array($filename))) {
+ // Creates a file with the name of the files extracted
+ file_put_contents ($destination."/files.txt", $filename."\n", FILE_APPEND | LOCK_EX);
+ } else {
+ // Deletes the entire extraction directory if a file can not be extracted
+ delete_directory($destination);
+ $return["status"] = "error";
+ $return["message"] = __("There was an error extracting the file '".$filename."' from the package.");
+ echo json_encode($return);
+ return;
+ }
+ }
+ // Creates a file with the number of files extracted
+ file_put_contents ($destination."/files.info.txt", $zip->numFiles);
+ // Zip close
+ $zip->close();
+
+ $return["status"] = "success";
+ $return["package"] = $destination;
+ echo json_encode($return);
+ return;
+ } else {
+ $return["status"] = "error";
+ $return["message"] = __("The package was not extracted.");
+ echo json_encode($return);
+ return;
+ }
+ } else {
+ $return["status"] = "error";
+ $return["message"] = __("Invalid extension. The package must have the extension .oum.");
+ echo json_encode($return);
+ return;
+ }
+ }
+
+ $return["status"] = "error";
+ $return["message"] = __("The file was not uploaded succesfully.");
+ echo json_encode($return);
+ return;
+}
+
+if ($install_package) {
+ global $config;
+ ob_clean();
+
+ $package = (string) get_parameter("package");
+ $package = trim($package);
+
+ $chunks = explode("_", basename($package));
+ $chunks = explode(".", $chunks[1]);
+ $version = $chunks[0];
+
+ // All files extracted
+ $files_total = $package . "/files.txt";
+ // Files copied
+ $files_copied = $package . "/files.copied.txt";
+ $return = array();
+
+ if (file_exists($files_copied)) {
+ unlink($files_copied);
+ }
+
+ if (file_exists($package)) {
+
+ if ($files_h = fopen($files_total, "r")) {
+
+ while ($line = stream_get_line($files_h, 65535, "\n")) {
+ $line = trim($line);
+
+ // Tries to move the old file to the directory backup inside the extracted package
+ if (file_exists($config["homedir"] . "/" . $line)) {
+ rename($config["homedir"] . "/" . $line,
+ $package . "/backup/" . $line);
+ }
+ // Tries to move the new file to the Pandora directory
+ $dirname = dirname($line);
+ if (!file_exists($config["homedir"] . "/" . $dirname)) {
+ $dir_array = explode("/", $dirname);
+ $temp_dir = "";
+ foreach ($dir_array as $dir) {
+ $temp_dir .= "/" . $dir;
+ if (!file_exists($config["homedir"] . $temp_dir)) {
+ mkdir($config["homedir"] . $temp_dir);
+ }
+ }
+ }
+ if (is_dir($package . "/" . $line)) {
+ if (!file_exists($config["homedir"] . "/" . $line)) {
+ mkdir($config["homedir"] . "/" . $line);
+ file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX);
+ }
+ }
+ else {
+ if (rename($package."/".$line, $config["homedir"]."/".$line)) {
+
+ // Append the moved file to the copied files txt
+ if (!file_put_contents($files_copied, $line."\n", FILE_APPEND | LOCK_EX)) {
+
+ // If the copy process fail, this code tries to restore the files backed up before
+ if ($files_copied_h = fopen($files_copied, "r")) {
+ while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
+ $line_c = trim($line_c);
+ if (!rename($package."/backup/".$line, $config["homedir"]."/".$line_c)) {
+ $backup_status = __("Some of your files might not be recovered.");
+ }
+ }
+ if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
+ $backup_status = __("Some of your files might not be recovered.");
+ }
+ fclose($files_copied_h);
+ } else {
+ $backup_status = __("Some of your old files might not be recovered.");
+ }
+
+ fclose($files_h);
+ $return["status"] = "error";
+ $return["message"]= __("Line '$line' not copied to the progress file.")." ".$backup_status;
+ echo json_encode($return);
+ return;
+ }
+ }
+ else {
+
+ // If the copy process fail, this code tries to restore the files backed up before
+ if ($files_copied_h = fopen($files_copied, "r")) {
+ while ($line_c = stream_get_line($files_copied_h, 65535, "\n")) {
+ $line_c = trim($line_c);
+ if (!rename($package."/backup/".$line, $config["homedir"]."/".$line)) {
+ $backup_status = __("Some of your old files might not be recovered.");
+ }
+ }
+ fclose($files_copied_h);
+ }
+ else {
+ $backup_status = __("Some of your files might not be recovered.");
+ }
+
+ fclose($files_h);
+ $return["status"] = "error";
+ $return["message"]= __("File '$line' not copied.")." ".$backup_status;
+ echo json_encode($return);
+ return;
+ }
+ }
+ }
+ fclose($files_h);
+ }
+ else {
+ $return["status"] = "error";
+ $return["message"]= __("An error ocurred while reading a file.");
+ echo json_encode($return);
+ return;
+ }
+ }
+ else {
+ $return["status"] = "error";
+ $return["message"]= __("The package does not exist");
+ echo json_encode($return);
+ return;
+ }
+
+ update_manager_enterprise_set_version($version);
+ db_pandora_audit("Update Pandora", "Update version: $version of Pandora FMS by ".$config['id_user']);
+
+ $return["status"] = "success";
+ echo json_encode($return);
+ return;
+}
+
+if ($check_install_package) {
+ // 1 second
+ //sleep(1);
+ // Half second
+ usleep(500000);
+
+ ob_clean();
+
+ $package = (string) get_parameter("package");
+ // All files extracted
+ $files_total = $package."/files.txt";
+ // Number of files extracted
+ $files_num = $package."/files.info.txt";
+ // Files copied
+ $files_copied = $package."/files.copied.txt";
+
+ $files = @file($files_copied);
+ if (empty($files))
+ $files = array();
+ $total = (int)@file_get_contents($files_num);
+
+ $progress = 0;
+ if ((count($files) > 0) && ($total > 0)) {
+ $progress = format_numeric((count($files) / $total) * 100, 2);
+ if ($progress > 100)
+ $progress = 100;
+ }
+
+ $return = array();
+ $return['info'] = (string) implode("
", $files);
+ $return['progress'] = $progress;
+
+ if ($progress >= 100) {
+ unlink($files_total);
+ unlink($files_num);
+ unlink($files_copied);
+ }
+
+ echo json_encode($return);
+ return;
+}
+
+if ($check_online_enterprise_packages) {
+
+ update_manager_check_online_enterprise_packages();
+
+ return;
+
+}
+
+if ($check_online_packages) {
+
+ return;
+}
+
+if ($update_last_enterprise_package) {
+
+ update_manager_update_last_enterprise_package();
+
+ return;
+
+}
+
+if ($update_last_package) {
+
+ return;
+}
+
+if ($install_package_online) {
+
+ return;
+}
+
+if ($install_package_step2) {
+ update_manager_install_package_step2();
+
+ return;
+}
+
+if ($check_progress_enterprise_update) {
+ update_manager_check_progress_enterprise();
+
+ return;
+}
+
+if ($check_progress_update) {
+
+ return;
+}
+
+if ($enterprise_install_package) {
+ $package = get_parameter('package', '');
+
+
+ update_manager_enterprise_starting_update($package,
+ $config['attachment_store'] . "/downloads/" . $package);
+
+ return;
+}
+
+if ($enterprise_install_package_step2) {
+ update_manager_install_enterprise_package_step2();
+
+ return;
+}
+
+if ($check_online_free_packages) {
+
+ update_manager_check_online_free_packages();
+
+ return;
+}
+
+if ($update_last_free_package) {
+
+ $package = get_parameter('package', '');
+ $version = get_parameter('version', '');
+ $package_url = base64_decode($package);
+
+ $params = array('action' => 'get_package',
+ 'license' => $license,
+ 'limit_count' => $users,
+ 'current_package' => $current_package,
+ 'package' => $package,
+ 'version' => $config['version'],
+ 'build' => $config['build']);
+
+ $curlObj = curl_init();
+ //curl_setopt($curlObj, CURLOPT_URL, $config['url_updatemanager']);
+ curl_setopt($curlObj, CURLOPT_URL, $package_url);
+ curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, true);
+ //curl_setopt($curlObj, CURLOPT_POST, true);
+ //curl_setopt($curlObj, CURLOPT_POSTFIELDS, $params);
+ curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, false);
+ if (isset($config['update_manager_proxy_server'])) {
+ curl_setopt($curlObj, CURLOPT_PROXY, $config['update_manager_proxy_server']);
+ }
+ if (isset($config['update_manager_proxy_port'])) {
+ curl_setopt($curlObj, CURLOPT_PROXYPORT, $config['update_manager_proxy_port']);
+ }
+ if (isset($config['update_manager_proxy_user'])) {
+ curl_setopt($curlObj, CURLOPT_PROXYUSERPWD, $config['update_manager_proxy_user'] . ':' . $config['update_manager_proxy_password']);
+ }
+
+ $result = curl_exec($curlObj);
+ $http_status = curl_getinfo($curlObj, CURLINFO_HTTP_CODE);
+
+ curl_close($curlObj);
+
+
+
+
+
+ if (empty($result)) {
+ echo json_encode(array(
+ 'in_progress' => false,
+ 'message' => __('Fail to update to the last package.')));
+ }
+ else {
+ file_put_contents(
+ $config['attachment_store'] . "/downloads/last_package.tgz" , $result);
+
+ echo json_encode(array(
+ 'in_progress' => true,
+ 'message' => __('Starting to update to the last package.')));
+
+
+ $progress_update_status = db_get_value(
+ 'value', 'tconfig', 'token', 'progress_update_status');
+
+
+
+ if (empty($progress_update_status)) {
+ db_process_sql_insert('tconfig',
+ array(
+ 'value' => 0,
+ 'token' => 'progress_update')
+ );
+
+ db_process_sql_insert('tconfig',
+ array(
+ 'value' => json_encode(
+ array(
+ 'status' => 'in_progress',
+ 'message' => ''
+ )),
+ 'token' => 'progress_update_status')
+ );
+ }
+ else {
+ db_process_sql_update('tconfig',
+ array('value' => 0),
+ array('token' => 'progress_update'));
+
+ db_process_sql_update('tconfig',
+ array('value' => json_encode(
+ array(
+ 'status' => 'in_progress',
+ 'message' => ''
+ )
+ )
+ ),
+ array('token' => 'progress_update_status'));
+ }
+ }
+
+ return;
+}
+
+if ($check_update_free_package) {
+
+
+ $progress_update = db_get_value('value', 'tconfig',
+ 'token', 'progress_update');
+
+ $progress_update_status = db_get_value('value', 'tconfig',
+ 'token', 'progress_update_status');
+ $progress_update_status = json_decode($progress_update_status, true);
+
+ switch ($progress_update_status['status']) {
+ case 'in_progress':
+ $correct = true;
+ $end = false;
+ break;
+ case 'fail':
+ $correct = false;
+ $end = false;
+ break;
+ case 'end':
+ $correct = true;
+ $end = true;
+ break;
+ }
+
+ $progressbar_tag = progressbar($progress_update, 400, 20,
+ __("progress"), $config['fontpath']);
+ preg_match("/src='(.*)'/", $progressbar_tag, $matches);
+ $progressbar = $matches[1];
+
+ echo json_encode(array(
+ 'correct' => $correct,
+ 'end' => $end,
+ 'message' => $progress_update_status['message'],
+ 'progressbar' => $progressbar
+ ));
+
+ return;
+}
+
+if ($install_free_package) {
+ $version = get_parameter('version', '');
+
+ $result = update_manager_starting_update();
+
+ if ($result)
+ update_manager_set_current_package($version);
+
+
+ sleep(3);
+
+
+
+ $return["status"] = "success";
+ $return["message"]= __("The package is installed.");
+ echo json_encode($return);
+}
+?>
diff --git a/pandora_console/include/functions_update_manager.php b/pandora_console/include/functions_update_manager.php
index b51db5aadf..b0e3486007 100755
--- a/pandora_console/include/functions_update_manager.php
+++ b/pandora_console/include/functions_update_manager.php
@@ -610,14 +610,38 @@ function update_manager_starting_update() {
$full_path = $config['attachment_store'] . "/downloads/pandora_console";
- $phar = new PharData($path_package);
ob_start();
- try {
- $result = $phar->extractTo($config['attachment_store'] . "/downloads/");
+
+
+ if (!defined('PHP_VERSION_ID')) {
+ $version = explode('.', PHP_VERSION);
+ define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
}
- catch (Exception $e) {
- echo ' There\'s a problem ... -> ' . $e->getMessage();
+
+ $extracted = false;
+ // Phar and exception working fine in 5.5.0 or higher
+ if (PHP_VERSION_ID >= 50505) {
+ $phar = new PharData($path_package);
+ try {
+ $result = $phar->extractTo($config['attachment_store'] . "/downloads/",null, true);
+ $extracted = true;
+ }
+ catch (Exception $e) {
+ echo ' There\'s a problem ... -> ' . $e->getMessage();
+ $extracted = false;
+ }
}
+
+ if($extracted === false) {
+ if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+ // unsupported OS
+ echo "This OS [" . PHP_OS . "] does not support direct extraction of tgz files. Upgrade PHP version to be > 5.5.0";
+ }
+ else {
+ system('tar xzf "' . $path_package . '" -C ' . $config['attachment_store'] . "/downloads/");
+ }
+ }
+
ob_end_clean();
rrmdir($path_package);