/** * Devolver el código QR de la peticíón HTTP en base64 * * @return bool|string */ public function getUserQRCode() { $data = Util::getDataFromUrl($this->getUserQRUrl()); if ($data === false) { return false; } return base64_encode($data); }
/** * Devolver al navegador archivos CSS y JS comprimidos * Método que devuelve un recurso CSS o JS comprimido. Si coincide el ETAG se * devuelve el código HTTP/304 * * @param bool $disableMinify Deshabilitar minimizar */ public function getMinified($disableMinify = false) { $offset = 3600 * 24 * 30; $nextCheck = time() + $offset; $expire = 'Expires: ' . gmdate('D, d M Y H:i:s \\G\\M\\T', $nextCheck); $etag = $this->getEtag(); $etagMatch = Request::getRequestHeaders('If-None-Match'); $cacheControl = Request::getRequestHeaders('Cache-Control'); $pragma = Request::getRequestHeaders('Pragma'); header('Etag: ' . $etag); header("Cache-Control: public, max-age={$offset}, must-revalidate"); header("Pragma: public; maxage={$offset}"); header($expire); // Devolver código 304 si la versión es la misma y no se solicita refrescar if ($etag == $etagMatch && !($cacheControl == 'no-cache' || $pragma == 'no-cache')) { header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); exit; } if ($this->_type === self::FILETYPE_JS) { header("Content-type: application/x-javascript; charset: UTF-8"); } elseif ($this->_type === self::FILETYPE_CSS) { header("Content-type: text/css; charset: UTF-8"); } flush(); if ($this->checkZlib() || !ob_start('ob_gzhandler')) { ob_start(); } foreach ($this->_files as $file) { $filePath = $file['base'] . DIRECTORY_SEPARATOR . $file['name']; // Obtener el recurso desde una URL if (preg_match('#^https?://.*#', $file['name'])) { $data = Util::getDataFromUrl($file['name']); if ($data !== false) { echo '/* URL: ' . $file['name'] . ' */' . PHP_EOL; echo $data; } continue; } if (!file_exists($filePath)) { echo '/* ERROR: FILE NOT FOUND: ' . $file['name'] . ' */' . PHP_EOL; error_log('File not found: ' . $filePath); continue; } if ($file['min'] === true && $disableMinify === false) { echo '/* MINIFIED FILE: ' . $file['name'] . ' */' . PHP_EOL; if ($this->_type === self::FILETYPE_JS) { echo $this->jsCompress(file_get_contents($filePath)); } elseif ($this->_type === self::FILETYPE_CSS) { echo CssMin::minify(file_get_contents($filePath)); } } else { echo '/* FILE: ' . $file['name'] . ' */' . PHP_EOL; echo file_get_contents($filePath); } echo PHP_EOL; } ob_end_flush(); }