addBehavior('publicHeadContent', ['publicSimplyFavicon', 'publicHeadContent']);
class publicSimplyFavicon extends dcUrlHandlers
{
public static $mimetypes = [
'ico' => 'image/x-icon',
'png' => 'image/png',
'bmp' => 'image/bmp',
'gif' => 'image/gif',
'jpg' => 'image/jpeg',
'mng' => 'video/x-mng',
];
public static function simplyFaviconUrl($arg)
{
$public_path = path::fullFromRoot(dcCore::app()->blog->settings->system->public_path, DC_ROOT);
if (dcCore::app()->blog->settings->system->simply_favicon
&& !empty($arg)
&& array_key_exists($arg, self::$mimetypes)
&& file_exists($public_path . '/favicon.' . $arg)
) {
header('Content-Type: ' . self::$mimetypes[$arg] . ';');
readfile($public_path . '/favicon.' . $arg);
exit;
}
self::p404();
return null;
}
public static function publicHeadContent()
{
if (!dcCore::app()->blog->settings->system->simply_favicon) {
return null;
}
$public_path = path::fullFromRoot(dcCore::app()->blog->settings->system->public_path, DC_ROOT) . '/favicon.';
$public_url = dcCore::app()->blog->url . dcCore::app()->url->getBase('simplyFavicon') . '.';
// ico : IE6
if (file_exists($public_path . 'ico') && '?' != substr(dcCore::app()->blog->url, -1)) {
echo
'' . "\n";
}
// png: apple and others
if (file_exists($public_path . 'png')) {
echo
'' . "\n" .
'' . "\n";
// all others
} else {
foreach (self::$mimetypes as $ext => $mime) {
if (in_array($ext, ['ico', 'png'])) {
continue;
}
if (file_exists($public_path . $ext)) {
echo
'' . "\n";
break;
}
}
}
}
}