Changeset 1566 for trunk/bp-activity.php
- Timestamp:
- 06/23/2009 12:57:13 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-activity.php
r1545 r1566 1 1 <?php 2 2 3 define ( 'BP_ACTIVITY_DB_VERSION', '1 300' );3 define ( 'BP_ACTIVITY_DB_VERSION', '1716' ); 4 4 5 5 /* Define the slug for the component */ 6 6 if ( !defined( 'BP_ACTIVITY_SLUG' ) ) 7 7 define ( 'BP_ACTIVITY_SLUG', 'activity' ); 8 9 /* How long before activity items in streams are re-cached? */10 if ( !defined( 'BP_ACTIVITY_CACHE_LENGTH' ) )11 define ( 'BP_ACTIVITY_CACHE_LENGTH', '6 HOURS' );12 8 13 9 require ( BP_PLUGIN_DIR . '/bp-activity/bp-activity-classes.php' ); … … 30 26 $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; 31 27 32 $sql[] = "CREATE TABLE {$bp->activity->table_name_user_activity} ( 33 id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, 34 user_id bigint(20) NOT NULL, 35 component_name varchar(75) NOT NULL, 36 component_action varchar(75) NOT NULL, 37 item_id bigint(20) NOT NULL, 38 secondary_item_id bigint(20) NOT NULL, 39 date_recorded datetime NOT NULL, 40 is_private tinyint(1) NOT NULL DEFAULT 0, 41 no_sitewide_cache tinyint(1) NOT NULL DEFAULT 0, 42 KEY item_id (item_id), 43 KEY user_id (user_id), 44 KEY is_private (is_private), 45 KEY component_name (component_name) 46 ) {$charset_collate};"; 47 48 $sql[] = "CREATE TABLE {$bp->activity->table_name_user_activity_cached} ( 28 $sql[] = "CREATE TABLE {$bp->activity->table_name} ( 49 29 id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, 50 30 user_id bigint(20) NOT NULL, … … 55 35 item_id bigint(20) NOT NULL, 56 36 secondary_item_id bigint(20) NOT NULL, 57 date_cached datetime NOT NULL,58 37 date_recorded datetime NOT NULL, 59 is_private tinyint(1) NOT NULL DEFAULT 0, 60 KEY date_cached (date_cached), 61 KEY date_recorded (date_recorded), 62 KEY is_private (is_private), 63 KEY user_id (user_id), 64 KEY item_id (item_id), 65 KEY component_name (component_name) 66 ) {$charset_collate};"; 67 68 $sql[] = "CREATE TABLE {$bp->activity->table_name_sitewide} ( 69 id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, 70 user_id bigint(20) NOT NULL, 71 item_id bigint(20) NOT NULL, 72 secondary_item_id bigint(20), 73 content longtext NOT NULL, 74 primary_link varchar(150) NOT NULL, 75 component_name varchar(75) NOT NULL, 76 component_action varchar(75) NOT NULL, 77 date_cached datetime NOT NULL, 78 date_recorded datetime NOT NULL, 79 KEY date_cached (date_cached), 38 hide_sitewide bool DEFAULT 0, 80 39 KEY date_recorded (date_recorded), 81 40 KEY user_id (user_id), … … 87 46 dbDelta($sql); 88 47 89 if ( '' == get_site_option( 'bp-activity-db-merge' ) || !get_site_option( 'bp-activity-db-merge' ) ) { 90 $users = $wpdb->get_col( "SELECT ID FROM " . CUSTOM_USER_TABLE ); 91 92 foreach ( $users as $user_id ) { 93 BP_Activity_Activity::convert_tables_for_user( $user_id ); 94 BP_Activity_Activity::kill_tables_for_user( $user_id ); 95 } 96 97 add_site_option( 'bp-activity-db-merge', 1 ); 98 } 99 48 /* Drop the old sitewide and user activity tables */ 49 $wpdb->query( "DROP TABLE {$wpdb->base_prefix}bp_activity_user_activity" ); 50 $wpdb->query( "DROP TABLE {$wpdb->base_prefix}bp_activity_sitewide" ); 51 100 52 update_site_option( 'bp-activity-db-version', BP_ACTIVITY_DB_VERSION ); 101 53 } … … 111 63 global $bp, $wpdb, $current_blog; 112 64 113 $bp->activity->table_name_user_activity = $wpdb->base_prefix . 'bp_activity_user_activity'; 114 $bp->activity->table_name_user_activity_cached = $wpdb->base_prefix . 'bp_activity_user_activity_cached'; 115 $bp->activity->table_name_sitewide = $wpdb->base_prefix . 'bp_activity_sitewide'; 116 65 $bp->activity->table_name = $wpdb->base_prefix . 'bp_activity_user_activity_cached'; 117 66 $bp->activity->image_base = BP_PLUGIN_URL . '/bp-activity/images'; 118 67 $bp->activity->slug = BP_ACTIVITY_SLUG; 119 120 $bp->version_numbers->activity = BP_ACTIVITY_VERSION;121 68 122 69 if ( is_site_admin() && get_site_option( 'bp-activity-db-version' ) < BP_ACTIVITY_DB_VERSION ) … … 127 74 128 75 function bp_activity_setup_root_component() { 129 /* Register ' groups' as a root component*/76 /* Register 'activity' as a root component (for RSS feed use) */ 130 77 bp_core_add_root_component( BP_ACTIVITY_SLUG ); 131 78 } … … 178 125 } 179 126 180 /***** Actions **********/ 181 127 /***** Actions *********/ 128 129 function bp_activity_action_sitewide_feed() { 130 global $bp, $wp_query; 131 132 if ( $bp->current_component != $bp->activity->slug || $bp->current_action != 'feed' || $bp->displayed_user->id ) 133 return false; 134 135 $wp_query->is_404 = false; 136 status_header( 200 ); 137 138 include_once( 'bp-activity/feeds/bp-activity-sitewide-feed.php' ); 139 die; 140 } 141 add_action( 'wp', 'bp_activity_action_sitewide_feed', 3 ); 142 143 function bp_activity_action_personal_feed() { 144 global $bp, $wp_query; 145 146 if ( $bp->current_component != $bp->activity->slug || !$bp->displayed_user->id || $bp->current_action != 'feed' ) 147 return false; 148 149 $wp_query->is_404 = false; 150 status_header( 200 ); 151 152 include_once( 'bp-activity/feeds/bp-activity-personal-feed.php' ); 153 die; 154 } 155 add_action( 'wp', 'bp_activity_action_personal_feed', 3 ); 156 157 function bp_activity_action_friends_feed() { 158 global $bp, $wp_query; 159 160 if ( $bp->current_component != $bp->activity->slug || !$bp->displayed_user->id || $bp->current_action != 'my-friends' || $bp->action_variables[0] != 'feed' ) 161 return false; 162 163 $wp_query->is_404 = false; 164 status_header( 200 ); 165 166 include_once( 'bp-activity/feeds/bp-activity-friends-feed.php' ); 167 die; 168 } 169 add_action( 'wp', 'bp_activity_action_friends_feed', 3 ); 170 171 172 /**** BUSINESS FUNCTIONS *********/ 173 174 function bp_activity_add( $args ) { 175 global $bp, $wpdb; 176 177 $defaults = array( 178 'user_id' => $bp->loggedin_user->id, 179 'content' => false, 180 'primary_link' => false, 181 'component_name' => false, 182 'component_action' => false, 183 'item_id' => false, 184 'secondary_item_id' => false, 185 'recorded_time' => time(), 186 'hide_sitewide' => false 187 ); 188 189 $r = wp_parse_args( $args, $defaults ); 190 extract( $r, EXTR_SKIP ); 191 192 $activity = new BP_Activity_Activity; 193 $activity->user_id = $user_id; 194 $activity->content = $content; 195 $activity->primary_link = $primary_link; 196 $activity->component_name = $component_name; 197 $activity->component_action = $component_action; 198 $activity->item_id = $item_id; 199 $activity->secondary_item_id = $secondary_item_id; 200 $activity->date_recorded = $recorded_time; 201 $activity->hide_sitewide = $hide_sitewide; 202 203 if ( !$activity->save() ) 204 return false; 205 206 do_action( 'bp_activity_add', $args ); 207 208 return true; 209 } 210 211 function bp_activity_update( $args ) { 212 global $bp, $wpdb; 213 214 extract( $args ); 215 216 $defaults = array( 217 'user_id' => $bp->loggedin_user->id, 218 'content' => false, 219 'component_name' => false, 220 'component_action' => false, 221 'item_id' => false, 222 'secondary_item_id' => false, 223 'recorded_time' => time(), 224 'hide_sitewide' => false 225 ); 226 227 $activity = new BP_Activity_Activity( $user_id, $component_name, $component_action, $item_id, $secondary_item_id ); 228 $activity->user_id = $user_id; 229 $activity->content = $content; 230 $activity->primary_link = $primary_link; 231 $activity->component_name = $component_name; 232 $activity->component_action = $component_action; 233 $activity->item_id = $item_id; 234 $activity->secondary_item_id = $secondary_item_id; 235 $activity->date_recorded = $recorded_time; 236 $activity->hide_sitewide = $hide_sitewide; 237 238 if ( !$activity->save() ) 239 return false; 240 241 do_action( 'bp_activity_update', $args ); 242 243 return true; 244 } 245 246 /* There are multiple ways to delete activity items, depending on the information you have at the time. */ 247 248 function bp_activity_delete_by_item_id( $user_id, $component_name, $component_action, $item_id, $secondary_item_id = false ) { 249 if ( !BP_Activity_Activity::delete_by_item_id( $user_id, $component_name, $component_action, $item_id, $secondary_item_id ) ) 250 return false; 251 252 do_action( 'bp_activity_delete_by_item_id', $user_id, $component_name, $component_action, $item_id, $secondary_item_id ); 253 254 return true; 255 } 256 257 function bp_activity_delete_by_activity_id( $activity_id ) { 258 if ( !BP_Activity_Activity::delete_by_activity_id( $activity_id ) ) 259 return false; 260 261 do_action( 'bp_activity_delete_by_activity_id', $activity_id ); 262 263 return true; 264 } 265 266 function bp_activity_delete_by_content( $user_id, $content, $component_name, $component_action ) { 267 if ( !BP_Activity_Activity::delete_by_content( $user_id, $content, $component_name, $component_action ) ) 268 return false; 269 270 do_action( 'bp_activity_delete_by_content', $user_id, $content, $component_name, $component_action ); 271 272 return true; 273 } 274 275 function bp_activity_delete_for_user_by_component( $user_id, $component_name ) { 276 if ( !BP_Activity_Activity::delete_for_user_by_component( $user_id, $component_name ) ) 277 return false; 278 279 do_action( 'bp_activity_delete_for_user_by_component', $user_id, $component_name ); 280 281 return true; 282 } 283 284 function bp_activity_get_last_updated() { 285 return BP_Activity_Activity::get_last_updated(); 286 } 287 288 function bp_activity_get_sitewide_activity( $max_items = 30, $pag_num = false, $pag_page = false ) { 289 return BP_Activity_Activity::get_sitewide_activity( $max_items, $pag_num, $pag_page ); 290 } 291 292 function bp_activity_get_user_activity( $user_id, $max_items = 30, $since = '-4 weeks', $pag_num = false, $pag_page = false ) { 293 return BP_Activity_Activity::get_activity_for_user( $user_id, $max_items, $since, $pag_num, $pag_page ); 294 } 295 296 function bp_activity_get_friends_activity( $user_id, $max_items = 30, $since = '-4 weeks', $max_items_per_friend = false, $pag_num = false, $pag_page = false ) { 297 return BP_Activity_Activity::get_activity_for_friends( $user_id, $max_items, $since, $max_items_per_friend, $pag_num, $pag_page ); 298 } 299 300 function bp_activity_remove_data( $user_id ) { 301 // Clear the user's activity from the sitewide stream and clear their activity tables 302 BP_Activity_Activity::delete_for_user( $user_id ); 303 304 // Remove the deleted users activity tables 305 BP_Activity_Activity::kill_tables_for_user( $user_id ); 306 307 do_action( 'bp_activity_remove_data', $user_id ); 308 } 309 add_action( 'wpmu_delete_user', 'bp_activity_remove_data' ); 310 add_action( 'delete_user', 'bp_activity_remove_data' ); 311 312 /* Ordering function - don't call this directly */ 313 function bp_activity_order_by_date( $a, $b ) { 314 return strcasecmp( $b['date_recorded'], $a['date_recorded'] ); 315 } 316 317 /**** DEPRECATED FUNCTIONS (DO NOT USE IN YOUR CODE) **************/ 318 319 /* DEPRECATED - use bp_activity_add() */ 182 320 function bp_activity_record( $item_id, $component_name, $component_action, $is_private, $secondary_item_id = false, $user_id = false, $secondary_user_id = false, $recorded_time = false ) { 183 321 global $bp, $wpdb; … … 189 327 $recorded_time = time(); 190 328 191 $activity = new BP_Activity_Activity; 192 $activity->item_id = $item_id; 193 $activity->secondary_item_id = $secondary_item_id; 194 $activity->user_id = $user_id; 195 $activity->component_name = $component_name; 196 $activity->component_action = $component_action; 197 $activity->date_recorded = $recorded_time; 198 $activity->is_private = $is_private; 199 200 $loggedin_user_save = $activity->save(); 201 202 /* Save an activity entry for both logged in and secondary user. For example for a new friend connection 203 you would want to show "X and Y are now friends" on both users activity stream */ 329 $args = compact( 'user_id', 'content', 'component_name', 'component_action', 'item_id', 'secondary_item_id', 'recorded_time' ); 330 bp_activity_add( $args ); 331 204 332 if ( $secondary_user_id ) { 205 $activity = new BP_Activity_Activity; 206 $activity->item_id = $item_id; 207 $activity->user_id = $secondary_user_id; 208 $activity->component_name = $component_name; 209 $activity->component_action = $component_action; 210 $activity->date_recorded = $recorded_time; 211 $activity->is_private = $is_private; 212 213 // We don't want to record this on the sitewide stream, otherwise we will get duplicates. 214 $activity->no_sitewide_cache = true; 215 216 $secondary_user_save = $activity->save(); 333 $hide_sitewide = true; 334 $args = compact( 'user_id', 'content', 'component_name', 'component_action', 'item_id', 'secondary_item_id', 'recorded_time', 'hide_sitewide' ); 335 bp_activity_add( $args ); 217 336 } 218 337 … … 222 341 } 223 342 224 function bp_activity_action_sitewide_feed() { 225 global $bp, $wp_query; 226 227 if ( $bp->current_component != $bp->activity->slug || $bp->current_action != 'feed' || $bp->displayed_user->id ) 228 return false; 229 230 $wp_query->is_404 = false; 231 status_header( 200 ); 232 233 include_once( 'bp-activity/feeds/bp-activity-sitewide-feed.php' ); 234 die; 235 } 236 add_action( 'wp', 'bp_activity_action_sitewide_feed', 3 ); 237 238 function bp_activity_action_personal_feed() { 239 global $bp, $wp_query; 240 241 if ( $bp->current_component != $bp->activity->slug || !$bp->displayed_user->id || $bp->current_action != 'feed' ) 242 return false; 243 244 $wp_query->is_404 = false; 245 status_header( 200 ); 246 247 include_once( 'bp-activity/feeds/bp-activity-personal-feed.php' ); 248 die; 249 } 250 add_action( 'wp', 'bp_activity_action_personal_feed', 3 ); 251 252 function bp_activity_action_friends_feed() { 253 global $bp, $wp_query; 254 255 if ( $bp->current_component != $bp->activity->slug || !$bp->displayed_user->id || $bp->current_action != 'my-friends' || $bp->action_variables[0] != 'feed' ) 256 return false; 257 258 $wp_query->is_404 = false; 259 status_header( 200 ); 260 261 include_once( 'bp-activity/feeds/bp-activity-friends-feed.php' ); 262 die; 263 } 264 add_action( 'wp', 'bp_activity_action_friends_feed', 3 ); 265 266 function bp_activity_get_last_updated() { 267 return BP_Activity_Activity::get_last_updated(); 268 } 269 270 function bp_activity_get_sitewide_activity( $max_items = 30, $pag_num = false, $pag_page = false ) { 271 return BP_Activity_Activity::get_sitewide_activity( $max_items, $pag_num, $pag_page ); 272 } 273 274 function bp_activity_get_user_activity( $user_id, $max_items = 30, $since = '-4 weeks', $pag_num = false, $pag_page = false ) { 275 return BP_Activity_Activity::get_activity_for_user( $user_id, $max_items, $since, $pag_num, $pag_page ); 276 } 277 278 function bp_activity_get_friends_activity( $user_id, $max_items = 30, $since = '-4 weeks', $max_items_per_friend = false, $pag_num = false, $pag_page = false ) { 279 return BP_Activity_Activity::get_activity_for_friends( $user_id, $max_items, $since, $max_items_per_friend, $pag_num, $pag_page ); 280 } 281 343 /* DEPRECATED - use bp_activity_delete_by_item_id() */ 282 344 function bp_activity_delete( $item_id, $component_name, $component_action, $user_id, $secondary_item_id ) { 283 if ( ! BP_Activity_Activity::delete( $item_id, $component_name, $component_action, $user_id, $secondary_item_id ) )345 if ( !bp_activity_delete_by_item_id( $user_id, $component_name, $component_action, $item_id, $secondary_item_id ) ) 284 346 return false; 285 347 … … 289 351 } 290 352 291 function bp_activity_order_by_date( $a, $b ) {292 return strcasecmp( $b['date_recorded'], $a['date_recorded'] );293 }294 295 function bp_activity_remove_data( $user_id ) {296 // Clear the user's activity from the sitewide stream and clear their activity tables297 BP_Activity_Activity::delete_activity_for_user( $user_id );298 299 // Remove the deleted users activity tables300 BP_Activity_Activity::kill_tables_for_user( $user_id );301 302 do_action( 'bp_activity_remove_data', $user_id );303 }304 add_action( 'wpmu_delete_user', 'bp_activity_remove_data' );305 add_action( 'delete_user', 'bp_activity_remove_data' );306 307 308 353 ?>
Note: See TracChangeset
for help on using the changeset viewer.