diff --git a/cosmogramme/cosmozend/VERSIONS_HOTLINE/89832 b/cosmogramme/cosmozend/VERSIONS_HOTLINE/89832 new file mode 100644 index 0000000000000000000000000000000000000000..1bb6b801c6b446b8298157890ef8874d8b991e4c --- /dev/null +++ b/cosmogramme/cosmozend/VERSIONS_HOTLINE/89832 @@ -0,0 +1 @@ + - ticket #89832 : Autorisation d'affichage des vignettes issues de ADAV précisées en unimarc des notices \ No newline at end of file diff --git a/library/ZendAfi/Validate/VignetteUrl.php b/library/ZendAfi/Validate/VignetteUrl.php index 96782c330de74ce47cc1ded07a3fae2bd54f25fc..c13fcfd7a05bdf5d4440fe7f258da96b39f93fdc 100644 --- a/library/ZendAfi/Validate/VignetteUrl.php +++ b/library/ZendAfi/Validate/VignetteUrl.php @@ -19,28 +19,24 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class ZendAfi_Validate_VignetteUrl extends Zend_Validate_Abstract { - const INVALID_EXTENSION = 'invalidExtension'; + const INVALID_URL_FORMAT = 'invalidURLFormat'; - protected $_messageTemplates = array(self::INVALID_EXTENSION => "'%value%' n'est pas une extension de type .png, .jpeg, .jpg, .gif."); + protected + $_messageTemplates = [self::INVALID_URL_FORMAT => "'%value%' n'est pas une URL de vignette correspondant aux formats acceptés."], + $_valid_url_patterns = ['.+\.(png|jpg|jpeg|gif)$', + '\/cgi-bin\/koha\/opac-image\.pl\?thumbnail=', + 'www\.adav-assoc\.com\/.*\/GetImage\/' + ]; - public function isValid($value) { - if ($this->_isKohaThumbnail($value)) - return true; - - $parts = explode('.', $value); - $extension = end($parts); - $this->_setValue($extension); - if (!in_array(strtolower($extension), ['png', 'jpg', 'jpeg', 'gif'])) { - $this->_error(self::INVALID_EXTENSION); - return false; + public function isValid($value) { + foreach($this->_valid_url_patterns as $pattern) { + if (preg_match('/' . $pattern . '/i', $value)) + return true; } - return true; - } - - protected function _isKohaThumbnail($value) { - return preg_match('|\/cgi-bin\/koha\/opac-image\.pl\?thumbnail=|', $value); + $this->_error(self::INVALID_URL_FORMAT); + return false; } } ?> \ No newline at end of file diff --git a/tests/library/ZendAfi/View/Helper/Notice/VignetteTest.php b/tests/library/ZendAfi/View/Helper/Notice/VignetteTest.php index 21e9853910ee893fe2e63449917e4f3f553510ba..2ac8be2e7c1bbd8f75b5726bcd9f920674000c8b 100644 --- a/tests/library/ZendAfi/View/Helper/Notice/VignetteTest.php +++ b/tests/library/ZendAfi/View/Helper/Notice/VignetteTest.php @@ -76,19 +76,47 @@ class ZendAfi_View_Helper_Notice_VignetteNoThumbnailTest } - /** @test */ - public function withThumbnailZoneAndUrlInUnimarcAndInvalidUrlViewnoticeShouldNotContainsThumbnailButBlank() { - $record = $this->_setupRecordWithThumbnailUrl('https://bloub.org/7364?zork=glub'); + public function invalidThumbnailUrls() { + return [ + ['https://bloub.org/7364?zork=glub'], + ['http://boom.org/index.html'], + ['http://image-cache.org/34.jpg.2'], + ]; + } + + + /** + * @dataProvider invalidThumbnailUrls + * @test + */ + public function withThumbnailZoneAndInvalidUrlInUnimarcViewnoticeShouldNotContainsThumbnailButBlank($url) { + $record = $this->_setupRecordWithThumbnailUrl($url); $html = $this->_helper->notice_Vignette($record, [], 'view'); $this->assertXPath($html, '//img[contains(@src, "public/admin/images/blank.gif")]', $html); } - /** @test */ - public function withThumbnailZoneAndKohaStyleUrlInUnimarcViewnoticeShouldContainsThumbnail() { - $record = $this->_setupRecordWithThumbnailUrl('https://koha.somewhere.com/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=261990'); + public function validThumbnailUrls() { + return [ + ['https://koha.somewhere.com/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=261990'], + ['http://www.adav-assoc.com/4DACTION/GetImage/207155'], + ['http://image-cache.org/34.png'], + ['http://image-cache.org/34.gif'], + ['http://image-cache.org/34.jpeg'], + ['http://image-cache.org/34.jPg'], + ['http://www.adAv-Assoc.com/4DACTION/GetImage/207155'] + ]; + } + + + /** + * @dataProvider validThumbnailUrls + * @test + */ + public function withThumbnailZoneAndValidUrlInUnimarcViewnoticeShouldContainsThumbnail($url) { + $record = $this->_setupRecordWithThumbnailUrl($url); $html = $this->_helper->notice_Vignette($record, [], 'view'); - $this->assertXPath($html, '//img[@src="https://koha.somewhere.com/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=261990"]', $html); + $this->assertXPath($html, '//img[@src="' . $url . '"]', $html); }