Get( "request-execution-order" );
wp_enqueue_style( "ass-frontend-servers", plugins_url( "stylesheets/frontend-servers.css", __FILE__ ) );
wp_enqueue_script( "ass-server-script", plugins_url( "javascript/server-functions.js", __FILE__ ) );
wp_enqueue_script( "ass-frontend-check", plugins_url( "javascript/frontend-check-servers-$execorder.js", __FILE__ ), [ "ass-server-script" ], false, true );
} );
/**
* Adds the server management page to admin
*/
add_action( "admin_menu", function() {
add_menu_page( __( "Server status", "atr-server-status" ), __( "Server status", "atr-server-status" ), "administrator", "ass-admin-servers", function() {
ass_include_template( "admin-servers" );
}, "dashicons-laptop" );
add_submenu_page( "ass-admin-servers", __( "Server Status Settings", "atr-server-status"), __( "Configurations", "atr-server-status" ), "administrator", "ass-admin-config", function() {
ass_include_template( "admin-config" );
} );
} );
/**
* Load plugin settings
*/
add_action( "init", function() {
\ATR\Settings::Instance()->Load();
} );
/**
* Add a settings link to plugin overview page.
*/
add_filter( "plugin_action_links_".plugin_basename( __FILE__ ), function( $links ) {
$links[] = '' . __( "Settings" ) . "";
return $links;
} );
/**
* Register a server status widget
*/
add_action( "widgets_init", function() {
register_widget( "ServerStatusWidget" );
} );
/**
* Allows the user to actually save a server as a wp-post
*/
add_action( "admin_post_ass_add_server", function() {
$submitted_server = $_POST["server"];
if( ass_validate_server($submitted_server) && wp_verify_nonce($_POST["_wpnonce"], "ass-add-server")) {
$server_id = ass_save_server( $submitted_server );
if( !is_wp_error($server_id) ) {
wp_redirect( "admin.php?page=ass-admin-servers&server=".$server_id ); exit;
} else {
SessionStatusMessage::set( $server_id->get_error_message(), "error", true );
}
} else {
SessionStatusMessage::set( "".__("The submitted data did not validate.", "atr-server-status")."
".__("This could either be you have entered incorrect values, or someone, somewhere is doing something really nasty, like a CSRF attack.", "atr-server-status"),
"error", true );
}
} );
/**
* Saves a modified server to the database
*/
add_action( "admin_post_ass_edit_server", function() {
$submitted_server = $_POST["server"];
if( ass_validate_server( $submitted_server ) && wp_verify_nonce( $_POST["_wpnonce"], "ass-edit-server") ) {
$server_id = ass_save_server( $submitted_server );
if( !is_wp_error($server_id) ) {
wp_redirect( "admin.php?page=ass-admin-servers&server=".$server_id ); exit;
} else {
SessionStatusMessage::set( $server_id->get_error_message(), "error", true );
}
} else {
SessionStatusMessage::set( "".__("The submitted data did not validate.", "atr-server-status")."
".__("This could either be you have entered incorrect values, or someone, somewhere is doing something really nasty, like a CSRF attack.", "atr-server-status"),
"error", true );
}
} );
/**
* Updates the sorting for server rows
*/
add_action( "wp_ajax_ass_sort_server", function() {
if( ass_current_user_has_access() ) {
$update = wp_update_post( ["ID" => $_POST["ID"], "menu_order" => $_POST["weight"] ] );
}
exit;
} );
/**
* Remove a server from the list
*/
add_action( "wp_ajax_ass_remove_server", function() {
if(wp_verify_nonce($_POST["_wpnonce"], "ass-remove-server")) {
$remove = ass_remove_server($_POST["server_id"]);
if( is_wp_error($remove) ) {
SessionStatusMessage::set( $remove->get_error_message(), "error", false );
}
}
} );
/**
* Validates the availability of a given server
*/
add_action( "wp_ajax_nopriv_ass_check_server", "ass_check_server_availability" );
add_action( "wp_ajax_ass_check_server", "ass_check_server_availability" );
/**
* Add the shortcode used for server checking
*/
add_shortcode( ASS_SERVER_STATUS_SHORTCODE, function( $atts ) {
$GLOBALS["ass_shortcode_atts"] = shortcode_atts( array(
'id' => null
), $atts );
ob_start();
ass_include_template("view-servers");
return ob_get_clean();
} );
/**
* Save configurations upon submit
*/
add_action( "admin_post_ass_save_config", function() {
$all = \ATR\Settings::Instance()->All();
$submitted = $_POST["settings"];
if( wp_verify_nonce( $_POST["_wpnonce"], "ass-save-configs" ) ) {
if( \ATR\Settings::Instance()->Save($submitted) === true ) {
SessionStatusMessage::set( __( "Configurations saved successfully.", "atr-server-status" ), "notice-success", true );
} else {
SessionStatusMessage::set( __( "Unfortunately, an error has occured while saving those values, perhaps you did not change anything?", "atr-server-status" ), "error", true );
}
} else {
SessionStatusMessage::set( "".__("The submitted data did not validate.", "atr-server-status")."
".__("This could either be you have entered incorrect values, or someone, somewhere is doing something really nasty, like a CSRF attack.", "atr-server-status"),
"error", true );
}
} );
/**
* Display any messages generated.
*/
if( SessionStatusMessage::has_messages() === true ) {
add_action( "admin_notices", function() {
ass_include_template( "session-messages" );
} );
}