/** * * @param Conjunct[] $conjuncts * @param boolean $cacheConjuncts * @return boolean */ public static function checkInvariantRules($conjuncts, $cacheConjuncts = true) { $logger = Logger::getLogger('FW'); $invariantRulesHold = true; // check invariant rules $logger->debug("Checking invariant rules for provided conjuncts: " . implode(', ', array_column($conjuncts, 'id'))); foreach ($conjuncts as $conjunct) { if ($conjunct->isInvConj()) { foreach ($conjunct->evaluateConjunct($cacheConjuncts) as $violation) { // If a conjunct is broken (i.e. returns 1 or more violation pairs) mark that invariant rules do not hold $invariantRulesHold = false; foreach ($conjunct->invRuleNames as $ruleName) { Notifications::addInvariant(new Violation(Rule::getRule($ruleName), $violation['src'], $violation['tgt'])); } } } else { $logger->error("Conjunct '{$conjunct->id}' provided to be checked for invariant violations, but this is not an invariant conjunct"); } } return $invariantRulesHold; }
$db = Database::singleton(); $db->reinstallDB($defaultPop); $session = Session::singleton(); $roleIds = $app->request->params('roleIds'); $session->activateRoles($roleIds); $content = Notifications::getAll(); // Return all notifications print json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); }); $app->get('/admin/checks/rules/evaluate/all', function () use($app) { if (Config::get('productionEnv')) { throw new Exception("Database reinstall not allowed in production environment", 403); } foreach (Rule::getAllInvRules() as $rule) { foreach ($rule->getViolations() as $violation) { Notifications::addInvariant($violation); } } foreach (Rule::getAllSigRules() as $rule) { foreach ($rule->getViolations() as $violation) { Notifications::addSignal($violation); } } $content = Notifications::getAll(); // Return all notifications print json_encode($content, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); }); $app->get('/admin/export/all', function () use($app) { if (Config::get('productionEnv')) { throw new Exception("Export not allowed in production environment", 403); }