[wp-trac] [WordPress Trac] #14046: WP_User constructor not working as expected if called with 2 args or its phpdoc is not clear
WordPress Trac
wp-trac at lists.automattic.com
Tue Jun 22 17:03:27 UTC 2010
#14046: WP_User constructor not working as expected if called with 2 args or its
phpdoc is not clear
-----------------------------+----------------------------------------------
Reporter: francescolaffi | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Unassigned
Component: Role/Capability | Version: 3.0
Severity: normal | Keywords: dev-feedback has-patch
-----------------------------+----------------------------------------------
WP_User constructor can be called with only userid, with only username or
with both of them, the bug I found if it's when calling it with only
username.
When calling with only username the constructor work only if the user_name
is placed in the first arg, but it could not work if the first arg is
leaved empty and username is placed in second arg.
e.g.:
I have the user with username 'foobar' and user id 14
new WP_User(14) works
new WP_User(14,'foobar') works
new WP_User('foobar') works
new WP_User(0,'foobar') works
new WP_User(null,'foobar') doesn't work
new WP_User(false,'foobar') doesn't work
Probably the constructor is intended to be used only with the username in
the first arg if the userid is not known (and its not really clear in the
phpdoc that it should not be called with null,$username ), but the problem
is that I found it called with null in the first argoument and the
username in the second argoument in the wp3 core (i.e. is_site_admin
doesn't work if called with the username as arg because of this bug, but
of course I haven't checked all the references to the constructor in the
core).
I see 2 possible solutions:
1) make WP_User constructor works if called with first argoument null and
username in second argoument.
2) decide this is the way it should work, clearify it's doc and search all
the improperly calls of in the code and correct them.
My 2 cents: go with 1) because so the constructor is more flexible and
it's only a matter of adding a condition to an if statement, instead 2)
means checking a lot of code (it's possible that the result it's that only
is_site_admin improperly uses WP_User constructor, and btw is_site_admin
doesn't actually need the WP_User obj, it could just get userdata with
get_userdatabylogin ).
I'm going to attach the 1-line diff for the 1st solution
--
Ticket URL: <http://core.trac.wordpress.org/ticket/14046>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list