function append_comments($activities)
 {
     global $bp, $nxtdb;
     $activity_comments = array();
     /* Now fetch the activity comments and parse them into the correct position in the activities array. */
     foreach ((array) $activities as $activity) {
         if ('activity_comment' != $activity->type && $activity->mptt_left && $activity->mptt_right) {
             $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments($activity->id, $activity->mptt_left, $activity->mptt_right);
         }
     }
     /* Merge the comments with the activity items */
     foreach ((array) $activities as $key => $activity) {
         if (isset($activity_comments[$activity->id])) {
             $activities[$key]->children = $activity_comments[$activity->id];
         }
     }
     return $activities;
 }
 function migrate_single_media($result, $album = false)
 {
     $blog_id = get_current_blog_id();
     $old = $result;
     if (function_exists('bp_core_get_table_prefix')) {
         $bp_prefix = bp_core_get_table_prefix();
     } else {
         $bp_prefix = '';
     }
     global $wpdb;
     if (false !== $album && !is_object($result)) {
         $id = $wpdb->get_var($wpdb->prepare("select ID from {$this->bmp_table} where media_id = %d", $result));
         if (null == $id) {
             $sql = "select\n                        a.post_id as 'post_id',\n                        a.meta_value as 'privacy',\n                        b.meta_value as 'context_id',\n                        c.meta_value as 'activity_id',\n                        p.post_type,\n                        p.post_mime_type,\n                        p.post_author as 'media_author',\n                        p.post_title as 'media_title',\n                        p.post_parent as 'parent'\n                    from\n                        {$wpdb->postmeta} a\n                            left join\n                        {$wpdb->postmeta} b ON ((a.post_id = b.post_id)\n                            and (b.meta_key = 'bp-media-key'))\n                            left join\n                        {$wpdb->postmeta} c ON (a.post_id = c.post_id)\n                            and (c.meta_key = 'bp_media_child_activity')\n                            left join\n                        {$wpdb->posts} p ON (a.post_id = p.ID)\n                    where\n                        a.post_id = %d and (NOT p.ID IS NULL)\n                            and a.meta_key = 'bp_media_privacy'";
             $result = $wpdb->get_row($wpdb->prepare($sql, $result));
         } else {
             return $id;
         }
     }
     if (!isset($result) || !isset($result->post_id)) {
         return $old;
     }
     $media_id = $result->post_id;
     if (intval($result->context_id) > 0) {
         $media_context = 'profile';
         $prefix = 'users/' . abs(intval($result->context_id));
     } else {
         $media_context = 'group';
         $prefix = bp_get_groups_root_slug() . abs(intval($result->context_id));
     }
     $old_type = '';
     if ('attachment' != $result->post_type) {
         $media_type = 'album';
     } else {
         $mime_type = strtolower($result->post_mime_type);
         $old_type = '';
         if (0 === strpos($mime_type, 'image')) {
             $media_type = 'photo';
             $old_type = 'photos';
         } else {
             if (0 === strpos($mime_type, 'audio')) {
                 $media_type = 'music';
                 $old_type = 'music';
             } else {
                 if (0 === strpos($mime_type, 'video')) {
                     $media_type = 'video';
                     $old_type = 'videos';
                 } else {
                     $media_type = 'other';
                 }
             }
         }
     }
     $activity_data = $wpdb->get_row($wpdb->prepare("select * from {$bp_prefix}bp_activity where id= %d", $result->activity_id));
     if ('album' != $media_type) {
         $this->importmedia($media_id, $prefix);
     }
     if ($this->table_exists($bp_prefix . 'bp_activity') && class_exists('BP_Activity_Activity')) {
         $bp_activity = new BP_Activity_Activity();
         $activity_sql = $wpdb->prepare("SELECT\n                            *\n                        FROM\n                            {$bp_prefix}bp_activity\n                        where\n                                        id in (select distinct\n                                    a.meta_value\n                                from\n                                    {$wpdb->postmeta} a\n                                        left join\n                                    {$wpdb->posts} p ON (a.post_id = p.ID)\n                                where\n                                    (NOT p.ID IS NULL) and p.ID = %d\n                and a.meta_key = 'bp_media_child_activity')", $media_id);
         $all_activity = $wpdb->get_results($activity_sql);
         remove_all_actions('wp_insert_comment');
         foreach ($all_activity as $activity) {
             $comments = $bp_activity->get_activity_comments($activity->id, $activity->mptt_left, $activity->mptt_right);
             $exclude = get_post_meta($media_id, 'rtmedia_imported_activity', true);
             if (!is_array($exclude)) {
                 $exclude = array();
             }
             if ($comments) {
                 $this->insert_comment($media_id, $comments, $exclude);
             }
         }
     }
     if (0 !== intval($result->parent)) {
         $album_id = $this->migrate_single_media($result->parent, true);
     } else {
         $album_id = 0;
     }
     if (function_exists('bp_activity_get_meta')) {
         $likes = bp_activity_get_meta($result->activity_id, 'favorite_count');
     } else {
         $likes = 0;
     }
     $wpdb->insert($this->bmp_table, array('blog_id' => $blog_id, 'media_id' => $media_id, 'media_type' => $media_type, 'context' => $media_context, 'context_id' => abs(intval($result->context_id)), 'activity_id' => $result->activity_id, 'privacy' => intval($result->privacy) * 10, 'media_author' => $result->media_author, 'media_title' => $result->media_title, 'album_id' => $album_id, 'likes' => $likes), array('%d', '%d', '%s', '%s', '%d', '%d', '%d', '%d', '%s', '%d', '%d'));
     $last_id = $wpdb->insert_id;
     // Photo tag meta migration
     //$photo_tag_meta = get_post_meta($media_id, "bp-media-user-tags", true);
     //        if($photo_tag_meta && !empty($photo_tag_meta)){
     //            $wpdb->insert(
     //                $wpdb->prefix . "rt_rtm_media_meta", array(
     //                    'media_id' => $media_id,
     //                    'meta_key' => "user-tags",
     //                    "meta_value" =>  maybe_serialize($photo_tag_meta)), array('%d', '%s', '%s'));
     //        }
     if ('album' != $media_type && function_exists('bp_core_get_user_domain') && $activity_data) {
         if (function_exists('bp_core_get_table_prefix')) {
             $bp_prefix = bp_core_get_table_prefix();
         } else {
             $bp_prefix = '';
         }
         $activity_data->old_primary_link = $activity_data->primary_link;
         $parent_link = get_rtmedia_user_link($activity_data->user_id);
         $activity_data->primary_link = $parent_link . RTMEDIA_MEDIA_SLUG . '/' . $last_id;
         $this->search_and_replace($activity_data->old_primary_link, $activity_data->primary_link);
         $activity_data->action = str_replace($activity_data->old_primary_link, $activity_data->primary_link, $activity_data->action);
         $activity_data->content = str_replace($activity_data->old_primary_link, $activity_data->primary_link, $activity_data->content);
         global $last_baseurl, $last_newurl;
         $replace_img = $last_newurl;
         //$last_baseurl . "rtMedia/$prefix/";
         if (false === strpos($activity_data->content, $replace_img)) {
             $activity_data->content = str_replace($last_baseurl, $replace_img, $activity_data->content);
         }
         global $wpdb;
         $wpdb->update($bp_prefix . 'bp_activity', array('primary_link' => $activity_data->primary_link, 'action' => $activity_data->action, 'content' => $activity_data->content), array('id' => $activity_data->id));
     } else {
         if ('group' == $media_context) {
             $activity_data->old_primary_link = $activity_data->primary_link;
             $parent_link = get_rtmedia_group_link(abs(intval($result->context_id)));
             $parent_link = trailingslashit($parent_link);
             $activity_data->primary_link = trailingslashit($parent_link . RTMEDIA_MEDIA_SLUG . '/' . $last_id);
             $this->search_and_replace($activity_data->old_primary_link, $activity_data->primary_link);
         } else {
             $activity_data->old_primary_link = $activity_data->primary_link;
             $parent_link = get_rtmedia_user_link($activity_data->user_id);
             $parent_link = trailingslashit($parent_link);
             $activity_data->primary_link = trailingslashit($parent_link . RTMEDIA_MEDIA_SLUG . '/' . $last_id);
             $this->search_and_replace($activity_data->old_primary_link, $activity_data->primary_link);
         }
     }
     if ('' != $old_type) {
         if ('group' == $media_context) {
             $parent_link = get_rtmedia_group_link(abs(intval($result->context_id)));
             $parent_link = trailingslashit($parent_link);
             $this->search_and_replace(trailingslashit($parent_link . $old_type . '/' . $media_id), trailingslashit($parent_link . RTMEDIA_MEDIA_SLUG . '/' . $last_id));
         } else {
             $parent_link = get_rtmedia_user_link($activity_data->user_id);
             $parent_link = trailingslashit($parent_link);
             $this->search_and_replace(trailingslashit($parent_link . $old_type . '/' . $media_id), trailingslashit($parent_link . RTMEDIA_MEDIA_SLUG . '/' . $last_id));
         }
     }
     return $last_id;
 }
 /**
  * @group get_activity_comments
  *
  * Verify the format of the activity comments array, for internal
  * refactoring
  */
 public function test_get_activity_comments_format()
 {
     $now = time();
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     $a1 = $this->factory->activity->create(array('content' => 'Life Rules', 'recorded_time' => date('Y-m-d H:i:s', $now), 'user_id' => $u1));
     $a2 = bp_activity_new_comment(array('activity_id' => $a1, 'content' => 'Candy is good', 'recorded_time' => date('Y-m-d H:i:s', $now - 50), 'user_id' => $u1));
     $a3 = bp_activity_new_comment(array('activity_id' => $a1, 'content' => 'Bread is good', 'recorded_time' => date('Y-m-d H:i:s', $now - 25), 'user_id' => $u2));
     $keys = array('id', 'item_id', 'secondary_item_id', 'user_id', 'primary_link', 'component', 'type', 'action', 'content', 'date_recorded', 'hide_sitewide', 'mptt_left', 'mptt_right', 'is_spam');
     $a2_obj = new BP_Activity_Activity($a2);
     $e2 = new stdClass();
     foreach ($keys as $key) {
         $e2->{$key} = $a2_obj->{$key};
     }
     $e2_user = new WP_User($a2_obj->user_id);
     $e2->user_email = $e2_user->user_email;
     $e2->user_nicename = $e2_user->user_nicename;
     $e2->user_login = $e2_user->user_login;
     $e2->display_name = $e2_user->display_name;
     $e2->user_fullname = bp_core_get_user_displayname($e2->user_id);
     $e2->children = array();
     $e2->depth = 1;
     $a3_obj = new BP_Activity_Activity($a3);
     $e3 = new stdClass();
     foreach ($keys as $key) {
         $e3->{$key} = $a3_obj->{$key};
     }
     $e3_user = new WP_User($e3->user_id);
     $e3->user_email = $e3_user->user_email;
     $e3->user_nicename = $e3_user->user_nicename;
     $e3->user_login = $e3_user->user_login;
     $e3->display_name = $e3_user->display_name;
     $e3->user_fullname = bp_core_get_user_displayname($e3->user_id);
     $e3->children = array();
     $e3->depth = 1;
     $expected = array($a2 => $e2, $a3 => $e3);
     $a1_obj = new BP_Activity_Activity($a1);
     $comments = BP_Activity_Activity::get_activity_comments($a1, $a1_obj->mptt_left, $a1_obj->mptt_right, 'ham_only', $a1);
     $this->assertEquals($expected, $comments);
 }
 /**
  * Append activity comments to their associated activity items
  *
  * @global wpdb $wpdb WordPress database object
  * @param array $activities
  * @param bool $spam Optional; 'ham_only' (default), 'spam_only' or 'all'.
  * @return array The updated activities with nested comments
  * @since BuddyPress (1.2)
  */
 function append_comments($activities, $spam = 'ham_only')
 {
     global $wpdb;
     $activity_comments = array();
     // Now fetch the activity comments and parse them into the correct position in the activities array.
     foreach ((array) $activities as $activity) {
         $top_level_parent_id = 'activity_comment' == $activity->type ? $activity->item_id : 0;
         $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments($activity->id, $activity->mptt_left, $activity->mptt_right, $spam, $top_level_parent_id);
     }
     // Merge the comments with the activity items
     foreach ((array) $activities as $key => $activity) {
         if (isset($activity_comments[$activity->id])) {
             $activities[$key]->children = $activity_comments[$activity->id];
         }
     }
     return $activities;
 }
 protected function get_comments()
 {
     $count = BP_Activity_Activity::get_activity_comments($this->activity->id, $this->activity->mptt_left, $this->activity->mptt_right);
     return count($count);
 }
Esempio n. 6
0
/**
 * Mark read a notification after the activity item is seen.
 *
 * @since 1.0.0
 *
 * @param object $activity The activity item info.
 */
function crowdmentions_mark_notifications_group_single_activity_visited($activity)
{
    if (!bp_is_current_action($activity->id)) {
        return;
    }
    $comments = BP_Activity_Activity::get_activity_comments($activity->id, $activity->mptt_left, $activity->mptt_right);
    if ($comments === false) {
        crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_group_' . $activity->id, false);
        crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_moderators_' . $activity->id, false);
        crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_administrators_' . $activity->id, false);
        crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_friends_' . $activity->id, false);
    } else {
        foreach ($comments as $comment) {
            crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_group_' . $comment->id, false);
            crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_moderators_' . $comment->id, false);
            crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_administrators_' . $comment->id, false);
            crowdmentions_mark_notification(bp_loggedin_user_id(), false, false, 'mention_friends_' . $comment->id, false);
        }
    }
}