[buddypress-trac] [BuddyPress] #2023: BP_DISABLE_ADMIN_BAR should be checked for true and not just existence

buddypress-trac at lists.automattic.com buddypress-trac at lists.automattic.com
Fri Feb 26 09:26:43 UTC 2010

#2023: BP_DISABLE_ADMIN_BAR should be checked for true and not just existence
Reporter:  TobiasBg                |       Owner:       
    Type:  enhancement             |      Status:  new  
Priority:  minor                   |   Milestone:  1.2.2
Keywords:  has-patch dev-feedback  |  

Comment(by TobiasBg):

 Thanks for your follow-up, I have to object to some points however.

 > Your first quote is negated by your second quote. The code linked for
 the MULTISITE constant is fine, but the file in which your example is
 located contains 12 references to checks to {{{defined()}}} only checks.
 Two of these references are in the same line of code as your MULTISITE

 I don't really see where you get those 12 references from. I'll try to
 break it down:
 - WP_INSTALLING is an internal constant that is only defined by WP, not by
 a user (in e.g. wp-config.php). Therefore the check for existence is
 - E_DEPRECATED and E_RECOVERABLE_ERROR are PHP constants, if I'm not
 mistaken. Again nothing to be dealt with by the user. (The actual check
 for there value is most probably only needed by PHP internally.)
 - WP_LANG_DIR is not a boolean, but a string. Nothing to check there. And
 the defined() check is only to find out, if it still has to be set.
 - Same with LANG_DIR, WP_SITEURL, and WPMU_PLUGIN_DIR. The defined() are
 there to know that it is safe to try to use their values.
 - WP_ADMIN: The actual value is in the "return" clause. That's the same as
 checking for true/false and then returning that accordingly.
 - VHOST and SUNRISE are constants from WPMU that were left in the code for
 backward-compatibility to those installations of WPMU from before the
 merge in WP 3.0.
 (I don't have any background on them, but it's likely possible that they
 aren't booleans either, so that checking the value doesn't make sense.)
 To add on: MULTISITE is not fresh, unreleased code. It is being merged
 from an existing project (WPMU) that was not started by core devs (well,
 ok, now they are). That merge is not yet complete, so there might still be
 places where coding standards and common practices are not yet completely

 I hope these counter examples show enough how WP distincts between
 constants. To clarify my initial statement: WP checks for defined() &&
 value of boolean constants.
 (Actually, please see [http://core.trac.wordpress.org/ticket/12375
 #12375], which deals with the problem basically.)

 For your second argument: I know that there might be problems with already
 defined() constants in my example, but again: This would actually not
 affect anybody who is not trying to work with this. And mainly it is a
 disadvantage of using "constants" and not just of this special case.
 Nobody, who doesn't want to be affected, won't even notice the change.
 The patch just adds more possibilities. I know that there are ways for
 achieving my initial goal without setting the constant to false (like your
 remove_action() code), but this is not the issue here.
 The issue is that I have submitted a patch that enhances the current
 behavior by adding more possibilities and actually respecting the constant
 without bringing disadvantages.

 > I just found that code today, as kept thinking there had to be some
 other way to do this without the need of the constant, or core code
 changes. I promise at no time was I trying to be a jerk, and I wasn't
 holding out on you with the {{{remove_action}}} code just for the sake of
 arguing. Hope this is solution does what you need.

 Right, your solution works, and so does my current. But again, the issue
 or goal of this ticket is not to find a workaround for this, but to
 "attack the base", i.e. the code that makes workarounds necessary, and
 enhance it so that workarounds are not needed. (BTW: All those workarounds
 add much more overhead, code lines, and headaches) than the additional
 check in the patch.)
 I'm also not trying to be a jerk and won't fight forever for this to go
 in. I just thought that it can enhance a developer's experience with BP.
 Also the main issue (missing checks for actual boolean values) is probably
 not only there with this constant, but it's where I first stumbled upon
 it, and it might be a good start to check for the same thing with other

Ticket URL: <http://trac.buddypress.org/ticket/2023#comment:6>
BuddyPress <http://buddypress.org/>

More information about the buddypress-trac mailing list