Example #1
0
/**
 * Registers custom meta keys with WordPress and provides callbacks for sanitizing and authorizing 
 * the metadata.
 *
 * @since  1.0.0
 * @access public
 * @return void
 */
function mb_register_meta()
{
    /* General post meta. */
    register_meta('post', mb_get_prev_status_meta_key(), 'sanitize_key', '__return_true');
    /* Forum meta. */
    register_meta('post', mb_get_forum_activity_datetime_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_forum_activity_datetime_epoch_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_forum_last_topic_id_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_forum_last_reply_id_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_forum_subforum_count_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_forum_topic_count_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_forum_reply_count_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_forum_type_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_forum_level_meta_key(), 'absint', '__return_true');
    /* Topic meta. */
    register_meta('post', mb_get_topic_activity_datetime_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_topic_activity_datetime_epoch_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_topic_last_reply_id_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_topic_voices_meta_key(), 'esc_html', '__return_true');
    register_meta('post', mb_get_topic_voice_count_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_topic_reply_count_meta_key(), 'absint', '__return_true');
    register_meta('post', mb_get_topic_type_meta_key(), 'esc_html', '__return_true');
    /* User meta. */
    register_meta('user', mb_get_user_forum_subscriptions_meta_key(), 'esc_html', '__return_true');
    register_meta('user', mb_get_user_topic_subscriptions_meta_key(), 'esc_html', '__return_true');
    register_meta('user', mb_get_user_topic_bookmarks_meta_key(), 'esc_html', '__return_true');
    register_meta('user', mb_get_user_forum_count_meta_key(), 'absint', '__return_true');
    register_meta('user', mb_get_user_topic_count_meta_key(), 'absint', '__return_true');
    register_meta('user', mb_get_user_reply_count_meta_key(), 'absint', '__return_true');
}
 /**
  * Filter on the `request` hook to change what posts are loaded.
  *
  * @since  1.0.0
  * @access public
  * @param  array  $vars
  * @return array
  */
 public function request($vars)
 {
     $new_vars = array();
     /* Default ordering alphabetically. */
     if (!isset($vars['order']) && !isset($vars['orderby'])) {
         $vars = array_merge($vars, array('order' => 'ASC', 'orderby' => 'menu_order title'));
     } elseif (isset($_GET['post_parent'])) {
         $new_vars['post_parent'] = mb_get_forum_id($_GET['post_parent']);
     } elseif (isset($_GET['forum_type'])) {
         $forum_type = mb_get_forum_type_object(sanitize_key($_GET['forum_type']));
         if ($forum_type) {
             $new_vars['meta_key'] = mb_get_forum_type_meta_key();
             $new_var['meta_value'] = $forum_type->name;
         }
     } elseif (isset($vars['orderby']) && 'forum_type' === $vars['orderby']) {
         $new_vars['orderby'] = 'meta_value';
         $new_vars['meta_key'] = mb_get_forum_type_meta_key();
     } elseif (isset($vars['orderby']) && 'subforum_count' === $vars['orderby']) {
         $new_vars['orderby'] = 'meta_value_num';
         $new_vars['meta_key'] = mb_get_forum_subforum_count_meta_key();
     } elseif (isset($vars['orderby']) && 'topic_count' === $vars['orderby']) {
         $new_vars['orderby'] = 'meta_value_num';
         $new_vars['meta_key'] = mb_get_forum_topic_count_meta_key();
     } elseif (isset($vars['orderby']) && 'reply_count' === $vars['orderby']) {
         $new_vars['orderby'] = 'meta_value_num';
         $new_vars['meta_key'] = mb_get_forum_reply_count_meta_key();
     } elseif (isset($vars['orderby']) && 'post_author' === $vars['orderby']) {
         $new_vars['orderby'] = 'post_author';
     }
     /* Return the vars, merging with the new ones. */
     return array_merge($vars, $new_vars);
 }
/**
 * Sets the forum topic count
 *
 * @since  1.0.0
 * @access public
 * @param  int     $forum_id
 * @param  int     $count
 * @return bool
 */
function mb_set_forum_topic_count($forum_id, $count)
{
    return update_post_meta($forum_id, mb_get_forum_topic_count_meta_key(), $count);
}
Example #4
0
function mb_get_forum_topic_count($forum_id = 0)
{
    $forum_id = mb_get_forum_id($forum_id);
    $count = get_post_meta($forum_id, mb_get_forum_topic_count_meta_key(), true);
    if ('' === $count) {
        $count = mb_reset_forum_topic_count($forum_id);
    }
    return absint($count);
}