diff --git a/classes/WhatDidTheySayAdmin.inc b/classes/WhatDidTheySayAdmin.inc index c63a0c5..1e94553 100644 --- a/classes/WhatDidTheySayAdmin.inc +++ b/classes/WhatDidTheySayAdmin.inc @@ -55,19 +55,23 @@ class WhatDidTheySayAdmin { return $result; } - /** - * Initialize the object. - */ - function init() { - global $wpdb; - + function _set_up_capabilities() { // set up capabilities $this->capabilities = array( 'submit_transcriptions' => __('Submit transcriptions to a post', 'what-did-they-say'), 'approve_transcriptions' => __('Approve transcriptions to a post', 'what-did-they-say'), 'change_languages' => __('Change the available languages', 'what-did-they-say') ); - + } + + /** + * Initialize the object. + */ + function init() { + global $wpdb; + + $this->_set_up_capabilities(); + // does this copy of wdts?!? reference new options? $options = get_option('what-did-they-say-options'); if (!is_array($options)) { @@ -173,8 +177,8 @@ class WhatDidTheySayAdmin { add_action('wp_footer', array(&$this, 'wp_footer')); } - // sidebar widget - wp_register_sidebar_widget('what-did-they-say', __('What Did They Say?!? Transcript', 'what-did-they-say'), array(&$this, 'transcript_sidebar_widget'), array('description' => __('Show the transcript for the current post.', 'what-did-they-say'))); + // sidebar widget + wp_register_sidebar_widget('what-did-they-say', __('What Did They Say?!? Transcript', 'what-did-they-say'), array(&$this, 'transcript_sidebar_widget'), array('description' => __('Show the transcript for the current post.', 'what-did-they-say'))); // handle form submission if (isset($_REQUEST['wdts'])) { @@ -203,9 +207,9 @@ class WhatDidTheySayAdmin { if (isset($_REQUEST['wdts']['_nonce'])) { if (wp_verify_nonce($_REQUEST['wdts']['_nonce'], 'what-did-they-say')) { - if (($_REQUEST['wdts']['post_id'] <= 0) && ($_POST['post_ID'] > 0)) { - $_REQUEST['wdts']['post_id'] = $_POST['post_ID']; - } + if (($_REQUEST['wdts']['post_id'] <= 0) && ($_POST['post_ID'] > 0)) { + $_REQUEST['wdts']['post_id'] = $_POST['post_ID']; + } $this->handle_update($_REQUEST['wdts']); @@ -217,13 +221,13 @@ class WhatDidTheySayAdmin { if (is_admin()) { $this->transcript_count = (int)$wpdb->get_var($wpdb->prepare("SELECT count($wpdb->postmeta.meta_key) FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = 'approved_transcripts'")); } - } + } - /** Widget **/ + /** Widget **/ - function transcript_sidebar_widget() { - transcripts_display(); - } + function transcript_sidebar_widget() { + transcripts_display(); + } /** Actions **/ @@ -322,11 +326,11 @@ class WhatDidTheySayAdmin { $this->plugin_data = get_plugin_data($this->_parent_file); - if ($this->transcript_count == 0) { - $this->notices[] = __('Welcome to What Did They Say?!? To get started, read the Introduction, and then How It Works.', 'what-did-they-say'); - } elseif ($this->transcript_count < 10) { - $this->notices[] = __('Is What Did They Say?!? working out for you? Let John know via email (john@coswellproductions.com) or Twitter (@JohnBintz).', 'what-did-they-say'); - } + if ($this->transcript_count == 0) { + $this->notices[] = __('Welcome to What Did They Say?!? To get started, read the Introduction, and then How It Works.', 'what-did-they-say'); + } elseif ($this->transcript_count < 10) { + $this->notices[] = __('Is What Did They Say?!? working out for you? Let John know via email (john@coswellproductions.com) or Twitter (@JohnBintz).', 'what-did-they-say'); + } } wp_enqueue_script('scriptaculous-effects'); @@ -362,8 +366,8 @@ class WhatDidTheySayAdmin { wp_enqueue_script('scriptaculous-effects'); wp_enqueue_script('edit-transcripts', plugin_dir_url(dirname(__FILE__)) . 'js/edit-transcripts.js', array('scriptaculous-effects', 'wdts-script')); - add_action('wp_head', array(&$this, 'include_editor_javascript')); - } + add_action('wp_head', array(&$this, 'include_editor_javascript')); + } } } @@ -847,20 +851,8 @@ class WhatDidTheySayAdmin { $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'); + if (isset($info['user_capabilities'][$user->ID])) { + $this->_update_user_perms($user->ID, $info['user_capabilities'][$user->ID]); } } @@ -868,6 +860,20 @@ class WhatDidTheySayAdmin { } return $updated; } + + function _update_user_perms($user_id, $perms) { + $user_capabilities = array(); + + foreach (array_keys($this->capabilities) as $key) { + if (isset($perms[$key])) { $user_capabilities[$key] = true; } + } + + if (!empty($user_capabilities)) { + update_usermeta($user_id, 'transcript_capabilities', $user_capabilities); + } else { + delete_usermeta($user_id, 'transcript_capabilities'); + } + } /** * Handle resettings what-did-they-say-options. diff --git a/test/WhatDidTheySayAdminTest.php b/test/WhatDidTheySayAdminTest.php index acf4490..d859e20 100644 --- a/test/WhatDidTheySayAdminTest.php +++ b/test/WhatDidTheySayAdminTest.php @@ -61,6 +61,23 @@ class WhatDidTheySayAdminTest extends PHPUnit_Framework_TestCase { 'change_languages' => 'reader' ), $result['capabilities']); } + + function testUpdateUserPerms() { + $admin = new WhatDidTheySayAdmin(); + $admin->_set_up_capabilities(); + + update_usermeta(1, 'transcript_capabilities', array( + 'submit_transcriptions' => true + )); + + $admin->_update_user_perms(1, array( + 'approve_transcriptions' => 'yes' + )); + + $this->assertEquals(array( + 'approve_transcriptions' => true + ), get_usermeta(1, 'transcript_capabilities')); + } } ?> \ No newline at end of file