From 00d584f5843d794aca372a533457aa8b38389f13 Mon Sep 17 00:00:00 2001
From: Cameron <e107inc@gmail.com>
Date: Thu, 24 Jun 2021 12:29:47 -0700
Subject: [PATCH] Experimental CSS filtering.

---
 e107_core/templates/header_default.php |  5 +++++
 e107_handlers/js_manager.php           | 22 +++++++++++++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/e107_core/templates/header_default.php b/e107_core/templates/header_default.php
index 01c02ee42..ab8762959 100644
--- a/e107_core/templates/header_default.php
+++ b/e107_core/templates/header_default.php
@@ -344,6 +344,11 @@ $e_js->renderLinks();
 
 $CSSORDER = deftrue('CSSORDER') ? explode(",",CSSORDER) : array('library', 'other','core','plugin','theme','inline');
 
+/** Experimental - Subject to removal at any time. Use at own risk  */
+if(method_exists('theme', 'css'))
+{
+	$e_js->set('_theme_css_processor', true);
+}
 
 foreach($CSSORDER as $val)
 {
diff --git a/e107_handlers/js_manager.php b/e107_handlers/js_manager.php
index 00b769e56..6de09c513 100644
--- a/e107_handlers/js_manager.php
+++ b/e107_handlers/js_manager.php
@@ -185,6 +185,8 @@ class e_jsmanager
 
 	protected $_sep = '#|#';
 
+	protected $_theme_css_processor = false;
+
 	/**
 	 * Constructor
 	 *
@@ -662,6 +664,11 @@ class e_jsmanager
 	{
 		$this->_dependence = null;
 	}
+
+	public function set($name, $value)
+	{
+		$this->$name = $value;
+	}
 	
 	/**
 	 * Return TRUE if the library is disabled. ie. prototype or jquery. 
@@ -953,7 +960,7 @@ class e_jsmanager
 			// echo $this->_dependence." :: ENABLED<br />";
 			 // echo $this->_dependence."::".$file_path." : DISABLED<br />";		
 	//	}
-		
+
 		
 
 		$tp = e107::getParser();
@@ -1168,11 +1175,20 @@ class e_jsmanager
 			break;
 
 			case 'core_css': //e_jslib
+				if($this->_theme_css_processor)
+				{
+					$this->_e_css['core'] = e107::callMethod('theme', 'css', $this->_e_css['core'], 'core');
+					e107::getMessage()->addDebug('Theme css() method is experimental and is subject to removal at any time. Use at own risk');
+				}
 				$this->renderFile(varset($this->_e_css['core'], array()), $external, 'Core CSS', $mod, false);
 				unset($this->_e_css['core']);
 			break;
 
 			case 'plugin_css': //e_jslib
+				if($this->_theme_css_processor)
+				{
+					$this->_e_css['plugin'] = e107::callMethod('theme', 'css', $this->_e_css['plugin'], 'plugin');
+				}
 				$this->renderFile(varset($this->_e_css['plugin'], array()), $external, 'Plugin CSS', $mod, false);
 				unset($this->_e_css['plugin']);
 			break;
@@ -1183,6 +1199,10 @@ class e_jsmanager
 			break;
 
 			case 'other_css':
+				if($this->_theme_css_processor)
+				{
+					$this->_e_css['other'] = e107::callMethod('theme', 'css', $this->_e_css['other'], 'other');
+				}
 				$this->renderFile(varset($this->_e_css['other'], array()), $external, 'Other CSS', $mod, false);
 				unset($this->_e_css['other']);
 			break;