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) { global $core; $public_path = path::fullFromRoot($core->blog->settings->system->public_path, DC_ROOT); if ($core->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($core) { if (!$core->blog->settings->system->simply_favicon) { return null; } $public_path = path::fullFromRoot($core->blog->settings->system->public_path, DC_ROOT) . '/favicon.'; $public_url = $core->blog->url . $core->url->getBase('simplyFavicon') . '.'; // ico : IE6 if (file_exists($public_path . 'ico') && '?' != substr($core->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; } } } } }