diff --git a/classes/WhatDidTheySayAdmin.inc b/classes/WhatDidTheySayAdmin.inc index 40f8c53..e078f28 100644 --- a/classes/WhatDidTheySayAdmin.inc +++ b/classes/WhatDidTheySayAdmin.inc @@ -452,7 +452,9 @@ class WhatDidTheySayAdmin { * @param object $capability_name * @return array The list of capabilities this user now has. */ - function user_has_cap($capabilities, $requested_capabilities, $capability_name) { + function user_has_cap($capabilities, $requested_capabilities, $args) { + list($capability_name, $user_id) = $args; + $options = get_option('what-did-they-say-options'); if (is_array($options)) { $role_cascade = array('subscriber', 'contributor', 'author', 'editor', 'administrator'); @@ -471,6 +473,16 @@ class WhatDidTheySayAdmin { } } + $user_capabilities = get_usermeta($user_id, 'transcript_capabilities'); + + if (is_array($user_capabilities)) { + foreach ($requested_capabilities as $requested_capability) { + if (isset($user_capabilities[$requested_capability])) { + $capabilities[$requested_capability] = true; + } + } + } + return $capabilities; } @@ -788,6 +800,39 @@ class WhatDidTheySayAdmin { return $updated; } + /** + * Update per-user capabilities. + */ + function handle_update_user_capabilities($info) { + global $wpdb; + + $updated = false; + if (current_user_can('edit_users')) { + $users = $wpdb->get_results("SELECT ID, user_login from $wpdb->users ORDER BY user_login"); + + foreach ((array)$users as $user) { + $user_capabilities = array(); + + foreach (array_keys($this->capabilities) as $key) { + if (isset($info['user_capabilities'][$user->ID])) { + if (isset($info['user_capabilities'][$user->ID][$key])) { + $user_capabilities[$key] = true; + } + } + } + + if (!empty($user_capabilities)) { + update_usermeta($user->ID, 'transcript_capabilities', $user_capabilities); + } else { + delete_usermeta($user->ID, 'transcript_capabilities'); + } + } + + $updated = __('Per-user permissions updated.', 'what-did-they-say'); + } + return $updated; + } + /** * Handle resettings what-did-they-say-options. * @param array $info The part of the $_POST array for What Did They Say?!? diff --git a/classes/partials/_capabilities.inc b/classes/partials/_capabilities.inc index 16f1e77..db1e75e 100644 --- a/classes/partials/_capabilities.inc +++ b/classes/partials/_capabilities.inc @@ -47,11 +47,18 @@ if (!is_array($user_capabilities)) { $user_capabilities = array(); } ?> - user_login ?> + + ID, 20) ?> + user_login ?> + capabilities as $key => $label) { ?> @@ -61,7 +68,7 @@   - + diff --git a/what-did-they-say.pot b/what-did-they-say.pot index c682d68..55f1bd6 100644 --- a/what-did-they-say.pot +++ b/what-did-they-say.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: what-did-they-say 0.9.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-14 08:16-0400\n" +"POT-Creation-Date: 2009-10-14 20:49-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -650,6 +650,19 @@ msgstr "" msgid "Change capabilities" msgstr "" +#: classes/partials/_capabilities.inc:33 +msgid "Per-user Permissions" +msgstr "" + +#: classes/partials/_capabilities.inc:35 +msgid "" +"Give specified users permissions above and beyond their role permissions." +msgstr "" + +#: classes/partials/_capabilities.inc:64 +msgid "Update per-user permissions" +msgstr "" + #: classes/partials/_sample-transcript.inc:4 msgid "[scene-heading]Ext. The Old Man's House[/scene-heading]" msgstr ""