/** * Get rule error * * @param $rule * @return string */ protected function getRuleError($rule) { /** * @var UserRules $userRule */ $userRule = UserRules::findFirst(['conditions' => 'mca = ?0', 'bind' => [$rule]]); if ($userRule) { return __($userRule->action_name); } else { return ''; } }
/** * Delete old rules * * @param string $module * @param array $rules */ private function deleteOldRules($module, $rules) { $array_rules = []; foreach ($rules as $rule) { $array_rules[] = "'" . $module . "|" . $rule['controller'] . "|" . $rule['action'] . "'"; } $str = implode(',', $array_rules); $phql = "SELECT " . "rule_id,mca FROM ZCMS\\Core\\Models\\UserRules " . "WHERE module = ?0 AND mca not in (" . $str . ")"; /** * @var mixed $old_rules */ $old_rules = $this->modelsManager->executeQuery($phql, [0 => $module]); $old_rules_array = $old_rules->toArray(); if (!empty($old_rules_array)) { $ids = implode(',', array_column($old_rules_array, 'rule_id')); $delete = "DELETE FROM user_role_mapping WHERE rule_id IN (" . $ids . ")"; $this->db->execute($delete); } foreach ($old_rules as $or) { $userRule = UserRules::findFirst($or->rule_id); if ($userRule) { $userRule->delete(); } } }