Example #1
0
function groups_update_group_forum_topic($topic_id, $topic_title, $topic_text, $topic_tags = false)
{
    global $bp;
    $topic_title = apply_filters('group_forum_topic_title_before_save', $topic_title);
    $topic_text = apply_filters('group_forum_topic_text_before_save', $topic_text);
    if ($topic = bp_forums_update_topic(array('topic_title' => $topic_title, 'topic_text' => $topic_text, 'topic_id' => $topic_id, 'topic_tags' => $topic_tags))) {
        // Update the activity stream item
        if (bp_is_active('activity')) {
            bp_activity_delete_by_item_id(array('item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $topic_id, 'component' => $bp->groups->id, 'type' => 'new_forum_topic'));
        }
        $activity_action = sprintf(__('%1$s started the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink($topic->topic_poster), '<a href="' . bp_get_group_permalink($bp->groups->current_group) . 'forum/topic/' . $topic->topic_slug . '/">' . esc_attr($topic->topic_title) . '</a>', '<a href="' . bp_get_group_permalink($bp->groups->current_group) . '">' . esc_attr($bp->groups->current_group->name) . '</a>');
        $activity_content = bp_create_excerpt($topic_text);
        // Record this in activity streams
        groups_record_activity(array('action' => apply_filters_ref_array('groups_activity_new_forum_topic_action', array($activity_action, $topic_text, &$topic)), 'content' => apply_filters_ref_array('groups_activity_new_forum_topic_content', array($activity_content, $topic_text, &$topic)), 'primary_link' => apply_filters('groups_activity_new_forum_topic_primary_link', bp_get_group_permalink($bp->groups->current_group) . 'forum/topic/' . $topic->topic_slug . '/'), 'type' => 'new_forum_topic', 'item_id' => (int) $bp->groups->current_group->id, 'user_id' => (int) $topic->topic_poster, 'secondary_item_id' => $topic->topic_id, 'recorded_time ' => $topic->topic_time));
        do_action_ref_array('groups_update_group_forum_topic', array(&$topic));
        return $topic;
    }
    return false;
}
Example #2
0
/**
 * Update an existing group forum topic.
 *
 * Uses the bundled version of bbPress packaged with BuddyPress.
 *
 * @since BuddyPress (1.1.0)
 *
 * @param int    $topic_id    The topic ID of the existing forum topic.
 * @param string $topic_title The title for the forum topic.
 * @param string $topic_text  The text for the forum topic.
 * @param mixed  $topic_tags  A comma-delimited string of topic tags. Optional.
 *
 * @return mixed The topic object on success. Boolean false on failure.
 */
function groups_update_group_forum_topic($topic_id, $topic_title, $topic_text, $topic_tags = false)
{
    $bp = buddypress();
    /** This filter is documented in bp-groups/bp-groups-forums.php */
    $topic_title = apply_filters('group_forum_topic_title_before_save', $topic_title);
    /** This filter is documented in bp-groups/bp-groups-forums.php */
    $topic_text = apply_filters('group_forum_topic_text_before_save', $topic_text);
    $topic = bp_forums_update_topic(array('topic_title' => $topic_title, 'topic_text' => $topic_text, 'topic_id' => $topic_id, 'topic_tags' => $topic_tags));
    if (empty($topic)) {
        return false;
    }
    // Get the corresponding activity item
    if (bp_is_active('activity')) {
        $id = bp_activity_get_activity_id(array('item_id' => bp_get_current_group_id(), 'secondary_item_id' => $topic_id, 'component' => $bp->groups->id, 'type' => 'new_forum_topic'));
    }
    $activity_action = sprintf(__('%1$s edited the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink($topic->topic_poster), '<a href="' . bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic->topic_slug . '/">' . esc_attr($topic->topic_title) . '</a>', '<a href="' . bp_get_group_permalink(groups_get_current_group()) . '">' . esc_attr(bp_get_current_group_name()) . '</a>');
    $activity_content = bp_create_excerpt($topic_text);
    /** This filter is documented in bp-groups/bp-groups-forums.php */
    $action = apply_filters_ref_array('groups_activity_new_forum_topic_action', array($activity_action, $topic_text, &$topic));
    /** This filter is documented in bp-groups/bp-groups-forums.php */
    $content = apply_filters_ref_array('groups_activity_new_forum_topic_content', array($activity_content, $topic_text, &$topic));
    /** This filter is documented in bp-groups/bp-groups-forums.php */
    $primary_link = apply_filters('groups_activity_new_forum_topic_primary_link', bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic->topic_slug . '/');
    groups_record_activity(array('id' => $id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'type' => 'new_forum_topic', 'item_id' => (int) bp_get_current_group_id(), 'user_id' => (int) $topic->topic_poster, 'secondary_item_id' => $topic->topic_id, 'recorded_time ' => $topic->topic_time));
    /**
     * Fires after the update of a group forum topic.
     *
     * @since BuddyPress (1.1.0)
     *
     * @param object $topic Object holding current topic being updated. Passed by reference.
     */
    do_action_ref_array('groups_update_group_forum_topic', array(&$topic));
    return $topic;
}