[buddypress-trac] [BuddyPress Trac] #7218: Only load component action and screen code when we're on the component's page

buddypress-trac noreply at wordpress.org
Mon Feb 26 04:40:38 UTC 2018

#7218: Only load component action and screen code when we're on the component's
 Reporter:  r-a-y        |       Owner:
     Type:  enhancement  |      Status:  reopened
 Priority:  normal       |   Milestone:  3.0
Component:  Core         |     Version:
 Severity:  normal       |  Resolution:
 Keywords:  has-patch    |
Changes (by r-a-y):

 * keywords:  has-patch early => has-patch


 `activity-original.patch` is my original patch updated for trunk.

 `activity-ray-ocd.patch` is basically my OCD version of my original idea.
 `bp-activity-actions.php` and `bp-activity-screens.php` have been split up
 into separate files in the new `bp-activity/actions/` and `bp-
 activity/screens/` directories and these files are loaded depending on the
 current page.  This is the patch I'm recommending.  Note: I haven't added
 PHPDoc file headers for each new file yet, but I'll do so once we're ready
 to commit.

 For unit tests, I ran into a bug with our mention unit tests (#7703).  The
 patch in that ticket should be committed before applying this patch and
 running PHPUnit.  Also, PHPUnit does not like conditional file loading
 when running multiple tests.  For an example, see
 works-but-multiple-methods-fail.  It appears that all files must be
 included at once before running our unit test suite.  Instead of
 cluttering up the `BP_Activity_Component` class with this PHPUnit logic,
 I'm including all action and screen code in our PHPUnit loader file.


 For the `late_includes()` method, as I mentioned in the ticket
 description, I've chosen to run this on the `'bp_setup_canonical_stack'`
 hook at priority `20` because that is the earliest when
 `bp_current_component()` and `bp_current_action()` is fully set up and
 should be safe to use conditional fucntions like
 `bp_is_current_component()`.  @boonebgorges chose `'bp_template_redirect'`
 at priority `0`, which runs later, but this might be too late for plugins
 that have chosen to remove hooks on `'bp_init'` at the default priority of

 Also in Boone's `7218.diff`, I'm not a fan of the existing
 `BP_Component::includes()` method as it does too many checks for
 superfluous files (view #BB3193 to see what I mean).  So I'm not a fan of
 re-using this logic for the `late_includes()` method.  My
 `late_includes()` method just includes files with the `require` line, no
 need to be fancy here.

 Let me know what you think.

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/7218#comment:58>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list