/** * was: deliverReturnedFiles($a_member_id, $a_only_new = false) */ function deliverReturnedFiles($a_exc_id, $a_ass_id, $a_user_id, $a_only_new = false, $a_peer_review_mask_filename = false) { global $ilUser, $ilDB; // #11000 / #11785 $is_team = true; $user_ids = self::getTeamMembersByAssignmentId($a_ass_id, $a_user_id); if (!$user_ids) { $is_team = false; $user_ids = array($a_user_id); } // get last download time $and_str = ""; if ($a_only_new) { $q = "SELECT download_time FROM exc_usr_tutor WHERE " . " ass_id = " . $ilDB->quote($a_ass_id, "integer") . " AND " . $ilDB->in("usr_id", $user_ids, "", "integer") . " AND " . " tutor_id = " . $ilDB->quote($ilUser->getId(), "integer"); $lu_set = $ilDB->query($q); if ($lu_rec = $ilDB->fetchAssoc($lu_set)) { if ($lu_rec["download_time"] > 0) { $and_str = " AND ts > " . $ilDB->quote($lu_rec["download_time"], "timestamp"); } } } foreach ($user_ids as $user_id) { ilExAssignment::updateTutorDownloadTime($a_exc_id, $a_ass_id, $user_id); } if ($a_peer_review_mask_filename) { // process peer review sequence id $peer_id = null; foreach ($this->ass->getPeerReviewsByGiver($ilUser->getId()) as $idx => $item) { if ($item["peer_id"] == $a_user_id) { $peer_id = $idx + 1; break; } } } $query = "SELECT * FROM exc_returned" . " WHERE ass_id = " . $ilDB->quote($a_ass_id, "integer") . " AND " . $ilDB->in("user_id", $user_ids, "", "integer") . $and_str; $result = $ilDB->query($query); $count = $ilDB->numRows($result); if ($count == 1) { $row = $ilDB->fetchAssoc($result); switch (self::lookupType($a_ass_id)) { case self::TYPE_BLOG: case self::TYPE_PORTFOLIO: $row["filetitle"] = ilObjUser::_lookupName($row["user_id"]); $row["filetitle"] = ilObject::_lookupTitle($a_exc_id) . " - " . self::lookupTitle($a_ass_id) . " - " . $row["filetitle"]["firstname"] . " " . $row["filetitle"]["lastname"] . " (" . $row["filetitle"]["login"] . ").zip"; break; default: break; } if ($a_peer_review_mask_filename) { $suffix = array_pop(explode(".", $row["filetitle"])); $row["filetitle"] = self::lookupTitle($a_ass_id) . "_peer" . $peer_id . "." . $suffix; } ilExAssignment::downloadSingleFile($a_exc_id, $a_ass_id, $row["user_id"], $row["filename"], $row["filetitle"]); } else { if ($count > 0) { $array_files = array(); $seq = 0; while ($row = $ilDB->fetchAssoc($result)) { $src = basename($row["filename"]); if ($a_peer_review_mask_filename) { $suffix = array_pop(explode(".", $src)); $tgt = self::lookupTitle($a_ass_id) . "_peer" . $peer_id . "_" . ++$seq . "." . $suffix; $array_files[$row["user_id"]][] = array($src, $tgt); } else { $array_files[$row["user_id"]][] = $src; } } ilExAssignment::downloadMultipleFiles($a_exc_id, $a_ass_id, $array_files, $is_team ? null : $a_user_id, $is_team); } else { return false; } } return true; }
/** * Download all submitted files (of all members). */ function downloadAllObject() { $this->checkPermission("write"); $members = array(); foreach ($this->object->members_obj->getMembers() as $member_id) { // update download time ilExAssignment::updateTutorDownloadTime($this->object->getId(), (int) $_GET["ass_id"], $member_id); // get member object (ilObjUser) if (ilObject::_exists($member_id)) { $tmp_obj =& ilObjectFactory::getInstanceByObjId($member_id); $members[$member_id] = $tmp_obj->getFirstname() . " " . $tmp_obj->getLastname(); unset($tmp_obj); } } ilExAssignment::downloadAllDeliveredFiles($this->object->getId(), (int) $_GET["ass_id"], $members); exit; }
/** * was: deliverReturnedFiles($a_member_id, $a_only_new = false) */ function deliverReturnedFiles($a_exc_id, $a_ass_id, $a_user_id, $a_only_new = false) { global $ilUser, $ilDB; // #11000 $user_ids = self::getTeamMembersByAssignmentId($a_ass_id, $a_user_id); if (!$user_ids) { $user_ids = array($a_user_id); } // get last download time $and_str = ""; if ($a_only_new) { $q = "SELECT download_time FROM exc_usr_tutor WHERE " . " ass_id = " . $ilDB->quote($a_ass_id, "integer") . " AND " . $ilDB->in("usr_id", $user_ids, "", "integer") . " AND " . " tutor_id = " . $ilDB->quote($ilUser->getId(), "integer"); $lu_set = $ilDB->query($q); if ($lu_rec = $ilDB->fetchAssoc($lu_set)) { if ($lu_rec["download_time"] > 0) { $and_str = " AND ts > " . $ilDB->quote($lu_rec["download_time"], "timestamp"); } } } foreach ($user_ids as $user_id) { ilExAssignment::updateTutorDownloadTime($a_exc_id, $a_ass_id, $user_id); } $query = "SELECT * FROM exc_returned" . " WHERE ass_id = " . $ilDB->quote($a_ass_id, "integer") . " AND " . $ilDB->in("user_id", $user_ids, "", "integer") . $and_str; $result = $ilDB->query($query); $count = $ilDB->numRows($result); if ($count == 1) { $row = $ilDB->fetchAssoc($result); switch (self::lookupType($a_ass_id)) { case self::TYPE_BLOG: case self::TYPE_PORTFOLIO: $row["filetitle"] = ilObjUser::_lookupName($row["user_id"]); $row["filetitle"] = ilObject::_lookupTitle($a_exc_id) . " - " . self::lookupTitle($a_ass_id) . " - " . $row["filetitle"]["firstname"] . " " . $row["filetitle"]["lastname"] . " (" . $row["filetitle"]["login"] . ").zip"; break; default: break; } ilExAssignment::downloadSingleFile($a_exc_id, $a_ass_id, $row["user_id"], $row["filename"], $row["filetitle"]); } else { if ($count > 0) { $array_files = array(); $filename = ""; while ($row = $ilDB->fetchAssoc($result)) { $array_files[$row["user_id"]][] = basename($row["filename"]); } $pathinfo = pathinfo($filename); $dir = $pathinfo["dirname"]; ilExAssignment::downloadMultipleFiles($a_exc_id, $a_ass_id, $array_files, null, true); } else { return false; } } return true; }