public function addRules(CreateManipulatorEvent $event)
 {
     if (($rules = RuleModel::findPublishedByActiveTheme()) === null) {
         return;
     }
     // No need to check for null values again as already done by Rule::findPublishedByActiveTheme()
     global $objPage;
     $layout = \LayoutModel::findByPk($objPage->layout);
     // Do not modify anything if the template name is not the one of the current page layout
     // e.g. when a developer calls Template::output() manually
     if ($layout->template !== $event->getTemplateName()) {
         return;
     }
     $factory = $event->getFactory();
     /**
      * @var $ruleModel RuleModel
      */
     foreach ($rules as $ruleModel) {
         $query = new XPathQuery($ruleModel->getXPathExpr());
         $rule = new AttributeRule($query, 'class');
         $rule->addFilter(new CssClassFilter($ruleModel->getDirectives()));
         $rule->addFilter(new TrimWhitespacesFilter());
         $factory->addRule($rule);
     }
 }
 /**
  * Generate the module
  *
  * @return string
  */
 public function run()
 {
     $template = new \BackendTemplate('be_css_class_replacer_update');
     $template->isActive = $this->isActive();
     $template->action = ampersand(\Environment::get('request'));
     $template->message = \Message::generate();
     $template->headline = specialchars($GLOBALS['TL_LANG']['tl_maintenance']['css-class-replacer-headline']);
     $template->description = specialchars($GLOBALS['TL_LANG']['tl_maintenance']['css-class-replacer-description']);
     $template->submit = specialchars($GLOBALS['TL_LANG']['tl_maintenance']['css-class-replacer-submit']);
     if ($this->isActive()) {
         $rules = RuleModel::findAll();
         $helper = new BackendHelper();
         $helper->updateCacheableValues($rules);
         \Message::addConfirmation(sprintf($GLOBALS['TL_LANG']['tl_maintenance']['css-class-replacer-message'], $rules->count()));
         \Controller::reload();
     }
     return $template->parse();
 }
 /**
  * Called by the onsubmit_callback of tl_css_class_replacer
  * Updates data on save
  *
  * @param \DataContainer
  */
 public function onSubmitCallback(\DataContainer $dc)
 {
     $rule = RuleModel::findByPk($dc->id);
     $rules = new Collection(array($rule), RuleModel::getTable());
     $this->updateCacheableValues($rules);
 }