Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //set a timeout set_time_limit(15*60); //15 minutes //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check the permission if ( !permission_exists('upgrade_source') && !permission_exists('upgrade_schema') && !permission_exists('upgrade_apps') && !permission_exists('menu_restore') && !permission_exists('group_edit') ) { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //set a default message_timeout $message_timeout = 4*1000; //process the http post if (sizeof($_POST) > 0) { $do = $_POST['do']; // run source update if ($do["source"] && permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx")) { $cwd = getcwd(); chdir($_SERVER["PROJECT_ROOT"]); exec("git pull 2>&1", $response_source_update); $update_failed = true; if (sizeof($response_source_update) > 0) { $_SESSION["response"]["upgrade_source"] = $response_source_update; foreach ($response_source_update as $response_line) { if (substr_count($response_line, "Updating ") > 0 || substr_count($response_line, "Already up-to-date.") > 0) { $update_failed = false; } if (substr_count($response_line, "error") > 0) { $update_failed = true; break; } } } chdir($cwd); if ($update_failed) { message::add($text['message-upgrade_source_failed'], 'negative', $message_timeout); } else { message::add($text['message-upgrade_source'], null, $message_timeout); } } // load an array of the database schema and compare it with the active database if ($do["schema"] && permission_exists("upgrade_schema")) { require_once "resources/classes/schema.php"; $obj = new schema(); if (isset($do["data_types"]) && $do["data_types"] == 'true') { $obj->data_types = true; } $_SESSION["response"]["schema"] = $obj->schema("html"); message::add($text['message-upgrade_schema'], null, $message_timeout); } // process the apps defaults if ($do["apps"] && permission_exists("upgrade_apps")) { require_once "resources/classes/domains.php"; $domain = new domains; $domain->upgrade(); message::add($text['message-upgrade_apps'], null, $message_timeout); } // restore defaults of the selected menu if ($do["menu"] && permission_exists("menu_restore")) { $sel_menu = explode('|', check_str($_POST["sel_menu"])); $menu_uuid = $sel_menu[0]; $menu_language = $sel_menu[1]; $included = true; require_once("core/menu/menu_restore_default.php"); unset($sel_menu); message::add($text['message-upgrade_menu'], null, $message_timeout); } // restore default permissions if ($do["permissions"] && permission_exists("group_edit")) { $included = true; require_once("core/groups/permissions_default.php"); message::add($text['message-upgrade_permissions'], null, $message_timeout); } header("Location: ".PROJECT_PATH."/core/upgrade/index.php"); exit; } //adjust color and initialize step counter $step = 1; $step_color = $_SESSION['theme']['upgrade_step_color']['text'] ? $_SESSION['theme']['upgrade_step_color']['text'] : color_adjust(($_SESSION['theme']['form_table_label_background_color']['text'] != '' ? $_SESSION['theme']['form_table_label_background_color']['text'] : '#e5e9f0'), -0.1); $step_container_style = "width: 30px; height: 30px; border: 2px solid ".$step_color."; border-radius: 50%; float: left; text-align: center; vertical-align: middle;"; $step_number_style = "font-size: 150%; font-weight: 600; color: ".$step_color.";"; //include the header and set the title $document['title'] = $text['title-upgrade']; require_once "resources/header.php"; //show the content echo "
\n"; echo "
\n"; echo "
".$text['header-upgrade']."
\n"; echo "
\n"; echo button::create(['type'=>'submit','label'=>$text['button-upgrade_execute'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'never']); echo "
\n"; echo "
\n"; echo "
\n"; echo $text['description-upgrade']; echo "

"; if (permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx") && is_writeable($_SERVER["PROJECT_ROOT"]."/.git")) { echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo "\n"; echo "
\n"; echo "
".$step++."
"; echo " ".$text['label-upgrade_source']; echo "
\n"; echo "  ".$text['description-upgrade_source']."
\n"; // show current git version info chdir($_SERVER["PROJECT_ROOT"]); exec("git rev-parse --abbrev-ref HEAD 2>&1", $git_current_branch, $branch_return_value); $git_current_branch = $git_current_branch[0]; exec("git log --pretty=format:'%H' -n 1 2>&1", $git_current_commit, $commit_return_value); $git_current_commit = $git_current_commit[0]; if (($branch_return_value == 0) && ($commit_return_value == 0)) { echo $text['label-git_branch'].' '.$git_current_branch." \n"; //echo $text['label-git_commit'].' '." "; echo " \n"; echo $git_current_commit . "
\n"; echo ""; } echo "
\n"; } if (permission_exists("upgrade_schema")) { echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo "\n"; echo "
\n"; echo "
".$step."
"; echo " ".$text['label-upgrade_schema']; echo "
\n"; echo "  ".$text['description-upgrade_schema']."\n"; echo "
\n"; echo "\n"; } if (permission_exists("upgrade_apps")) { echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo "\n"; echo "
\n"; echo "
".$step++."
"; echo " ".$text['label-upgrade_apps']; echo "
\n"; echo "  ".$text['description-upgrade_apps']."\n"; echo "
\n"; } if (permission_exists("menu_restore")) { echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo "\n"; echo "
\n"; echo "
".$step++."
"; echo " ".$text['label-upgrade_menu']; echo "
\n"; echo ""; echo ""; echo "  ".$text['description-upgrade_menu']; echo "
\n"; } if (permission_exists("group_edit")) { echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo "\n"; echo "
\n"; echo "
".$step++."
"; echo " ".$text['label-upgrade_permissions']; echo "
\n"; echo "  ".$text['description-upgrade_permissions']."\n"; echo "
\n"; } echo "
\n"; echo "

"; if (!empty($_SESSION["response"]) && is_array($_SESSION["response"])) { foreach($_SESSION["response"] as $part => $response){ echo "". $text["label-results"]." - ".$text["label-${part}"].""; echo "

"; if (is_array($response)) { echo "
";
				echo implode("\n", $response);
				echo "
"; } else { echo $response; } echo "

"; } unset($_SESSION["response"]); } //include the footer require_once "resources/footer.php"; ?>