Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }