Antichrist Message Board - Source Excerpt 08
Back to Antichrist Message Board
Summary
This source excerpt preserves a bounded section of Antichrist.net/wp-content/plugins/antichrist-message-board/antichrist-message-board.php so readers can inspect the evidence without opening the full source file.
**Source path:** Antichrist.net/wp-content/plugins/antichrist-message-board/antichrist-message-board.php
/**
* Count approved board replies.
*
* @param int $topic_id Topic ID.
* @return int
*/
function acnmb_reply_count( $topic_id ) {
return count( acnmb_get_replies( $topic_id ) );
}
/**
* Get board URL.
*
* @return string
*/
function acnmb_board_url() {
$page = get_page_by_path( 'message-board' );
if ( $page instanceof WP_Post ) {
return get_permalink( $page );
}
return home_url( '/message-board/' );
}
/**
* Current URL helper.
*
* @return string
*/
function acnmb_current_url() {
$path = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '/message-board/';
$parts = wp_parse_url( home_url( '/' ) );
$host = isset( $parts['host'] ) ? $parts['host'] : '';
$scheme = isset( $parts['scheme'] ) ? $parts['scheme'] : 'http';
return esc_url_raw( $scheme . '://' . $host . $path );
}
/**
* Safe submission redirect target.
*
* @return string
*/
function acnmb_submission_redirect() {
$redirect = isset( $_POST['redirect_to'] ) ? esc_url_raw( wp_unslash( $_POST['redirect_to'] ) ) : acnmb_board_url();
return wp_validate_redirect( $redirect, acnmb_board_url() );
}
/**
* Render status notices.
*
* @return string
*/
function acnmb_status_notice() {
$status = isset( $_GET['acnmb_status'] ) ? sanitize_key( wp_unslash( $_GET['acnmb_status'] ) ) : '';
if ( '' === $status ) {
return '';
}
$messages = array(
'login_required' => acnmb_t( 'acnmb.status.login_required', 'Please log in before posting.' ),
'title_required' => acnmb_t( 'acnmb.status.title_required', 'Add a clearer title.' ),
'message_required' => acnmb_t( 'acnmb.status.message_required', 'Add a message before posting.' ),
'category_required' => acnmb_t( 'acnmb.status.category_required', 'Choose a board category.' ),
'rate_limited' => acnmb_t( 'acnmb.status.rate_limited', 'Please wait a moment before posting again.' ),
'reply_created' => acnmb_t( 'acnmb.status.reply_created', 'Reply published.' ),
'topic_locked' => acnmb_t( 'acnmb.status.topic_locked', 'This topic is locked.' ),
'locale_mismatch' => acnmb_t( 'acnmb.status.locale_mismatch', 'This discussion belongs to another language board.' ),
);
if ( empty( $messages[ $status ] ) ) {
return '';
}
return '<div class="acnmb-notice">' . esc_html( $messages[ $status ] ) . '</div>';
}
/**
* Add admin meta box.
*/
function acnmb_add_topic_meta_box() {
add_meta_box(
'acnmb-topic-controls',
acnmb_t( 'acnmb.admin.controls', 'Board Controls' ),
'acnmb_render_topic_meta_box',
ACNMB_TOPIC_POST_TYPE,
'side',
'default'
);
}
/**
* Render admin meta box.
*
* @param WP_Post $post Topic.
*/
function acnmb_render_topic_meta_box( WP_Post $post ) {
wp_nonce_field( 'acnmb_save_topic_meta', 'acnmb_meta_nonce' );
?>
<p><label><input type="checkbox" name="acnmb_pinned" value="1" <?php checked( get_post_meta( $post->ID, '_acnmb_pinned', true ) ); ?> /> <?php echo esc_html( acnmb_t( 'acnmb.admin.pin_topic', 'Pin topic' ) ); ?></label></p>
<p><label><input type="checkbox" name="acnmb_locked" value="1" <?php checked( get_post_meta( $post->ID, '_acnmb_locked', true ) ); ?> /> <?php echo esc_html( acnmb_t( 'acnmb.admin.lock_topic', 'Lock replies' ) ); ?></label></p>
<?php
}
/**
* Save admin meta.
*
* @param int $post_id Post ID.
* @param WP_Post $post Post object.
*/
function acnmb_save_topic_meta( $post_id, WP_Post $post ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! isset( $_POST['acnmb_meta_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['acnmb_meta_nonce'] ) ), 'acnmb_save_topic_meta' ) ) {
return;
}
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
update_post_meta( $post_id, '_acnmb_pinned', isset( $_POST['acnmb_pinned'] ) ? 1 : 0 );
update_post_meta( $post_id, '_acnmb_locked', isset( $_POST['acnmb_locked'] ) ? 1 : 0 );
}
/**
* Admin columns.
*
* @param array $columns Columns.
* @return array
*/
function acnmb_topic_admin_columns( $columns ) {
$columns['acnmb_replies'] = acnmb_t( 'acnmb.admin.replies', 'Replies' );
$columns['acnmb_state'] = acnmb_t( 'acnmb.admin.state', 'State' );
return $columns;
}
/**
* Render admin columns.
*
* @param string $column Column.
* @param int $post_id Post ID.
*/
function acnmb_render_topic_admin_column( $column, $post_id ) {
if ( 'acnmb_replies' === $column ) {
echo esc_html( acnmb_reply_count( $post_id ) );
}
if ( 'acnmb_state' === $column ) {
$states = array();
if ( get_post_meta( $post_id, '_acnmb_pinned', true ) ) {
$states[] = acnmb_t( 'acnmb.board.pinned', 'Pinned' );
}
if ( get_post_meta( $post_id, '_acnmb_locked', true ) ) {
$states[] = acnmb_t( 'acnmb.board.locked', 'Locked' );
}
echo esc_html( $states ? implode( ', ', $states ) : acnmb_t( 'acnmb.admin.open', 'Open' ) );
}
}
/**
* Translation strings for the board and locale-router dictionaries.
*
* @return array
*/
function acnmb_translation_strings() {
$strings = array(
'acnmb.admin.topics' => array( 'en' => 'Message Board Topics', 'es' => 'Temas del foro' ),
'acnmb.admin.topic' => array( 'en' => 'Message Board Topic', 'es' => 'Tema del foro' ),
'acnmb.admin.add_topic' => array( 'en' => 'Add New Topic', 'es' => 'Agregar tema' ),
'acnmb.admin.edit_topic' => array( 'en' => 'Edit Topic', 'es' => 'Editar tema' ),
'acnmb.admin.new_topic' => array( 'en' => 'New Topic', 'es' => 'Nuevo tema' ),
'acnmb.admin.view_topic' => array( 'en' => 'View Topic', 'es' => 'Ver tema' ),
'acnmb.admin.search_topics' => array( 'en' => 'Search Topics', 'es' => 'Buscar temas' ),
'acnmb.admin.no_topics' => array( 'en' => 'No topics found', 'es' => 'No se encontraron temas' ),
'acnmb.admin.menu' => array( 'en' => 'Message Board', 'es' => 'Foro' ),
'acnmb.admin.no_topics_trash' => array( 'en' => 'No topics found in Trash', 'es' => 'No hay temas en la papelera' ),
'acnmb.admin.categories' => array( 'en' => 'Board Categories', 'es' => 'Categorias del foro' ),
'acnmb.admin.category' => array( 'en' => 'Board Category', 'es' => 'Categoria del foro' ),
'acnmb.admin.search_categories' => array( 'en' => 'Search Board Categories', 'es' => 'Buscar categorias del foro' ),
'acnmb.admin.all_categories' => array( 'en' => 'All Board Categories', 'es' => 'Todas las categorias del foro' ),
'acnmb.admin.parent_category' => array( 'en' => 'Parent Board Category', 'es' => 'Categoria superior del foro' ),
'acnmb.admin.edit_category' => array( 'en' => 'Edit Board Category', 'es' => 'Editar categoria del foro' ),
'acnmb.admin.update_category' => array( 'en' => 'Update Board Category', 'es' => 'Actualizar categoria del foro' ),
'acnmb.admin.add_category' => array( 'en' => 'Add Board Category', 'es' => 'Agregar categoria del foro' ),
'acnmb.admin.new_category' => array( 'en' => 'New Board Category', 'es' => 'Nueva categoria del foro' ),
'acnmb.admin.categories_menu' => array( 'en' => 'Board Categories', 'es' => 'Categorias del foro' ),
'acnmb.admin.controls' => array( 'en' => 'Board Controls', 'es' => 'Controles del foro' ),
'acnmb.admin.pin_topic' => array( 'en' => 'Pin topic', 'es' => 'Fijar tema' ),
'acnmb.admin.lock_topic' => array( 'en' => 'Lock replies', 'es' => 'Bloquear respuestas' ),
'acnmb.admin.replies' => array( 'en' => 'Replies', 'es' => 'Respuestas' ),
'acnmb.admin.state' => array( 'en' => 'State', 'es' => 'Estado' ),
'acnmb.admin.open' => array( 'en' => 'Open', 'es' => 'Abierto' ),
'acnmb.board.kicker' => array( 'en' => 'Community Research', 'es' => 'Investigacion comunitaria' ),
'acnmb.board.title' => array( 'en' => 'Message Board', 'es' => 'Foro' ),
'acnmb.board.intro' => array( 'en' => 'Read the board publicly. Log in to start topics or reply to ongoing discussions.', 'es' => 'Lee el foro publicamente. Inicia sesion para crear temas o responder.' ),
'acnmb.board.categories_label' => array( 'en' => 'Board categories', 'es' => 'Categorias del foro' ),
'acnmb.board.categories' => array( 'en' => 'Categories', 'es' => 'Categorias' ),
'acnmb.board.all_topics' => array( 'en' => 'All topics', 'es' => 'Todos los temas' ),
'acnmb.board.search_label' => array( 'en' => 'Search topics', 'es' => 'Buscar temas' ),
'acnmb.board.search_placeholder' => array( 'en' => 'Search the board', 'es' => 'Buscar en el foro' ),
'acnmb.board.search_button' => array( 'en' => 'Search', 'es' => 'Buscar' ),
'acnmb.board.no_topics_title' => array( 'en' => 'No topics yet', 'es' => 'Aun no hay temas' ),
'acnmb.board.no_topics_copy' => array( 'en' => 'Start a logged-in discussion to open this category.', 'es' => 'Inicia una conversacion con sesion iniciada para abrir esta categoria.' ),