/** * GET FEED ACTIVITES */ function get_feed_activities($page = 0, $per_page = 20) { global $bp, $wpdb, $buddyboss_ajax_qs; $min = $page > 0 ? ($page - 1) * $per_page : 0; $max = ($page + 1) * $per_page; $per_page = bp_get_activity_per_page(); buddyboss_log("per page: {$per_page}"); if (isset($bp->loggedin_user) && isset($bp->loggedin_user->id) && $bp->displayed_user->id == $bp->loggedin_user->id) { $myprofile = true; } else { $myprofile = false; } $wpdb->show_errors = BUDDYBOSS_DEBUG; $user_id = $bp->displayed_user->id; $user_name = $bp->displayed_user->userdata->user_login; $filter = $bp->displayed_user->domain; buddyboss_log("Looking at {$user_id}"); // Get friend's user IDs $user_ids = friends_get_friend_user_ids($user_id, false, false); // Add logged in user to news feed results // $user_ids[] = $user_id; $user_list = implode(',', $user_ids); // buddyboss_log( $friend_id_list ); $table = bp_core_get_table_prefix() . 'bp_activity'; $table2 = bp_core_get_table_prefix() . 'bp_activity_meta'; // Default WHERE $where = "WHERE ( {$table}.user_id IN ({$user_list}) AND {$table}.type != 'activity_comment' )"; // Add when user joined a group $group_modifier = "OR ( {$table}.user_id = {$user_id} AND {$table}.component = 'groups' ) "; // If we have a filter enabled, let's handle that $ajax_qs = !empty($buddyboss_ajax_qs) ? wp_parse_args($buddyboss_ajax_qs) : false; if (is_array($ajax_qs) && isset($ajax_qs['action'])) { // Clear group modifier $group_modifier = ''; $filter_qs = $ajax_qs['action']; // Check for commas and adjust if (strpos($filter_qs, ',')) { $filters = explode(',', $filter_qs); } else { $filters = (array) $filter_qs; } // Clean each filter $filters_clean = array(); foreach ($filters as $filter) { $filters_clean[] = $wpdb->escape($filter); } $filter_sql = "AND ( {$table}.type='" . implode("' OR {$table}.type='", $filters_clean) . "' )"; $where = "WHERE ( {$table}.user_id IN ({$user_list}) {$filter_sql} )"; } // Filter where SQL $where_filtered = apply_filters('buddyboss_wall_query_feed_activity_ids_where', $where); // Filter modifier SQL $group_filtered = apply_filters('buddyboss_wall_query_feed_activity_ids_groups', $group_modifier); // Build Query $query_sql = "SELECT DISTINCT {$table}.id FROM {$table} LEFT JOIN {$table2} ON {$table}.id = {$table2}.activity_id\n\t\t\t{$where_filtered}\n\t\t\t{$group_filtered}\n\t\t\tORDER BY date_recorded DESC LIMIT {$min}, 40"; // Filter full query SQL $query_filtered = apply_filters('buddyboss_wall_query_feed_activity_ids_full', $query_sql); // Run query $activities = $wpdb->get_results($query_filtered, ARRAY_A); buddyboss_log($query_filtered); buddyboss_log($activities); if (empty($activities)) { return null; } $tmp = array(); foreach ($activities as $a) { $tmp[] = $a["id"]; } $activity_list = implode(",", $tmp); return $activity_list; }
/** * SETUP MENU, ADD NAVIGATION OPTIONS * * @since BuddyBoss 2.0 * @todo: cache the amount of pics */ function setup_bp_menu() { global $wpdb, $bp; if (!isset($bp->displayed_user->id)) { return; } $photos_user_id = $bp->displayed_user->id; $activity_table = bp_core_get_table_prefix() . 'bp_activity'; $activity_meta_table = bp_core_get_table_prefix() . 'bp_activity_meta'; $groups_table = bp_core_get_table_prefix() . 'bp_groups'; // Prepare a SQL query to retrieve the activity posts // that have pictures associated with them $sql = "SELECT COUNT(*) as photo_count FROM {$activity_table} a\n\t\t\t\t\t\t\tINNER JOIN {$activity_meta_table} am ON a.id = am.activity_id\n\t\t\t\t\t\t\tLEFT JOIN (SELECT activity_id, meta_key, meta_value FROM {$activity_meta_table}\n\t\t\t\t\t\t\t WHERE meta_key = 'activityprivacy') am2 ON a.id = am2.activity_id\n\t \t\t\t\t\tLEFT JOIN (SELECT id FROM {$groups_table} WHERE status != 'public' ) grp ON a.item_id = grp.id\n\t\t\t\t\t\t\tWHERE a.user_id = %d\n\t\t\t\t\t\t\tAND (am.meta_key = 'buddyboss_pics_aid' OR am.meta_key = 'bboss_pics_aid')\n\t\t\t\t\t\t\tAND (a.component != 'groups' || a.item_id != grp.id)"; $sql = $wpdb->prepare($sql, $photos_user_id); buddyboss_log(' MENU PHOTO COUNT SQL '); buddyboss_log($sql); $photos_cnt = $wpdb->get_var($sql); /* Add 'Photos' to the main user profile navigation */ bp_core_new_nav_item(array('name' => sprintf(__('Photos <span>%d</span>', 'buddyboss'), $photos_cnt), 'slug' => BUDDYBOSS_PICS_SLUG, 'position' => 80, 'screen_function' => 'buddyboss_pics_screen_picture_grid', 'default_subnav_slug' => 'my-gallery')); $buddyboss_pics_link = $bp->displayed_user->domain . BUDDYBOSS_PICS_SLUG . '/'; bp_core_new_subnav_item(array('name' => __('Photos', 'buddyboss'), 'slug' => 'my-gallery', 'parent_slug' => BUDDYBOSS_PICS_SLUG, 'parent_url' => $buddyboss_pics_link, 'screen_function' => 'buddyboss_pics_screen_picture_grid', 'position' => 10)); }