Changeset 6186
- Timestamp:
- 12/27/2016 10:45:16 PM (4 years ago)
- Location:
- trunk/src/includes/admin
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/includes/admin/actions.php
r5951 r6186 43 43 add_action( 'admin_head', 'bbp_admin_head' ); 44 44 add_action( 'admin_notices', 'bbp_admin_notices' ); 45 add_action( 'menu_order', 'bbp_admin_menu_order' ); 45 46 add_action( 'custom_menu_order', 'bbp_admin_custom_menu_order' ); 46 add_action( ' menu_order', 'bbp_admin_menu_order');47 add_action( 'current_screen', 'bbp_current_screen' ); 47 48 add_action( 'wpmu_new_blog', 'bbp_new_site', 10, 6 ); 48 49 49 50 // Hook on to admin_init 50 add_action( 'bbp_admin_init', 'bbp_admin_forums' );51 add_action( 'bbp_admin_init', 'bbp_admin_topics' );52 add_action( 'bbp_admin_init', 'bbp_admin_replies' );53 51 add_action( 'bbp_admin_init', 'bbp_setup_updater', 999 ); 54 52 add_action( 'bbp_admin_init', 'bbp_register_importers' ); … … 56 54 add_action( 'bbp_admin_init', 'bbp_register_admin_settings' ); 57 55 add_action( 'bbp_admin_init', 'bbp_do_activation_redirect', 1 ); 56 57 // Hook on to current_screen 58 add_action( 'bbp_current_screen', 'bbp_admin_forums' ); 59 add_action( 'bbp_current_screen', 'bbp_admin_topics' ); 60 add_action( 'bbp_current_screen', 'bbp_admin_replies' ); 58 61 59 62 // Initialize the admin area … … 261 264 do_action( 'bbp_register_admin_settings' ); 262 265 } 266 267 /** 268 * Dedicated action to hook into the current screen 269 * 270 * @since 2.6.0 bbPress (r6185) 271 * 272 * @param WP_Screen $current_screen 273 * @uses do_action() Calls 'bbp_current_screen' 274 */ 275 function bbp_current_screen( $current_screen = '' ) { 276 do_action( 'bbp_current_screen', $current_screen ); 277 } -
trunk/src/includes/admin/forums.php
r6178 r6186 28 28 private $post_type = ''; 29 29 30 /**31 * @var WP_Screen The current screen object32 */33 private $screen;34 35 30 /** Functions *************************************************************/ 36 31 … … 80 75 add_action( 'add_meta_boxes', array( $this, 'attributes_metabox' ) ); 81 76 add_action( 'add_meta_boxes', array( $this, 'moderators_metabox' ) ); 77 add_action( 'add_meta_boxes', array( $this, 'comments_metabox' ) ); 82 78 add_action( 'save_post', array( $this, 'save_meta_boxes' ) ); 83 79 … … 93 89 94 90 /** 95 * Should we bail out of this method?96 *97 * @since 2.1.0 bbPress (r4067)98 *99 * @return boolean100 */101 private function bail() {102 103 // Not for a post type104 if ( empty( $this->screen->post_type ) ) {105 return true;106 }107 108 // Not this post type109 if ( $this->post_type != $this->screen->post_type ) {110 return true;111 }112 113 return false;114 }115 116 /**117 91 * Admin globals 118 92 * … … 123 97 private function setup_globals() { 124 98 $this->post_type = bbp_get_forum_post_type(); 125 $this->screen = get_current_screen();126 99 } 127 100 … … 137 110 public function edit_help() { 138 111 139 if ( $this->bail() ) {140 return;141 }142 143 112 // Overview 144 $this->screen->add_help_tab( array(113 get_current_screen()->add_help_tab( array( 145 114 'id' => 'overview', 146 115 'title' => __( 'Overview', 'bbpress' ), … … 150 119 151 120 // Screen Content 152 $this->screen->add_help_tab( array(121 get_current_screen()->add_help_tab( array( 153 122 'id' => 'screen-content', 154 123 'title' => __( 'Screen Content', 'bbpress' ), … … 163 132 164 133 // Available Actions 165 $this->screen->add_help_tab( array(134 get_current_screen()->add_help_tab( array( 166 135 'id' => 'action-links', 167 136 'title' => __( 'Available Actions', 'bbpress' ), … … 176 145 177 146 // Bulk Actions 178 $this->screen->add_help_tab( array(147 get_current_screen()->add_help_tab( array( 179 148 'id' => 'bulk-actions', 180 149 'title' => __( 'Bulk Actions', 'bbpress' ), … … 185 154 186 155 // Help Sidebar 187 $this->screen->set_help_sidebar(156 get_current_screen()->set_help_sidebar( 188 157 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 189 158 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 197 166 * @since 2.0.0 bbPress (r3119) 198 167 * 199 * @uses $this->screen168 * @uses get_current_screen() 200 169 */ 201 170 public function new_help() { 202 171 203 if ( $this->bail() ) {204 return;205 }206 207 172 $customize_display = '<p>' . __( 'The title field and the big forum editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.', 'bbpress' ) . '</p>'; 208 173 209 $this->screen->add_help_tab( array(174 get_current_screen()->add_help_tab( array( 210 175 'id' => 'customize-display', 211 176 'title' => __( 'Customizing This Display', 'bbpress' ), … … 213 178 ) ); 214 179 215 $this->screen->add_help_tab( array(180 get_current_screen()->add_help_tab( array( 216 181 'id' => 'title-forum-editor', 217 182 'title' => __( 'Title and Forum Editor', 'bbpress' ), … … 227 192 } 228 193 229 $this->screen->add_help_tab( array(194 get_current_screen()->add_help_tab( array( 230 195 'id' => 'forum-attributes', 231 196 'title' => __( 'Forum Attributes', 'bbpress' ), … … 241 206 ) ); 242 207 243 $this->screen->add_help_tab( array(208 get_current_screen()->add_help_tab( array( 244 209 'id' => 'publish-box', 245 210 'title' => __( 'Publish Box', 'bbpress' ), … … 247 212 ) ); 248 213 249 $this->screen->set_help_sidebar(214 get_current_screen()->set_help_sidebar( 250 215 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 251 216 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 264 229 */ 265 230 public function attributes_metabox() { 266 267 if ( $this->bail() ) {268 return;269 }270 231 271 232 // Meta data … … 293 254 public function moderators_metabox() { 294 255 295 if ( $this->bail() ) {296 return;297 }298 299 256 // Bail if feature not active or user cannot assign moderators 300 257 if ( ! bbp_allow_forum_mods() || ! current_user_can( 'assign_moderators' ) ) { … … 313 270 314 271 do_action( 'bbp_forum_moderators_metabox' ); 272 } 273 274 /** 275 * Remove comments & discussion metaboxes if comments are not supported 276 * 277 * @since 2.6.0 bbPress 278 */ 279 public function comments_metabox() { 280 if ( ! post_type_supports( $this->post_type, 'comments' ) ) { 281 remove_meta_box( 'commentstatusdiv', $this->post_type, 'normal' ); 282 remove_meta_box( 'commentsdiv', $this->post_type, 'normal' ); 283 } 315 284 } 316 285 … … 339 308 public function save_meta_boxes( $forum_id ) { 340 309 341 if ( $this->bail() ) {342 return $forum_id;343 }344 345 310 // Bail if doing an autosave 346 311 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { … … 396 361 */ 397 362 public function admin_head() { 398 399 if ( $this->bail() ) { 400 return; 401 } ?> 363 ?> 402 364 403 365 <style type="text/css" media="screen"> … … 492 454 public function toggle_forum() { 493 455 494 if ( $this->bail() ) {495 return;496 }497 498 456 // Only proceed if GET is a forum toggle action 499 457 if ( bbp_is_get_request() && ! empty( $_GET['forum_id'] ) && ! empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_toggle_forum_close' ) ) ) { … … 560 518 public function toggle_forum_notice() { 561 519 562 if ( $this->bail() ) {563 return;564 }565 566 520 // Only proceed if GET is a forum toggle action 567 521 if ( bbp_is_get_request() && ! empty( $_GET['bbp_forum_toggle_notice'] ) && in_array( $_GET['bbp_forum_toggle_notice'], array( 'opened', 'closed' ) ) && ! empty( $_GET['forum_id'] ) ) { … … 621 575 */ 622 576 public function column_headers( $columns ) { 623 624 if ( $this->bail() ) {625 return $columns;626 }627 577 628 578 // Set list table column headers … … 665 615 public function column_data( $column, $forum_id ) { 666 616 667 if ( $this->bail() ) {668 return;669 }670 671 617 switch ( $column ) { 672 618 case 'bbp_forum_topic_count' : … … 731 677 public function row_actions( $actions, $forum ) { 732 678 733 if ( $this->bail() ) {734 return $actions;735 }736 737 679 unset( $actions['inline hide-if-no-js'] ); 738 680 … … 774 716 public function updated_messages( $messages ) { 775 717 global $post_ID; 776 777 if ( $this->bail() ) {778 return $messages;779 }780 718 781 719 // URL for the current forum … … 867 805 * @uses BBP_Forums_Admin 868 806 */ 869 function bbp_admin_forums() { 807 function bbp_admin_forums( $current_screen ) { 808 809 // Bail if not a forum screen 810 if ( empty( $current_screen->post_type ) || ( bbp_get_forum_post_type() !== $current_screen->post_type ) ) { 811 return; 812 } 813 814 // Init the forums admin 870 815 bbpress()->admin->forums = new BBP_Forums_Admin(); 871 816 } -
trunk/src/includes/admin/replies.php
r6178 r6186 28 28 private $post_type = ''; 29 29 30 /**31 * @var WP_Screen The current screen object32 */33 private $screen;34 35 30 /** Functions *************************************************************/ 36 31 … … 88 83 add_action( 'add_meta_boxes', array( $this, 'attributes_metabox' ) ); 89 84 add_action( 'add_meta_boxes', array( $this, 'author_metabox' ) ); 85 add_action( 'add_meta_boxes', array( $this, 'comments_metabox' ) ); 90 86 add_action( 'save_post', array( $this, 'save_meta_boxes' ) ); 91 87 … … 105 101 106 102 /** 107 * Should we bail out of this method?108 *109 * @since 2.1.0 bbPress (r4067)110 *111 * @return boolean112 */113 private function bail() {114 115 // Not for a post type116 if ( empty( $this->screen->post_type ) ) {117 return true;118 }119 120 // Not this post type121 if ( $this->post_type != $this->screen->post_type ) {122 return true;123 }124 125 return false;126 }127 128 /**129 103 * Admin globals 130 104 * … … 134 108 */ 135 109 private function setup_globals() { 136 $this->post_type = bbp_get_forum_post_type(); 137 $this->screen = $this->screen; 110 $this->post_type = bbp_get_reply_post_type(); 138 111 } 139 112 … … 149 122 public function edit_help() { 150 123 151 if ( $this->bail() ) {152 return;153 }154 155 124 // Overview 156 $this->screen->add_help_tab( array(125 get_current_screen()->add_help_tab( array( 157 126 'id' => 'overview', 158 127 'title' => __( 'Overview', 'bbpress' ), … … 162 131 163 132 // Screen Content 164 $this->screen->add_help_tab( array(133 get_current_screen()->add_help_tab( array( 165 134 'id' => 'screen-content', 166 135 'title' => __( 'Screen Content', 'bbpress' ), … … 176 145 177 146 // Available Actions 178 $this->screen->add_help_tab( array(147 get_current_screen()->add_help_tab( array( 179 148 'id' => 'action-links', 180 149 'title' => __( 'Available Actions', 'bbpress' ), … … 192 161 193 162 // Bulk Actions 194 $this->screen->add_help_tab( array(163 get_current_screen()->add_help_tab( array( 195 164 'id' => 'bulk-actions', 196 165 'title' => __( 'Bulk Actions', 'bbpress' ), … … 201 170 202 171 // Help Sidebar 203 $this->screen->set_help_sidebar(172 get_current_screen()->set_help_sidebar( 204 173 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 205 174 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 213 182 * @since 2.0.0 bbPress (r3119) 214 183 * 215 * @uses $this->screen184 * @uses get_current_screen() 216 185 */ 217 186 public function new_help() { 218 187 219 if ( $this->bail() ) {220 return;221 }222 223 188 $customize_display = '<p>' . __( 'The title field and the big reply editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.', 'bbpress' ) . '</p>'; 224 189 225 $this->screen->add_help_tab( array(190 get_current_screen()->add_help_tab( array( 226 191 'id' => 'customize-display', 227 192 'title' => __( 'Customizing This Display', 'bbpress' ), … … 229 194 ) ); 230 195 231 $this->screen->add_help_tab( array(196 get_current_screen()->add_help_tab( array( 232 197 'id' => 'title-reply-editor', 233 198 'title' => __( 'Title and Reply Editor', 'bbpress' ), … … 243 208 } 244 209 245 $this->screen->add_help_tab( array(210 get_current_screen()->add_help_tab( array( 246 211 'id' => 'reply-attributes', 247 212 'title' => __( 'Reply Attributes', 'bbpress' ), … … 255 220 ) ); 256 221 257 $this->screen->add_help_tab( array(222 get_current_screen()->add_help_tab( array( 258 223 'id' => 'publish-box', 259 224 'title' => __( 'Publish Box', 'bbpress' ), … … 261 226 ) ); 262 227 263 $this->screen->set_help_sidebar(228 get_current_screen()->set_help_sidebar( 264 229 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 265 230 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 277 242 */ 278 243 public function bulk_actions( $actions ) { 279 280 if ( $this->bail() ) {281 return $actions;282 }283 244 284 245 if ( current_user_can( 'moderate' ) ) { … … 303 264 public function bulk_post_updated_messages( $bulk_messages, $bulk_counts ) { 304 265 305 if ( $this->bail() ) {306 return $bulk_messages;307 }308 309 266 $bulk_messages['reply']['updated'] = _n( '%s reply updated.', '%s replies updated.', $bulk_counts['updated'], 'bbpress' ); 310 267 $bulk_messages['reply']['locked'] = ( 1 === $bulk_counts['locked'] ) ? __( '1 reply not updated, somebody is editing it.', 'bbpress' ) : … … 325 282 public function handle_bulk_actions( $sendback, $doaction, $post_ids ) { 326 283 327 if ( $this->bail() ) {328 return $sendback;329 }330 331 284 $sendback = remove_query_arg( array( 'spam', 'unspam' ), $sendback ); 332 285 $updated = $locked = 0; … … 388 341 */ 389 342 public function attributes_metabox() { 390 391 if ( $this->bail() ) {392 return;393 }394 343 395 344 add_meta_box( … … 406 355 407 356 /** 408 * Pass the reply attributes for processing409 *410 * @since 2.0.0 bbPress (r2746)411 *412 * @param int $reply_id Reply id413 * @uses current_user_can() To check if the current user is capable of414 * editing the reply415 * @uses do_action() Calls 'bbp_reply_attributes_metabox_save' with the416 * reply id and parent id417 * @return int Parent id418 */419 public function save_meta_boxes( $reply_id ) {420 421 if ( $this->bail() ) {422 return $reply_id;423 }424 425 // Bail if doing an autosave426 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {427 return $reply_id;428 }429 430 // Bail if not a post request431 if ( ! bbp_is_post_request() ) {432 return $reply_id;433 }434 435 // Check action exists436 if ( empty( $_POST['action'] ) ) {437 return $reply_id;438 }439 440 // Nonce check441 if ( empty( $_POST['bbp_reply_metabox'] ) || ! wp_verify_nonce( $_POST['bbp_reply_metabox'], 'bbp_reply_metabox_save' ) ) {442 return $reply_id;443 }444 445 // Current user cannot edit this reply446 if ( !current_user_can( 'edit_reply', $reply_id ) ) {447 return $reply_id;448 }449 450 // Get the reply meta post values451 $topic_id = ! empty( $_POST['parent_id'] ) ? (int) $_POST['parent_id'] : 0;452 $forum_id = ! empty( $_POST['bbp_forum_id'] ) ? (int) $_POST['bbp_forum_id'] : bbp_get_topic_forum_id( $topic_id );453 $reply_to = ! empty( $_POST['bbp_reply_to'] ) ? (int) $_POST['bbp_reply_to'] : 0;454 455 // Get reply author data456 $anonymous_data = bbp_filter_anonymous_post_data();457 $author_id = bbp_get_reply_author_id( $reply_id );458 $is_edit = ( isset( $_POST['hidden_post_status'] ) && ( $_POST['hidden_post_status'] !== 'draft' ) );459 460 // Formally update the reply461 bbp_update_reply( $reply_id, $topic_id, $forum_id, $anonymous_data, $author_id, $is_edit, $reply_to );462 463 // Allow other fun things to happen464 do_action( 'bbp_reply_attributes_metabox_save', $reply_id, $topic_id, $forum_id, $reply_to );465 do_action( 'bbp_author_metabox_save', $reply_id, $anonymous_data );466 467 return $reply_id;468 }469 470 /**471 357 * Add the author info metabox 472 358 * … … 484 370 */ 485 371 public function author_metabox() { 486 487 if ( $this->bail() ) {488 return;489 }490 372 491 373 // Bail if post_type is not a reply … … 508 390 509 391 /** 392 * Remove comments & discussion metaboxes if comments are not supported 393 * 394 * @since 2.6.0 bbPress 395 */ 396 public function comments_metabox() { 397 if ( ! post_type_supports( $this->post_type, 'comments' ) ) { 398 remove_meta_box( 'commentstatusdiv', $this->post_type, 'normal' ); 399 remove_meta_box( 'commentsdiv', $this->post_type, 'normal' ); 400 } 401 } 402 403 /** 404 * Pass the reply attributes for processing 405 * 406 * @since 2.0.0 bbPress (r2746) 407 * 408 * @param int $reply_id Reply id 409 * @uses current_user_can() To check if the current user is capable of 410 * editing the reply 411 * @uses do_action() Calls 'bbp_reply_attributes_metabox_save' with the 412 * reply id and parent id 413 * @return int Parent id 414 */ 415 public function save_meta_boxes( $reply_id ) { 416 417 // Bail if doing an autosave 418 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { 419 return $reply_id; 420 } 421 422 // Bail if not a post request 423 if ( ! bbp_is_post_request() ) { 424 return $reply_id; 425 } 426 427 // Check action exists 428 if ( empty( $_POST['action'] ) ) { 429 return $reply_id; 430 } 431 432 // Nonce check 433 if ( empty( $_POST['bbp_reply_metabox'] ) || ! wp_verify_nonce( $_POST['bbp_reply_metabox'], 'bbp_reply_metabox_save' ) ) { 434 return $reply_id; 435 } 436 437 // Current user cannot edit this reply 438 if ( !current_user_can( 'edit_reply', $reply_id ) ) { 439 return $reply_id; 440 } 441 442 // Get the reply meta post values 443 $topic_id = ! empty( $_POST['parent_id'] ) ? (int) $_POST['parent_id'] : 0; 444 $forum_id = ! empty( $_POST['bbp_forum_id'] ) ? (int) $_POST['bbp_forum_id'] : bbp_get_topic_forum_id( $topic_id ); 445 $reply_to = ! empty( $_POST['bbp_reply_to'] ) ? (int) $_POST['bbp_reply_to'] : 0; 446 447 // Get reply author data 448 $anonymous_data = bbp_filter_anonymous_post_data(); 449 $author_id = bbp_get_reply_author_id( $reply_id ); 450 $is_edit = ( isset( $_POST['hidden_post_status'] ) && ( $_POST['hidden_post_status'] !== 'draft' ) ); 451 452 // Formally update the reply 453 bbp_update_reply( $reply_id, $topic_id, $forum_id, $anonymous_data, $author_id, $is_edit, $reply_to ); 454 455 // Allow other fun things to happen 456 do_action( 'bbp_reply_attributes_metabox_save', $reply_id, $topic_id, $forum_id, $reply_to ); 457 do_action( 'bbp_author_metabox_save', $reply_id, $anonymous_data ); 458 459 return $reply_id; 460 } 461 462 /** 510 463 * Add some general styling to the admin area 511 464 * … … 519 472 */ 520 473 public function admin_head() { 521 522 if ( $this->bail() ) { 523 return; 524 } ?> 474 ?> 525 475 526 476 <style type="text/css" media="screen"> … … 603 553 public function toggle_reply() { 604 554 605 if ( $this->bail() ) {606 return;607 }608 609 555 // Only proceed if GET is a reply toggle action 610 556 if ( bbp_is_get_request() && ! empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_toggle_reply_spam', 'bbp_toggle_reply_approve' ) ) && ! empty( $_GET['reply_id'] ) ) { … … 676 622 public function toggle_reply_notice() { 677 623 678 if ( $this->bail() ) {679 return;680 }681 682 624 // Only proceed if GET is a reply toggle action 683 625 if ( bbp_is_get_request() && ! empty( $_GET['bbp_reply_toggle_notice'] ) && in_array( $_GET['bbp_reply_toggle_notice'], array( 'spammed', 'unspammed', 'approved', 'unapproved' ) ) && ! empty( $_GET['reply_id'] ) ) { … … 749 691 */ 750 692 public function column_headers( $columns ) { 751 752 if ( $this->bail() ) {753 return $columns;754 }755 756 693 $columns = array( 757 694 'cb' => '<input type="checkbox" />', … … 795 732 public function column_data( $column, $reply_id ) { 796 733 797 if ( $this->bail() ) {798 return;799 }800 801 734 // Get topic ID 802 735 $topic_id = bbp_get_reply_topic_id( $reply_id ); … … 909 842 public function row_actions( $actions, $reply ) { 910 843 911 if ( $this->bail() ) {912 return $actions;913 }914 915 844 unset( $actions['inline hide-if-no-js'] ); 916 845 … … 975 904 */ 976 905 public function filter_dropdown() { 977 978 if ( $this->bail() ) {979 return;980 }981 906 982 907 // Add "Empty Spam" button for moderators … … 1016 941 public function filter_post_rows( $query_vars ) { 1017 942 1018 if ( $this->bail() ) {1019 return $query_vars;1020 }1021 1022 943 // Add post_parent query_var if one is present 1023 944 if ( ! empty( $_GET['bbp_forum_id'] ) ) { … … 1048 969 public function updated_messages( $messages ) { 1049 970 global $post_ID; 1050 1051 if ( $this->bail() ) {1052 return $messages;1053 }1054 971 1055 972 // URL for the current topic … … 1141 1058 * @uses BBP_Replies_Admin 1142 1059 */ 1143 function bbp_admin_replies() { 1060 function bbp_admin_replies( $current_screen ) { 1061 1062 // Bail if not a forum screen 1063 if ( empty( $current_screen->post_type ) || ( bbp_get_reply_post_type() !== $current_screen->post_type ) ) { 1064 return; 1065 } 1066 1067 // Init the replies admin 1144 1068 bbpress()->admin->replies = new BBP_Replies_Admin(); 1145 1069 } -
trunk/src/includes/admin/topics.php
r6178 r6186 28 28 private $post_type = ''; 29 29 30 /**31 * @var WP_Screen The current screen object32 */33 private $screen;34 35 30 /** Functions *************************************************************/ 36 31 … … 89 84 add_action( 'add_meta_boxes', array( $this, 'author_metabox' ) ); 90 85 add_action( 'add_meta_boxes', array( $this, 'replies_metabox' ) ); 86 add_action( 'add_meta_boxes', array( $this, 'comments_metabox' ) ); 91 87 add_action( 'save_post', array( $this, 'save_meta_boxes' ) ); 92 88 … … 106 102 107 103 /** 108 * Should we bail out of this method?109 *110 * @since 2.1.0 bbPress (r4067)111 *112 * @return boolean113 */114 private function bail() {115 116 // Not for a post type117 if ( empty( $this->screen->post_type ) ) {118 return true;119 }120 121 // Not this post type122 if ( $this->post_type != $this->screen->post_type ) {123 return true;124 }125 126 return false;127 }128 129 /**130 104 * Admin globals 131 105 * … … 135 109 */ 136 110 private function setup_globals() { 137 $this->post_type = bbp_get_forum_post_type(); 138 $this->screen = get_current_screen(); 111 $this->post_type = bbp_get_topic_post_type(); 139 112 } 140 113 … … 150 123 public function edit_help() { 151 124 152 if ( $this->bail() ) {153 return;154 }155 156 125 // Overview 157 $this->screen->add_help_tab( array(126 get_current_screen()->add_help_tab( array( 158 127 'id' => 'overview', 159 128 'title' => __( 'Overview', 'bbpress' ), … … 163 132 164 133 // Screen Content 165 $this->screen->add_help_tab( array(134 get_current_screen()->add_help_tab( array( 166 135 'id' => 'screen-content', 167 136 'title' => __( 'Screen Content', 'bbpress' ), … … 177 146 178 147 // Available Actions 179 $this->screen->add_help_tab( array(148 get_current_screen()->add_help_tab( array( 180 149 'id' => 'action-links', 181 150 'title' => __( 'Available Actions', 'bbpress' ), … … 195 164 196 165 // Bulk Actions 197 $this->screen->add_help_tab( array(166 get_current_screen()->add_help_tab( array( 198 167 'id' => 'bulk-actions', 199 168 'title' => __( 'Bulk Actions', 'bbpress' ), … … 204 173 205 174 // Help Sidebar 206 $this->screen->set_help_sidebar(175 get_current_screen()->set_help_sidebar( 207 176 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 208 177 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 216 185 * @since 2.0.0 bbPress (r3119) 217 186 * 218 * @uses $this->screen187 * @uses get_current_screen() 219 188 */ 220 189 public function new_help() { 221 190 222 if ( $this->bail() ) {223 return;224 }225 226 191 $customize_display = '<p>' . __( 'The title field and the big topic editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.', 'bbpress' ) . '</p>'; 227 192 228 $this->screen->add_help_tab( array(193 get_current_screen()->add_help_tab( array( 229 194 'id' => 'customize-display', 230 195 'title' => __( 'Customizing This Display', 'bbpress' ), … … 232 197 ) ); 233 198 234 $this->screen->add_help_tab( array(199 get_current_screen()->add_help_tab( array( 235 200 'id' => 'title-topic-editor', 236 201 'title' => __( 'Title and Topic Editor', 'bbpress' ), … … 246 211 } 247 212 248 $this->screen->add_help_tab( array(213 get_current_screen()->add_help_tab( array( 249 214 'id' => 'topic-attributes', 250 215 'title' => __( 'Topic Attributes', 'bbpress' ), … … 257 222 ) ); 258 223 259 $this->screen->add_help_tab( array(224 get_current_screen()->add_help_tab( array( 260 225 'id' => 'publish-box', 261 226 'title' => __( 'Publish Box', 'bbpress' ), … … 263 228 ) ); 264 229 265 $this->screen->set_help_sidebar(230 get_current_screen()->set_help_sidebar( 266 231 '<p><strong>' . __( 'For more information:', 'bbpress' ) . '</strong></p>' . 267 232 '<p>' . __( '<a href="https://codex.bbpress.org" target="_blank">bbPress Documentation</a>', 'bbpress' ) . '</p>' . … … 279 244 */ 280 245 public function bulk_actions( $actions ) { 281 282 if ( $this->bail() ) {283 return $actions;284 }285 246 286 247 if ( current_user_can( 'moderate' ) ) { … … 305 266 public function bulk_post_updated_messages( $bulk_messages, $bulk_counts ) { 306 267 307 if ( $this->bail() ) {308 return $bulk_messages;309 }310 311 268 $bulk_messages['topic']['updated'] = _n( '%s topic updated.', '%s topics updated.', $bulk_counts['updated'], 'bbpress' ); 312 269 $bulk_messages['topic']['locked'] = ( 1 === $bulk_counts['locked'] ) ? __( '1 topic not updated, somebody is editing it.', 'bbpress' ) : … … 327 284 public function handle_bulk_actions( $sendback, $doaction, $post_ids ) { 328 285 329 if ( $this->bail() ) {330 return $sendback;331 }332 333 286 $sendback = remove_query_arg( array( 'spam', 'unspam' ), $sendback ); 334 287 $updated = $locked = 0; … … 379 332 return $sendback; 380 333 } 334 381 335 /** 382 336 * Add the topic attributes metabox … … 389 343 */ 390 344 public function attributes_metabox() { 391 392 if ( $this->bail() ) {393 return;394 }395 345 396 346 add_meta_box( … … 407 357 408 358 /** 409 * Pass the topic attributes for processing410 *411 * @since 2.0.0 bbPress (r2746)412 *413 * @param int $topic_id Topic id414 * @uses current_user_can() To check if the current user is capable of415 * editing the topic416 * @uses do_action() Calls 'bbp_topic_attributes_metabox_save' with the417 * topic id and parent id418 * @return int Parent id419 */420 public function save_meta_boxes( $topic_id ) {421 422 if ( $this->bail() ) {423 return $topic_id;424 }425 426 // Bail if doing an autosave427 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {428 return $topic_id;429 }430 431 // Bail if not a post request432 if ( ! bbp_is_post_request() ) {433 return $topic_id;434 }435 436 // Nonce check437 if ( empty( $_POST['bbp_topic_metabox'] ) || ! wp_verify_nonce( $_POST['bbp_topic_metabox'], 'bbp_topic_metabox_save' ) ) {438 return $topic_id;439 }440 441 // Bail if current user cannot edit this topic442 if ( !current_user_can( 'edit_topic', $topic_id ) ) {443 return $topic_id;444 }445 446 // Get the forum ID447 $forum_id = ! empty( $_POST['parent_id'] ) ? (int) $_POST['parent_id'] : 0;448 449 // Get topic author data450 $anonymous_data = bbp_filter_anonymous_post_data();451 $author_id = bbp_get_topic_author_id( $topic_id );452 $is_edit = ( isset( $_POST['hidden_post_status'] ) && ( $_POST['hidden_post_status'] !== 'draft' ) );453 454 // Formally update the topic455 bbp_update_topic( $topic_id, $forum_id, $anonymous_data, $author_id, $is_edit );456 457 // Allow other fun things to happen458 do_action( 'bbp_topic_attributes_metabox_save', $topic_id, $forum_id );459 do_action( 'bbp_author_metabox_save', $topic_id, $anonymous_data );460 461 return $topic_id;462 }463 464 /**465 359 * Add the author info metabox 466 360 * … … 476 370 */ 477 371 public function author_metabox() { 478 479 if ( $this->bail() ) {480 return;481 }482 372 483 373 // Bail if post_type is not a topic … … 517 407 public function replies_metabox() { 518 408 519 if ( $this->bail() ) {520 return;521 }522 523 409 // Bail if post_type is not a reply 524 410 if ( empty( $_GET['action'] ) || ( 'edit' !== $_GET['action'] ) ) { … … 540 426 541 427 /** 428 * Remove comments & discussion metaboxes if comments are not supported 429 * 430 * @since 2.6.0 bbPress 431 */ 432 public function comments_metabox() { 433 if ( ! post_type_supports( $this->post_type, 'comments' ) ) { 434 remove_meta_box( 'commentstatusdiv', $this->post_type, 'normal' ); 435 remove_meta_box( 'commentsdiv', $this->post_type, 'normal' ); 436 } 437 } 438 439 /** 440 * Pass the topic attributes for processing 441 * 442 * @since 2.0.0 bbPress (r2746) 443 * 444 * @param int $topic_id Topic id 445 * @uses current_user_can() To check if the current user is capable of 446 * editing the topic 447 * @uses do_action() Calls 'bbp_topic_attributes_metabox_save' with the 448 * topic id and parent id 449 * @return int Parent id 450 */ 451 public function save_meta_boxes( $topic_id ) { 452 453 // Bail if doing an autosave 454 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { 455 return $topic_id; 456 } 457 458 // Bail if not a post request 459 if ( ! bbp_is_post_request() ) { 460 return $topic_id; 461 } 462 463 // Nonce check 464 if ( empty( $_POST['bbp_topic_metabox'] ) || ! wp_verify_nonce( $_POST['bbp_topic_metabox'], 'bbp_topic_metabox_save' ) ) { 465 return $topic_id; 466 } 467 468 // Bail if current user cannot edit this topic 469 if ( !current_user_can( 'edit_topic', $topic_id ) ) { 470 return $topic_id; 471 } 472 473 // Get the forum ID 474 $forum_id = ! empty( $_POST['parent_id'] ) ? (int) $_POST['parent_id'] : 0; 475 476 // Get topic author data 477 $anonymous_data = bbp_filter_anonymous_post_data(); 478 $author_id = bbp_get_topic_author_id( $topic_id ); 479 $is_edit = ( isset( $_POST['hidden_post_status'] ) && ( $_POST['hidden_post_status'] !== 'draft' ) ); 480 481 // Formally update the topic 482 bbp_update_topic( $topic_id, $forum_id, $anonymous_data, $author_id, $is_edit ); 483 484 // Allow other fun things to happen 485 do_action( 'bbp_topic_attributes_metabox_save', $topic_id, $forum_id ); 486 do_action( 'bbp_author_metabox_save', $topic_id, $anonymous_data ); 487 488 return $topic_id; 489 } 490 491 /** 542 492 * Add some general styling to the admin area 543 493 * … … 551 501 */ 552 502 public function admin_head() { 553 554 if ( $this->bail() ) { 555 return; 556 } ?> 503 ?> 557 504 558 505 <style type="text/css" media="screen"> … … 654 601 public function toggle_topic() { 655 602 656 if ( $this->bail() ) {657 return;658 }659 660 603 // Only proceed if GET is a topic toggle action 661 604 if ( bbp_is_get_request() && ! empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_toggle_topic_close', 'bbp_toggle_topic_stick', 'bbp_toggle_topic_spam', 'bbp_toggle_topic_approve' ) ) && ! empty( $_GET['topic_id'] ) ) { … … 767 710 public function toggle_topic_notice() { 768 711 769 if ( $this->bail() ) {770 return;771 }772 773 712 // Only proceed if GET is a topic toggle action 774 713 if ( bbp_is_get_request() && ! empty( $_GET['bbp_topic_toggle_notice'] ) && in_array( $_GET['bbp_topic_toggle_notice'], array( 'opened', 'closed', 'super_sticky', 'stuck', 'unstuck', 'spammed', 'unspammed', 'approved', 'unapproved' ) ) && ! empty( $_GET['topic_id'] ) ) { … … 870 809 */ 871 810 public function column_headers( $columns ) { 872 873 if ( $this->bail() ) {874 return $columns;875 }876 877 811 $columns = array( 878 812 'cb' => '<input type="checkbox" />', … … 915 849 public function column_data( $column, $topic_id ) { 916 850 917 if ( $this->bail() ) {918 return;919 }920 921 851 // Get topic forum ID 922 852 $forum_id = bbp_get_topic_forum_id( $topic_id ); … … 1017 947 public function row_actions( $actions, $topic ) { 1018 948 1019 if ( $this->bail() ) {1020 return $actions;1021 }1022 1023 949 unset( $actions['inline hide-if-no-js'] ); 1024 950 … … 1104 1030 public function filter_dropdown() { 1105 1031 1106 if ( $this->bail() ) {1107 return;1108 }1109 1110 1032 // Add "Empty Spam" button for moderators 1111 1033 if ( ! empty( $_GET['post_status'] ) && ( bbp_get_spam_status_id() === $_GET['post_status'] ) && current_user_can( 'moderate' ) ) { … … 1144 1066 function filter_post_rows( $query_vars ) { 1145 1067 1146 if ( $this->bail() ) {1147 return $query_vars;1148 }1149 1150 1068 // Add post_parent query_var if one is present 1151 1069 if ( ! empty( $_GET['bbp_forum_id'] ) ) { … … 1176 1094 public function updated_messages( $messages ) { 1177 1095 global $post_ID; 1178 1179 if ( $this->bail() ) {1180 return $messages;1181 }1182 1096 1183 1097 // URL for the current topic … … 1269 1183 * @uses BBP_Forums_Admin 1270 1184 */ 1271 function bbp_admin_topics() { 1185 function bbp_admin_topics( $current_screen ) { 1186 1187 // Bail if not a forum screen 1188 if ( empty( $current_screen->post_type ) || ( bbp_get_topic_post_type() !== $current_screen->post_type ) ) { 1189 return; 1190 } 1191 1192 // Init the topics admin 1272 1193 bbpress()->admin->topics = new BBP_Topics_Admin(); 1273 1194 }
Note: See TracChangeset
for help on using the changeset viewer.