public function setPermissionsForUserInApp(API2ApplicationUserPermissionsModel $permissions, UserAccountModel $user, API2ApplicationModel $app) { global $DB; $stat = $DB->prepare("SELECT user_in_api2_application_information.* FROM user_in_api2_application_information WHERE " . "api2_application_id =:api2_application_id AND user_id =:user_id"); $stat->execute(array('api2_application_id' => $app->getId(), 'user_id' => $user->getId())); ################## If not there, just add if ($stat->rowCount() == 0) { $stat = $DB->prepare("INSERT INTO user_in_api2_application_information " . "(api2_application_id, user_id, is_editor, created_at) " . "VALUES (:api2_application_id, :user_id, :is_editor, :created_at)"); $stat->execute(array('api2_application_id' => $app->getId(), 'user_id' => $user->getId(), 'is_editor' => $permissions->getIsEditorGranted() ? 1 : 0, 'created_at' => \TimeSource::getFormattedForDataBase())); return; } ################## get data, check if we need to escalate or remove permissions $userInAppData = $stat->fetch(); if ($permissions->getIsEditorGranted() && $userInAppData['is_editor'] == 0) { $stat = $DB->prepare("UPDATE user_in_api2_application_information " . " SET is_editor='1' " . " WHERE api2_application_id =:api2_application_id AND user_id =:user_id "); $stat->execute(array('api2_application_id' => $app->getId(), 'user_id' => $user->getId())); } if ($permissions->getIsEditorRefused() && $userInAppData['is_editor'] == 1) { $stat = $DB->prepare("UPDATE user_in_api2_application_information " . " SET is_editor='0' " . " WHERE api2_application_id =:api2_application_id AND user_id =:user_id "); $stat->execute(array('api2_application_id' => $app->getId(), 'user_id' => $user->getId())); } }