diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index f9f5a6da12..2323d41e45 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -233,12 +233,10 @@ config_check(); $check_minor_release_available = false; $pandora_management = check_acl($config['id_user'], 0, "PM"); - if (is_user_admin($config['id_user'])) { - $check_minor_release_available = db_check_minor_relase_available (); - - if ($check_minor_release_available) { - set_pandora_error_for_header('There are one or more minor releases waiting for update', 'minor release/s available'); - } + $check_minor_release_available = db_check_minor_relase_available (); + + if ($check_minor_release_available) { + set_pandora_error_for_header('There are one or more minor releases waiting for update, there are required administrator permissions', 'minor release/s available'); } if ($config["alert_cnt"] > 0) { diff --git a/pandora_console/include/ajax/rolling_release.ajax.php b/pandora_console/include/ajax/rolling_release.ajax.php new file mode 100644 index 0000000000..274cda1088 --- /dev/null +++ b/pandora_console/include/ajax/rolling_release.ajax.php @@ -0,0 +1,104 @@ += $number) { + if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { + mkdir($dir."/updated"); + } + $file_dest = "$dir/updated/$number.open.sql"; + if (copy($file, $file_dest)) { + unlink($file); + } + } + else { + $result = db_run_sql_file($file); + + if ($result) { + $update_config = update_config_token("minor_release_open", $number); + if ($update_config) { + $config["minor_release_open"] = $number; + } + + if ($config["minor_release_open"] == $number) { + if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { + mkdir($dir."/updated"); + } + + $file_dest = "$dir/updated/$number.open.sql"; + + if (copy($file, $file_dest)) { + unlink($file); + } + } + } + else { + $error_file = fopen($config["homedir"] . "/extras/mr/error.txt", "w"); + $message = "An error occurred while updating the database schema to the minor release " . $number; + fwrite($error_file, $message); + fclose($error_file); + } + } + } + else { + $error_file = fopen($config["homedir"] . "/extras/mr/error.txt", "w"); + $message = "The directory ' . $dir . ' should have read permissions in order to update the database schema"; + fwrite($error_file, $message); + fclose($error_file); + } + } + else { + $error_file = fopen($config["homedir"] . "/extras/mr/error.txt", "w"); + $message = "The directory ' . $dir . ' does not exist"; + fwrite($error_file, $message); + fclose($error_file); + } + + echo $message; + return; + } + else if ($check_finish) { + $check = db_check_minor_relase_available(); + + if (file_exists($config["homedir"] . "/extras/mr/error.txt")) { + unlink($config["homedir"] . "/extras/mr/error.txt"); + $check = 2; + } + + echo $check; + return; + } + else if ($check_minor_number) { + echo $config['minor_release_open']; + return; + } +} + +?> diff --git a/pandora_console/include/db/mysql.php b/pandora_console/include/db/mysql.php index 2419c54bb0..d0b372fa00 100644 --- a/pandora_console/include/db/mysql.php +++ b/pandora_console/include/db/mysql.php @@ -1220,194 +1220,4 @@ function db_run_sql_file ($location) { } } -/** - * Process the file or files in /extras/mr and apply minor releases. - * - * @return string Return error/success message. - */ -function db_update_schema () { - global $config; - - $dir = $config["homedir"]."/extras/mr"; - $message = ''; - - if (file_exists($dir) && is_dir($dir)) { - if (is_readable($dir)) { - if (enterprise_installed()) { - $files = scandir($dir); // Get all the files from the directory ordered by asc - - if ($files !== false) { - $pattern = "/^\d+\.open\.sql$/"; - $sqlfiles = preg_grep($pattern, $files); // Get the name of the correct files - $pattern = "/\.open\.sql$/"; - $replacement = ""; - $sqlfiles_num = preg_replace($pattern, $replacement, $sqlfiles); // Get the number of the file - $sqlfiles = null; - - if ($sqlfiles_num) { - foreach ($sqlfiles_num as $sqlfile_num) { - - $file = "$dir/$sqlfile_num.open.sql"; - - if ($config["minor_release_open"] >= $sqlfile_num) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - $file_dest = "$dir/updated/$sqlfile_num.open.sql"; - if (copy($file, $file_dest)) { - unlink($file); - } - } - else { - $result = db_run_sql_file($file); - - if ($result) { - $update_config = update_config_token("minor_release_open", $sqlfile_num); - if ($update_config) { - $config["minor_release_open"] = $sqlfile_num; - } - - if ($config["minor_release_open"] == $sqlfile_num) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - - $file_dest = "$dir/updated/$sqlfile_num.open.sql"; - - if (copy($file, $file_dest)) { - unlink($file); - } - } - - $message = "

".__('The database schema has been updated to the minor release')." $sqlfile_num

"; - } - else { - $message = "

".__('An error occurred while updating the database schema to the minor release')." $sqlfile_num

"; - break; - } - } - } - } - - $pattern2 = "/^\d+\.ent\.sql$/"; - $sqlfiles2 = preg_grep($pattern2, $files); // Get the name of the correct files - $files = null; - $pattern2 = "/\.ent\.sql$/"; - $replacement2 = ""; - $sqlfiles_num2 = preg_replace($pattern2, $replacement2, $sqlfiles2); // Get the number of the file - $sqlfiles2 = null; - - if ($sqlfiles_num2) { - foreach ($sqlfiles_num2 as $sqlfile_num2) { - - $file = "$dir/$sqlfile_num2.ent.sql"; - - if ($config["minor_release_enterprise"] >= $sqlfile_num2) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - $file_dest = "$dir/updated/$sqlfile_num2.ent.sql"; - if (copy($file, $file_dest)) { - unlink($file); - } - } - else { - $result = db_run_sql_file($file); - - if ($result) { - $update_config2 = update_config_token("minor_release_enterprise", $sqlfile_num2); - if ($update_config2) { - $config["minor_release_enterprise"] = $sqlfile_num2; - } - - if ($config["minor_release_enterprise"] == $sqlfile_num2) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - $file_dest = "$dir/updated/$sqlfile_num2.ent.sql"; - if (copy($file, $file_dest)) { - unlink($file); - } - } - - $message = "

".__('The database schema has been updated to the minor release')." $sqlfile_num2

"; - } - else { - $message = "

".__('An error occurred while updating the database schema to the minor release')." $sqlfile_num2

"; - break; - } - } - } - } - } - } - else { - $files = scandir($dir); // Get all the files from the directory ordered by asc - - if ($files !== false) { - $pattern = "/^\d+\.open\.sql$/"; - $sqlfiles = preg_grep($pattern, $files); // Get the name of the correct files - $files = null; - $pattern = "/\.open\.sql$/"; - $replacement = ""; - $sqlfiles_num = preg_replace($pattern, $replacement, $sqlfiles); // Get the number of the file - $sqlfiles = null; - - if ($sqlfiles_num) { - foreach ($sqlfiles_num as $sqlfile_num) { - - $file = "$dir/$sqlfile_num.open.sql"; - - if ($config["minor_release_open"] >= $sqlfile_num) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - $file_dest = "$dir/updated/$sqlfile_num.open.sql"; - if (copy($file, $file_dest)) { - unlink($file); - } - } - else { - $result = db_run_sql_file($file); - - if ($result) { - $update_config = update_config_token("minor_release_open", $sqlfile_num); - if ($update_config) { - $config["minor_release_open"] = $sqlfile_num; - } - - if ($config["minor_release_open"] == $sqlfile_num) { - if (!file_exists($dir."/updated") || !is_dir($dir."/updated")) { - mkdir($dir."/updated"); - } - - $file_dest = "$dir/updated/$sqlfile_num.open.sql"; - if (copy($file, $file_dest)) { - unlink($file); - } - } - - $message = "

".__('The database schema has been updated to the minor release')." $sqlfile_num

"; - } - else { - $message = "

".__('An error occurred while updating the database schema to the minor release ')." $sqlfile_num

"; - break; - } - } - } - } - } - } - } - else { - $message = "

".__('The directory '.$dir.' should have read permissions in order to update the database schema')."

"; - } - } - else { - $message = "

".__('The directory '.$dir.' does not exist')."

"; - } - - return $message; -} - ?> diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index 7ac39285e7..773aa39a14 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -2633,4 +2633,61 @@ function update_config_token ($cfgtoken, $cfgvalue) { return false; } } + +function update_conf_minor_release() { + global $config; + + $config['minor_release_open'] = db_get_value ('value', 'tconfig', 'token', 'minor_release_open'); + + if (enterprise_installed()) { + $config['minor_release_enterprise'] = db_get_value ('value', 'tconfig', 'token', 'minor_release_enterprise'); + } +} + +function get_number_of_mr($mode) { + global $config; + + $dir = $config["homedir"]."/extras/mr"; + $mr_size = array(); + + if (file_exists($dir) && is_dir($dir)) { + if (is_readable($dir)) { + if ($mode == 'open') { + $files = scandir($dir); // Get all the files from the directory ordered by asc + + if ($files !== false) { + $pattern = "/^\d+\.open\.sql$/"; + $sqlfiles = preg_grep($pattern, $files); // Get the name of the correct files + $pattern = "/\.open\.sql$/"; + $replacement = ""; + $sqlfiles_num = preg_replace($pattern, $replacement, $sqlfiles); + + foreach ($sqlfiles_num as $num) { + $mr_size[] = $num; + } + } + } + else { + if (enterprise_installed()) { + $files2 = scandir($dir); // Get all the files from the directory ordered by asc + + if ($files2 !== false) { + $pattern2 = "/^\d+\.ent\.sql$/"; + $sqlfiles2 = preg_grep($pattern2, $files2); // Get the name of the correct files + + $pattern2 = "/\.ent\.sql$/"; + $replacement2 = ""; + $sqlfiles_num2 = preg_replace($pattern2, $replacement2, $sqlfiles2); // Get the number of the file + + foreach ($sqlfiles_num2 as $num2) { + $mr_size[] = $num2; + } + } + } + } + } + } + return $mr_size; +} + ?> diff --git a/pandora_console/index.php b/pandora_console/index.php index f22a42bf34..efa920bb18 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -433,7 +433,43 @@ if (! isset ($config['id_user'])) { $config['id_user'] = $nick_in_db; if (is_user_admin($config['id_user'])) { - $minor_release_message = db_update_schema(); + $have_minor_releases = db_check_minor_relase_available(); + + if ($have_minor_releases) { + $size_mr_o = get_number_of_mr('open'); + $size_mr_e = get_number_of_mr('enterprise'); + echo "
" . __('') . "
"; + ?> + + $minor_release_message"; - echo ""; -} - if (get_parameter ('login', 0) !== 0) { // Display news dialog include_once("general/news_dialog.php"); @@ -848,7 +864,84 @@ require('include/php_to_js_values.php'); return rv; }; })(); - + + function apply_minor_release (n_mr_o, n_mr_e) { + $.each(n_mr_o, function(i, open_mr) { + var params = {}; + var error = false; + params["updare_rr_open"] = 1; + params["number"] = open_mr; + params["page"] = "include/ajax/rolling_release.ajax"; + + jQuery.ajax ({ + data: params, + async: false, + dataType: "html", + type: "POST", + url: "ajax.php", + success: function (data) { + if (data != "") { + alert("Error: " + data); + error = true; + } + } + }); + + if (error == true) { + return false; + } + }); + + $.each(n_mr_e, function(i, e_mr) { + var params = {}; + var error2 = false; + params["updare_rr_enterprise"] = 1; + params["number"] = e_mr; + params["page"] = "enterprise/include/ajax/rolling_release.ajax"; + + jQuery.ajax ({ + data: params, + async: false, + dataType: "html", + type: "POST", + url: "ajax.php", + success: function (data) { + if (data != "") { + alert("Error: " + data); + error2 = true; + } + } + }); + + if (error2 == true) { + return false; + } + }); + + check_is_finished_mr(); + } + + function check_is_finished_mr () { + var params = {}; + params["check_finish"] = 1; + params["page"] = "include/ajax/rolling_release.ajax"; + + jQuery.ajax ({ + data: params, + dataType: "html", + type: "POST", + url: "ajax.php", + success: function (data) { + if (data == 1) { + setInterval(check_is_finished_mr, 2000); + } + else if (data == 0) { + alert("Updated finished successfully"); + } + } + }); + } + //Dynamically assign footer position and width. function adjustFooter() { /*