aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/StudygroupModel.php
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2025-01-30 10:14:19 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2025-01-30 10:14:19 +0000
commit2222597278620f07becf5707954874f5b3b0aaa5 (patch)
tree624b2b9c0a61138d6530a007e9d467bef82e56df /lib/classes/StudygroupModel.php
parentb18ec88c2ade59649fed5bae873252183051b48d (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.php51
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]
+ );
}
/**