@@ -390,14 +390,29 @@ public static function getRules() {
390
390
* Load all of the rules related to Pattern Data
391
391
*/
392
392
public static function loadRules ($ options ) {
393
- foreach (glob (__DIR__ ."/PatternData/Rules/*.php " ) as $ filename ) {
394
- $ ruleName = str_replace (".php " ,"" ,str_replace (__DIR__ ."/PatternData/Rules/ " ,"" ,$ filename ));
395
- if ($ ruleName [0 ] != "_ " ) {
396
- $ ruleClass = "\PatternLab\PatternData\Rules \\" .$ ruleName ;
397
- $ rule = new $ ruleClass ($ options );
398
- self ::setRule ($ ruleName , $ rule );
393
+ $ ruleClasses = Config::getOption ("enabledPatternRules " );
394
+
395
+ // Allow the enabled Pattern Data Rules to be overridden in
396
+ // config. Use the default rules if the config key is empty.
397
+ if (!$ ruleClasses || !is_array ($ ruleClasses )) {
398
+ $ ruleClasses = [];
399
+
400
+ foreach (glob (__DIR__ ."/PatternData/Rules/*.php " ) as $ filename ) {
401
+ $ ruleName = str_replace (".php " ,"" ,str_replace (__DIR__ ."/PatternData/Rules/ " ,"" ,$ filename ));
402
+ if ($ ruleName [0 ] != "_ " ) {
403
+ $ ruleClasses [] = "\PatternLab\PatternData\Rules \\" .$ ruleName ;
404
+ }
399
405
}
400
406
}
407
+
408
+ // Load the configured rules.
409
+ foreach ($ ruleClasses as $ ruleClass ) {
410
+ $ parts = explode ('\\' , $ ruleClass );
411
+ $ ruleName = end ($ parts );
412
+ $ rule = new $ ruleClass ($ options );
413
+ self ::setRule ($ ruleName , $ rule );
414
+ }
415
+
401
416
}
402
417
403
418
/**
0 commit comments