Commit Graph

166 Commits

Author SHA1 Message Date
Ryan Boren 62b6474e77 When using WP_User::set_role() to set the role, don't unset all caps when the requested role matches the current role.
Props scribu, jammitch
fixes #18932


git-svn-id: https://develop.svn.wordpress.org/trunk@22418 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-07 17:16:37 +00:00
Dion Hulse 3d40fbad80 Fix a PHP Notice when attempting to Add or remove capabilities from nonexistant roles. Props SergeyBiryukov. Fixes #18461
git-svn-id: https://develop.svn.wordpress.org/trunk@22354 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-31 23:18:33 +00:00
Ryan Boren 1d02d4bf27 Return WP_User objects when querying 'all' fields with WP_User_Query.
Allow passing stdClass or WP_User to the WP_User constructor.

fixes #22057


git-svn-id: https://develop.svn.wordpress.org/trunk@22248 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-16 20:05:40 +00:00
Ryan Boren 7ba5099795 Objects no longer need to be explicitly passed by ref to call_user_func*() to be callable. Props wonderboymusic. fixes #21865
git-svn-id: https://develop.svn.wordpress.org/trunk@22118 602fd350-edb4-49c9-b593-d223f7449a82
2012-10-04 20:00:16 +00:00
Ryan Boren 48484428a2 Introduce create_posts meta capability. Props scribu, nacin, casben79. see #16714
git-svn-id: https://develop.svn.wordpress.org/trunk@22060 602fd350-edb4-49c9-b593-d223f7449a82
2012-09-27 15:33:19 +00:00
Ryan Boren 9d798e26d4 Add publish_post meta cap. Props nacin. fixes #21288
git-svn-id: https://develop.svn.wordpress.org/trunk@22056 602fd350-edb4-49c9-b593-d223f7449a82
2012-09-27 12:48:59 +00:00
Ryan Boren ad535df32e Allow remove_cap() to unset a negative capability. Props johnjamesjacoby. fixes #21786
git-svn-id: https://develop.svn.wordpress.org/trunk@21940 602fd350-edb4-49c9-b593-d223f7449a82
2012-09-21 13:41:43 +00:00
Andrew Nacin fee76161e3 Don't use hard-coded indexes when dealing with an array of roles. props elyobo. fixes #19222.
git-svn-id: https://develop.svn.wordpress.org/trunk@21866 602fd350-edb4-49c9-b593-d223f7449a82
2012-09-16 16:24:33 +00:00
Andrew Nacin d41d58d128 Move the optimization done to get_user_by() in [21376] higher up the stack, into map_meta_cap() and is_super_admin().
This provides nearly the same benefits without possibly receiving a stale object from get_userdata(),
which could affect authentication, and introduce side effects for plugins.

see #21120.



git-svn-id: https://develop.svn.wordpress.org/trunk@21563 602fd350-edb4-49c9-b593-d223f7449a82
2012-08-20 21:58:34 +00:00
Andrew Nacin 9931c1a45d Hide the link manager from the UI on upgrade, if the site has no links. New DB option, link_manager_enabled.
Enforce this by denying the 'manage_links' capability, which hides the All Links, Add New Link, and Link Categories screens. Hide WP_Widget_Links and the UI for the default_link_category as well.

Convert all references to 'posts and links' when handling reassignment on user deletion to just 'posts'.

see #21307.



git-svn-id: https://develop.svn.wordpress.org/trunk@21501 602fd350-edb4-49c9-b593-d223f7449a82
2012-08-13 16:18:42 +00:00
Ryan Boren 9580f65af6 Allow passing stdClass and WP_User to wp_insert_user() and wp_update_user(). Introduce WP_User::to_array(). Eliminate uses of get_object_vars() when passing to wp_*_user(). fixes #21429
git-svn-id: https://develop.svn.wordpress.org/trunk@21496 602fd350-edb4-49c9-b593-d223f7449a82
2012-08-10 15:36:54 +00:00
Ryan Boren 20a1def1c0 switch_to_blog() and restore_current_blog() housekeeping.
wp-includes/admin-bar.php:

* Replace get_admin_url() and get_home_url() with admin_url() and home_url() and place them inside a switch/restore. Likewise replace current_user_can_for_blog() with current_user_can(). This avoids doing multiple switch restores.

