示例#1
0
 /**
  * Save status of selecte members 
  */
 function saveStatusObject($a_part_view = false, $a_force_all = false)
 {
     global $ilCtrl;
     $this->checkPermission("write");
     include_once "./Modules/Exercise/classes/class.ilExAssignment.php";
     //		include_once 'Services/Tracking/classes/class.ilLPMarks.php';
     $saved_for = array();
     foreach ($_POST["id"] as $key => $value) {
         if (!$a_part_view) {
             if (!$a_force_all && $_POST["member"][$key] != "1") {
                 continue;
             } else {
                 $uname = ilObjUser::_lookupName($key);
                 $saved_for[] = $uname["lastname"] . ", " . $uname["firstname"];
             }
         }
         if (!$a_part_view) {
             $ass_id = (int) $_GET["ass_id"];
             $user_id = (int) $key;
         } else {
             $ass_id = (int) $key;
             $user_id = (int) $_GET["part_id"];
         }
         // team upload?
         if (is_object($this->ass) and $this->ass->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
             $team_id = $this->ass->getTeamId($user_id);
             $user_ids = $this->ass->getTeamMembers($team_id);
             if (count($_POST["member"]) > 0) {
                 foreach ($user_ids as $user_id) {
                     if ($user_id != $key) {
                         $uname = ilObjUser::_lookupName($user_id);
                         $saved_for[] = $uname["lastname"] . ", " . $uname["firstname"];
                     }
                 }
             }
         } else {
             $user_ids = array($user_id);
         }
         foreach ($user_ids as $user_id) {
             ilExAssignment::updateStatusOfUser($ass_id, $user_id, ilUtil::stripSlashes($_POST["status"][$key]));
             ilExAssignment::updateNoticeForUser($ass_id, $user_id, ilUtil::stripSlashes($_POST["notice"][$key]));
             if (ilUtil::stripSlashes($_POST['mark'][$key]) != ilExAssignment::lookupMarkOfUser($ass_id, $user_id)) {
                 ilExAssignment::updateStatusTimeOfUser($ass_id, $user_id);
             }
             ilExAssignment::updateMarkOfUser($ass_id, $user_id, ilUtil::stripSlashes($_POST['mark'][$key]));
             /*
             ilExAssignment::updateCommentForUser($ass_id, $user_id,
             	ilUtil::stripSlashes($_POST['lcomment'][$key]));				 
             */
         }
     }
     if (count($saved_for) > 0) {
         $save_for_str = "(" . implode($saved_for, " - ") . ")";
     }
     if ($save_for_str || $a_part_view) {
         ilUtil::sendSuccess($this->lng->txt("exc_status_saved") . " " . $save_for_str, true);
     }
     if (!$a_part_view) {
         $ilCtrl->redirect($this, "members");
     } else {
         $ilCtrl->redirect($this, "showParticipant");
     }
 }
 function __updateUserRubric($user_id, $obj_id, $passing_grade_minimum)
 {
     $form = $this->initEditUserForm($user_id, $obj_id);
     if ($form->checkInput()) {
         include_once 'Services/Tracking/classes/class.ilLPMarks.php';
         $marks = new ilLPMarks($obj_id, $user_id);
         $marks->setMark($form->getInput("mark"));
         $marks->setComment($form->getInput("comment"));
         $marks->setCompleted(1);
         $do_lp = true;
         $marks->update();
         // if assignment, updated exc_mem_ass_status
         $obj_type = ilObject::_lookupType($obj_id);
         if ($obj_type == 'exc') {
             include_once "./Modules/Exercise/classes/class.ilExAssignment.php";
             // do we have an ass id?
             $ass_id = 0;
             if (isset($_GET['ass_id'])) {
                 // yes, came from submission and grades
                 $ass_id = $_GET['ass_id'];
             } else {
                 // no, we need to get it
                 $ass_ids = ilExAssignment::getAssignmentDataOfExercise($obj_id);
                 $ass_id = $ass_ids[0]['id'];
             }
             if ($marks->getMark() >= $passing_grade_minimum) {
                 ilExAssignment::updateStatusOfUser($ass_id, $user_id, 'passed');
             } else {
                 ilExAssignment::updateStatusOfUser($ass_id, $user_id, 'failed');
             }
             ilExAssignment::updateMarkOfUser($ass_id, $user_id, $marks->getMark());
         } else {
             include_once "./Services/Tracking/classes/class.ilLPStatusWrapper.php";
             ilLPStatusWrapper::_updateStatus($obj_id, $user_id);
         }
         include_once "./Services/Tracking/classes/class.ilLPStatus.php";
         if ($marks->getMark() >= $passing_grade_minimum) {
             ilLPStatus::writeStatus($obj_id, $user_id, ilLPStatus::LP_STATUS_COMPLETED_NUM, false, true);
         } else {
             ilLPStatus::writeStatus($obj_id, $user_id, ilLPStatus::LP_STATUS_FAILED_NUM, false, true);
         }
     }
 }
 /**
  * Prepare For a Regrade of a Rubric
  * @param $obj_id
  * @param $usr_id
  * @return bool
  */
 public static function _prepareForRegrade($obj_id, $usr_id)
 {
     global $ilDB, $ilUser;
     $delete_date = date("Y-m-d H:i:s");
     //try and set deleted on any criteria in rubric_data table where deleted is not null.
     $affected_rows = $ilDB->manipulate("UPDATE rubric_data d INNER JOIN rubric r on d.rubric_id = r.rubric_id SET d.deleted =\r\n                                            " . $ilDB->quote($delete_date, "timestamp") . " WHERE d.deleted IS NULL AND d.usr_id = " . $ilDB->quote($usr_id, "integer") . " AND r.obj_id = " . $ilDB->quote($obj_id, "integer"));
     if ($affected_rows > 0) {
         //there was a mark prior, we should proceed with preparing things for a regrade.
         include_once 'Services/Tracking/classes/class.ilLPMarks.php';
         include_once "./Modules/Exercise/classes/class.ilExAssignment.php";
         include_once "./Services/Tracking/classes/class.ilLPStatus.php";
         //grab everything from ut_lp_marks for the users obj_id and usr_id, that way we can save it for our own use.
         $marks = new ilLPMarks($obj_id, $usr_id);
         $status = ilLPStatus::_lookupStatus($obj_id, $usr_id);
         $completed = $marks->getCompleted();
         $mark = $marks->getMark();
         $comments = $marks->getComment();
         //Save the UT LP marks for this object. We're using Delete Date for the Create Date so we can inner join to the delete up above so we have a
         //record of all marks.
         $id = $ilDB->nextID('rubric_grade_hist');
         $ilDB->manipulateF("INSERT INTO rubric_grade_hist(rubric_history_id,rubric_id,obj_id,usr_id,status,mark,completed,comments,owner,create_date,last_update) VALUES " . " (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", array("integer", "integer", "integer", "integer", "integer", "float", "integer", "text", "integer", "date", "date"), array($id, self::_lookupRubricId($obj_id), $obj_id, $usr_id, $status, $mark, $completed, $comments, $ilUser->getId(), $delete_date, $delete_date));
         //now that a record is saved delete it from marks, status and exercise.
         $marks->_deleteForUsers($obj_id, array($usr_id));
         ilLPStatus::writeStatus($obj_id, $usr_id, ilLPStatus::LP_STATUS_IN_PROGRESS_NUM);
         //Remove from Ex Assignment
         $ass_id = array_shift(ilExAssignment::getAssignmentDataOfExercise($obj_id));
         $assignment = new ilExAssignment($ass_id['id']);
         $assignment->updateMarkOfUser($ass_id['id'], $usr_id, '');
         $assignment->updateStatusOfUser($ass_id['id'], $usr_id, 'notgraded');
         return true;
     } else {
         //there were no marks to begin with OR this was already marked for regrade, so go no further.
         return false;
     }
 }
 /**
  * update marking of member
  *
  * @param int $usr_id
  */
 private function updateMarking($usr_id)
 {
     if (isset($this->mark)) {
         ilExAssignment::updateMarkOfUser($this->assignment->getId(), $usr_id, ilUtil::stripSlashes($this->mark));
     }
     if (isset($this->comment)) {
         ilExAssignment::updateCommentForUser($this->assignment->getId(), $usr_id, ilUtil::stripSlashes($this->comment));
     }
     //$memberObject = $this->exercise->members_obj;
     if (isset($this->status)) {
         ilExAssignment::updateStatusOfUser($this->assignment->getId(), $usr_id, ilUtil::stripSlashes($this->status));
     }
     if (isset($this->notice)) {
         ilExAssignment::updateNoticeForUser($this->assignment->getId(), $usr_id, ilUtil::stripSlashes($this->notice));
     }
     // reset variables
     $this->mark = null;
     $this->status = null;
     $this->notice = null;
     $this->comment = null;
 }