Пример #1
0
 /**
  *
  * @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;
 }
Пример #2
0
    $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);
    }