Exemple #1
0
 public function index()
 {
     MMinifiedDatum::truncate();
     return 'ok';
 }
Exemple #2
0
 protected function compress($regex, $content, $type = 'js', $version, $excludes)
 {
     $files = [];
     $compressed = preg_replace_callback($regex, function ($matches) use(&$files, $type, $excludes) {
         if (!empty($excludes) && preg_match("~{$excludes}~", basename($matches[1] ?? ''))) {
             return $matches[0];
         }
         if ($type === 'css' && !preg_match('/rel="stylesheet"/i', $matches[0])) {
             return $matches[0];
         } else {
             $files[] = $matches[1];
         }
         return '';
     }, $content);
     if (!empty($files)) {
         MMinifiedDatum::unguard(true);
         $name = sprintf('%s.%s', md5(json_encode($files)), $type);
         $count = MMinifiedDatum::where('name', '=', $name)->where('version', '=', $version)->count();
         $baseDir = $this->bootLoader->getBaseDir();
         if (empty($count)) {
             set_time_limit(120);
             $asset = new AssetCollection(array_map(function ($f) use($type, $baseDir) {
                 $file = realpath(sprintf('%s/public/%s', $baseDir, $f));
                 $minified = preg_match('/\\.min\\./', $file);
                 if ($type === 'css') {
                     $url = preg_replace('#.*/static/#', '/static/', $this->utils->unixPath($file));
                     $filters = array_merge([new CssImportFilter(), new CssRewriteFilter()], !$minified ? [new CssMinFilter()] : []);
                 } elseif (!$minified) {
                     $filters = [new JSMinFilter()];
                 }
                 return new FileAsset($file, !empty($filters) ? $filters : [], $baseDir . '/public', !empty($url) ? $url : '');
             }, $files));
             $asset->setTargetPath(sprintf('/static/cache/%s/', $type));
             if (MMinifiedDatum::create(['name' => $name, 'version' => $version, 'content' => $asset->dump(), 'created_at' => Carbon::now()])) {
                 $count = 1;
             }
         }
     }
     if (!empty($count) && !empty($name)) {
         $tag = sprintf($type == 'js' ? '<scrip' . 't src="%s"></script>' : '<lin' . 'k href="%s" type="text/css" rel="stylesheet" media="all">', "/static/cache/{$version}/{$name}");
         $compressed = $type === 'css' ? preg_replace('#(<style|</head)#ms', "{$tag}\n\\1", $compressed, 1) : preg_replace('#(<script|</head)#ms', "{$tag}\n\\1", $compressed, 1);
         return $compressed;
     }
     return $content;
 }