Changeset 5339
- Timestamp:
- 11/20/2011 11:39:56 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-activity/bp-activity-admin.php
r5330 r5339 40 40 } 41 41 add_action( bp_core_admin_hook(), 'bp_activity_add_admin_menu' ); 42 43 /** 44 * AJAX receiver for Activity replies via the admin screen. Adds a new activity 45 * comment, and returns HTML for a new table row. 46 * 47 * @since 1.6 48 */ 49 function bp_activity_admin_reply() { 50 // Check nonce 51 check_ajax_referer( 'bp-activity-admin-reply', '_ajax_nonce-bp-activity-admin-reply' ); 52 53 $parent_id = ! empty( $_REQUEST['parent_id'] ) ? (int) $_REQUEST['parent_id'] : 0; 54 $root_id = ! empty( $_REQUEST['root_id'] ) ? (int) $_REQUEST['root_id'] : 0; 55 56 // $parent_id is required 57 if ( empty( $parent_id ) ) 58 die( '-1' ); 59 60 // If $root_id not set (e.g. for root items), use $parent_id 61 if ( empty( $root_id ) ) 62 $root_id = $parent_id; 63 64 // Check that a reply has been entered 65 if ( empty( $_REQUEST['content'] ) ) 66 die( __( 'ERROR: Please type a reply.', 'buddypress' ) ); 67 68 // Check parent activity exists 69 $parent_activity = new BP_Activity_Activity( $parent_id ); 70 if ( empty( $parent_activity->component ) ) 71 die( __( 'ERROR: The item you are trying to reply to cannot be found, or it has been deleted.', 'buddypress' ) ); 72 73 // @todo: Check if user is allowed to create new activity items 74 // if ( ! current_user_can( 'bp_new_activity' ) ) 75 if ( ! is_super_admin() ) 76 die( '-1' ); 77 78 // Add new activity comment 79 $new_activity_id = bp_activity_new_comment( array( 80 'activity_id' => $root_id, // ID of the root activity item 81 'content' => $_REQUEST['content'], 82 'parent_id' => $parent_id, // ID of a parent comment 83 ) ); 84 85 // Fetch the new activity item, as we need it to create table markup to return 86 $new_activity = new BP_Activity_Activity( $new_activity_id ); 87 88 // This needs to be set for the BP_Activity_List_Table constructor to work 89 set_current_screen( 'toplevel_page_bp-activity' ); 90 91 // Set up an output buffer 92 ob_start(); 93 $list_table = new BP_Activity_List_Table(); 94 $list_table->single_row( (array) $new_activity ); 95 96 // Get table markup 97 $response = array( 98 'data' => ob_get_contents(), 99 'id' => $new_activity_id, 100 'position' => -1, 101 'what' => 'bp_activity', 102 ); 103 ob_end_clean(); 104 105 // Send response 106 $r = new WP_Ajax_Response(); 107 $r->add( $response ); 108 $r->send(); 109 110 exit(); 111 } 112 add_action( 'wp_ajax_bp-activity-admin-reply', 'bp_activity_admin_reply' ); 42 113 43 114 /** … … 88 159 ); 89 160 161 // Enqueue CSS and JavaScript 162 if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { 163 wp_enqueue_script( 'bp_activity_admin_js', BP_PLUGIN_URL . 'bp-activity/admin/js/admin.dev.js', array( 'jquery', 'wp-ajax-response' ), '20111120' ); 164 wp_enqueue_style( 'bp_activity_admin_css', BP_PLUGIN_URL . 'bp-activity/admin/css/admin.dev.css', array(), '20111120' ); 165 166 } else { 167 wp_enqueue_script( 'bp_activity_admin_js', BP_PLUGIN_URL . 'bp-activity/admin/js/admin.js', array( 'jquery', 'wp-ajax-response' ), '20111120' ); 168 wp_enqueue_style( 'bp_activity_admin_css', BP_PLUGIN_URL . 'bp-activity/admin/css/admin.css', array(), '20111120' ); 169 } 170 90 171 // Create the Activity screen list table 91 172 $bp_activity_list_table = new BP_Activity_List_Table(); … … 96 177 97 178 // Build redirection URL 98 $redirect_to = remove_query_arg( array( 'aid', 'deleted', ' spammed', 'unspammed', ), wp_get_referer() );179 $redirect_to = remove_query_arg( array( 'aid', 'deleted', 'error', 'spammed', 'unspammed', ), wp_get_referer() ); 99 180 $redirect_to = add_query_arg( 'paged', $bp_activity_list_table->get_pagenum(), $redirect_to ); 100 181 … … 119 200 // Initialise counters for how many of each type of item we perform an action on 120 201 $deleted = $spammed = $unspammed = 0; 202 203 // Store any error that occurs when updating the database item 204 $error = 0; 121 205 122 206 // "We'd like to shoot the monster, could you move, please?" … … 143 227 case 'ham' : 144 228 bp_activity_mark_as_ham( $activity ); 145 $activity->save(); 146 229 $result = $activity->save(); 230 231 // Check for any error during activity save 232 if ( ! $result ) { 233 $error = $activity->id; 234 break; 235 } 236 237 $unspammed++; 147 238 break; 148 239 149 240 case 'spam' : 150 241 bp_activity_mark_as_spam( $activity ); 151 $activity->save(); 242 $result = $activity->save(); 243 244 // Check for any error during activity save 245 if ( ! $result ) { 246 $error = $activity->id; 247 break; 248 } 152 249 153 250 $spammed++; … … 158 255 } 159 256 257 // If an error occured, don't bother looking at the other activities. Bail out of the foreach. 258 if ( $error ) 259 break; 260 160 261 // Release memory 161 262 unset( $activity ); … … 171 272 if ( $deleted ) 172 273 $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); 274 275 // If an error occured, pass back the activity ID that failed 276 if ( $error ) 277 $redirect_to = add_query_arg( 'error', (int) $error, $redirect_to ); 173 278 174 279 // Redirect … … 195 300 196 301 // If the user has just made a change to an activity item, build status messages 197 if ( !empty( $_REQUEST['deleted'] ) || !empty( $_REQUEST['spammed'] ) || !empty( $_REQUEST['unspammed'] ) ) {302 if ( !empty( $_REQUEST['deleted'] ) || !empty( $_REQUEST['spammed'] ) || !empty( $_REQUEST['unspammed'] ) || !empty( $_REQUEST['error'] ) ) { 198 303 $deleted = !empty( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; 304 $error = !empty( $_REQUEST['error'] ) ? (int) $_REQUEST['error'] : 0; 199 305 $spammed = !empty( $_REQUEST['spammed'] ) ? (int) $_REQUEST['spammed'] : 0; 200 306 $unspammed = !empty( $_REQUEST['unspammed'] ) ? (int) $_REQUEST['unspammed'] : 0; … … 202 308 if ( $deleted > 0 ) 203 309 $messages[] = sprintf( _n( '%s activity was permanently deleted.', '%s activities were permanently deleted.', $deleted, 'buddypress' ), $deleted ); 310 311 if ( $error > 0 ) 312 $messages[] = sprintf( __( 'An error occured when updating Activity ID #%d.', 'buddypress' ), $error ); 204 313 205 314 if ( $spammed > 0 ) … … 235 344 <?php // If the user has just made a change to an activity item, display the status messages ?> 236 345 <?php if ( !empty( $messages ) ) : ?> 237 <div id="moderated" class=" updated"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div>346 <div id="moderated" class="<?php echo ( ! empty( $_REQUEST['error'] ) ) ? 'error' : 'updated'; ?>"><p><?php echo implode( "<br/>\n", $messages ); ?></p></div> 238 347 <?php endif; ?> 239 348 … … 246 355 <?php $bp_activity_list_table->display(); ?> 247 356 </form> 357 358 <table style="display: none;"> 359 <tr id="bp-activities-container" style="display: none;"> 360 <td colspan="4"> 361 <form method="get" action=""> 362 363 <h5 id="bp-replyhead"><?php _e( 'Reply to Activity', 'buddypress' ); ?></h5> 364 <?php wp_editor( '', 'bp-activities', array( 'dfw' => false, 'media_buttons' => false, 'quicktags' => array( 'buttons' => 'strong,em,link,block,del,ins,img,code,spell,close' ), 'tinymce' => false, ) ); ?> 365 366 <p id="bp-replysubmit" class="submit"> 367 <a href="#" class="cancel button-secondary alignleft"><?php _e( 'Cancel', 'tmggc' ); ?></a> 368 <a href="#" class="save button-primary alignright"><?php _e( 'Reply', 'tmggc' ); ?></a> 369 370 <img class="waiting" style="display:none;" src="<?php echo esc_url( network_admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 371 <span class="error" style="display:none;"></span> 372 <br class="clear" /> 373 </p> 374 375 <?php wp_nonce_field( 'bp-activity-admin-reply', '_ajax_nonce-bp-activity-admin-reply', false ); ?> 376 377 </form> 378 </td> 379 </tr> 380 </table> 248 381 </div> 249 382 … … 437 570 438 571 /** 572 * Generates content for a single row of the table 573 * 574 * @param object $item The current item 575 * @since 1.6 576 */ 577 function single_row( $item ) { 578 static $row_class = ''; 579 $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); 580 581 echo '<tr' . $row_class . ' id="activity-' . esc_attr( $item['id'] ) . '" data-parent_id="' . esc_attr( $item['id'] ) . '" data-root_id="' . esc_attr( $item['item_id'] ) . '">'; 582 echo $this->single_row_columns( $item ); 583 echo '</tr>'; 584 } 585 586 /** 439 587 * Get the list of views available on this table (e.g. "all", "spam"). 440 588 * … … 451 599 } 452 600 453 /**601 /** 454 602 * Get bulk actions 455 603 * … … 599 747 $spam_nonce = esc_html( '_wpnonce=' . wp_create_nonce( 'spam-activity_' . $item['id'] ) ); 600 748 601 $delete_url = $base_url . "&action=delete& $spam_nonce";749 $delete_url = $base_url . "&action=delete&$spam_nonce"; 602 750 $edit_url = $base_url . '&action=edit'; 603 $ham_url = $base_url . "&action=ham& $spam_nonce";604 $spam_url = $base_url . "&action=spam& $spam_nonce";751 $ham_url = $base_url . "&action=ham&$spam_nonce"; 752 $spam_url = $base_url . "&action=spam&$spam_nonce"; 605 753 606 754 // Rollover actions 607 755 608 756 // Reply - javascript only; implemented by AJAX. 609 if ( 'spam' != $item_status ) 610 $actions['reply'] = sprintf( '<a href="%s" class="reply hide-if-no-js">%s</a>', $base_url, __( 'Reply', 'buddypress' ) ); 611 612 // Edit 613 $actions['edit'] = sprintf( '<a href="%s">%s</a>', $edit_url, __( 'Edit', 'buddypress' ) ); 757 if ( 'spam' != $item_status ) { 758 $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) ); 759 760 // Edit 761 $actions['edit'] = sprintf( '<a href="%s">%s</a>', $edit_url, __( 'Edit', 'buddypress' ) ); 762 } 614 763 615 764 // Spam/unspam -
trunk/readme.txt
r5210 r5339 2 2 Contributors: apeatling, johnjamesjacoby, MrMaz, DJPaul, boonebgorges 3 3 Tags: buddypress, social networking, activity, profiles, messaging, friends, groups, forums, microblogging, twitter, facebook, social, community, networks, networking, cms 4 Requires at least: 3. 25 Tested up to: 3. 2.14 Requires at least: 3.3 5 Tested up to: 3.3 6 6 Stable tag: 1.5 7 7
Note: See TracChangeset
for help on using the changeset viewer.