diff --git a/classes/ComicPress.inc b/classes/ComicPress.inc index dbcf183..447ad6c 100644 --- a/classes/ComicPress.inc +++ b/classes/ComicPress.inc @@ -104,6 +104,31 @@ class ComicPress { return $current_max; } + function normalize_image_size_options() { + $protected_options = apply_filters('comicpress_protected_image_size_options', array('thumbnail', 'medium', 'large')); + foreach (get_alloptions() as $option => $value) { + if (strpos($option, '_size_w') !== false) { + $size = str_replace('_size_w', '', $option); + if (!in_array($size, $protected_options)) { + foreach (array('_size_w', '_size_h', '_crop') as $suffix) { + delete_option("${size}${suffix}"); + } + } + } + } + + if (isset($this->comicpress_options['image_types'])) { + foreach ($this->comicpress_options['image_types'] as $type => $info) { + if (isset($info['dimensions'])) { + list($width, $height) = explode('x', $info['dimensions']); + update_option("${type}_size_w", intval($width)); + update_option("${type}_size_h", intval($height)); + update_option("${type}_crop", 0); + } + } + } + } + // @codeCoverageIgnoreStart /** diff --git a/test/ComicPressTest.php b/test/ComicPressTest.php index 34d6915..aa11099 100644 --- a/test/ComicPressTest.php +++ b/test/ComicPressTest.php @@ -232,6 +232,58 @@ class ComicPressTest extends PHPUnit_Framework_TestCase { $this->assertEquals($expected_result, $this->cp->editor_max_image_size($input, $type)); } + + function providerTestNormalizeImageSizeOptions() { + return array( + array( + array( + 'comic_size_w' => 500, + 'comic_size_h' => 500, + 'comic_crop' => 0, + 'thumbnail_size_w' => 500, + 'thumbnail_size_h' => 500, + 'thumbnail_crop' => 1, + ), + array(), + array( + 'comic_size_w' => false, + 'comic_size_h' => false, + 'comic_crop' => false, + 'thumbnail_size_w' => 500, + 'thumbnail_size_h' => 500, + 'thumbnail_crop' => 1, + ) + ), + array( + array(), + array('comic' => array( + 'dimensions' => '500x500' + )), + array( + 'comic_size_w' => 500, + 'comic_size_h' => 500, + 'comic_crop' => 0 + ) + ), + ); + } + + /** + * @dataProvider providerTestNormalizeImageSizeOptions + */ + function testNormalizeImageSizeOptions($options, $image_types, $expected_options) { + foreach ($options as $option => $value) { + update_option($option, $value); + } + + $this->cp->comicpress_options['image_types'] = $image_types; + + $this->cp->normalize_image_size_options(); + + foreach ($expected_options as $option => $value) { + $this->assertTrue($value === get_option($option)); + } + } } ?>