/** * Sanitizes the setting data. * * @param string[][] $data Settings data. * * @return string[][] */ public function sanitize($data) { if (!$this->settings_page->current_user_can('edit')) { $error = $this->settings_error_factory->create('no-permission-to-edit'); $error->add(); $data = $this->option->get(); return $data; } $sanitized_data = array(); foreach ($data as $source => $targets) { if (!is_string($source) || $source === '') { $error = $this->settings_error_factory->create('invalid-taxonomy'); $error->add(); } else { foreach ($targets as $target => $link) { if (!is_string($target) || $target === '') { $error = $this->settings_error_factory->create('invalid-taxonomy'); $error->add(); } else { switch ((int) $link) { case 1: $sanitized_data = $this->add_link($sanitized_data, $source, $target); break; case 2: $sanitized_data = $this->add_link($sanitized_data, $source, $target, TRUE); break; } } } } } return $sanitized_data; }
/** * Uninstalls all plugin data. * * @return void */ public function uninstall() { $option_name = $this->option->get_name(); if (is_multisite()) { foreach ($this->wpdb->get_col("SELECT blog_id FROM {$this->wpdb->blogs}") as $blog_id) { switch_to_blog($blog_id); delete_option($this->version_option_name); delete_option($option_name); } restore_current_blog(); } else { delete_option($this->version_option_name); delete_option($option_name); } }
/** * Renders the settings for the given taxonomy. * * @param string $taxonomy_name Current taxonomy name. * @param object $target_taxonomy Target taxonomy object. * * @return void */ private function render_taxonomy_settings($taxonomy_name, $target_taxonomy) { if (!isset($target_taxonomy->name) || $taxonomy_name === $target_taxonomy->name) { return; } $link = 0; if (isset($this->linked_taxonomies[$taxonomy_name][$target_taxonomy->name])) { $link++; if (isset($this->linked_taxonomies[$target_taxonomy->name][$taxonomy_name])) { $link++; } } $option_name = $this->option->get_name(); $name = "{$option_name}[{$taxonomy_name}][{$target_taxonomy->name}]"; $disabled = disabled($this->current_user_can_edit, FALSE, FALSE); ?> <tr> <td> <?php echo $target_taxonomy->label; ?> <p class="description"> <?php echo $target_taxonomy->name; ?> </p> </td> <?php for ($i = 0; $i < 3; $i++) { $checked = checked($link, $i, FALSE); printf('<td><input type="radio" name="%s" value="%d"%s%s></td>', $name, $i, $checked, $disabled); } ?> </tr> <?php }
/** * Constructor. Sets up the properties. * * @param Option $option Option model. */ public function __construct(Option $option) { $this->linked_taxonomies = $option->get(); }
/** * @covers tfrommen\LinkedTaxonomies\Setting\Option::get * @dataProvider provide_get_data * * @param array $expected * @param array $default * @param mixed $option * * @return void */ public function test_get(array $expected, array $default, $option) { $testee = new Testee(); WP_Mock::wpFunction('get_option', array('args' => array(Mockery::type('string'), $default), 'return' => $option)); $this->assertSame($expected, $testee->get()); }