/** * 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); }
/** * 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); }