Changeset 5156 for trunk/includes/users/functions.php
- Timestamp:
- 11/20/2013 07:50:55 PM (12 years ago)
- File:
-
- 1 edited
-
trunk/includes/users/functions.php (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/users/functions.php
r5121 r5156 314 314 315 315 if ( !empty( $favorites ) ) { 316 316 317 317 // Checking a specific topic id 318 318 if ( !empty( $topic_id ) ) { … … 513 513 514 514 /** 515 * Get the users who have subscribed to the forum 516 * 517 * @since bbPress (rxxxx) 518 * 519 * @param int $forum_id Optional. forum id 520 * @uses wpdb::get_col() To execute our query and get the column back 521 * @uses apply_filters() Calls 'bbp_get_forum_subscribers' with the subscribers 522 * @return array|bool Results if the forum has any subscribers, otherwise false 523 */ 524 function bbp_get_forum_subscribers( $forum_id = 0 ) { 525 $forum_id = bbp_get_forum_id( $forum_id ); 526 if ( empty( $forum_id ) ) 527 return; 528 529 global $wpdb; 530 531 $key = $wpdb->prefix . '_bbp_forum_subscriptions'; 532 $users = wp_cache_get( 'bbp_get_forum_subscribers_' . $forum_id, 'bbpress_users' ); 533 if ( false === $users ) { 534 $users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '{$key}' and FIND_IN_SET('{$forum_id}', meta_value) > 0" ); 535 wp_cache_set( 'bbp_get_forum_subscribers_' . $forum_id, $users, 'bbpress_users' ); 536 } 537 538 return apply_filters( 'bbp_get_forum_subscribers', $users ); 539 } 540 541 /** 515 542 * Get the users who have subscribed to the topic 516 543 * … … 544 571 * @since bbPress (r2668) 545 572 * 573 * @deprecated since bbPress (rxxxx) 574 * 575 * @param int $user_id Optional. User id 576 * @uses bbp_get_user_topic_subscriptions() To get the user's subscriptions 577 * @return array|bool Results if user has subscriptions, otherwise false 578 */ 579 function bbp_get_user_subscriptions( $user_id = 0 ) { 580 _deprecated_function( __FUNCTION__, 2.5, 'bbp_get_user_topic_subscriptions()' ); 581 $query = bbp_get_user_topic_subscriptions( $user_id ); 582 return apply_filters( 'bbp_get_user_subscriptions', $query, $user_id ); 583 } 584 585 /** 586 * Get a user's subscribed topics 587 * 588 * @since bbPress (r2668) 589 * 546 590 * @param int $user_id Optional. User id 547 591 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions … … 551 595 * @return array|bool Results if user has subscriptions, otherwise false 552 596 */ 553 function bbp_get_user_ subscriptions( $user_id = 0 ) {597 function bbp_get_user_topic_subscriptions( $user_id = 0 ) { 554 598 555 599 // Default to the displayed user 556 600 $user_id = bbp_get_user_id( $user_id ); 557 if ( empty( $user_id ) ) 558 return false; 601 if ( empty( $user_id ) ) { 602 return false; 603 } 559 604 560 605 // If user has subscriptions, load them … … 566 611 } 567 612 568 return apply_filters( 'bbp_get_user_subscriptions', $query, $user_id ); 613 return apply_filters( 'bbp_get_user_topic_subscriptions', $query, $user_id ); 614 } 615 616 /** 617 * Get a user's subscribed forums 618 * 619 * @since bbPress (rxxxx) 620 * 621 * @param int $user_id Optional. User id 622 * @uses bbp_get_user_subscribed_forum_ids() To get the user's subscriptions 623 * @uses bbp_has_forums() To get the forums 624 * @uses apply_filters() Calls 'bbp_get_user_forum_subscriptions' with the forum 625 * query and user id 626 * @return array|bool Results if user has subscriptions, otherwise false 627 */ 628 function bbp_get_user_forum_subscriptions( $user_id = 0 ) { 629 630 // Default to the displayed user 631 $user_id = bbp_get_user_id( $user_id ); 632 if ( empty( $user_id ) ) { 633 return false; 634 } 635 636 // If user has subscriptions, load them 637 $subscriptions = bbp_get_user_subscribed_forum_ids( $user_id ); 638 if ( !empty( $subscriptions ) ) { 639 $query = bbp_has_forums( array( 'post__in' => $subscriptions ) ); 640 } else { 641 $query = false; 642 } 643 644 return apply_filters( 'bbp_get_user_forum_subscriptions', $query, $user_id ); 645 } 646 647 /** 648 * Get a user's subscribed forum ids 649 * 650 * @since bbPress (rxxxx) 651 * 652 * @param int $user_id Optional. User id 653 * @uses bbp_get_user_id() To get the user id 654 * @uses get_user_option() To get the user's subscriptions 655 * @uses apply_filters() Calls 'bbp_get_user_subscribed_forum_ids' with 656 * the subscriptions and user id 657 * @return array|bool Results if user has subscriptions, otherwise false 658 */ 659 function bbp_get_user_subscribed_forum_ids( $user_id = 0 ) { 660 $user_id = bbp_get_user_id( $user_id ); 661 if ( empty( $user_id ) ) 662 return false; 663 664 $subscriptions = get_user_option( '_bbp_forum_subscriptions', $user_id ); 665 $subscriptions = array_filter( wp_parse_id_list( $subscriptions ) ); 666 667 return (array) apply_filters( 'bbp_get_user_subscribed_forum_ids', $subscriptions, $user_id ); 569 668 } 570 669 … … 593 692 594 693 /** 694 * Check if a topic or forum is in user's subscription list or not 695 * 696 * @since bbPress (rxxxx) 697 * 698 * @param int $user_id Optional. User id 699 * @param int $forum_id Optional. Topic id 700 * @uses get_post() To get the post object 701 * @uses bbp_get_user_subscribed_forum_ids() To get the user's forum subscriptions 702 * @uses bbp_get_user_subscribed_topic_ids() To get the user's topic subscriptions 703 * @uses bbp_get_forum_post_type() To get the forum post type 704 * @uses bbp_get_topic_post_type() To get the topic post type 705 * @uses apply_filters() Calls 'bbp_is_user_subscribed' with the bool, user id, 706 * forum/topic id and subsriptions 707 * @return bool True if the forum or topic is in user's subscriptions, otherwise false 708 */ 709 function bbp_is_user_subscribed( $user_id = 0, $object_id = 0 ) { 710 711 // Assume user is not subscribed 712 $retval = false; 713 714 // Setup ID's array 715 $subscribed_ids = array(); 716 717 // User and object ID's are passed 718 if ( ! empty( $user_id ) && ! empty( $object_id ) ) { 719 720 // Get the post type 721 $post_type = get_post_type( $object_id ); 722 723 // Post exists, so check the types 724 if ( ! empty( $post_type ) ) { 725 726 switch( $post_type ) { 727 728 // Forum 729 case bbp_get_forum_post_type() : 730 $subscribed_ids = bbp_get_user_subscribed_forum_ids( $user_id ); 731 $retval = bbp_is_user_subscribed_to_forum( $user_id, $object_id, $subscribed_ids ); 732 break; 733 734 // Topic (default) 735 case bbp_get_topic_post_type() : 736 default : 737 $subscribed_ids = bbp_get_user_subscribed_topic_ids( $user_id ); 738 $retval = bbp_is_user_subscribed_to_topic( $user_id, $object_id, $subscribed_ids ); 739 break; 740 } 741 } 742 } 743 744 return (bool) apply_filters( 'bbp_is_user_subscribed', $retval, $user_id, $object_id, $subscribed_ids ); 745 } 746 747 /** 748 * Check if a forum is in user's subscription list or not 749 * 750 * @since bbPress (rxxxx) 751 * 752 * @param int $user_id Optional. User id 753 * @param int $forum_id Optional. Topic id 754 * @param array $subscribed_ids Optional. Array of forum ID's to check 755 * @uses bbp_get_user_id() To get the user id 756 * @uses bbp_get_user_subscribed_forum_ids() To get the user's subscriptions 757 * @uses bbp_get_forum() To get the forum 758 * @uses bbp_get_forum_id() To get the forum id 759 * @uses apply_filters() Calls 'bbp_is_user_subscribed' with the bool, user id, 760 * forum id and subsriptions 761 * @return bool True if the forum is in user's subscriptions, otherwise false 762 */ 763 function bbp_is_user_subscribed_to_forum( $user_id = 0, $forum_id = 0, $subscribed_ids = array() ) { 764 765 // Assume user is not subscribed 766 $retval = false; 767 768 // Validate user 769 $user_id = bbp_get_user_id( $user_id, true, true ); 770 if ( ! empty( $user_id ) ) { 771 772 // Get subscription ID's if none passed 773 if ( empty( $subscribed_ids ) ) { 774 $subscribed_ids = bbp_get_user_subscribed_forum_ids( $user_id ); 775 } 776 777 // User has forum subscriptions 778 if ( ! empty( $subscribed_ids ) ) { 779 780 // Checking a specific forum id 781 if ( ! empty( $forum_id ) ) { 782 $forum = bbp_get_forum( $forum_id ); 783 $forum_id = ! empty( $forum ) ? $forum->ID : 0; 784 785 // Using the global forum id 786 } elseif ( bbp_get_forum_id() ) { 787 $forum_id = bbp_get_forum_id(); 788 789 // Use the current post id 790 } elseif ( ! bbp_get_forum_id() ) { 791 $forum_id = get_the_ID(); 792 } 793 794 // Is forum_id in the user's favorites 795 if ( ! empty( $forum_id ) ) { 796 $retval = in_array( $forum_id, $subscribed_ids ); 797 } 798 } 799 } 800 801 return (bool) apply_filters( 'bbp_is_user_subscribed_to_forum', (bool) $retval, $user_id, $forum_id, $subscribed_ids ); 802 } 803 804 /** 595 805 * Check if a topic is in user's subscription list or not 596 806 * 597 * @since bbPress (r 2668)807 * @since bbPress (rxxxx) 598 808 * 599 809 * @param int $user_id Optional. User id 600 810 * @param int $topic_id Optional. Topic id 811 * @param array $subscribed_ids Optional. Array of topic ID's to check 601 812 * @uses bbp_get_user_id() To get the user id 602 813 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions … … 607 818 * @return bool True if the topic is in user's subscriptions, otherwise false 608 819 */ 609 function bbp_is_user_subscribed( $user_id = 0, $topic_id = 0 ) { 820 function bbp_is_user_subscribed_to_topic( $user_id = 0, $topic_id = 0, $subscribed_ids = array() ) { 821 822 // Assume user is not subscribed 823 $retval = false; 610 824 611 825 // Validate user 612 826 $user_id = bbp_get_user_id( $user_id, true, true ); 613 if ( empty( $user_id ) ) 614 return false; 615 616 $retval = false; 617 $subscriptions = bbp_get_user_subscribed_topic_ids( $user_id ); 618 619 if ( !empty( $subscriptions ) ) { 620 621 // Checking a specific topic id 622 if ( !empty( $topic_id ) ) { 623 $topic = bbp_get_topic( $topic_id ); 624 $topic_id = !empty( $topic ) ? $topic->ID : 0; 625 626 // Using the global topic id 627 } elseif ( bbp_get_topic_id() ) { 628 $topic_id = bbp_get_topic_id(); 629 630 // Use the current post id 631 } elseif ( !bbp_get_topic_id() ) { 632 $topic_id = get_the_ID(); 827 if ( !empty( $user_id ) ) { 828 829 // Get subscription ID's if none passed 830 if ( empty( $subscribed_ids ) ) { 831 $subscribed_ids = bbp_get_user_subscribed_topic_ids( $user_id ); 633 832 } 634 833 635 // Is topic_id in the user's favorites 636 if ( !empty( $topic_id ) ) { 637 $retval = in_array( $topic_id, $subscriptions ); 834 // User has topic subscriptions 835 if ( ! empty( $subscribed_ids ) ) { 836 837 // Checking a specific topic id 838 if ( ! empty( $topic_id ) ) { 839 $topic = bbp_get_topic( $topic_id ); 840 $topic_id = ! empty( $topic ) ? $topic->ID : 0; 841 842 // Using the global topic id 843 } elseif ( bbp_get_topic_id() ) { 844 $topic_id = bbp_get_topic_id(); 845 846 // Use the current post id 847 } elseif ( !bbp_get_topic_id() ) { 848 $topic_id = get_the_ID(); 849 } 850 851 // Is topic_id in the user's favorites 852 if ( ! empty( $topic_id ) ) { 853 $retval = in_array( $topic_id, $subscribed_ids ); 854 } 638 855 } 639 856 } 640 857 641 return (bool) apply_filters( 'bbp_is_user_subscribed', (bool) $retval, $user_id, $topic_id, $subscriptions ); 858 return (bool) apply_filters( 'bbp_is_user_subscribed_to_topic', (bool) $retval, $user_id, $topic_id, $subscribed_ids ); 859 } 860 861 /** 862 * Add a topic to user's subscriptions 863 * 864 * @since bbPress (rxxxx) 865 * 866 * @param int $user_id Optional. User id 867 * @param int $topic_id Optional. Topic id 868 * @uses get_post() To get the post object 869 * @uses bbp_get_user_subscribed_forum_ids() To get the user's forum subscriptions 870 * @uses bbp_get_user_subscribed_topic_ids() To get the user's topic subscriptions 871 * @uses bbp_get_forum_post_type() To get the forum post type 872 * @uses bbp_get_topic_post_type() To get the topic post type 873 * @uses update_user_option() To update the user's subscriptions 874 * @uses do_action() Calls 'bbp_add_user_subscription' with the user & topic id 875 * @return bool Always true 876 */ 877 function bbp_add_user_subscription( $user_id = 0, $object_id = 0 ) { 878 if ( empty( $user_id ) || empty( $object_id ) ) { 879 return false; 880 } 881 882 // Get the post type 883 $post_type = get_post_type( $object_id ); 884 if ( empty( $post_type ) ) { 885 return false; 886 } 887 888 switch( $post_type ) { 889 890 // Forum 891 case bbp_get_forum_post_type() : 892 bbp_add_user_forum_subscription( $user_id, $object_id ); 893 break; 894 895 // Topic 896 case bbp_get_topic_post_type() : 897 default : 898 bbp_add_user_topic_subscription( $user_id, $object_id ); 899 break; 900 } 901 902 do_action( 'bbp_add_user_subscription', $user_id, $object_id, $post_type ); 903 904 return true; 905 } 906 907 /** 908 * Add a forum to user's subscriptions 909 * 910 * @since bbPress (rxxxx) 911 * 912 * @param int $user_id Optional. User id 913 * @param int $forum_id Optional. forum id 914 * @uses bbp_get_user_subscribed_forum_ids() To get the user's subscriptions 915 * @uses bbp_get_forum() To get the forum 916 * @uses update_user_option() To update the user's subscriptions 917 * @uses do_action() Calls 'bbp_add_user_subscription' with the user & forum id 918 * @return bool Always true 919 */ 920 function bbp_add_user_forum_subscription( $user_id = 0, $forum_id = 0 ) { 921 if ( empty( $user_id ) || empty( $forum_id ) ) { 922 return false; 923 } 924 925 $forum = bbp_get_forum( $forum_id ); 926 if ( empty( $forum ) ) { 927 return false; 928 } 929 930 $subscriptions = (array) bbp_get_user_subscribed_forum_ids( $user_id ); 931 if ( !in_array( $forum_id, $subscriptions ) ) { 932 $subscriptions[] = $forum_id; 933 $subscriptions = implode( ',', wp_parse_id_list( array_filter( $subscriptions ) ) ); 934 update_user_option( $user_id, '_bbp_forum_subscriptions', $subscriptions ); 935 936 wp_cache_delete( 'bbp_get_forum_subscribers_' . $forum_id, 'bbpress_users' ); 937 } 938 939 do_action( 'bbp_add_user_forum_subscription', $user_id, $forum_id ); 940 941 return true; 642 942 } 643 943 … … 655 955 * @return bool Always true 656 956 */ 657 function bbp_add_user_subscription( $user_id = 0, $topic_id = 0 ) { 658 if ( empty( $user_id ) || empty( $topic_id ) ) 659 return false; 957 function bbp_add_user_topic_subscription( $user_id = 0, $topic_id = 0 ) { 958 if ( empty( $user_id ) || empty( $topic_id ) ) { 959 return false; 960 } 660 961 661 962 $topic = bbp_get_topic( $topic_id ); 662 if ( empty( $topic ) ) 663 return false; 963 if ( empty( $topic ) ) { 964 return false; 965 } 664 966 665 967 $subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id ); … … 672 974 } 673 975 674 do_action( 'bbp_add_user_ subscription', $user_id, $topic_id );976 do_action( 'bbp_add_user_topic_subscription', $user_id, $topic_id ); 675 977 676 978 return true; … … 681 983 * 682 984 * @since bbPress (r2668) 985 * 986 * @param int $user_id Optional. User id 987 * @param int $topic_id Optional. Topic id 988 * @uses get_post() To get the post object 989 * @uses bbp_get_forum_post_type() To get the forum post type 990 * @uses bbp_get_topic_post_type() To get the topic post type 991 * @uses bbp_remove_user_forum_subscription() To remove the user's subscription 992 * @uses bbp_remove_user_topic_subscription() To remove the user's subscription 993 * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and 994 * topic id 995 * @return bool True if the topic was removed from user's subscriptions, 996 * otherwise false 997 */ 998 function bbp_remove_user_subscription( $user_id = 0, $object_id = 0 ) { 999 if ( empty( $user_id ) || empty( $object_id ) ) { 1000 return false; 1001 } 1002 1003 $post_type = get_post_type( $object_id ); 1004 if ( empty( $post_type ) ) { 1005 return false; 1006 } 1007 1008 switch( $post_type ) { 1009 1010 // Forum 1011 case bbp_get_forum_post_type() : 1012 bbp_remove_user_forum_subscription( $user_id, $object_id ); 1013 break; 1014 1015 // Topic 1016 case bbp_get_topic_post_type() : 1017 default : 1018 bbp_remove_user_topic_subscription( $user_id, $object_id ); 1019 break; 1020 } 1021 1022 do_action( 'bbp_remove_user_subscription', $user_id, $object_id, $post_type ); 1023 1024 return true; 1025 } 1026 1027 /** 1028 * Remove a forum from user's subscriptions 1029 * 1030 * @since bbPress (rxxxx) 1031 * 1032 * @param int $user_id Optional. User id 1033 * @param int $forum_id Optional. forum id 1034 * @uses bbp_get_user_subscribed_forum_ids() To get the user's subscriptions 1035 * @uses update_user_option() To update the user's subscriptions 1036 * @uses delete_user_option() To delete the user's subscriptions meta 1037 * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and 1038 * forum id 1039 * @return bool True if the forum was removed from user's subscriptions, 1040 * otherwise false 1041 */ 1042 function bbp_remove_user_forum_subscription( $user_id, $forum_id ) { 1043 if ( empty( $user_id ) || empty( $forum_id ) ) { 1044 return false; 1045 } 1046 1047 $subscriptions = (array) bbp_get_user_subscribed_forum_ids( $user_id ); 1048 if ( empty( $subscriptions ) ) { 1049 return false; 1050 } 1051 1052 $pos = array_search( $forum_id, $subscriptions ); 1053 if ( false === $pos ) { 1054 return false; 1055 } 1056 1057 array_splice( $subscriptions, $pos, 1 ); 1058 $subscriptions = array_filter( $subscriptions ); 1059 1060 if ( !empty( $subscriptions ) ) { 1061 $subscriptions = implode( ',', wp_parse_id_list( $subscriptions ) ); 1062 update_user_option( $user_id, '_bbp_forum_subscriptions', $subscriptions ); 1063 } else { 1064 delete_user_option( $user_id, '_bbp_forum_subscriptions' ); 1065 } 1066 1067 wp_cache_delete( 'bbp_get_forum_subscribers_' . $forum_id, 'bbpress_users' ); 1068 1069 do_action( 'bbp_remove_user_forum_subscription', $user_id, $forum_id ); 1070 1071 return true; 1072 } 1073 1074 /** 1075 * Remove a topic from user's subscriptions 1076 * 1077 * @since bbPress (rxxxx) 683 1078 * 684 1079 * @param int $user_id Optional. User id … … 687 1082 * @uses update_user_option() To update the user's subscriptions 688 1083 * @uses delete_user_option() To delete the user's subscriptions meta 689 * @uses do_action() Calls 'bbp_remove_user_ subscription' with the user id and1084 * @uses do_action() Calls 'bbp_remove_user_topic_subscription' with the user id and 690 1085 * topic id 691 1086 * @return bool True if the topic was removed from user's subscriptions, 692 1087 * otherwise false 693 1088 */ 694 function bbp_remove_user_subscription( $user_id, $topic_id ) { 695 if ( empty( $user_id ) || empty( $topic_id ) ) 696 return false; 1089 function bbp_remove_user_topic_subscription( $user_id, $topic_id ) { 1090 if ( empty( $user_id ) || empty( $topic_id ) ) { 1091 return false; 1092 } 697 1093 698 1094 $subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id ); 699 700 if ( empty( $subscriptions ) )701 return false;1095 if ( empty( $subscriptions ) ) { 1096 return false; 1097 } 702 1098 703 1099 $pos = array_search( $topic_id, $subscriptions ); 704 if ( is_numeric( $pos ) ) { 705 array_splice( $subscriptions, $pos, 1 ); 706 $subscriptions = array_filter( $subscriptions ); 707 708 if ( !empty( $subscriptions ) ) { 709 $subscriptions = implode( ',', wp_parse_id_list( $subscriptions ) ); 710 update_user_option( $user_id, '_bbp_subscriptions', $subscriptions ); 1100 if ( false === $pos ) { 1101 return false; 1102 } 1103 1104 array_splice( $subscriptions, $pos, 1 ); 1105 $subscriptions = array_filter( $subscriptions ); 1106 1107 if ( !empty( $subscriptions ) ) { 1108 $subscriptions = implode( ',', wp_parse_id_list( $subscriptions ) ); 1109 update_user_option( $user_id, '_bbp_subscriptions', $subscriptions ); 1110 } else { 1111 delete_user_option( $user_id, '_bbp_subscriptions' ); 1112 } 1113 1114 wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress_users' ); 1115 1116 do_action( 'bbp_remove_user_topic_subscription', $user_id, $topic_id ); 1117 1118 return true; 1119 } 1120 1121 /** 1122 * Handles the front end subscribing and unsubscribing forums 1123 * 1124 * @since bbPress (rxxxx) 1125 * 1126 * @param string $action The requested action to compare this function to 1127 * @uses bbp_is_subscriptions_active() To check if the subscriptions are active 1128 * @uses bbp_get_user_id() To get the user id 1129 * @uses bbp_verify_nonce_request() To verify the nonce and check the request 1130 * @uses current_user_can() To check if the current user can edit the user 1131 * @uses bbPress:errors:add() To log the error messages 1132 * @uses bbp_is_user_subscribed() To check if the forum is in user's 1133 * subscriptions 1134 * @uses bbp_remove_user_subscription() To remove the user subscription 1135 * @uses bbp_add_user_subscription() To add the user subscription 1136 * @uses do_action() Calls 'bbp_subscriptions_handler' with success, user id, 1137 * forum id and action 1138 * @uses bbp_is_subscription() To check if it's the subscription page 1139 * @uses bbp_get_forum_permalink() To get the forum permalink 1140 * @uses wp_safe_redirect() To redirect to the url 1141 */ 1142 function bbp_forum_subscriptions_handler( $action = '' ) { 1143 1144 if ( ! bbp_is_subscriptions_active() ) { 1145 return false; 1146 } 1147 1148 // Bail if no forum ID is passed 1149 if ( empty( $_GET['forum_id'] ) ) { 1150 return; 1151 } 1152 1153 // Setup possible get actions 1154 $possible_actions = array( 1155 'bbp_subscribe', 1156 'bbp_unsubscribe', 1157 ); 1158 1159 // Bail if actions aren't meant for this function 1160 if ( ! in_array( $action, $possible_actions ) ) { 1161 return; 1162 } 1163 1164 // Get required data 1165 $user_id = bbp_get_user_id( 0, true, true ); 1166 $forum_id = intval( $_GET['forum_id'] ); 1167 1168 // Check for empty forum 1169 if ( empty( $forum_id ) ) { 1170 bbp_add_error( 'bbp_subscription_forum_id', __( '<strong>ERROR</strong>: No forum was found! Which forum are you subscribing/unsubscribing to?', 'bbpress' ) ); 1171 1172 // Check nonce 1173 } elseif ( ! bbp_verify_nonce_request( 'toggle-subscription_' . $forum_id ) ) { 1174 bbp_add_error( 'bbp_subscription_forum_id', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); 1175 1176 // Check current user's ability to edit the user 1177 } elseif ( !current_user_can( 'edit_user', $user_id ) ) { 1178 bbp_add_error( 'bbp_subscription_permissions', __( '<strong>ERROR</strong>: You don\'t have the permission to edit favorites of that user!', 'bbpress' ) ); 1179 } 1180 1181 // Bail if we have errors 1182 if ( bbp_has_errors() ) { 1183 return; 1184 } 1185 1186 /** No errors *************************************************************/ 1187 1188 $is_subscription = bbp_is_user_subscribed( $user_id, $forum_id ); 1189 $success = false; 1190 1191 if ( true === $is_subscription && 'bbp_unsubscribe' === $action ) { 1192 $success = bbp_remove_user_subscription( $user_id, $forum_id ); 1193 } elseif ( false === $is_subscription && 'bbp_subscribe' === $action ) { 1194 $success = bbp_add_user_subscription( $user_id, $forum_id ); 1195 } 1196 1197 // Do additional subscriptions actions 1198 do_action( 'bbp_subscriptions_handler', $success, $user_id, $forum_id, $action ); 1199 1200 // Success! 1201 if ( true === $success ) { 1202 1203 // Redirect back from whence we came 1204 if ( bbp_is_subscriptions() ) { 1205 $redirect = bbp_get_subscriptions_permalink( $user_id ); 1206 } elseif ( bbp_is_single_user() ) { 1207 $redirect = bbp_get_user_profile_url(); 1208 } elseif ( is_singular( bbp_get_forum_post_type() ) ) { 1209 $redirect = bbp_get_forum_permalink( $forum_id ); 1210 } elseif ( is_single() || is_page() ) { 1211 $redirect = get_permalink(); 711 1212 } else { 712 delete_user_option( $user_id, '_bbp_subscriptions');1213 $redirect = get_permalink( $forum_id ); 713 1214 } 714 1215 715 wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress_users' ); 716 } 717 718 do_action( 'bbp_remove_user_subscription', $user_id, $topic_id ); 719 720 return true; 1216 wp_safe_redirect( $redirect ); 1217 1218 // For good measure 1219 exit(); 1220 1221 // Fail! Handle errors 1222 } elseif ( true === $is_subscription && 'bbp_unsubscribe' === $action ) { 1223 bbp_add_error( 'bbp_unsubscribe', __( '<strong>ERROR</strong>: There was a problem unsubscribing from that forum!', 'bbpress' ) ); 1224 } elseif ( false === $is_subscription && 'bbp_subscribe' === $action ) { 1225 bbp_add_error( 'bbp_subscribe', __( '<strong>ERROR</strong>: There was a problem subscribing to that forum!', 'bbpress' ) ); 1226 } 721 1227 } 722 1228 … … 737 1243 * topic id and action 738 1244 * @uses bbp_is_subscription() To check if it's the subscription page 739 * @uses bbp_get_subscription_link() To get the subscription page link740 1245 * @uses bbp_get_topic_permalink() To get the topic permalink 741 1246 * @uses wp_safe_redirect() To redirect to the url … … 743 1248 function bbp_subscriptions_handler( $action = '' ) { 744 1249 745 if ( !bbp_is_subscriptions_active() ) 746 return false; 1250 if ( !bbp_is_subscriptions_active() ) { 1251 return false; 1252 } 747 1253 748 1254 // Bail if no topic ID is passed 749 if ( empty( $_GET['topic_id'] ) ) 750 return; 1255 if ( empty( $_GET['topic_id'] ) ) { 1256 return; 1257 } 751 1258 752 1259 // Setup possible get actions … … 757 1264 758 1265 // Bail if actions aren't meant for this function 759 if ( !in_array( $action, $possible_actions ) ) 760 return; 1266 if ( !in_array( $action, $possible_actions ) ) { 1267 return; 1268 } 761 1269 762 1270 // Get required data … … 778 1286 779 1287 // Bail if we have errors 780 if ( bbp_has_errors() ) 781 return; 1288 if ( bbp_has_errors() ) { 1289 return; 1290 } 782 1291 783 1292 /** No errors *************************************************************/ … … 786 1295 $success = false; 787 1296 788 if ( true === $is_subscription && 'bbp_unsubscribe' === $action ) 1297 if ( true === $is_subscription && 'bbp_unsubscribe' === $action ) { 789 1298 $success = bbp_remove_user_subscription( $user_id, $topic_id ); 790 elseif ( false === $is_subscription && 'bbp_subscribe' === $action )1299 } elseif ( false === $is_subscription && 'bbp_subscribe' === $action ) { 791 1300 $success = bbp_add_user_subscription( $user_id, $topic_id ); 1301 } 792 1302 793 1303 // Do additional subscriptions actions … … 969 1479 */ 970 1480 function bbp_get_user_topics_started( $user_id = 0 ) { 971 1481 972 1482 // Validate user 973 1483 $user_id = bbp_get_user_id( $user_id ); … … 994 1504 */ 995 1505 function bbp_get_user_replies_created( $user_id = 0 ) { 996 1506 997 1507 // Validate user 998 1508 $user_id = bbp_get_user_id( $user_id ); … … 1032 1542 * met. We assume a user cannot perform this task, and look for ways they can 1033 1543 * earn the ability to access this template. 1034 * 1544 * 1035 1545 * @since bbPress (r3605) 1036 1546 *
Note: See TracChangeset
for help on using the changeset viewer.