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; } } } } }