/**
 * 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);
}
Example #3
0
 /**
  * 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 ) );
	}
Example #5
0
     if (!($posts = bb_get_latest_forum_posts($feed_id))) {
         die;
     }
     $title = esc_html(sprintf(__('%1$s &raquo; 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 &raquo; 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 &raquo; 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);
}
Example #8
0
</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();
        ?>
Example #9
0
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>';
}
Example #11
0
 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>';*/
 }
Example #12
0
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;
    }
}