Skip to:
Content

BuddyPress.org

Ticket #7023: 7023.01.patch

File 7023.01.patch, 19.5 KB (added by r-a-y, 8 years ago)
  • src/bp-notifications/bp-notifications-functions.php

     
    9898 * @return bool True on success, false on failure.
    9999 */
    100100function bp_notifications_delete_notification( $id ) {
    101         if ( ! bp_notifications_check_notification_access( bp_loggedin_user_id(), $id ) ) {
     101        if ( ! bp_notifications_check_notification_access( bp_displayed_user_id(), $id ) ) {
    102102                return false;
    103103        }
    104104
     
    117117 * @return bool True on success, false on failure.
    118118 */
    119119function bp_notifications_mark_notification( $id, $is_new = false ) {
    120         if ( ! bp_notifications_check_notification_access( bp_loggedin_user_id(), $id ) ) {
     120        if ( ! bp_notifications_check_notification_access( bp_displayed_user_id(), $id ) ) {
    121121                return false;
    122122        }
    123123
  • src/bp-notifications/bp-notifications-template.php

     
    4242        }
    4343
    4444/**
    45  * Output the notifications permalink.
     45 * Output the notifications permalink for a user.
    4646 *
    4747 * @since 1.9.0
     48 * @since 2.6.0 Added $user_id as a parameter.
     49 *
     50 * @param int $user_id The user ID.
    4851 */
    49 function bp_notifications_permalink() {
    50         echo bp_get_notifications_permalink();
     52function bp_notifications_permalink( $user_id = 0 ) {
     53        echo bp_get_notifications_permalink( $user_id );
    5154}
    5255        /**
    5356         * Return the notifications permalink.
    5457         *
    5558         * @since 1.9.0
     59         * @since 2.6.0 Added $user_id as a parameter.
    5660         *
     61         * @param int $user_id The user ID.
    5762         * @return string Notifications permalink.
    5863         */
    59         function bp_get_notifications_permalink() {
    60                 $retval = trailingslashit( bp_loggedin_user_domain() . bp_get_notifications_slug() );
     64        function bp_get_notifications_permalink( $user_id = 0 ) {
     65                if ( 0 === $user_id ) {
     66                        $user_id = bp_loggedin_user_id();
     67                        $domain  = bp_loggedin_user_domain();
     68                } else {
     69                        $domain = bp_core_get_user_domain( (int) $user_id );
     70                }
     71
     72                $retval = trailingslashit( $domain . bp_get_notifications_slug() );
    6173
    6274                /**
    6375                 * Filters the notifications permalink.
    6476                 *
    6577                 * @since 1.9.0
     78                 * @since 2.6.0 Added $user_id as a parameter.
    6679                 *
    67                  * @param string $retval Permalink for the notifications.
     80                 * @param string $retval  Permalink for the notifications.
     81                 * @param int    $user_id The user ID.
    6882                 */
    69                 return apply_filters( 'bp_get_notifications_permalink', $retval );
     83                return apply_filters( 'bp_get_notifications_permalink', $retval, $user_id );
    7084        }
    7185
    7286/**
    73  * Output the unread notifications permalink.
     87 * Output the unread notifications permalink for a user.
    7488 *
    7589 * @since 1.9.0
     90 * @since 2.6.0 Added $user_id as a parameter.
     91 *
     92 * @param int $user_id The user ID.
    7693 */
    77 function bp_notifications_unread_permalink() {
    78         echo bp_get_notifications_unread_permalink();
     94function bp_notifications_unread_permalink( $user_id = 0 ) {
     95        echo bp_get_notifications_unread_permalink( $user_id );
    7996}
    8097        /**
    8198         * Return the unread notifications permalink.
    8299         *
    83          * @since 1.9.0
     100         * @since 2.6.0 Added $user_id as a parameter.
    84101         *
     102         * @param int $user_id The user ID.
    85103         * @return string Unread notifications permalink.
    86104         */
    87         function bp_get_notifications_unread_permalink() {
    88                 $retval = trailingslashit( bp_loggedin_user_domain() . bp_get_notifications_slug() . '/unread' );
     105        function bp_get_notifications_unread_permalink( $user_id = 0 ) {
     106                if ( 0 === $user_id ) {
     107                        $user_id = bp_loggedin_user_id();
     108                        $domain  = bp_loggedin_user_domain();
     109                } else {
     110                        $domain = bp_core_get_user_domain( (int) $user_id );
     111                }
     112
     113                $retval = trailingslashit( $domain . bp_get_notifications_slug() . '/unread' );
    89114
    90115                /**
    91116                 * Filters the unread notifications permalink.
    92117                 *
    93118                 * @since 1.9.0
     119                 * @since 2.6.0 Added $user_id as a parameter.
    94120                 *
    95                  * @param string $retval Permalink for the unread notifications.
     121                 * @param string $retval  Permalink for the unread notifications.
     122                 * @param int    $user_id The user ID.
    96123                 */
    97                 return apply_filters( 'bp_get_notifications_unread_permalink', $retval );
     124                return apply_filters( 'bp_get_notifications_unread_permalink', $retval, $user_id );
    98125        }
    99126
    100127/**
    101  * Output the read notifications permalink.
     128 * Output the read notifications permalink for a user.
    102129 *
    103130 * @since 1.9.0
     131 * @since 2.6.0 Added $user_id as a parameter.
     132 *
     133 * @param int $user_id The user ID.
    104134 */
    105 function bp_notifications_read_permalink() {
    106         echo bp_get_notifications_read_permalink();
     135function bp_notifications_read_permalink( $user_id = 0 ) {
     136        echo bp_get_notifications_read_permalink( $user_id );
    107137}
    108138        /**
    109139         * Return the read notifications permalink.
     
    112142         *
    113143         * @return string Read notifications permalink.
    114144         */
    115         function bp_get_notifications_read_permalink() {
    116                 $retval = trailingslashit( bp_loggedin_user_domain() . bp_get_notifications_slug() . '/read' );
     145        function bp_get_notifications_read_permalink( $user_id = 0 ) {
     146                if ( 0 === $user_id ) {
     147                        $user_id = bp_loggedin_user_id();
     148                        $domain  = bp_loggedin_user_domain();
     149                } else {
     150                        $domain = bp_core_get_user_domain( (int) $user_id );
     151                }
     152
     153                $retval = trailingslashit( $domain . bp_get_notifications_slug() . '/read' );
    117154
    118155                /**
    119156                 * Filters the read notifications permalink.
    120157                 *
    121158                 * @since 1.9.0
     159                 * @since 2.6.0 Added $user_id as a parameter.
    122160                 *
    123                  * @param string $retval Permalink for the read notifications.
     161                 * @param string $retval  Permalink for the read notifications.
     162                 * @param int    $user_id The user ID.
    124163                 */
    125                 return apply_filters( 'bp_get_notifications_unread_permalink', $retval );
     164                return apply_filters( 'bp_get_notifications_unread_permalink', $retval, $user_id );
    126165        }
    127166
    128167/** The Loop ******************************************************************/
     
    498537 * Output the mark read link for the current notification.
    499538 *
    500539 * @since 1.9.0
     540 * @since 2.6.0 Added $user_id as a parameter.
    501541 *
    502  * @uses bp_get_the_notification_mark_read_link()
     542 * @param int $user_id The user ID.
    503543 */
    504 function bp_the_notification_mark_read_link() {
    505         echo bp_get_the_notification_mark_read_link();
     544function bp_the_notification_mark_read_link( $user_id = 0 ) {
     545        echo bp_get_the_notification_mark_read_link( $user_id );
    506546}
    507547        /**
    508548         * Return the mark read link for the current notification.
    509549         *
    510550         * @since 1.9.0
     551         * @since 2.6.0 Added $user_id as a parameter.
    511552         *
     553         * @param int $user_id The user ID.
    512554         * @return string
    513555         */
    514         function bp_get_the_notification_mark_read_link() {
     556        function bp_get_the_notification_mark_read_link( $user_id = 0 ) {
     557                // Set default user ID to use.
     558                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
    515559
    516560                // Start the output buffer.
    517561                ob_start(); ?>
    518562
    519                 <a href="<?php bp_the_notification_mark_read_url(); ?>" class="mark-read primary"><?php _e( 'Read', 'buddypress' ); ?></a>
     563                <a href="<?php bp_the_notification_mark_read_url( $user_id ); ?>" class="mark-read primary"><?php _e( 'Read', 'buddypress' ); ?></a>
    520564
    521565                <?php $retval = ob_get_clean();
    522566
     
    524568                 * Filters the mark read link for the current notification.
    525569                 *
    526570                 * @since 1.9.0
     571                 * @since 2.6.0 Added $user_id as a parameter.
    527572                 *
    528                  * @param string $retval HTML for the mark read link for the current notification.
     573                 * @param string $retval  HTML for the mark read link for the current notification.
     574                 * @param int    $user_id The user ID.
    529575                 */
    530                 return apply_filters( 'bp_get_the_notification_mark_read_link', $retval );
     576                return apply_filters( 'bp_get_the_notification_mark_read_link', $retval, $user_id );
    531577        }
    532578
    533579/**
     
    536582 * Since this function directly outputs a URL, it is escaped.
    537583 *
    538584 * @since 2.1.0
     585 * @since 2.6.0 Added $user_id as a parameter.
    539586 *
    540  * @uses bp_get_the_notification_mark_read_url()
     587 * @param int $user_id The user ID.
    541588 */
    542 function bp_the_notification_mark_read_url() {
    543         echo esc_url( bp_get_the_notification_mark_read_url() );
     589function bp_the_notification_mark_read_url( $user_id = 0 ) {
     590        echo esc_url( bp_get_the_notification_mark_read_url( $user_id ) );
    544591}
    545592        /**
    546593         * Return the URL used for marking a single notification as read.
    547594         *
    548595         * @since 2.1.0
     596         * @since 2.6.0 Added $user_id as a parameter.
    549597         *
     598         * @param int $user_id The user ID.
    550599         * @return string
    551600         */
    552         function bp_get_the_notification_mark_read_url() {
     601        function bp_get_the_notification_mark_read_url( $user_id = 0 ) {
    553602
    554603                // Get the notification ID.
    555604                $id   = bp_get_the_notification_id();
     
    560609                        'notification_id' => $id
    561610                );
    562611
     612                // Set default user ID to use.
     613                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
     614
    563615                // Add the args to the URL.
    564                 $url = add_query_arg( $args, bp_get_notifications_unread_permalink() );
     616                $url = add_query_arg( $args, bp_get_notifications_unread_permalink( $user_id ) );
    565617
    566618                // Add the nonce.
    567619                $url = wp_nonce_url( $url, 'bp_notification_mark_read_' . $id );
     
    570622                 * Filters the URL used for marking a single notification as read.
    571623                 *
    572624                 * @since 2.1.0
    573                  *
    574                  * @param string $url URL to use for marking the single notification as read.
     625                 * @since 2.6.0 Added $user_id as a parameter.
     626\                *
     627                 * @param string $url     URL to use for marking the single notification as read.
     628                 * @param int    $user_id The user ID.
    575629                 */
    576                 return apply_filters( 'bp_get_the_notification_mark_read_url', $url );
     630                return apply_filters( 'bp_get_the_notification_mark_read_url', $url, $user_id );
    577631        }
    578632
    579633/**
    580634 * Output the mark unread link for the current notification.
    581635 *
    582636 * @since 1.9.0
     637 * @since 2.6.0 Added $user_id as a parameter.
    583638 *
    584  * @uses bp_get_the_notification_mark_unread_link()
     639 * @param int $user_id The user ID.
    585640 */
    586 function bp_the_notification_mark_unread_link() {
     641function bp_the_notification_mark_unread_link( $user_id = 0 ) {
    587642        echo bp_get_the_notification_mark_unread_link();
    588643}
    589644        /**
    590645         * Return the mark unread link for the current notification.
    591646         *
    592647         * @since 1.9.0
     648         * @since 2.6.0 Added $user_id as a parameter.
    593649         *
     650         * @param int $user_id The user ID.
    594651         * @return string
    595652         */
    596         function bp_get_the_notification_mark_unread_link() {
     653        function bp_get_the_notification_mark_unread_link( $user_id = 0 ) {
     654                // Set default user ID to use.
     655                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
    597656
    598657                // Start the output buffer.
    599658                ob_start(); ?>
    600659
    601                 <a href="<?php bp_the_notification_mark_unread_url(); ?>" class="mark-unread primary"><?php _ex( 'Unread',  'Notification screen action', 'buddypress' ); ?></a>
     660                <a href="<?php bp_the_notification_mark_unread_url( $user_id ); ?>" class="mark-unread primary"><?php _ex( 'Unread',  'Notification screen action', 'buddypress' ); ?></a>
    602661
    603662                <?php $retval = ob_get_clean();
    604663
     
    606665                 * Filters the link used for marking a single notification as unread.
    607666                 *
    608667                 * @since 1.9.0
     668                 * @since 2.6.0 Added $user_id as a parameter.
    609669                 *
    610                  * @param string $retval HTML for the mark unread link for the current notification.
     670                 * @param string $retval  HTML for the mark unread link for the current notification.
     671                 * @param int    $user_id The user ID.
    611672                 */
    612                 return apply_filters( 'bp_get_the_notification_mark_unread_link', $retval );
     673                return apply_filters( 'bp_get_the_notification_mark_unread_link', $retval, $user_id );
    613674        }
    614675
    615676/**
     
    618679 * Since this function directly outputs a URL, it is escaped.
    619680 *
    620681 * @since 2.1.0
     682 * @since 2.6.0 Added $user_id as a parameter.
    621683 *
    622  * @uses bp_get_the_notification_mark_unread_url()
     684 * @param int $user_id The user ID.
    623685 */
    624 function bp_the_notification_mark_unread_url() {
    625         echo esc_url( bp_get_the_notification_mark_unread_url() );
     686function bp_the_notification_mark_unread_url( $user_id = 0 ) {
     687        echo esc_url( bp_get_the_notification_mark_unread_url( $user_id ) );
    626688}
    627689        /**
    628690         * Return the URL used for marking a single notification as unread.
    629691         *
    630692         * @since 2.1.0
     693         * @since 2.6.0 Added $user_id as a parameter.
    631694         *
     695         * @param int $user_id The user ID.
    632696         * @return string
    633697         */
    634         function bp_get_the_notification_mark_unread_url() {
     698        function bp_get_the_notification_mark_unread_url( $user_id = 0 ) {
    635699
    636700                // Get the notification ID.
    637701                $id   = bp_get_the_notification_id();
     
    642706                        'notification_id' => $id
    643707                );
    644708
     709                // Set default user ID to use.
     710                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
     711
    645712                // Add the args to the URL.
    646                 $url = add_query_arg( $args, bp_get_notifications_read_permalink() );
     713                $url = add_query_arg( $args, bp_get_notifications_read_permalink( $user_id ) );
    647714
    648715                // Add the nonce.
    649716                $url = wp_nonce_url( $url, 'bp_notification_mark_unread_' . $id );
     
    652719                 * Filters the URL used for marking a single notification as unread.
    653720                 *
    654721                 * @since 2.1.0
     722                 * @since 2.6.0 Added $user_id as a parameter.
    655723                 *
    656                  * @param string $url URL to use for marking the single notification as unread.
     724                 * @param string $url     URL to use for marking the single notification as unread.
     725                 * @param int    $user_id The user ID.
    657726                 */
    658                 return apply_filters( 'bp_get_the_notification_mark_unread_url', $url );
     727                return apply_filters( 'bp_get_the_notification_mark_unread_url', $url, $user_id );
    659728        }
    660729
    661730/**
    662731 * Output the mark link for the current notification.
    663732 *
    664733 * @since 1.9.0
     734 * @since 2.6.0 Added $user_id as a parameter.
    665735 *
    666  * @uses bp_get_the_notification_mark_unread_link()
     736 * @param int $user_id The user ID.
    667737 */
    668 function bp_the_notification_mark_link() {
    669         echo bp_get_the_notification_mark_link();
     738function bp_the_notification_mark_link( $user_id = 0 ) {
     739        echo bp_get_the_notification_mark_link( $user_id );
    670740}
    671741        /**
    672742         * Return the mark link for the current notification.
    673743         *
    674744         * @since 1.9.0
     745         * @since 2.6.0 Added $user_id as a parameter.
    675746         *
     747         * @param int $user_id The user ID.
    676748         * @return string
    677749         */
    678         function bp_get_the_notification_mark_link() {
     750        function bp_get_the_notification_mark_link( $user_id = 0 ) {
     751                // Set default user ID to use.
     752                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
    679753
    680754                if ( bp_is_current_action( 'read' ) ) {
    681                         $retval = bp_get_the_notification_mark_unread_link();
     755                        $retval = bp_get_the_notification_mark_unread_link( $user_id );
    682756                } else {
    683                         $retval = bp_get_the_notification_mark_read_link();
     757                        $retval = bp_get_the_notification_mark_read_link( $user_id );
    684758                }
    685759
    686760                /**
    687761                 * Filters the mark link for the current notification.
    688762                 *
    689763                 * @since 1.9.0
     764                 * @since 2.6.0 Added $user_id as a parameter.
    690765                 *
    691                  * @param string $retval The mark link for the current notification.
     766                 * @param string $retval  The mark link for the current notification.
     767                 * @param int    $user_id The user ID.
    692768                 */
    693                 return apply_filters( 'bp_get_the_notification_mark_link', $retval );
     769                return apply_filters( 'bp_get_the_notification_mark_link', $retval, $user_id );
    694770        }
    695771
    696772/**
    697773 * Output the delete link for the current notification.
    698774 *
    699775 * @since 1.9.0
     776 * @since 2.6.0 Added $user_id as a parameter.
    700777 *
    701  * @uses bp_get_the_notification_delete_link()
     778 * @param int $user_id The user ID.
    702779 */
    703 function bp_the_notification_delete_link() {
    704         echo bp_get_the_notification_delete_link();
     780function bp_the_notification_delete_link( $user_id = 0 ) {
     781        echo bp_get_the_notification_delete_link( $user_id );
    705782}
    706783        /**
    707784         * Return the delete link for the current notification.
    708785         *
    709786         * @since 1.9.0
     787         * @since 2.6.0 Added $user_id as a parameter.
    710788         *
     789         * @param int $user_id The user ID.
    711790         * @return string
    712791         */
    713         function bp_get_the_notification_delete_link() {
     792        function bp_get_the_notification_delete_link( $user_id = 0 ) {
     793                // Set default user ID to use.
     794                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
    714795
    715796                // Start the output buffer.
    716797                ob_start(); ?>
     
    723804                 * Filters the delete link for the current notification.
    724805                 *
    725806                 * @since 1.9.0
     807                 * @since 2.6.0 Added $user_id as a parameter.
    726808                 *
    727                  * @param string $retval HTML for the delete link for the current notification.
     809                 * @param string $retval  HTML for the delete link for the current notification.
     810                 * @param int    $user_id The user ID.
    728811                 */
    729                 return apply_filters( 'bp_get_the_notification_delete_link', $retval );
     812                return apply_filters( 'bp_get_the_notification_delete_link', $retval, $user_id );
    730813        }
    731814
    732815/**
     
    735818 * Since this function directly outputs a URL, it is escaped.
    736819 *
    737820 * @since 2.1.0
     821 * @since 2.6.0 Added $user_id as a parameter.
    738822 *
    739  * @uses esc_url()
    740  * @uses bp_get_the_notification_delete_url()
     823 * @param int $user_id The user ID.
    741824 */
    742 function bp_the_notification_delete_url() {
    743         echo esc_url( bp_get_the_notification_delete_url() );
     825function bp_the_notification_delete_url( $user_id = 0 ) {
     826        echo esc_url( bp_get_the_notification_delete_url( $user_id ) );
    744827}
    745828        /**
    746829         * Return the URL used for deleting a single notification.
    747830         *
    748831         * @since 2.1.0
     832         * @since 2.6.0 Added $user_id as a parameter.
    749833         *
     834         * @param int $user_id The user ID.
    750835         * @return string
    751836         */
    752         function bp_get_the_notification_delete_url() {
     837        function bp_get_the_notification_delete_url( $user_id = 0 ) {
     838                // Set default user ID to use.
     839                $user_id = 0 === $user_id ? bp_displayed_user_id() : $user_id;
    753840
    754841                // URL to add nonce to.
    755842                if ( bp_is_current_action( 'unread' ) ) {
    756                         $link = bp_get_notifications_unread_permalink();
     843                        $link = bp_get_notifications_unread_permalink( $user_id );
    757844                } elseif ( bp_is_current_action( 'read' ) ) {
    758                         $link = bp_get_notifications_read_permalink();
     845                        $link = bp_get_notifications_read_permalink( $user_id );
    759846                }
    760847
    761848                // Get the ID.
     
    777864                 * Filters the URL used for deleting a single notification.
    778865                 *
    779866                 * @since 2.1.0
     867                 * @since 2.6.0 Added $user_id as a parameter.
    780868                 *
    781                  * @param string $url URL used for deleting a single notification.
     869                 * @param string $url     URL used for deleting a single notification.
     870                 * @param int    $user_id The user ID.
    782871                 */
    783                 return apply_filters( 'bp_get_the_notification_delete_url', $url );
     872                return apply_filters( 'bp_get_the_notification_delete_url', $url, $user_id );
    784873        }
    785874
    786875/**
    787876 * Output the action links for the current notification.
    788877 *
    789878 * @since 1.9.0
     879 * @since 2.6.0 Added $user_id as a parameter to $args.
    790880 *
    791881 * @param array|string $args Array of arguments.
    792882 */
     
    797887         * Return the action links for the current notification.
    798888         *
    799889         * @since 1.9.0
     890         * @since 2.6.0 Added $user_id as a parameter to $args.
    800891         *
    801892         * @param array|string $args {
    802          *     @type string $before HTML before the links.
    803          *     @type string $after  HTML after the links.
    804          *     @type string $sep    HTML between the links.
    805          *     @type array  $links  Array of links to implode by 'sep'.
     893         *     @type string $before  HTML before the links.
     894         *     @type string $after   HTML after the links.
     895         *     @type string $sep     HTML between the links.
     896         *     @type array  $links   Array of links to implode by 'sep'.
     897         *     @type int    $user_id User ID to fetch action links for. Defaults to displayed user ID.
    806898         * }
    807899         * @return string HTML links for actions to take on single notifications.
    808900         */
    809901        function bp_get_the_notification_action_links( $args = '' ) {
     902                // Set default user ID to use.
     903                $user_id = isset( $args['user_id'] ) ? $args['user_id'] : bp_displayed_user_id();
    810904
    811905                // Parse.
    812906                $r = wp_parse_args( $args, array(
     
    814908                        'after'  => '',
    815909                        'sep'    => ' | ',
    816910                        'links'  => array(
    817                                 bp_get_the_notification_mark_link(),
    818                                 bp_get_the_notification_delete_link()
     911                                bp_get_the_notification_mark_link( $user_id ),
     912                                bp_get_the_notification_delete_link( $user_id )
    819913                        )
    820914                ) );
    821915