wp-includes/ms-blogs.php:

* Deprecate the $validate argument to switch_to_blog(). This avoids a not very necessary call to get_blog_details(), possibly saving a few queries.
* Use $_wp_switched and $_wp_switched_stack instead of $switched and $switched_stack to make it less likely these globals will be stomped.
* Use GLOBALS to access blog_id and other globals. I've preferred this style lately since it makes it obvious a global is being used and avoids global blog_id being stomped by a local variable.
* Lose some is_object() checks. wp_get_current_user() always returns an object, for example.
* Call the new WP_Roles::reinit() method.

wp-includes/class-wp-xmlrpc-server.php:

* Replace current_user_can_for_blog() with current_user_can() and move it inside the switch/restore pair. This eliminates a switch/restore.

wp-includes/capabilities.php:

* Use array_keys() instead of $role => $data since $data is unused. I *think* this is a bit faster.
* Introduce WP_Roles::reinit(). This reinitializes WP_Roles and is used after switch_to_blog() has already update the blog ID in the wpdb object. If a global roles array is being used instead of the db, reinit is skipped.
* current_user_can_for_blog() now does a switch/restore. It didn't before meaning it could be reinitializing the user with the wrong role information for the current blog.

wp-includes/ms-settings.php:

* Define $_wp_switched_stack and $_wp_switched. This way switch_to_blog() and restore_current_blog() can rely on it being set.

wp-settings.php:

* Instantiate the WP_Roles global. This was it is always defined during init. To remove the WP_Roles checks from WP_Role and WP_User this would probably have to move before plugins are loaded, which might not be a good thing.

wp-includes/functions.php:

* Update wp_upload_dir() to reference _wp_switched.



git-svn-id: https://develop.svn.wordpress.org/trunk@21485 602fd350-edb4-49c9-b593-d223f7449a82
2012-08-09 16:28:15 +00:00
Andrew Nacin a5c7405975 Move most instances of new WP_User to get_userdata(). see #21120.
git-svn-id: https://develop.svn.wordpress.org/trunk@21413 602fd350-edb4-49c9-b593-d223f7449a82
2012-08-03 01:06:05 +00:00
Andrew Nacin d69dda48ec Use get_userdata() rather than new WP_User in is_super_admin(), to take advantage of the performance improvements in [21376]. see #21120.
git-svn-id: https://develop.svn.wordpress.org/trunk@21377 602fd350-edb4-49c9-b593-d223f7449a82
2012-07-31 17:47:08 +00:00
Andrew Nacin cd7e3f097d Don't call get_userdata() every time for the current user in map_meta_cap()'s read_post, edit_post, and delete_post branches. see #21120.
git-svn-id: https://develop.svn.wordpress.org/trunk@21375 602fd350-edb4-49c9-b593-d223f7449a82
2012-07-31 17:39:14 +00:00
Andrew Nacin 4a23ebe03d Enforce multisite plugins menu preference in map_meta_cap(). This means a simple current_user_can('activate_plugins') check will handle the 'Enable administration menus' setting.
Remove bogus checks for enabling/disabling the 'themes' menu (something core does not handle out of the box) when in the network admin.

fixes #21123.



