示例#1
0
 /**
  * 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);
 }
示例#2
0
 /**
  * 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();
 }