Example #1
0
 private function runRules($datatype, $params, $data)
 {
     $rulegroups = $this->rg($params);
     if (empty($rulegroups)) {
         $this->sortResults($data, $params);
         return $this->printResults($data);
     }
     $rules = $this->getRules($rulegroups);
     $this->sortRules($rules);
     $exclude = isset($rules[0]) && $rules[0]->isWhitelistRule();
     // exclude all if whitelist present
     $results = [];
     $extctx = new ExternalContext();
     foreach ($data as $d) {
         $ctx = new Context($d);
         if ($exclude) {
             $ctx->setExcluded(true);
         }
         foreach ($rules as $rule) {
             if ($rule->getDatatype() == $datatype) {
                 $rule->execute($extctx->wrap(new RuleContext($rule, $ctx)));
             }
         }
         $data = $ctx->getData();
         if ($data != null) {
             $results[] = $data;
         }
     }
     $this->sortResults($results, $params);
     $merged_results = array_merge($extctx->getGroupData(), $results);
     return $this->printResults($merged_results);
 }