public function offsetUnset($offset) { $var = ExternalContext::stripParens($offset); if (isset($var)) { unset($this->keys[$var]); unset($this->values[$var]); } else { $this->ctx->offsetUnset($offset); } }
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); }