public static function permit($role, $action, $subject, $subject_id, $control) { $result = false; $params = array(':role' => $role, ':control' => $control, ':action' => $action, ':subject' => $subject, ':subject_id' => $subject_id); $query = new SelectQuery('Permission'); $query->filter('`role` = :role')->filter('`control` = :control')->filter('`action` = :action')->filter('`subject` = :subject')->filter('`subject_id` = :subject_id')->filter('system = 0'); $id = $query->fetchColumn($params); if ($id) { $query = new UpdateQuery('Permission'); $query->data(array('control' => ':control'))->filter('`id` = :id'); return $query->execute(array(':id' => $id, ':control' => $control)); } else { $data = array('role', 'control', 'action', 'subject', 'subject_id'); $data = array_combine($data, array_values($params)); $query = new InsertQuery('Permission'); $query->data($data); return $query->execute(); } }