Example #1
0
 /**
  * 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);
     }
 }
Example #3
0
    /**
     * 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 
    }
Example #4
0
 /**
  * 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());
 }