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');
}
/**
 * Sets the topic voices.
 *
 * @since  1.0.0
 * @access public
 * @param  int           $topic_id
 * @param  array|string  $voices
 * @return bool
 */
function mb_set_topic_voices($topic_id, $voices)
{
    $voices = implode(',', wp_parse_id_list($voices));
    return update_post_meta($topic_id, mb_get_topic_voices_meta_key(), $voices);
}
Example #3
0
/**
 * Returns an array of user IDs (topic voices).
 *
 * @since  1.0.0
 * @access public
 * @param  int     $topic_id
 * @return array
 */
function mb_get_topic_voices($topic_id = 0)
{
    $topic_id = mb_get_topic_id($topic_id);
    /* @todo - Make this a single call before release. */
    $voices = get_post_meta($topic_id, mb_get_topic_voices_meta_key());
    /* @todo - remove count check and just use explode() before release. */
    if (1 < count($voices)) {
        delete_post_meta($topic_id, '_topic_voices');
        $voices = mb_reset_topic_voices($topic_id);
    } else {
        $voices = explode(',', array_shift($voices));
    }
    $voices = !empty($voices) ? $voices : array(mb_get_topic_author_id($topic_id));
    return apply_filters('mb_get_topic_voices', $voices, $topic_id);
}