git-svn-id: https://develop.svn.wordpress.org/trunk@21198 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-30 12:40:25 +00:00
Andrew Nacin ffababf000 Remove 'fall through' points in map_meta_cap() as they can hide bugs.
git-svn-id: https://develop.svn.wordpress.org/trunk@21152 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-27 19:27:54 +00:00
Ryan Boren 257e455a50 Fix warning when processing read_post cap. Props duck_. fixes #20917
git-svn-id: https://develop.svn.wordpress.org/trunk@21060 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-12 13:50:51 +00:00
Ryan Boren e61ac6e607 Make read_post more useful. Map read_post to edit_post for posts with protected post states. This makes read_post work naturally for draft, future, and pending posts belonging to other users. If the current user cannot edit these non-public posts then the user should not be able to read them either.
git-svn-id: https://develop.svn.wordpress.org/trunk@21046 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-10 16:21:44 +00:00
Andrew Nacin fa3427a99a Update phpdoc for WP_User::has_cap(). props nunomorgadinho. see #19756.
git-svn-id: https://develop.svn.wordpress.org/trunk@20683 602fd350-edb4-49c9-b593-d223f7449a82
2012-05-02 14:17:04 +00:00
Andrew Nacin 29ca3e321a Do not block file mod/edit caps when DISALLOW_UNFILTERED_HTML is set. There are separate constants (DISALLOW_FILE_EDIT and DISALLOW_FILE_MODS for those). fixes #20488.
git-svn-id: https://develop.svn.wordpress.org/trunk@20534 602fd350-edb4-49c9-b593-d223f7449a82
2012-04-19 14:05:05 +00:00
Ryan Boren 6f9ceb2326 Introduce WP_User::exists(). see #20372
git-svn-id: https://develop.svn.wordpress.org/trunk@20378 602fd350-edb4-49c9-b593-d223f7449a82
2012-04-06 19:18:45 +00:00
Ryan Boren 2b186b0c45 Lose EOF ?>. Clean up EOF newlines. fixes #12307
git-svn-id: https://develop.svn.wordpress.org/trunk@19712 602fd350-edb4-49c9-b593-d223f7449a82
2012-01-08 17:01:11 +00:00
Ryan Boren 54067a5f20 Remove extraneous spaces. Props kenan3008, dimadin. fixes #19501 #19433
git-svn-id: https://develop.svn.wordpress.org/trunk@19596 602fd350-edb4-49c9-b593-d223f7449a82
2011-12-14 17:36:38 +00:00
Ryan Boren 676ba7043e Use one space, not two, after trailing punctuation. fixes #19537
git-svn-id: https://develop.svn.wordpress.org/trunk@19593 602fd350-edb4-49c9-b593-d223f7449a82
2011-12-13 23:45:31 +00:00
Jon Cave bde6461ff4 Provide back compat mapping for user_level, wp_usersettings and wp_usersettingstime properties of WP_User objects. Fixes #19265.
git-svn-id: https://develop.svn.wordpress.org/trunk@19325 602fd350-edb4-49c9-b593-d223f7449a82
2011-11-17 20:40:24 +00:00
Andrew Nacin f1bbad5d5b Remove dead code. empty() will catch anything that equals false.
git-svn-id: https://develop.svn.wordpress.org/trunk@19171 602fd350-edb4-49c9-b593-d223f7449a82
2011-11-05 13:35:48 +00:00
Ryan Boren 168e89007c Avoid 'Only variables should be assigned by reference' warning. Props arena. fixes #18867
git-svn-id: https://develop.svn.wordpress.org/trunk@18956 602fd350-edb4-49c9-b593-d223f7449a82
2011-10-12 20:41:06 +00:00
Ryan Boren b412d5f082 Don't stomp meta fields in wp_update_user(). Props scribu. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18909 602fd350-edb4-49c9-b593-d223f7449a82
2011-10-07 02:34:41 +00:00
Jon Cave 205aa5ba5c Fix typos in documentation (wp-includes/[a-h]). See #18560.
git-svn-id: https://develop.svn.wordpress.org/trunk@18633 602fd350-edb4-49c9-b593-d223f7449a82
2011-09-03 16:02:41 +00:00
Ryan Boren 9e2aa32657 Handle null user ID in the WP_User constructor. Props kawauso. fixes #17894
git-svn-id: https://develop.svn.wordpress.org/trunk@18598 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-24 19:47:35 +00:00
Ryan Boren 1d3e616495 Introduce metadata_exists(), WP_User::get_data_by(), WP_User::get(), WP_User::has_prop(). Don't fill user objects with meta. Eliminate data duplication in cache and memory. Props scribu. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18597 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-24 19:32:59 +00:00
Ryan Boren afe083447f Handle id back compat in isset magic method. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18515 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-05 20:54:08 +00:00
Ryan Boren eda7d43e85 Deprecate get_userdatabylogin() and get_user_by_email(). Props scribu. fixes #18333
git-svn-id: https://develop.svn.wordpress.org/trunk@18513 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-05 16:57:31 +00:00
Ryan Boren 15507ec835 Remove first_name and last_name properties. Props scribu. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18512 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-05 16:45:11 +00:00
Ryan Boren 35d92b5e1e Handle deprecation of id in __set(). Props scribu. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18506 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-04 15:42:38 +00:00
Ryan Boren 8eea785bcb Add magic get/set/isset methods to WP_User to avoid data duplication. Standardize on WP_User::ID. Props scribu. see #15458
git-svn-id: https://develop.svn.wordpress.org/trunk@18504 602fd350-edb4-49c9-b593-d223f7449a82
2011-08-04 03:09:27 +00:00
Ryan Boren 58d9d5ea5d Remove return by ref from get_role(). Props scribu, elyobo. fixes #18237
git-svn-id: https://develop.svn.wordpress.org/trunk@18476 602fd350-edb4-49c9-b593-d223f7449a82
2011-07-28 17:12:18 +00:00
Ryan Boren 6b5d8397b0 Introduce register_meta(), get_metadata_by_mid(), and *_post_meta capabilities. fixes #17850
git-svn-id: https://develop.svn.wordpress.org/trunk@18445 602fd350-edb4-49c9-b593-d223f7449a82
2011-07-20 22:04:35 +00:00
Mark Jaquith 9d6bb11571 Check parent caps for revisions. props aaroncampbell. fixes #17668
git-svn-id: https://develop.svn.wordpress.org/trunk@18200 602fd350-edb4-49c9-b593-d223f7449a82
2011-06-08 18:06:43 +00:00
Ryan Boren 9730cb8d15 Constructor cleanup. Props ocean90. fixes #16768
git-svn-id: https://develop.svn.wordpress.org/trunk@17771 602fd350-edb4-49c9-b593-d223f7449a82
2011-04-29 20:05:12 +00:00
Ryan Boren d470b22d59 Remove PHP4 constructors. Props hakre. see #16768
git-svn-id: https://develop.svn.wordpress.org/trunk@17604 602fd350-edb4-49c9-b593-d223f7449a82
2011-04-05 17:25:08 +00:00
Andrew Nacin 3a3d660a6e I have CDO. see #15779.
git-svn-id: https://develop.svn.wordpress.org/trunk@16910 602fd350-edb4-49c9-b593-d223f7449a82
2010-12-14 11:25:11 +00:00
Andrew Nacin 12da6006e0 Ensure the map_meta_cap filter receives the right cap when the map_meta_cap flag is false. fixes #15779.
git-svn-id: https://develop.svn.wordpress.org/trunk@16909 602fd350-edb4-49c9-b593-d223f7449a82
2010-12-14 11:22:32 +00:00
Ryan Boren c37f65296a Make sure create_users is strippped from blog admins for multisite setups where add_new_users is not enabled. see #15357
git-svn-id: https://develop.svn.wordpress.org/trunk@16551 602fd350-edb4-49c9-b593-d223f7449a82
2010-11-23 16:29:21 +00:00
Andrew Nacin b0abda23b6 Don't check post_type_supports in map_meta_cap. see #14122.
git-svn-id: https://develop.svn.wordpress.org/trunk@16422 602fd350-edb4-49c9-b593-d223f7449a82
2010-11-17 06:21:34 +00:00
Andrew Nacin 66d261ba84 Cripple capability_type. Produced inconsistent, janky meta cap mapping; now only acts as a capability base. see #14122.
git-svn-id: https://develop.svn.wordpress.org/trunk@16273 602fd350-edb4-49c9-b593-d223f7449a82
2010-11-10 14:50:14 +00:00
Ryan Boren 6fd3b61886 Always allow super admins to have create_users. see #15357
git-svn-id: https://develop.svn.wordpress.org/trunk@16264 602fd350-edb4-49c9-b593-d223f7449a82
2010-11-09 21:45:06 +00:00
Ryan Boren b8b7810f52 Introduce user_can(). Props simonwheatley. fixes #14602
git-svn-id: https://develop.svn.wordpress.org/trunk@16209 602fd350-edb4-49c9-b593-d223f7449a82
2010-11-05 17:04:46 +00:00
Ryan Boren efdb066697 Do not set role if it is the same. Props nickmomrik. fixes #14708
git-svn-id: https://develop.svn.wordpress.org/trunk@15919 602fd350-edb4-49c9-b593-d223f7449a82
2010-10-22 19:38:20 +00:00