diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-01-30 10:14:19 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2025-01-30 10:14:19 +0000 |
| commit | 2222597278620f07becf5707954874f5b3b0aaa5 (patch) | |
| tree | 624b2b9c0a61138d6530a007e9d467bef82e56df /lib/classes/StudygroupModel.php | |
| parent | b18ec88c2ade59649fed5bae873252183051b48d (diff) | |
introduce StudygroupInvitation model and use it as relation for course and user and cleanup the orphaned studygroup invitations, fixes #5195
Closes #5195
Merge request studip/studip!3879
Diffstat (limited to 'lib/classes/StudygroupModel.php')
| -rw-r--r-- | lib/classes/StudygroupModel.php | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/lib/classes/StudygroupModel.php b/lib/classes/StudygroupModel.php index 09cec16..f0d9686 100644 --- a/lib/classes/StudygroupModel.php +++ b/lib/classes/StudygroupModel.php @@ -431,32 +431,33 @@ class StudygroupModel /** * invites a member to a given studygroup. * - * @param string user id - * @param string id of a studygroup + * @param string $user_id + * @param string $sem_id id of a studygroup */ public static function inviteMember($user_id, $sem_id) { - $query = "REPLACE INTO studygroup_invitations (sem_id, user_id, mkdate) - VALUES (?, ?, UNIX_TIMESTAMP())"; - $stmt = DBManager::get()->prepare($query); - $stmt->execute([$sem_id, $user_id]); + $invitation = new StudygroupInvitation([$sem_id, $user_id]); + $invitation->mkdate = time(); + $invitation->store(); } /** * cancels invitation. * - * @param string username - * @param string id of a studygroup + * @param string $username + * @param string $sem_id id of a studygroup */ public static function cancelInvitation($username, $sem_id) { - $query = "DELETE FROM studygroup_invitations - WHERE sem_id = ? AND user_id = ?"; - $statement = DBManager::get()->prepare($query); - $statement->execute([ - $sem_id, - get_userid($username) - ]); + $user = User::findOneByUsername($username); + if (!$user) { + return; + } + + StudygroupInvitation::deleteBySQL( + 'sem_id = ? AND user_id = ?', + [$sem_id, $user->id] + ); } /** @@ -464,6 +465,7 @@ class StudygroupModel * * @param string id of a studygroup * @return array invited members + * @deprecated Will be removed in Stud.IP 6.2 */ public static function getInvitations($sem_id) { @@ -474,7 +476,7 @@ class StudygroupModel LEFT JOIN auth_user_md5 USING (user_id) LEFT JOIN user_info USING (user_id) WHERE studygroup_invitations.sem_id = ? - ORDER BY studygroup_invitations.mkdate ASC"; + ORDER BY studygroup_invitations.mkdate"; $stmt = DBManager::get()->prepare($query); $stmt->execute([$sem_id]); @@ -485,19 +487,16 @@ class StudygroupModel /** * checks if a user is already invited. * - * @param string user id - * @param string id of a studygroup - * @return array invited members + * @param string $user_id + * @param string $sem_id id of a studygroup + * @return bool */ public static function isInvited($user_id, $sem_id) { - $query = "SELECT 1 - FROM studygroup_invitations - WHERE user_id = ? AND sem_id = ?"; - $stmt = DBManager::get()->prepare($query); - $stmt->execute([$user_id, $sem_id]); - - return (bool) $stmt->fetchColumn(); + return (bool) StudygroupInvitation::countBySql( + 'sem_id = ? AND user_id = ?', + [$sem_id, $user_id] + ); } /** |
