Elgg  Version 6.3
CssCompiler.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Assets;
4 
5 use CssCrush\Crush;
6 use Elgg\Config;
8 use Elgg\Includer;
10 
16 class CssCompiler {
17 
24  public function __construct(protected Config $config, protected EventsService $events) {
25  }
26 
35  public function compile($css, array $options = []): string {
36  $defaults = [
37  'minify' => false, // minify handled by \Elgg\Views\MinifyHandler::class
38  'formatter' => 'single-line', // shows lowest byte size
39  'versioning' => false, // versioning done by Elgg
40  'rewrite_import_urls' => false,
41  'boilerplate' => false,
42  ];
43 
44  $config = (array) $this->config->css_compiler_options;
45 
46  $options = array_merge($defaults, $config, $options);
47  $options['vars'] = $this->getCssVars($options);
48 
49  Crush::$process = new CssCrushProcess($options, ['type' => 'filter', 'data' => $css]);
50 
51  return (string) Crush::$process->compile();
52  }
53 
62  public function getCssVars(array $compiler_options = [], bool $load_config_vars = true): array {
63  $default_vars = array_merge($this->getCoreVars(), $this->getPluginVars());
64  $custom_vars = (array) elgg_extract('vars', $compiler_options, []);
65  $vars = array_merge($default_vars, $custom_vars);
66 
67  $results = (array) $this->events->triggerResults('vars:compiler', 'css', $compiler_options, $vars);
68 
69  if (!$load_config_vars) {
70  return $results;
71  }
72 
73  return array_merge($results, (array) elgg_get_config('custom_theme_vars', []));
74  }
75 
81  protected function getCoreVars(): array {
82  $file = Paths::elgg() . 'engine/theme.php';
83  return Includer::includeFile($file);
84  }
85 
91  protected function getPluginVars(): array {
92  $return = [];
93 
94  $plugins = elgg_get_plugins('active');
95  foreach ($plugins as $plugin) {
96  $plugin_vars = $plugin->getStaticConfig('theme', []);
97  if (empty($plugin_vars)) {
98  continue;
99  }
100 
101  $return = array_merge($return, $plugin_vars);
102  }
103 
104  return $return;
105  }
106 }
$vars
Definition: theme.php:3
Compile CSS with CSSCrush.
Definition: CssCompiler.php:16
compile($css, array $options=[])
Compile CSS.
Definition: CssCompiler.php:35
getCssVars(array $compiler_options=[], bool $load_config_vars=true)
Fetches a combined set of CSS variables and their value.
Definition: CssCompiler.php:62
getPluginVars()
Plugin theme variables.
Definition: CssCompiler.php:91
__construct(protected Config $config, protected EventsService $events)
Constructor.
Definition: CssCompiler.php:24
getCoreVars()
Default Elgg theme variables.
Definition: CssCompiler.php:81
Events service.
Allow executing scripts without $this context or local vars.
Definition: Includer.php:10
Find Elgg and project paths.
Definition: Paths.php:8
elgg_get_config(string $name, $default=null)
Get an Elgg configuration value.
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
Definition: language.php:20
$config
Advanced site settings, debugging section.
Definition: debugging.php:6
elgg()
Bootstrapping and helper procedural code available for use in Elgg core and plugins.
Definition: elgglib.php:12
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:240
elgg_get_plugins(string $status='active')
Returns an ordered list of plugins.
Definition: plugins.php:39
$defaults
Generic entity header upload helper.
Definition: header.php:6
$css
Definition: install.css.php:5
$plugin
$results
Definition: content.php:22