public static function loadCached($url, $expires, $debug = false) { if (!function_exists('curl_version')) { ErrorHelper::logWarning('Could not fetch data, cURL unavailable'); return null; } if ($debug) { ErrorHelper::logDebug('cURL for: ' . $url); } $filename = LoadHelper::getFilename($url); if (!LoadHelper::hasCache($url, $expires)) { if ($debug) { ErrorHelper::logDebug('No cache or expired, making new request'); } $rawData = LoadHelper::load($url); if (!$rawData) { if ($debug) { ErrorHelper::logDebug('cURL request failed: ' . LoadHelper::$error); } if (LoadHelper::hasCache($url, -1)) { if ($debug) { ErrorHelper::logDebug('Using expired cache'); } $cache = file_get_contents($filename); return $cache; } else { if ($debug) { ErrorHelper::logDebug('Request failed, no cache'); } return false; } } if ($debug) { ErrorHelper::logDebug('Data returned, saving it to cache'); } $folder = LoadHelper::getCacheDir(); if (!file_exists($folder)) { mkdir($folder); } $cache = @fopen($filename, 'wb'); $write = $cache ? fwrite($cache, $rawData) : null; if (!$write) { ErrorHelper::logWarning('Writing to cache failed. Make sure the folder ' . $folder . ' exists and is writeable (chmod 777)'); } if ($cache) { fclose($cache); } return $rawData; } if ($debug) { ErrorHelper::logDebug('Cache hit, using that'); } return file_get_contents($filename); }