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()));
     }
 }