Back to Browser class

Method isViewable

public bool
isViewable
(mixed $mimetype)
Determines if a browser can display a given MIME type.
Parameters
  • string $mimetype The MIME type to check.
Returns
  • bool True if the browser can display the MIME type.
Since
  • 1.7.0
Class: Browser
Project: Joomla

Method isViewable - Source code

/**
 * 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);
}