32 $id = self::getTeamId($a_assignment_id, $a_user_id, $a_create_on_demand);
39 foreach(self::getAssignmentTeamMap($a_assignment_id) as $user_id => $team_id)
41 $teams[$team_id][] = $user_id;
45 foreach($teams as $team_id =>
$members)
50 $res[$team_id] = $team;
61 protected function read($a_id)
66 $this->members = array();
68 $sql =
"SELECT * FROM il_exc_team".
69 " WHERE id = ".$ilDB->quote($a_id,
"integer");
70 $set = $ilDB->query($sql);
71 if($ilDB->numRows($set))
75 while(
$row = $ilDB->fetchAssoc($set))
77 $this->assignment_id =
$row[
"ass_id"];
78 $this->members[] =
$row[
"user_id"];
92 public static function getTeamId($a_assignment_id, $a_user_id, $a_create_on_demand =
false)
96 $sql =
"SELECT id FROM il_exc_team".
97 " WHERE ass_id = ".$ilDB->quote($a_assignment_id,
"integer").
98 " AND user_id = ".$ilDB->quote($a_user_id,
"integer");
99 $set = $ilDB->query($sql);
100 $row = $ilDB->fetchAssoc($set);
103 if(!
$id && $a_create_on_demand)
105 $id = $ilDB->nextId(
"il_exc_team");
107 $fields = array(
"id" => array(
"integer",
$id),
108 "ass_id" => array(
"integer", $a_assignment_id),
109 "user_id" => array(
"integer", $a_user_id));
110 $ilDB->insert(
"il_exc_team", $fields);
112 self::writeTeamLog(
$id, self::TEAM_LOG_CREATE_TEAM);
113 self::writeTeamLog(
$id, self::TEAM_LOG_ADD_MEMBER,
141 $sql =
"SELECT user_id".
143 " WHERE ass_id = ".$ilDB->quote($this->assignment_id,
"integer");
144 $set = $ilDB->query($sql);
145 while(
$row = $ilDB->fetchAssoc($set))
147 $ids[] =
$row[
"user_id"];
171 $fields = array(
"id" => array(
"integer", $this->
id),
172 "ass_id" => array(
"integer", $this->assignment_id),
173 "user_id" => array(
"integer", $a_user_id));
174 $ilDB->insert(
"il_exc_team", $fields);
181 $this->
writeLog(self::TEAM_LOG_ADD_MEMBER,
184 $this->
read($this->
id);
207 $sql =
"DELETE FROM il_exc_team".
208 " WHERE ass_id = ".$ilDB->quote($this->assignment_id,
"integer").
209 " AND id = ".$ilDB->quote($this->
id,
"integer").
210 " AND user_id = ".$ilDB->quote($a_user_id,
"integer");
211 $ilDB->manipulate($sql);
218 $this->
writeLog(self::TEAM_LOG_REMOVE_MEMBER,
221 $this->
read($this->
id);
236 $sql =
"SELECT * FROM il_exc_team".
237 " WHERE ass_id = ".$ilDB->quote($a_ass_id,
"integer");
238 $set = $ilDB->query($sql);
239 while(
$row = $ilDB->fetchAssoc($set))
241 $map[
$row[
"user_id"]] = $row[
"id"];
247 public function writeLog($a_action, $a_details = null)
249 self::writeTeamLog($this->
id, $a_action, $a_details);
259 public static function writeTeamLog($a_team_id, $a_action, $a_details = null)
264 "team_id" => array(
"integer", $a_team_id),
265 "user_id" => array(
"integer", $ilUser->getId()),
266 "action" => array(
"integer", $a_action),
267 "details" => array(
"text", $a_details),
268 "tstamp" => array(
"integer", time())
271 $ilDB->insert(
"il_exc_team_log", $fields);
288 $sql =
"SELECT * FROM il_exc_team_log".
289 " WHERE team_id = ".$ilDB->quote($this->
id,
"integer").
290 " ORDER BY tstamp DESC";
291 $set = $ilDB->query($sql);
292 while(
$row = $ilDB->fetchAssoc($set))
311 $set = $ilDB->query(
"SELECT DISTINCT(id)".
312 " FROM il_exc_team");
313 while(
$row = $ilDB->fetchAssoc($set))
315 $teams[] =
$row[
"id"];
318 $set = $ilDB->query(
"SELECT DISTINCT(team_id)".
319 " FROM il_exc_team_log");
320 while(
$row = $ilDB->fetchAssoc($set))
322 $team_id =
$row[
"team_id"];
323 if(!in_array($team_id, $teams))
325 $ilDB->manipulate(
"DELETE FROM il_exc_team_log".
326 " WHERE team_id = ".$ilDB->quote($team_id,
"integer"));
344 $ilUser->getId() == $a_user_id)
351 include_once
"./Services/Notification/classes/class.ilSystemNotification.php";
353 $ntf->setLangModules(array(
"exc"));
354 $ntf->setRefId($a_exc_ref_id);
355 $ntf->setChangedByUserId($ilUser->getId());
356 $ntf->setSubjectLangId(
'exc_team_notification_subject_'.$a_action);
357 $ntf->setIntroductionLangId(
'exc_team_notification_body_'.$a_action);
358 $ntf->addAdditionalInfo(
"exc_assignment", $ass->getTitle());
359 $ntf->setGotoLangId(
'exc_team_notification_link');
360 $ntf->setReasonLangId(
'exc_team_notification_reason');
361 $ntf->sendMail(array($a_user_id));
372 if($a_exclude_ass_id && $row[
"id"] == $a_exclude_ass_id)
379 $map = self::getAssignmentTeamMap($row[
"id"]);
381 if($a_user_id && !array_key_exists($a_user_id, $map))
391 $user_team_id = $map[$a_user_id];
392 $user_team = array();
393 foreach($map as $user_id => $team_id)
395 if($user_id != $a_user_id &&
396 $user_team_id == $team_id)
398 $user_team[] = $user_id;
406 $res[$row[
"id"]] = array(
407 "title" => $row[
"title"],
408 "teams" =>
sizeof(array_flip($map)),
413 $res[$row[
"id"]][
"user_team"] = $user_team;
423 public static function adoptTeams($a_source_ass_id, $a_target_ass_id, $a_user_id = null, $a_exc_ref_id = null)
428 foreach(self::getAssignmentTeamMap($a_source_ass_id) as $user_id => $team_id)
430 $teams[$team_id][] = $user_id;
432 if($a_user_id && $user_id == $a_user_id)
434 $old_team = $team_id;
442 self::getInstanceByUserId($a_target_ass_id, $a_user_id)->
getId())
448 $current_map = self::getAssignmentTeamMap($a_target_ass_id);
450 foreach($teams as $team_id => $user_ids)
452 if(!$old_team || $team_id == $old_team)
456 foreach($user_ids as $user_id)
458 if(!array_key_exists($user_id, $current_map))
460 $missing[] = $user_id;
467 $first = array_shift($missing);
468 $new_team = self::getInstanceByUserId($a_target_ass_id, $first,
true);
473 $new_team->sendNotification($a_exc_ref_id, $first,
"add");
476 foreach($missing as $user_id)
478 $new_team->addTeamMember($user_id, $a_exc_ref_id);
495 $parent_ref_id = $tree->getParentId($a_exc_ref_id);
498 foreach($tree->getChildsByType($parent_ref_id,
"grp") as $group)
500 $res[] = $group[
"obj_id"];
511 include_once
"Modules/Group/classes/class.ilGroupParticipants.php";
512 foreach(self::getAdoptableGroups($a_exc_ref_id) as $grp_obj_id)
516 $res[$grp_obj_id] = array(
518 ,
"members" => $members_obj->getMembers()
static getAssignmentDataOfExercise($a_exc_id)
Get assignments data of an exercise in an array.
const TEAM_LOG_REMOVE_MEMBER
static getAdoptableGroups($a_exc_ref_id)
static getGroupMembersMap($a_exc_ref_id)
static getAssignmentTeamMap($a_ass_id)
Get team structure for assignment.
static getTeamId($a_assignment_id, $a_user_id, $a_create_on_demand=false)
Get team id for member id.
static getInstancesFromMap($a_assignment_id)
addTeamMember($a_user_id, $a_exc_ref_id=null)
Add new member to team.
getLog()
Get all log entries for team.
Exercise assignment team.
static _lookupTitle($a_id)
lookup object title
static adoptTeams($a_source_ass_id, $a_target_ass_id, $a_user_id=null, $a_exc_ref_id=null)
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
_lookupFullname($a_user_id)
Lookup Full Name.
getMembers()
Get members of assignment team.
static getAdoptableTeamAssignments($a_exercise_id, $a_exclude_ass_id=null, $a_user_id=null)
const TEAM_LOG_REMOVE_FILE
sendNotification($a_exc_ref_id, $a_user_id, $a_action)
Send notification about team status.
static getInstanceByUserId($a_assignment_id, $a_user_id, $a_create_on_demand=false)
removeTeamMember($a_user_id, $a_exc_ref_id=null)
Remove member from team.
cleanLog()
Remove obsolete log entries.
getMembersOfAllTeams()
Get members for all teams of assignment.
writeLog($a_action, $a_details=null)
Wrapper classes for system notifications.
const TEAM_LOG_CREATE_TEAM
static writeTeamLog($a_team_id, $a_action, $a_details=null)
Add entry to team log.
const TEAM_LOG_ADD_MEMBER