Elgg  Version 4.3
CssCompiler.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Assets;
4 
6 use Elgg\Config;
7 use Elgg\Includer;
10 
16 class CssCompiler {
17 
21  protected $config;
22 
26  protected $hooks;
27 
35  $this->config = $config;
36  $this->hooks = $hooks;
37  }
38 
47  public function compile($css, array $options = []) {
48  $defaults = [
49  'minify' => false, // minify handled by \Elgg\Views\MinifyHandler::class
50  'formatter' => 'single-line', // shows lowest byte size
51  'versioning' => false, // versioning done by Elgg
52  'rewrite_import_urls' => false,
53  'boilerplate' => false,
54  ];
55 
56  $config = (array) $this->config->css_compiler_options;
57 
58  $options = array_merge($defaults, $config, $options);
59 
60  $default_vars = array_merge($this->getCoreVars(), $this->getPluginVars());
61  $custom_vars = (array) elgg_extract('vars', $options, []);
62  $vars = array_merge($default_vars, $custom_vars);
63 
64  $options['vars'] = $this->hooks->trigger('vars:compiler', 'css', $options, $vars);
65 
66  Crush::$process = new CssCrushProcess($options, ['type' => 'filter', 'data' => $css]);
67  return Crush::$process->compile()->__toString();
68  }
69 
74  protected function getCoreVars() {
75  $file = Paths::elgg() . 'engine/theme.php';
76  return Includer::includeFile($file);
77  }
78 
83  protected function getPluginVars() {
84  $return = [];
85 
86  $plugins = elgg_get_plugins('active');
87  foreach ($plugins as $plugin) {
88  $plugin_vars = $plugin->getStaticConfig('theme', []);
89  if (empty($plugin_vars)) {
90  continue;
91  }
92 
93  $return = array_merge($return, $plugin_vars);
94  }
95 
96  return $return;
97  }
98 }
static includeFile($file)
Include a file with as little context as possible.
Definition: Includer.php:18
elgg_get_plugins(string $status= 'active')
Returns an ordered list of plugins.
Definition: plugins.php:55
$plugin
static elgg()
Get the Elgg codebase path with "/".
Definition: Paths.php:44
getCoreVars()
Default Elgg theme variables.
Definition: CssCompiler.php:74
$defaults
$plugins
Definition: categories.php:3
$options
Elgg admin footer.
Definition: footer.php:6
__construct(Config $config, PluginHooksService $hooks)
Constructor.
Definition: CssCompiler.php:34
getPluginVars()
Plugin theme variables.
Definition: CssCompiler.php:83
compile($css, array $options=[])
Compile CSS.
Definition: CssCompiler.php:47
$css
Definition: install.css.php:5
elgg_extract($key, $array, $default=null, $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:547
Compile CSS with CSSCrush.
Definition: CssCompiler.php:16
Css Crush Processor.
$vars['head']
Definition: html.php:24