/**
* Determines if a browser can display a given MIME type.
*
* Note that image/jpeg and image/pjpeg *appear* to be the same
* entity, but Mozilla doesn't seem to want to accept the latter.
* For our purposes, we will treat them the same.
*
* @param string $mimetype The MIME type to check.
*
* @return boolean True if the browser can display the MIME type.
*
* @since 1.7.0
*/
public function isViewable($mimetype)
{
$mimetype = strtolower($mimetype);
list($type, $subtype) = explode('/', $mimetype);
if (!empty($this->accept)) {
$wildcard_match = false;
if (strpos($this->accept, $mimetype) !== false) {
return true;
}
if (strpos($this->accept, '*/*') !== false) {
$wildcard_match = true;
if ($type !== 'image') {
return true;
}
}
// Deal with Mozilla pjpeg/jpeg issue
if ($this->isBrowser('mozilla') && $mimetype === 'image/pjpeg' && strpos($this->accept, 'image/jpeg') !== false) {
return true;
}
if (!$wildcard_match) {
return false;
}
}
if ($type !== 'image') {
return false;
}
return \in_array($subtype, $this->images);
}