/** * Return the text of the first post in the current topic in the loop. * * @return string Text of the first post in the current topic. */ function bp_get_the_topic_text() { global $forum_template; $post = bb_get_first_post((int) $forum_template->topic->topic_id, false); return apply_filters('bp_get_the_topic_text', esc_attr($post->post_text)); }
/** * Update a topic's details. * * @param array $args { * Array of arguments. * @type int $topic_id ID of the topic being updated. * @type string $topic_title Updated title of the topic. * @type string $topic_title Updated text of the topic. * @type array|string|bool $topic_tags Array or comma-separated list of * topic tags. False to leave empty. Default: false. * } * @return object Details about the new topic, as returned by * {@link bp_forums_get_topic_details()}. */ function bp_forums_update_topic($args = '') { /** This action is documented in bp-forums/bp-forums-screens */ do_action('bbpress_init'); $r = wp_parse_args($args, array('topic_id' => false, 'topic_title' => '', 'topic_text' => '', 'topic_tags' => false)); extract($r, EXTR_SKIP); // Check if the user is a spammer if (bp_is_user_inactive(bp_loggedin_user_id())) { return false; } // bb_insert_topic() will append tags, but not remove them. So we remove all existing tags. bb_remove_topic_tags($topic_id); if (!($topic_id = bb_insert_topic(array('topic_id' => $topic_id, 'topic_title' => stripslashes($topic_title), 'tags' => $topic_tags)))) { return false; } if (!($post = bb_get_first_post($topic_id))) { return false; } // Update the first post if (!($post = bp_forums_insert_post(array('post_id' => $post->post_id, 'topic_id' => $topic_id, 'post_text' => $topic_text, 'post_time' => $post->post_time, 'poster_id' => $post->poster_id, 'poster_ip' => $post->poster_ip, 'post_status' => $post->post_status, 'post_position' => $post->post_position)))) { return false; } return bp_forums_get_topic_details($topic_id); }
/** * Edits an existing topic * * @since 1.0 * @return array|object The topic data when successfully edited or an IXR_Error object on failure * @param array $args Arguments passed by the XML-RPC call * @param string $args[0] The username for authentication * @param string $args[1] The password for authentication * @param array $args[2] The values for the various parameters in the edited topic * @param integer|string $args[2]['topic_id'] The topic's id or slug * @param string $args[2]['title'] The title of the topic * @param string $args[2]['text'] The text of the topic * * XML-RPC request to edit the title of a topic with the slug "insane-monkeys" * <methodCall> * <methodName>bb.editTopic</methodName> * <params> * <param><value><string>joeblow</string></value></param> * <param><value><string>123password</string></value></param> * <param><value><struct> * <member> * <name>topic_id</name> * <value><string>insane-monkeys</string></value> * </member> * <member> * <name>title</name> * <value><string>Very insane monkeys</string></value> * </member> * </struct></value></param> * </params> * </methodCall> */ function bb_editTopic($args) { do_action('bb_xmlrpc_call', 'bb.editTopic'); // Escape args $this->escape($args); // Get the login credentials $username = $args[0]; $password = (string) $args[1]; // Check the user is valid $user = $this->authenticate($username, $password, 'edit_topics', __('You do not have permission to edit topics.')); // Additionally they need to be able to edit posts if (!$this->error && !bb_current_user_can('edit_posts')) { $this->error = new IXR_Error(403, __('You do not have permission to edit posts.')); } do_action('bb_xmlrpc_call_authenticated', 'bb.editTopic'); // If an error was raised by authentication or by an action then return it if ($this->error) { return $this->error; } // Make sure there is something for us to do if (!$args[2] || !is_array($args[2]) || !count($args[2])) { $this->error = new IXR_Error(400, __('The topic data is invalid.')); return $this->error; } $structure = (array) $args[2]; // Can be numeric id or slug $topic_id = isset($structure['topic_id']) ? $structure['topic_id'] : false; // Check for bad data if (!$topic_id || !is_string($topic_id) && !is_integer($topic_id)) { $this->error = new IXR_Error(400, __('The topic id is invalid.')); return $this->error; } // Check the requested topic exists if (!($topic = get_topic($topic_id))) { $this->error = new IXR_Error(400, __('No topic found.')); return $this->error; } // The topic id may have been a slug, so make sure it's an integer here $topic_id = (int) $topic->topic_id; // Make sure they are allowed to edit this topic if (!bb_current_user_can('edit_topic', $topic_id)) { $this->error = new IXR_Error(403, __('You do not have permission to edit this topic.')); return $this->error; } // Get the first post in the topic (that's where the content is) if (!($post = bb_get_first_post($topic_id))) { $this->error = new IXR_Error(400, __('No posts found.')); return $this->error; } $post_id = (int) $post->post_id; // Make sure they are allowed to edit this post if (!bb_current_user_can('edit_post', $post_id)) { $this->error = new IXR_Error(403, __('You do not have permission to edit this post.')); return $this->error; } // The topic requires a title if (isset($structure['title']) && !$structure['title']) { $this->error = new IXR_Error(400, __('The topic title is invalid.')); return $this->error; } // The topic requires text if (isset($structure['text']) && !$structure['text']) { $this->error = new IXR_Error(400, __('The topic text is invalid.')); return $this->error; } if ($structure['title']) { if (!bb_insert_topic(array('topic_title' => (string) $structure['title'], 'topic_id' => $topic_id))) { $this->error = new IXR_Error(500, __('The topic could not be edited.')); return $this->error; } } if ($structure['text']) { if (!bb_insert_post(array('post_text' => (string) $structure['text'], 'post_id' => $post_id, 'topic_id' => $topic_id))) { $this->error = new IXR_Error(500, __('The post could not be edited.')); return $this->error; } } // Only include "safe" data in the array $topic = $this->prepare_topic(get_topic($topic_id)); do_action('bb_xmlrpc_call_return', 'bb.editTopic'); return $topic; }
/** * Return the text of the first post in the current topic in the loop. * * @return string Text of the first post in the current topic. */ function bp_get_the_topic_text() { global $forum_template; $post = bb_get_first_post( (int) $forum_template->topic->topic_id, false ); /** * Filters the text of the first post in the current topic in the loop. * * @since BuddyPress (1.1.0) * * @param string $post_text Text for the first post in the current topic. */ return apply_filters( 'bp_get_the_topic_text', esc_attr( $post->post_text ) ); }
if (!($posts = bb_get_latest_forum_posts($feed_id))) { die; } $title = esc_html(sprintf(__('%1$s » Forum: %2$s - Recent Posts'), bb_get_option('name'), get_forum_name($feed_id))); $link = get_forum_link($feed_id); $link_self = bb_get_forum_posts_rss_link($feed_id); break; // Get just the first post from the latest topics // Get just the first post from the latest topics case 'all-topics': if (!($topics = get_latest_topics())) { die; } $posts = array(); foreach ($topics as $topic) { $posts[] = bb_get_first_post($topic->topic_id); } $title = esc_html(sprintf(__('%1$s » Recent Topics'), bb_get_option('name'))); $link = bb_get_uri(); $link_self = bb_get_topics_rss_link(); break; // Get latest posts by default // Get latest posts by default case 'all-posts': default: if (!($posts = bb_get_latest_posts(35))) { die; } $title = esc_html(sprintf(__('%1$s » Recent Posts'), bb_get_option('name'))); $link = bb_get_uri(); $link_self = bb_get_posts_rss_link();
private function GetBuddyPressRating($ver, $horAlign = true) { RWLogger::LogEnterence('GetBuddyPressRating'); global $activities_template; // Set current activity-comment to current activity update (recursive comments). $this->current_comment = $activities_template->activity; $rclass = str_replace('_', '-', bp_get_activity_type()); $is_forum_topic = $rclass === 'new-forum-topic'; if ($is_forum_topic && !$this->IsBBPressInstalled()) { return false; } if (!in_array($rclass, array('forum-post', 'forum-reply', 'new-forum-post', 'user-forum-post', 'user', 'activity-update', 'user-activity-update', 'activity-comment', 'user-activity-comment'))) { // If unknown activity type, change it to activity update. $rclass = 'activity-update'; } if ($is_forum_topic) { $rclass = 'new-forum-post'; } // Check if item rating is top positioned. if (!isset($this->activity_align[$rclass]) || $ver !== $this->activity_align[$rclass]->ver) { return false; } // Get item id. $item_id = 'activity-update' === $rclass || 'activity-comment' === $rclass ? bp_get_activity_id() : bp_get_activity_secondary_item_id(); if ($is_forum_topic) { // If forum topic, then we must extract post id // from forum posts table, because secondary_item_id holds // topic id. if (function_exists('bb_get_first_post')) { $post = bb_get_first_post($item_id); } else { // Extract post id straight from the BB DB. global $bb_table_prefix; // Load bbPress config file. @(include_once WP_RW__BBP_CONFIG_LOCATION); // Failed loading config file. if (!defined('BBDB_NAME')) { return false; } $connection = null; if (!($connection = mysql_connect(BBDB_HOST, BBDB_USER, BBDB_PASSWORD, true))) { return false; } if (!mysql_selectdb(BBDB_NAME, $connection)) { return false; } $results = mysql_query("SELECT * FROM {$bb_table_prefix}posts WHERE topic_id={$item_id} AND post_position=1", $connection); $post = mysql_fetch_object($results); } if (!isset($post->post_id) && empty($post->post_id)) { return false; } $item_id = $post->post_id; } // If the item is post, queue rating with post title. $title = 'new-blog-post' === $rclass ? get_the_title($item_id) : bp_get_activity_content_body(); // $activities_template->activity->content; $options = array(); $owner_id = bp_get_activity_user_id(); // Add accumulator id if user accumulated rating. if ($this->IsUserAccumulatedRating()) { $options['uarid'] = $this->_getUserRatingGuid($owner_id); } return $this->EmbedRatingIfVisible($item_id, $owner_id, strip_tags($title), bp_activity_get_permalink(bp_get_activity_id()), $rclass, false, $horAlign ? $this->activity_align[$rclass]->hor : false, false, $options, false); }
function bp_forums_update_topic($args = '') { global $bp; do_action('bbpress_init'); $defaults = array('topic_id' => false, 'topic_title' => '', 'topic_text' => '', 'topic_tags' => false); $r = nxt_parse_args($args, $defaults); extract($r, EXTR_SKIP); // Check if the user is a spammer if (bp_core_is_user_spammer($bp->loggedin_user->id) || bp_core_is_user_deleted($bp->loggedin_user->id)) { return false; } // bb_insert_topic() will append tags, but not remove them. So we remove all existing tags. bb_remove_topic_tags($topic_id); if (!($topic_id = bb_insert_topic(array('topic_id' => $topic_id, 'topic_title' => stripslashes($topic_title), 'tags' => $topic_tags)))) { return false; } if (!($post = bb_get_first_post($topic_id))) { return false; } // Update the first post if (!($post = bp_forums_insert_post(array('post_id' => $post->post_id, 'topic_id' => $topic_id, 'post_text' => $topic_text, 'post_time' => $post->post_time, 'poster_id' => $post->poster_id, 'poster_ip' => $post->poster_ip, 'post_status' => $post->post_status, 'post_position' => $post->post_position)))) { return false; } return bp_forums_get_topic_details($topic_id); }
</th> <th scope="col"><?php _e('Date'); ?> </th> <th scope="col"><?php _e('Freshness'); ?> </th> </tr> </thead> <tbody> <?php foreach ($topics as $topic) { $first_post = bb_get_first_post($topic); ?> <tr id="topic-<?php echo $topic->topic_id; ?> "<?php topic_class(); ?> > <td class="topic"> <span class="row-title"><?php bb_topic_labels(); ?> <a href="<?php topic_link(); ?>
function get_topic_author($id = 0) { $topic = get_topic(get_topic_id($id)); $first_post = bb_get_first_post($topic); $user_display_name = get_post_author($first_post->post_id); return apply_filters('get_topic_author', $user_display_name, $topic->topic_poster, $topic->topic_id); // $topic->topic_poster = user ID }
function rfp_after_topic_title() { global $forum_template; $topic_id = $forum_template->topic->topic_id; $post = bb_get_first_post($topic_id, false); $rating = rfp_get_post_rating_signed($post->post_id); echo '<td class="rfp-topic-rating">' . $rating . '</td>'; }
private function GetBuddyPressRating($ver, $horAlign = true) { if (RWLogger::IsOn()) { $params = func_get_args(); RWLogger::LogEnterence("GetBuddyPressRating", $params); } global $activities_template; // Set current activity-comment to current activity update (recursive comments). $this->current_comment = $activities_template->activity; $rclass = str_replace("_", "-", bp_get_activity_type()); $is_forum_topic = $rclass === "new-forum-topic"; if ($is_forum_topic && !$this->IsBBPressInstalled()) { return false; } if ($is_forum_topic) { $rclass = "new-forum-post"; } // Check if item rating is top positioned. if (!isset($this->activity_align[$rclass]) || $ver !== $this->activity_align[$rclass]->ver) { return false; } // Get item id. $item_id = "activity-update" === $rclass || "activity-comment" === $rclass ? bp_get_activity_id() : bp_get_activity_secondary_item_id(); if ($is_forum_topic) { // If forum topic, then we must extract post id // from forum posts table, because secondary_item_id holds // topic id. if (function_exists("bb_get_first_post")) { $post = bb_get_first_post($item_id); } else { // Extract post id straight from the BB DB. global $bb_table_prefix; // Load bbPress config file. @(include_once WP_RW__BBP_CONFIG_LOCATION); // Failed loading config file. if (!defined("BBDB_NAME")) { return false; } $connection = null; if (!($connection = mysql_connect(BBDB_HOST, BBDB_USER, BBDB_PASSWORD, true))) { return false; } if (!mysql_selectdb(BBDB_NAME, $connection)) { return false; } $results = mysql_query("SELECT * FROM {$bb_table_prefix}posts WHERE topic_id={$item_id} AND post_position=1", $connection); $post = mysql_fetch_object($results); } if (!isset($post->post_id) && empty($post->post_id)) { return false; } $item_id = $post->post_id; } // If the item is post, queue rating with post title. $title = "new-blog-post" === $rclass ? get_the_title($item_id) : bp_get_activity_content_body(); // $activities_template->activity->content; $options = array(); $owner_id = bp_get_activity_user_id(); // Add accumulator id if user accumulated rating. if ($this->IsUserAccumulatedRating()) { $options['uarid'] = $this->_getUserRatingGuid($owner_id); } return $this->EmbedRatingIfVisible($item_id, $owner_id, strip_tags($title), bp_activity_get_permalink(bp_get_activity_id()), $rclass, false, $horAlign ? $this->activity_align[$rclass]->hor : false, false, $options, false); /* // Queue activity rating. $this->QueueRatingData($urid, strip_tags($title), bp_activity_get_permalink($activities_template->activity->id), $rclass); // Return rating html container. return '<div class="rw-ui-container rw-class-' . $rclass . ' rw-urid-' . $urid . '"></div>';*/ }
function bp_forums_update_topic( $args = '' ) { global $bp; do_action( 'bbpress_init' ); $defaults = array( 'topic_id' => false, 'topic_title' => '', 'topic_text' => '' ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); if ( !$topic_id = bb_insert_topic( array( 'topic_id' => $topic_id, 'topic_title' => stripslashes( $topic_title ) ) ) ) return false; if ( !$post = bb_get_first_post( $topic_id ) ) return false; /* Update the first post */ if ( !$post = bp_forums_insert_post( array( 'post_id' => $post->post_id, 'topic_id' => $topic_id, 'post_text' => $topic_text, 'post_time' => $post->post_time, 'poster_id' => $post->poster_id, 'poster_ip' => $post->poster_ip, 'post_status' => $post->post_status, 'post_position' => $post->post_position ) ) ) return false; return bp_forums_get_topic_details( $topic_id ); }
function rw_get_activity_rating($ver) { if (RWLogger::IsOn()) { $params = func_get_args(); RWLogger::LogEnterence("rw_get_activity_rating", $params); } global $activities_template; // Set current activity-comment to current activity update (recursive comments). $this->current_comment = $activities_template->activity; $rclass = str_replace("_", "-", $activities_template->activity->type); $is_forum_topic = false; if ($rclass === "new-forum-topic") { $rclass = "new-forum-post"; $is_forum_topic = true; } // Check if item rating is top positioned. if (!isset($this->activity_align[$rclass]) || $ver !== $this->activity_align[$rclass]->ver) { return false; } // Get item id. $item_id = "activity-update" === $rclass || "activity-comment" === $rclass ? $activities_template->activity->id : $activities_template->activity->secondary_item_id; if ($is_forum_topic) { // If forum topic, then we must extract post id // from forum posts table, because secondary_item_id holds // topic id. if (function_exists("bb_get_first_post")) { $post = bb_get_first_post($item_id); } else { // Extract post id straight from the BB DB. $config_path = get_site_option("bb-config-location", ""); // bbPress is not installed. if (empty($config_path)) { return false; } global $bb_table_prefix; // Load bbPress config file. @(include_once $config_path); // Failed loading config file. if (!defined("BBDB_NAME")) { return false; } $connection = null; if (!($connection = mysql_connect(BBDB_HOST, BBDB_USER, BBDB_PASSWORD, true))) { return false; } if (!mysql_selectdb(BBDB_NAME, $connection)) { return false; } $results = mysql_query("SELECT * FROM {$bb_table_prefix}posts WHERE topic_id={$item_id} AND post_position=1", $connection); $post = mysql_fetch_object($results); } if (!isset($post->post_id) && empty($post->post_id)) { return false; } $item_id = $post->post_id; } // Validate that item isn't explicitly excluded. if (false === $this->rw_validate_visibility($item_id, $rclass)) { return false; } switch ($rclass) { case "activity-update": case "activity-comment": // Get activity rating user-rating-id. $urid = $this->_getActivityRatingGuid($item_id); break; case "new-blog-post": // Get activity rating user-rating-id. $urid = $this->_getPostRatingGuid($item_id); break; case "new-blog-comment": // Get activity rating user-rating-id. $urid = $this->_getCommentRatingGuid($item_id); break; /*case "new-forum-topic":*/ /*case "new-forum-topic":*/ case "new-forum-post": // Get activity rating user-rating-id. $urid = $this->_getForumPostRatingGuid($item_id); break; } // If the item is post, queue rating with post title. $title = "new-blog-post" === $rclass ? get_the_title($item_id) : $activities_template->activity->content; // Queue activity rating. self::QueueRatingData($urid, strip_tags($title), bp_activity_get_permalink($activities_template->activity->id), $rclass); // Return rating html container. return '<div class="rw-ui-container rw-class-' . $rclass . ' rw-urid-' . $urid . '"></div>'; }
function bp_ning_import_process_inline_images_new($type, $post_ID, $post_type = 'post') { switch ($post_type) { case 'post': $post = get_post($post_ID); $text = $post->post_content; break; case 'topic': $topic = bb_get_first_post($post_ID); $post_ID = (int) $topic->post_id; $text = $topic->post_text; break; case 'topic_reply': $reply = bb_get_post($post_ID); $text = $reply->post_text; break; case 'comment': $comment = get_comment($post_ID); $text = $comment->comment_content; break; } $ning_dir = content_url('/ning-files/'); $real_images = array(); // Only worry about local images if (preg_match_all('#"(' . $type . '/.*?\\.(?:gif|jpg|jpeg|png|bmp))(?:\\?(?:[^"]*?))?"#', $text, $images)) { // $images is an array of file names in import-from-ning/json/discussions. Move 'em foreach ($images[1] as $image) { $real_name = bp_ning_real_image_name($image); if (!isset($real_images[$real_name])) { $html = media_sideload_image($ning_dir . $image, $post_ID); if (is_wp_error($html)) { continue; } preg_match("#<img src='(.*?)'#", $html, $matches); $url = $real_images[$real_name] = $matches[1]; } else { $url = $real_images[$real_name]; } $text = str_replace($image, $url, $text); } } else { return; } switch ($post_type) { case 'post': $args = array('ID' => $post_ID, 'post_content' => $text); $args = add_magic_quotes($args); wp_update_post($args); break; case 'topic': case 'topic_reply': $args = array('post_id' => $post_ID, 'post_text' => $text); bb_insert_post($args); break; case 'comment': $args = array('comment_ID' => $post_ID, 'comment_content' => $text); wp_update_comment($args); break; } }