'array', 'sanitize_callback' => 'mcpss_sanitize_settings', 'default' => mcpss_defaults(), ) ); } /** * Sanitize. * * @param mixed $in Input. * @return array */ function mcpss_sanitize_settings( $in ) { $in = is_array( $in ) ? $in : array(); $align = isset( $in['alignment'] ) ? sanitize_key( $in['alignment'] ) : 'center'; return array( 'slug' => mcpss_parse_slug( isset( $in['slug'] ) ? wp_unslash( $in['slug'] ) : '' ), 'monitor' => mcpss_parse_monitor( isset( $in['monitor'] ) ? wp_unslash( $in['monitor'] ) : '' ), 'footer' => empty( $in['footer'] ) ? 0 : 1, 'alignment' => in_array( $align, array( 'left', 'center', 'right' ), true ) ? $align : 'center', ); } /** * Local admin CSS/JS, only on this settings page. * * @param string $hook Hook. */ function mcpss_admin_assets( $hook ) { if ( 'settings_page_mcpserverstatus' !== $hook ) { return; } wp_enqueue_style( 'mcpss-admin', MCPSS_URL . 'admin/admin.css', array( 'dashicons' ), MCPSS_VERSION ); wp_enqueue_script( 'mcpss-admin', MCPSS_URL . 'admin/admin.js', array(), MCPSS_VERSION, true ); wp_localize_script( 'mcpss-admin', 'mcpssAdmin', array( 'confirmDisconnect' => __( 'Disconnect this site from MCPServerStatus? Your monitors stay in your account.', 'mcp-server-status' ), 'copied' => __( 'Copied!', 'mcp-server-status' ), 'copy' => __( 'Copy', 'mcp-server-status' ), ) ); } /** * Tabs. * * @return array */ function mcpss_tabs() { return array( 'overview' => __( 'Overview', 'mcp-server-status' ), 'badge' => __( 'Badge', 'mcp-server-status' ), 'account' => __( 'Account', 'mcp-server-status' ), ); } /** * Normalize a status value. * * @param string $status Raw. * @return string up|degraded|down|unknown */ function mcpss_status_key( $status ) { return in_array( $status, array( 'up', 'degraded', 'down' ), true ) ? $status : 'unknown'; } /** * Format an ISO timestamp as site date + time. * * @param string $iso ISO date. * @return string */ function mcpss_format_datetime( $iso ) { $ts = $iso ? strtotime( $iso ) : false; return $ts ? wp_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $ts ) : ''; } /** * Render page. */ function mcpss_render_settings() { if ( ! current_user_can( 'manage_options' ) ) { return; } $s = mcpss_get_settings(); $connected = mcpss_is_connected(); $data = null; $error = ''; if ( $connected ) { $data = mcpss_get_monitors(); if ( is_wp_error( $data ) ) { $error = $data->get_error_message(); $connected = mcpss_is_connected(); // A 401 forgets the token. $data = array( 'plan' => array(), 'account' => null, 'monitors' => array(), ); } } $current = null; if ( $data ) { foreach ( $data['monitors'] as $m ) { if ( $m['publicId'] === $s['monitor'] ) { $current = $m; } } } $tabs = mcpss_tabs(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- display only. $tab = isset( $_GET['tab'] ) ? sanitize_key( wp_unslash( $_GET['tab'] ) ) : 'overview'; if ( ! isset( $tabs[ $tab ] ) ) { $tab = 'overview'; } ?>
' . esc_html__( 'Choose one of your monitors below with "Use for badge".', 'mcp-server-status' ) . '
>