/** * 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; }
/** * @covers tfrommen\LinkedTaxonomies\SettingsPage\SettingsPage::current_user_can * @dataProvider provide_current_user_can_data * * @param bool $expected * @param string $action * @param bool $current_user_can * * @return void */ public function test_current_user_can($expected, $action, $current_user_can) { $testee = new Testee(); WP_Mock::wpFunction('current_user_can', array('args' => array(Mockery::type('string')), 'return' => $current_user_can)); $this->assertSame($expected, $testee->current_user_can($action)); $this->assertConditionsMet(); }
/** * Constructor. Sets up the properties. * * @param SettingsPage $settings_page Settings page model. * @param Option $option Option model. */ public function __construct(SettingsPage $settings_page, Option $option) { $this->settings_page = $settings_page; $this->current_user_can_edit = $settings_page->current_user_can('edit'); $this->option = $option; $this->title = esc_html_x('Linked Taxonomies', 'Settings page title', 'linked-taxonomies'); }