/** * @brief Delete a member from a role of a project * @param Project ID from which the role has to be removed * @param Member whose role has to be removed * @param Role to be removed * @param Member who removed the other member from his/her role * @param Whether the calling method has already initiated the (database) transaction * @return int|boolean (ID of the post intimating the role removal|false) */ public static function deleteMemberRole($pid, $member, $role, $user, $inTransaction = false) { try { if (!$inTransaction) { \OCP\DB::beginTransaction(); } // Remove from all roles if (is_null($pid) && is_null($role)) { $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*collaboration_works_on` WHERE `member`=?'); $result = $query->execute(array($member)); } else { $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*collaboration_works_on` WHERE `pid`=? AND `member`=? AND `role`=?'); $result = $query->execute(array($pid, $member, $role)); } // Member removed from owncloud if (is_null($pid)) { OC_Collaboration_Task::removeMembersTasks($member, $user, true); } else { if (!self::isMemberWorkingOnProject($member, $pid)) { OC_Collaboration_Task::unassignMembersTasks($member, $pid, $user, true); } } $post_id = OC_Collaboration_Post::createPost('Removed from role', 'You are removed from \'' . $role . '\' role from project \'' . self::getProjectTitle($pid) . '\'.', $user, $pid, 'Role Deletion', array($member), true); if (!$inTransaction) { \OCP\DB::commit(); } return $post_id; } catch (\Exception $e) { OC_Log::write('collaboration', __METHOD__ . ', Exception: ' . $e->getMessage(), OCP\Util::DEBUG); return false; } }