Changeset 4266
- Timestamp:
- 10/26/2012 06:19:01 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/extend/buddypress.php
r4249 r4266 174 174 add_action( 'wp_insert_post', array( $this, 'topic_update' ), 10, 2 ); 175 175 add_action( 'wp_insert_post', array( $this, 'reply_update' ), 10, 2 ); 176 176 177 177 // Hook into topic and reply deletion 178 178 add_action( 'bbp_delete_topic', array( $this, 'topic_delete' ), 10, 1 ); … … 227 227 add_filter( 'bbp_get_subscriptions_permalink', array( $this, 'get_subscriptions_permalink' ), 10, 2 ); 228 228 229 /** Links and pagination **********************************************/ 230 229 231 // Map forum/topic/replys permalinks to their groups 230 232 add_filter( 'bbp_get_forum_permalink', array( $this, 'map_forum_permalink_to_group' ), 10, 2 ); … … 232 234 add_filter( 'bbp_get_reply_permalink', array( $this, 'map_reply_permalink_to_group' ), 10, 2 ); 233 235 236 // Map reply edit links to their groups 237 add_filter( 'bbp_get_reply_edit_url', array( $this, 'map_reply_edit_url_to_group' ), 10, 2 ); 238 239 // Map assorted template function permalinks 240 add_filter( 'post_link', array( $this, 'post_link' ), 10, 2 ); 241 add_filter( 'page_link', array( $this, 'page_link' ), 10, 2 ); 242 add_filter( 'post_type_link', array( $this, 'post_type_link' ), 10, 2 ); 243 234 244 // Canonical redirects for normal URLs 235 245 add_action( 'template_redirect', array( $this, 'redirect_canonical' ) ); 246 247 // Group forum pagination 248 add_filter( 'bbp_topic_pagination', array( $this, 'topic_pagination' ) ); 249 add_filter( 'bbp_replies_pagination', array( $this, 'replies_pagination' ) ); 236 250 237 251 /** Mentions **********************************************************/ … … 383 397 // Bail if no activity ID is in post meta 384 398 if ( empty( $activity_id ) ) 385 return false;399 return null; 386 400 387 401 // Get the activity stream item, bail if it doesn't exist 388 402 $existing = bp_activity_get_specific( array( 'activity_ids' => $activity_id, 'show_hidden' => true, 'spam' => 'all', ) ); 389 403 if ( empty( $existing['total'] ) || ( 1 != $existing['total'] ) ) 390 return false;404 return null; 391 405 392 406 // Return the activity ID since we've verified the connection … … 607 621 // Compile the activity stream results 608 622 $activity = array( 623 'id' => $this->get_activity_id( $topic_id ), 609 624 'user_id' => $user_id, 610 625 'action' => $activity_action, … … 617 632 ); 618 633 619 // Check for existing activity entry ID620 $activity_id = $this->get_activity_id( $topic_id );621 if ( ! empty( $activity_id ) )622 $activity['id'] = $activity_id;623 624 634 // Record the activity 625 635 $activity_id = $this->record_activity( $activity ); … … 640 650 641 651 // Get activity ID, bail if it doesn't exist 642 $activity_id = $this->get_activity_id( $topic_id ); 643 if ( empty( $activity_id ) ) 644 return false; 645 646 return bp_activity_delete( array( 'id' => $activity_id ) ); 652 if ( $activity_id = $this->get_activity_id( $topic_id ) ) 653 return bp_activity_delete( array( 'id' => $activity_id ) ); 654 655 return false; 647 656 } 648 657 … … 680 689 681 690 // Validate topic data 682 $forum_id = bbp_get_topic_forum_id( $topic_id );691 $forum_id = bbp_get_topic_forum_id( $topic_id ); 683 692 $topic_author_id = bbp_get_topic_author_id( $topic_id ); 684 693 … … 765 774 // Compile the activity stream results 766 775 $activity = array( 776 'id' => $this->get_activity_id( $reply_id ), 767 777 'user_id' => $user_id, 768 778 'action' => $activity_action, … … 772 782 'item_id' => $reply_id, 773 783 'secondary_item_id' => $topic_id, 774 784 'recorded_time' => get_post_time( 'Y-m-d H:i:s', true, $reply_id ), 775 785 ); 776 777 // Check for existing activity entry ID778 $activity_id = $this->get_activity_id( $reply_id );779 if ( ! empty( $activity_id ) )780 $activity['id'] = $activity_id;781 786 782 787 // Record the activity … … 799 804 800 805 // Get activity ID, bail if it doesn't exist 801 $activity_id = $this->get_activity_id( $reply_id ); 802 if ( empty( $activity_id ) ) 803 return false; 804 805 return bp_activity_delete( array( 'id' => $activity_id ) ); 806 } 807 808 /** 809 * Update the activity stream entry when a reply status changes 806 if ( $activity_id = $this->get_activity_id( $reply_id ) ) 807 return bp_activity_delete( array( 'id' => $activity_id ) ); 808 809 return false; 810 } 811 812 /** 813 * Update the activity stream entry when a reply status changes 810 814 * 811 815 * @param int $post_id … … 840 844 841 845 // Validate reply data 842 $topic_id = bbp_get_reply_topic_id( $reply_id );843 $forum_id = bbp_get_reply_forum_id( $reply_id );846 $topic_id = bbp_get_reply_topic_id( $reply_id ); 847 $forum_id = bbp_get_reply_forum_id( $reply_id ); 844 848 $reply_author_id = bbp_get_reply_author_id( $reply_id ); 845 849 … … 850 854 } 851 855 852 /** 853 * Map a forum permalink to the corresponding group 856 /** Permalink Mappers *****************************************************/ 857 858 /** 859 * Maybe map a bbPress forum/topic/reply permalink to the corresponding group 860 * 861 * @param int $post_id 862 * @uses get_post() 863 * @uses bbp_is_reply() 864 * @uses bbp_get_reply_topic_id() 865 * @uses bbp_get_reply_forum_id() 866 * @uses bbp_is_topic() 867 * @uses bbp_get_topic_forum_id() 868 * @uses bbp_is_forum() 869 * @uses get_post_field() 870 * @uses bbp_get_forum_group_ids() 871 * @uses groups_get_group() 872 * @uses bp_get_group_admin_permalink() 873 * @uses bp_get_group_permalink() 874 * @return Bail early if not a group forum post 875 * @return string 876 */ 877 private function maybe_map_permalink_to_group( $post_id = 0, $url = false ) { 878 879 switch ( get_post_type( $post_id ) ) { 880 881 // Reply 882 case bbp_get_reply_post_type() : 883 $topic_id = bbp_get_reply_topic_id( $post_id ); 884 $forum_id = bbp_get_reply_forum_id( $post_id ); 885 $url_end = trailingslashit( $this->reply_slug ) . get_post_field( 'post_name', $post_id ); 886 break; 887 888 // Topic 889 case bbp_get_topic_post_type() : 890 $topic_id = $post_id; 891 $forum_id = bbp_get_topic_forum_id( $post_id ); 892 $url_end = trailingslashit( $this->topic_slug ) . get_post_field( 'post_name', $post_id ); 893 break; 894 895 // Forum 896 case bbp_get_forum_post_type() : 897 $forum_id = $post_id; 898 $url_end = get_post_field( 'post_name', $post_id ); 899 break; 900 901 // Unknown 902 default : 903 return $url; 904 break; 905 } 906 907 // Get group ID's for this forum 908 $group_ids = bbp_get_forum_group_ids( $forum_id ); 909 910 // Bail if the post isn't associated with a group 911 if ( empty( $group_ids ) ) 912 return $url; 913 914 // @todo Multiple group forums/forum groups 915 $group_id = $group_ids[0]; 916 $group = groups_get_group( array( 'group_id' => $group_id ) ); 917 918 if ( bp_is_group_admin_screen( $this->forums_slug ) ) { 919 $group_permalink = trailingslashit( bp_get_group_admin_permalink( $group ) ); 920 } else { 921 $group_permalink = trailingslashit( bp_get_group_permalink( $group ) ); 922 } 923 924 return trailingslashit( trailingslashit( $group_permalink . $this->forums_slug ) . $url_end ); 925 } 926 927 /** 928 * Map a forum permalink to its corresponding group 854 929 * 855 930 * @since bbPress (r3802) 856 931 * @param string $url 857 932 * @param int $forum_id 933 * @uses maybe_map_permalink_to_group() 858 934 * @return string 859 935 */ 860 936 public function map_forum_permalink_to_group( $url, $forum_id ) { 861 $slug = get_post_field( 'post_name', $forum_id ); 862 $group_ids = bbp_get_forum_group_ids( $forum_id ); 863 864 // If the topic is not associated with a group, don't mess with it 865 if ( !empty( $group_ids ) ) { 866 867 // @todo Multiple group forums/forum groups 868 $group_id = $group_ids[0]; 869 $group = groups_get_group( array( 'group_id' => $group_id ) ); 870 871 if ( bp_is_group_admin_screen( $this->forums_slug ) ) { 872 $group_permalink = bp_get_group_admin_permalink( $group ); 873 } else { 874 $group_permalink = bp_get_group_permalink( $group ); 875 } 876 877 $url = trailingslashit( $group_permalink . $this->forums_slug . '/' . $slug ); 878 } 879 880 return $url; 881 } 882 883 /** 884 * Map a topic permalink to the current group forum 937 return $this->maybe_map_permalink_to_group( $forum_id, $url ); 938 } 939 940 /** 941 * Map a topic permalink to its group forum 885 942 * 886 943 * @since bbPress (r3802) 887 944 * @param string $url 888 945 * @param int $topic_id 946 * @uses maybe_map_permalink_to_group() 889 947 * @return string 890 948 */ 891 949 public function map_topic_permalink_to_group( $url, $topic_id ) { 892 $slug = get_post_field( 'post_name', $topic_id ); 893 $forum_id = bbp_get_topic_forum_id( $topic_id ); 894 $group_ids = bbp_get_forum_group_ids( $forum_id ); 895 896 // If the topic is not associated with a group, don't mess with it 897 if ( !empty( $group_ids ) ) { 898 899 // @todo Multiple group forums/forum groups 900 $group_id = $group_ids[0]; 901 $group = groups_get_group( array( 'group_id' => $group_id ) ); 902 903 if ( bp_is_group_admin_screen( $this->forums_slug ) ) { 904 $group_permalink = bp_get_group_admin_permalink( $group ); 905 } else { 906 $group_permalink = bp_get_group_permalink( $group ); 907 } 908 909 $url = trailingslashit( $group_permalink . $this->forums_slug . '/' . $this->topic_slug . '/' . $slug ); 910 } 911 912 return $url; 913 } 914 915 /** 916 * Map a topic permalink to the current group forum 950 return $this->maybe_map_permalink_to_group( $topic_id, $url ); 951 } 952 953 /** 954 * Map a reply permalink to its group forum 917 955 * 918 956 * @since bbPress (r3802) 919 957 * @param string $url 920 958 * @param int $reply_id 959 * @uses maybe_map_permalink_to_group() 921 960 * @return string 922 961 */ 923 962 public function map_reply_permalink_to_group( $url, $reply_id ) { 924 $slug = get_post_field( 'post_name', $reply_id ); 925 $forum_id = bbp_get_reply_forum_id( $reply_id ); 926 $group_ids = bbp_get_forum_group_ids( $forum_id ); 927 928 // If the topic is not associated with a group, don't mess with it 929 if ( !empty( $group_ids ) ) { 930 931 // @todo Multiple group forums/forum groups 932 $group_id = $group_ids[0]; 933 $group = groups_get_group( array( 'group_id' => $group_id ) ); 934 935 if ( bp_is_group_admin_screen( $this->forums_slug ) ) { 936 $group_permalink = bp_get_group_admin_permalink( $group ); 937 } else { 938 $group_permalink = bp_get_group_permalink( $group ); 939 } 940 941 $url = trailingslashit( $group_permalink . $this->forums_slug . '/' . $this->topic_slug . '/' . $slug ); 942 } 943 944 return $url; 963 return $this->maybe_map_permalink_to_group( bbp_get_reply_topic_id( $reply_id ), $url ); 964 } 965 966 /** 967 * Map a reply edit link to its group forum 968 * 969 * @param string $url 970 * @param int $reply_id 971 * @uses maybe_map_permalink_to_group() 972 * @return string 973 */ 974 public function map_reply_edit_url_to_group( $url, $reply_id ) { 975 $new = $this->maybe_map_permalink_to_group( $reply_id ); 976 977 if ( empty( $new ) ) 978 return $url; 979 980 return trailingslashit( $new ) . bbpress()->edit_id . '/'; 981 } 982 983 /** 984 * Map a post link to its group forum 985 * 986 * @param string $url 987 * @param obj $post 988 * @param boolean $leavename 989 * @uses maybe_map_permalink_to_group() 990 * @return string 991 */ 992 public function post_link( $url, $post ) { 993 return $this->maybe_map_permalink_to_group( $post->ID, $url ); 994 } 995 996 /** 997 * Map a page link to its group forum 998 * 999 * @param string $url 1000 * @param int $post_id 1001 * @param $sample 1002 * @uses maybe_map_permalink_to_group() 1003 * @return string 1004 */ 1005 public function page_link( $url, $post_id ) { 1006 return $this->maybe_map_permalink_to_group( $post_id, $url ); 1007 } 1008 1009 /** 1010 * Map a custom post type link to its group forum 1011 * 1012 * @param string $url 1013 * @param obj $post 1014 * @param $leavename 1015 * @param $sample 1016 * @uses maybe_map_permalink_to_group() 1017 * @return string 1018 */ 1019 public function post_type_link( $url, $post ) { 1020 return $this->maybe_map_permalink_to_group( $post->ID, $url ); 1021 } 1022 1023 /** 1024 * Fix pagination of topics on forum view 1025 * 1026 * @param array $args 1027 * @global $wp_rewrite 1028 * @uses bbp_get_forum_id() 1029 * @uses maybe_map_permalink_to_group 1030 * @return array 1031 */ 1032 public function topic_pagination( $args ) { 1033 $new = $this->maybe_map_permalink_to_group( bbp_get_forum_id() ); 1034 1035 if ( empty( $new ) ) 1036 return $args; 1037 1038 global $wp_rewrite; 1039 1040 $args['base'] = trailingslashit( $new ) . $wp_rewrite->pagination_base . '/%#%/'; 1041 1042 return $args; 1043 } 1044 1045 /** 1046 * Fix pagination of replies on topic view 1047 * 1048 * @param array $args 1049 * @global $wp_rewrite 1050 * @uses bbp_get_topic_id() 1051 * @uses maybe_map_permalink_to_group 1052 * @return array 1053 */ 1054 public function replies_pagination( $args ) { 1055 $new = $this->maybe_map_permalink_to_group( bbp_get_topic_id() ); 1056 if ( empty( $new ) ) 1057 return $args; 1058 1059 global $wp_rewrite; 1060 1061 $args['base'] = trailingslashit( $new ) . $wp_rewrite->pagination_base . '/%#%/'; 1062 1063 return $args; 945 1064 } 946 1065 … … 953 1072 function redirect_canonical() { 954 1073 1074 // Viewing a single forum 955 1075 if ( bbp_is_single_forum() ) { 956 1076 $forum_id = get_the_ID(); 957 1077 $group_ids = bbp_get_forum_group_ids( $forum_id ); 1078 1079 // Viewing a single topic 958 1080 } elseif ( bbp_is_single_topic() ) { 959 1081 $topic_id = get_the_ID(); … … 961 1083 $forum_id = bbp_get_topic_forum_id( $topic_id ); 962 1084 $group_ids = bbp_get_forum_group_ids( $forum_id ); 1085 1086 // Not a forum or topic 1087 } else { 1088 return; 963 1089 } 964 1090 965 if ( !empty( $group_ids ) ) { 966 // @todo Multiple group forums/forum groups 967 $group_id = $group_ids[0]; 968 $group = groups_get_group( array( 'group_id' => $group_id ) ); 969 $group_permalink = bp_get_group_permalink( $group ); 970 $redirect_to = trailingslashit( $group_permalink . $this->forums_slug ); 971 972 if ( !empty( $slug ) ) { 973 $redirect_to = trailingslashit( $redirect_to . $this->topic_slug . '/' . $slug ); 974 } 975 976 bp_core_redirect( $redirect_to ); 1091 // Bail if not a group forum 1092 if ( empty( $group_ids ) ) 1093 return; 1094 1095 // Use the first group ID 1096 $group_id = $group_ids[0]; 1097 $group = groups_get_group( array( 'group_id' => $group_id ) ); 1098 $group_link = trailingslashit( bp_get_group_permalink( $group ) ); 1099 $redirect_to = trailingslashit( $group_link . $this->forums_slug ); 1100 1101 // Add topic slug to URL 1102 if ( bbp_is_single_topic() ) { 1103 $redirect_to = trailingslashit( $redirect_to . $this->topic_slug . '/' . $slug ); 977 1104 } 1105 1106 bp_core_redirect( $redirect_to ); 978 1107 } 979 1108 } … … 1302 1431 public function edit_screen() { 1303 1432 1304 // Add group admin actions to forum row actions 1305 add_action( 'bbp_forum_row_actions', array( $this, 'forum_row_actions' ) ); 1306 add_action( 'bbp_topic_row_actions', array( $this, 'topic_row_actions' ) ); 1307 1308 // Prevent Topic Parent from appearing 1309 add_action( 'bbp_theme_before_topic_form_forum', array( $this, 'ob_start' ) ); 1310 add_action( 'bbp_theme_after_topic_form_forum', array( $this, 'ob_end_clean' ) ); 1311 add_action( 'bbp_theme_after_topic_form_forum', array( $this, 'topic_parent' ) ); 1312 1313 // Prevent Forum Parent from appearing 1314 add_action( 'bbp_theme_before_forum_form_parent', array( $this, 'ob_start' ) ); 1315 add_action( 'bbp_theme_after_forum_form_parent', array( $this, 'ob_end_clean' ) ); 1316 add_action( 'bbp_theme_after_forum_form_parent', array( $this, 'forum_parent' ) ); 1317 1318 // Do not show the new topic form in the moderation area 1319 add_filter( 'bbp_current_user_can_access_create_topic_form', '__return_false' ); 1320 1321 // Hide breadcrumb 1322 add_filter( 'bbp_no_breadcrumb', '__return_true' ); 1323 1324 $this->display_forums( 1 ); 1433 $checked = bp_get_new_group_enable_forum() || groups_get_groupmeta( bp_get_current_group_id(), 'forum_id' ); ?> 1434 1435 <h4><?php _e( 'Enable Group Forum', 'bbpress' ); ?></h4> 1436 1437 <p><?php _e( 'Create a discussion forum to allow members of this group to communicate in a structured, bulletin-board style fashion.', 'bbpress' ); ?></p> 1438 1439 <div class="checkbox"> 1440 <label><input type="checkbox" name="bbp-create-group-forum" id="bbp-create-group-forum" value="1"<?php checked( $checked ); ?> /> <?php _e( 'Yes. I want this group to have a forum.', 'bbpress' ); ?></label> 1441 </div> 1442 1443 <p class="description"><?php _e( 'Saying no will not delete existing forum content.', 'bbpress' ); ?></p> 1444 1445 <input type="submit" value="<?php _e( 'Save Settings', 'bbpress' ); ?>" /> 1446 1447 <?php 1448 1449 // Verify intent 1450 wp_nonce_field( 'groups_edit_save_' . $this->slug ); 1325 1451 } 1326 1452 … … 1342 1468 return; 1343 1469 1344 // Handle the different actions that can happen here 1345 switch ( $_POST['action'] ) { 1346 1347 // New forum 1348 case 'bbp-new-forum' : 1349 1350 // Redirect back here, not to the new forum 1351 add_filter( 'bbp_new_forum_redirect_to', array( $this, 'edit_redirect_to' ) ); 1352 1353 // Add actions to bbp_new_forum 1354 add_action( 'bbp_new_forum', array( $this, 'new_forum' ), 10, 4 ); 1355 1356 // Handle the new forum 1357 bbp_new_forum_handler(); 1358 1359 break; 1360 1361 // Edit existing forum 1362 case 'bbp-edit-forum' : 1363 1364 // Redirect back here, not to the new forum 1365 add_filter( 'bbp_edit_forum_redirect_to', array( $this, 'edit_redirect_to' ) ); 1366 1367 // Handle the forum edit 1368 bbp_edit_forum_handler(); 1369 1370 break; 1371 1372 // Trash a forum 1373 case 'bbp-trash-forum' : 1374 //bbp_trash_forum_handler(); 1375 break; 1376 1377 // Permanently delet a forum 1378 case 'bbp-delete-forum' : 1379 //bbp_delete_forum_handler(); 1380 break; 1381 } 1470 check_admin_referer( 'groups_edit_save_' . $this->slug ); 1471 1472 $edit_forum = !empty( $_POST['bbp-edit-group-forum'] ) ? true : false; 1473 $forum_id = 0; 1474 $forum_ids = bbp_get_group_forum_ids( bp_get_current_group_id() ); 1475 if ( !empty( $forum_ids ) ) 1476 $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids; 1477 1478 // Update forum active 1479 groups_update_groupmeta( bp_get_current_group_id(), '_bbp_forum_enabled_' . $forum_id, $edit_forum ); 1382 1480 } 1383 1481 … … 1397 1495 $checked = bp_get_new_group_enable_forum() || groups_get_groupmeta( bp_get_new_group_id(), 'forum_id' ); ?> 1398 1496 1399 <h4><?php _e( 'Group Forum s', 'bbpress' ); ?></h4>1497 <h4><?php _e( 'Group Forum', 'bbpress' ); ?></h4> 1400 1498 1401 1499 <p><?php _e( 'Create a discussion forum to allow members of this group to communicate in a structured, bulletin-board style fashion.', 'bbpress' ); ?></p> … … 1459 1557 $this->new_forum( array( 'forum_id' => $forum_id ) ); 1460 1558 1559 // Update forum active 1560 groups_update_groupmeta( bp_get_new_group_id(), '_bbp_forum_enabled_' . $forum_id, true ); 1561 1461 1562 break; 1462 1563 case false : … … 1466 1567 wp_delete_post( $forum_id, true ); 1467 1568 groups_delete_groupmeta( bp_get_new_group_id(), 'forum_id' ); 1569 groups_delete_groupmeta( bp_get_new_group_id(), '_bbp_forum_enabled_' . $forum_id ); 1468 1570 } 1469 1571 … … 1548 1650 */ 1549 1651 public function display_forums( $offset = 0 ) { 1550 global $wpdb;1551 1552 1652 $bbp = bbpress(); 1553 1653 1554 1654 // Forum data 1555 1655 $forum_ids = bbp_get_group_forum_ids( bp_get_current_group_id() ); 1556 $forum_args = array( 'post__in' => $forum_ids, 'post_parent' => null ); ?> 1656 $forum_args = array( 'post__in' => $forum_ids, 'post_parent' => null ); 1657 1658 // Unset global queries 1659 $bbp->forum_query = new stdClass; 1660 $bbp->topic_query = new stdClass; 1661 $bbp->reply_query = new stdClass; 1662 1663 // Unset global ID's 1664 $bbp->current_forum_id = 0; 1665 $bbp->current_topic_id = 0; 1666 $bbp->current_reply_id = 0; 1667 $bbp->current_topic_tag_id = 0; 1668 1669 // Reset the post data 1670 wp_reset_postdata(); 1671 1672 // Allow admins special views 1673 $post_status = array( bbp_get_closed_status_id(), bbp_get_public_status_id() ); 1674 if ( is_super_admin() || current_user_can( 'moderate' ) || bp_is_item_admin() || bp_is_item_mod() ) 1675 $post_status = array_merge( $post_status, array( bbp_get_spam_status_id(), bbp_get_trash_status_id() ) ); ?> 1557 1676 1558 1677 <div id="bbpress-forums"> … … 1561 1680 1562 1681 // Looking at the group forum root 1563 if ( ! 1564 1565 // Query forums and show them if 1682 if ( !bp_action_variable( $offset ) ) : 1683 1684 // Query forums and show them if they exist 1566 1685 if ( !empty( $forum_ids ) && bbp_has_forums( $forum_args ) ) : 1567 1686 1568 bbp_the_forum();1569 1570 1687 // Only one forum found 1571 if ( $bbp->forum_query->post_count == 1 ) :?> 1572 1573 <h3><?php _e( 'Forum', 'bbpress' ); ?></h3> 1574 1575 <?php bbp_set_query_name( 'bbp_single_forum' ); ?> 1576 1577 <?php if ( bbp_has_topics( array( 'post_parent' => bbp_get_forum_id() ) ) ) : ?> 1578 1579 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 1580 1581 <?php bbp_get_template_part( 'loop', 'topics' ); ?> 1582 1583 <?php bbp_get_template_part( 'pagination', 'topics' ); ?> 1688 if ( 1 == $bbp->forum_query->post_count ) : 1689 1690 // Get forum data 1691 $forum_slug = bp_action_variable( $offset ); 1692 $forum_args = array( 'name' => $forum_slug, 'post_type' => bbp_get_forum_post_type() ); 1693 $forums = get_posts( $forum_args ); 1694 1695 bbp_the_forum(); 1696 1697 // Forum exists 1698 if ( !empty( $forums ) ) : 1699 $forum = $forums[0]; 1700 1701 // Set up forum data 1702 $forum_id = bbpress()->current_forum_id = $forum->ID; 1703 bbp_set_query_name( 'bbp_single_forum' ); ?> 1704 1705 <h3><?php bbp_forum_title(); ?></h3> 1706 1707 <?php bbp_get_template_part( 'content', 'single-forum' ); ?> 1708 1709 <?php else : ?> 1710 1711 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 1584 1712 1585 1713 <?php bbp_get_template_part( 'form', 'topic' ); ?> 1586 1714 1587 <?php else : ?>1588 1589 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?>1590 1591 <?php bbp_get_template_part( 'form', 'topic' ); ?>1592 1593 1715 <?php endif; 1594 1716 1595 // More than 1 forum found 1596 elseif ( $bbp->forum_query->post_count > 1) : ?>1717 // More than 1 forum found or group forum admin screen 1718 elseif ( 1 < $bbp->forum_query->post_count ) : ?> 1597 1719 1598 1720 <h3><?php _e( 'Forums', 'bbpress' ); ?></h3> … … 1627 1749 </div> 1628 1750 1629 <?php if ( bp_is_group_admin_screen( $this->slug ) ) : 1630 bbp_get_template_part( 'form', 'forum' ); 1631 endif; 1632 endif; 1751 <?php endif; 1633 1752 1634 1753 // No forums found … … 1639 1758 </div> 1640 1759 1641 <?php if ( bp_is_group_admin_screen( $this->slug ) ) : 1642 bbp_get_template_part( 'form', 'forum' ); 1643 endif; 1644 endif; 1760 <?php endif; 1645 1761 1646 1762 // Single forum 1647 elseif ( ( bp_action_variable( $offset ) != $this->slug ) && ( bp_action_variable( $offset ) != $this->topic_slug ) ) :1648 1649 // Get the forum1650 $forum_ post_type = bbp_get_forum_post_type();1651 $forum_ slug = bp_action_variable( $offset);1652 $forums = $wpdb->get_row( "SELECT ID FROM {$wpdb->posts} WHERE post_name = '{$forum_slug}' AND post_type = '{$forum_post_type}'", ARRAY_N);1763 elseif ( ( bp_action_variable( $offset ) != $this->slug ) && ( bp_action_variable( $offset ) != $this->topic_slug ) && ( bp_action_variable( $offset ) != $this->reply_slug ) ) : 1764 1765 // Get forum data 1766 $forum_slug = bp_action_variable( $offset ); 1767 $forum_args = array( 'name' => $forum_slug, 'post_type' => bbp_get_forum_post_type() ); 1768 $forums = get_posts( $forum_args ); 1653 1769 1654 1770 // Forum exists 1655 1771 if ( !empty( $forums ) ) : 1656 $forum_id = $forums[0]; 1657 $bbp->current_forum_id = $forum_id; 1658 bbp_set_query_name( 'bbp_single_forum' ); ?> 1659 1660 <h3><?php bbp_forum_title(); ?></h3> 1661 1662 <?php bbp_get_template_part( 'content', 'single-forum' ); ?> 1663 1664 <?php else : ?> 1665 1666 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 1667 1668 <?php bbp_get_template_part( 'form', 'topic' ); ?> 1669 1670 <?php endif; 1772 $forum = $forums[0]; 1773 1774 // Set up forum data 1775 $forum_id = bbpress()->current_forum_id = $forum->ID; 1776 1777 // Reset necessary forum_query attributes for forums loop to function 1778 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 1779 $bbp->forum_query->in_the_loop = true; 1780 $bbp->forum_query->post = get_post( $forum_id ); 1781 1782 // Forum edit 1783 if ( bp_action_variable( $offset + 1 ) == $bbp->edit_id ) : 1784 global $wp_query, $post; 1785 1786 $wp_query->bbp_is_edit = true; 1787 $wp_query->bbp_is_forum_edit = true; 1788 $post = $forum; 1789 1790 bbp_set_query_name( 'bbp_forum_form' ); 1791 1792 bbp_get_template_part( 'form', 'forum' ); 1793 1794 else : 1795 bbp_set_query_name( 'bbp_single_forum' ); ?> 1796 1797 <h3><?php bbp_forum_title(); ?></h3> 1798 1799 <?php bbp_get_template_part( 'content', 'single-forum' ); 1800 1801 endif; 1802 1803 else : 1804 bbp_get_template_part( 'feedback', 'no-topics' ); 1805 bbp_get_template_part( 'form', 'topic' ); 1806 1807 endif; 1671 1808 1672 1809 // Single topic 1673 elseif ( ( bp_action_variable( $offset ) != $this->slug ) && ( bp_action_variable( $offset ) == $this->topic_slug )) :1674 1675 // Get t he topic1676 $topic_ post_type = bbp_get_topic_post_type();1677 $topic_ slug = bp_action_variable( $offset + 1);1678 $topics = $wpdb->get_row( "SELECT ID FROM {$wpdb->posts} WHERE post_name = '{$topic_slug}' AND post_type = '{$topic_post_type}'", ARRAY_N);1810 elseif ( bp_action_variable( $offset ) == $this->topic_slug ) : 1811 1812 // Get topic data 1813 $topic_slug = bp_action_variable( $offset + 1 ); 1814 $topic_args = array( 'name' => $topic_slug, 'post_type' => bbp_get_topic_post_type(), 'post_status' => $post_status ); 1815 $topics = get_posts( $topic_args ); 1679 1816 1680 1817 // Topic exists 1681 1818 if ( !empty( $topics ) ) : 1682 $topic_id = $topics[0]; 1683 $bbp->current_topic_id = $topic_id; 1684 bbp_set_query_name( 'bbp_single_topic' ); ?> 1685 1686 <h3><?php bbp_topic_title(); ?></h3> 1687 1688 <?php bbp_get_template_part( 'content', 'single-topic' ); ?> 1689 1690 <?php else : ?> 1691 1692 <?php bbp_get_template_part( 'feedback', 'no-topics' ); ?> 1693 1694 <?php bbp_get_template_part( 'form', 'topic' ); ?> 1695 1696 <?php endif; 1819 $topic = $topics[0]; 1820 1821 // Set up topic data 1822 $topic_id = bbpress()->current_topic_id = $topic->ID; 1823 $forum_id = bbp_get_topic_forum_id( $topic_id ); 1824 1825 // Reset necessary forum_query attributes for topics loop to function 1826 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 1827 $bbp->forum_query->in_the_loop = true; 1828 $bbp->forum_query->post = get_post( $forum_id ); 1829 1830 // Reset necessary topic_query attributes for topics loop to function 1831 $bbp->topic_query->query_vars['post_type'] = bbp_get_topic_post_type(); 1832 $bbp->topic_query->in_the_loop = true; 1833 $bbp->topic_query->post = $topic; 1834 1835 // Topic edit 1836 if ( bp_action_variable( $offset + 2 ) == $bbp->edit_id ) : 1837 global $wp_query, $post; 1838 $wp_query->bbp_is_edit = true; 1839 $wp_query->bbp_is_topic_edit = true; 1840 $post = $topic; 1841 1842 // Merge 1843 if ( !empty( $_GET['action'] ) && 'merge' == $_GET['action'] ) : 1844 bbp_set_query_name( 'bbp_topic_merge' ); 1845 1846 bbp_get_template_part( 'form', 'topic-merge' ); 1847 1848 // Split 1849 elseif ( !empty( $_GET['action'] ) && 'split' == $_GET['action'] ) : 1850 bbp_set_query_name( 'bbp_topic_split' ); 1851 1852 bbp_get_template_part( 'form', 'topic-split' ); 1853 1854 // Edit 1855 else : 1856 bbp_set_query_name( 'bbp_topic_form' ); 1857 bbp_get_template_part( 'form', 'topic' ); 1858 1859 endif; 1860 1861 // Single Topic 1862 else: 1863 1864 bbp_set_query_name( 'bbp_single_topic' ); ?> 1865 1866 <h3><?php bbp_topic_title(); ?></h3> 1867 1868 <?php bbp_get_template_part( 'content', 'single-topic' ); 1869 1870 endif; 1871 1872 // No Topics 1873 else : 1874 bbp_get_template_part( 'feedback', 'no-topics' ); 1875 bbp_get_template_part( 'form', 'topic' ); 1876 1877 endif; 1878 1879 // Single reply 1880 elseif ( bp_action_variable( $offset ) == $this->reply_slug ) : 1881 1882 // Get reply data 1883 $reply_slug = bp_action_variable( $offset + 1 ); 1884 $reply_args = array( 'name' => $reply_slug, 'post_type' => bbp_get_reply_post_type() ); 1885 $replies = get_posts( $reply_args ); 1886 1887 if ( empty( $replies ) ) 1888 return; 1889 1890 // Get the first reply 1891 $reply = $replies[0]; 1892 1893 // Set up reply data 1894 $reply_id = bbpress()->current_reply_id = $reply->ID; 1895 $topic_id = bbp_get_reply_topic_id( $reply_id ); 1896 $forum_id = bbp_get_reply_forum_id( $reply_id ); 1897 1898 // Reset necessary forum_query attributes for reply to function 1899 $bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type(); 1900 $bbp->forum_query->in_the_loop = true; 1901 $bbp->forum_query->post = get_post( $forum_id ); 1902 1903 // Reset necessary topic_query attributes for reply to function 1904 $bbp->topic_query->query_vars['post_type'] = bbp_get_topic_post_type(); 1905 $bbp->topic_query->in_the_loop = true; 1906 $bbp->topic_query->post = get_post( $topic_id ); 1907 1908 // Reset necessary reply_query attributes for reply to function 1909 $bbp->reply_query->query_vars['post_type'] = bbp_get_reply_post_type(); 1910 $bbp->reply_query->in_the_loop = true; 1911 $bbp->reply_query->post = $reply; 1912 1913 if ( bp_action_variable( $offset + 2 ) == $bbp->edit_id ) : 1914 global $wp_query, $post; 1915 1916 $wp_query->bbp_is_edit = true; 1917 $wp_query->bbp_is_reply_edit = true; 1918 $post = $reply; 1919 1920 bbp_set_query_name( 'bbp_reply_form' ); 1921 bbp_get_template_part( 'form', 'reply' ); 1922 1923 endif; 1697 1924 1698 1925 endif; ?>
Note: See TracChangeset
for help on using the changeset viewer.