diff options
Diffstat (limited to 'p/f.php')
| -rw-r--r-- | p/f.php | 58 |
1 files changed, 11 insertions, 47 deletions
@@ -1,49 +1,9 @@ <?php require('../constants.php'); - -include(LIB_PATH . '/Favicon/Favicon.php'); -include(LIB_PATH . '/Favicon/DataAccess.php'); +require(LIB_PATH . '/favicons.php'); require(LIB_PATH . '/http-conditional.php'); - -$favicons_dir = DATA_PATH . '/favicons/'; -$default_favicon = PUBLIC_PATH . '/themes/icons/default_favicon.ico'; - - -/* Télécharge le favicon d'un site et le place sur le serveur */ -function download_favicon($website, $dest) { - global $favicons_dir, $default_favicon; - - $favicon_getter = new \Favicon\Favicon(); - $favicon_getter->setCacheDir($favicons_dir); - $favicon_url = $favicon_getter->get($website); - - if ($favicon_url === false) { - return @copy($default_favicon, $dest); - } - - $c = curl_init($favicon_url); - curl_setopt($c, CURLOPT_HEADER, false); - curl_setopt($c, CURLOPT_RETURNTRANSFER, true); - curl_setopt($c, CURLOPT_BINARYTRANSFER, true); - $img_raw = curl_exec($c); - $status_code = curl_getinfo($c, CURLINFO_HTTP_CODE); - curl_close($c); - - if ($status_code === 200) { - $file = fopen($dest, 'w'); - if ($file !== false) { - fwrite($file, $img_raw); - fclose($file); - return true; - } - } - - return false; -} - - function show_default_favicon($cacheSeconds = 3600) { global $default_favicon; @@ -69,23 +29,27 @@ $txt_mtime = @filemtime($txt); header('Content-Type: image/x-icon'); -if ($ico_mtime == false || $txt_mtime > $ico_mtime) { +if ($ico_mtime == false || $ico_mtime < $txt_mtime || ($ico_mtime < time() - (rand(15, 20) * 86400))) { if ($txt_mtime == false) { show_default_favicon(1800); - return; + exit(); } // no ico file or we should download a new one. $url = file_get_contents($txt); if (!download_favicon($url, $ico)) { - // Download failed, show the default favicon - show_default_favicon(86400); - return; + // Download failed + if ($ico_mtime == false) { + show_default_favicon(86400); + exit(); + } else { + touch($ico); + } } } header('Content-Disposition: inline; filename="' . $id . '.ico"'); -if (!httpConditional($ico_mtime, 2592000, 2)) { +if (!httpConditional($ico_mtime, rand(14, 21) * 86400, 2)) { readfile($ico); } |
