-
Notifications
You must be signed in to change notification settings - Fork 0
/
MgCacheRouting.php
98 lines (83 loc) · 2.06 KB
/
MgCacheRouting.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
* MgCacheRouting
*
* Routing Class
*
* @package WordPress
* @subpackage MgCache
* @version 1.0
* @since MgCache 1.0
* @author kchevalier@mindgruve.com
*/
defined('ABSPATH') or die();
class MgCacheRouting
{
/**
* Initialize MgCacheRouting class.
*
* @since MgCache 1.0
*
* @return null
*/
public static function init()
{
self::registerFilters();
}
/**
* Rewrite Rules Filter
*
* @since MgCache 1.0
*
* @param array $rules
* @return array
*/
public static function rewriteRulesFilter($rules)
{
if (MgCache::$active) {
if (!class_exists('MgCache')) {
include_once(__DIR__ . '/mg-cache.php');
}
MgCache::load();
$cachePath = preg_replace(
'/^(?:https?:)?\/\/' . $_SERVER['SERVER_NAME'] . '\//',
'',
MgCacheHelper::$cachePath
);
$rules[$cachePath . '/(\w+)\.css$'] = 'index.php?pagename=mg_asset_css&fingerprint=$matches[1]';
$rules[$cachePath . '/(\w+)\.js$'] = 'index.php?pagename=mg_asset_js&fingerprint=$matches[1]';
}
return $rules;
}
/**
* Register Filters
*
* @since MgCache 1.0
*
* @return null
*/
public static function registerFilters()
{
// query variables filter
add_filter('query_vars', array('MgCacheRouting', 'insertQueryVars'));
// add controllers
add_filter('template_redirect', array('MgAssetController', 'assetStylesheetAction'));
add_filter('template_redirect', array('MgAssetController', 'assetScriptAction'));
}
/**
* Insert Query Vars
*
* Adding the id var so that WP recognizes it
*
* @since MgCache 1.0
*
* @param array $vars
* @return array
*/
public static function insertQueryVars($vars)
{
array_push($vars, 'files');
array_push($vars, 'fingerprint');
return $vars;
}
}