Skip to:
Content

BuddyPress.org

Changeset 8194


Ignore:
Timestamp:
03/28/2014 11:35:24 PM (13 years ago)
Author:
r-a-y
Message:

Activity dashboard: Check if activity item can be replied to.

If activity commenting is enabled for blog posts, in the activity
dashboard, we have to check whether or not the activity item can be
replied to.

This commit adds the class method - BP_Activity_List_Table::can_comment() -
to check the current activity item in the activity list table.

See #5130.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/bp-activity-admin.php

    r8193 r8194  
    13821382                // Reply - javascript only; implemented by AJAX.
    13831383                if ( 'spam' != $item_status ) {
    1384                         $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) );
     1384                        if ( $this->can_comment( $item ) ) {
     1385                                $actions['reply'] = sprintf( '<a href="#" class="reply hide-if-no-js">%s</a>', __( 'Reply', 'buddypress' ) );
     1386                        } else {
     1387                                $actions['reply'] = sprintf( '<span class="form-input-tip" title="%s">%s</span>', __( 'Replies are disabled for this activity item', 'buddypress' ), __( 'Replies disabled', 'buddypress' ) );
     1388                        }
    13851389
    13861390                        // Edit
    … …  
    14891493
    14901494        /**
     1495         * Checks if an activity item can be replied to.
     1496         *
     1497         * This method merges functionality from {@link bp_activity_can_comment()} and
     1498         * {@link bp_blogs_disable_activity_commenting()}.  This is done because the activity
     1499         * list table doesn't use a BuddyPress activity loop, which prevents those
     1500         * functions from working as intended.
     1501         *
     1502         * @since BuddyPress (2.0.0)
     1503         *
     1504         * @param array $item An array version of the BP_Activity_Activity object.
     1505         * @return bool
     1506         */
     1507        protected function can_comment( $item  ) {
     1508                $can_comment = true;
     1509
     1510                if ( $this->disable_blogforum_comments ) {
     1511                        switch ( $item['type'] ) {
     1512                                case 'new_blog_post' :
     1513                                case 'new_blog_comment' :
     1514                                case 'new_forum_topic' :
     1515                                case 'new_forum_post' :
     1516                                        $can_comment = false;
     1517                                        break;
     1518                        }
     1519
     1520                // activity comments supported
     1521                } else {
     1522                        // activity comment
     1523                        if ( 'activity_comment' == $item['type'] ) {
     1524                                // blogs
     1525                                if ( bp_is_active( 'blogs' ) ) {
     1526                                        // grab the parent activity entry
     1527                                        $parent_activity = new BP_Activity_Activity( $item['item_id'] );
     1528
     1529                                        // fetch blog post comment depth and if the blog post's comments are open
     1530                                        bp_blogs_setup_activity_loop_globals( $parent_activity );
     1531
     1532                                        // check if the activity item can be replied to
     1533                                        if ( false === bp_blogs_can_comment_reply( true, $item ) ) {
     1534                                                $can_comment = false;
     1535                                        }
     1536                                }
     1537
     1538                        // blog post
     1539                        } elseif ( 'new_blog_post' == $item['type'] ) {
     1540                                if ( bp_is_active( 'blogs' ) ) {
     1541                                        bp_blogs_setup_activity_loop_globals( (object) $item );
     1542
     1543                                        if ( empty( buddypress()->blogs->allow_comments[$item['id']] ) ) {
     1544                                                $can_comment = false;
     1545                                        }
     1546                                }
     1547                        }
     1548                }
     1549
     1550                return apply_filters( 'bp_activity_list_table_can_comment', $can_comment );
     1551        }
     1552
     1553        /**
    14911554         * Flatten the activity array.
    14921555         *
Note: See TracChangeset for help on using the changeset viewer.