Exemplo n.º 1
0
 public function insDatePresence($id_course, $id_date, $user, $day, $score_min = 0)
 {
     $clear = $this->clearDatePresence($id_date);
     if ($clear) {
         require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
         require_once $GLOBALS['where_lms'] . '/lib/lib.stats.php';
         //require_once($GLOBALS['where_lms'].'/lib/lib.competences.php');
         //$cman = new Competences_Manager();
         $cmodel = new CompetencesAdm();
         $first = true;
         $test_type = $this->getTestType($id_date);
         $query = "INSERT INTO " . $this->presence_date_table . " (`day`, `id_date`, `id_user`, `id_day`, `presence`, `score`, `note`)" . " VALUES";
         foreach ($user as $id_user => $user_info) {
             $num_day = 0;
             $num_day_finished = 0;
             foreach ($user_info['day_presence'] as $id_day => $presence) {
                 $day_tmp = substr($day[$id_day]['date_begin'], 0, 10);
                 $num_day++;
                 if ($presence == 1) {
                     $num_day_finished++;
                 }
                 if ($first) {
                     $first = false;
                     $query .= " ('" . $day_tmp . "', " . $id_date . ", " . $id_user . ", " . $id_day . ", " . $presence . ", NULL, NULL)";
                 } else {
                     $query .= ", ('" . $day_tmp . "', " . $id_date . ", " . $id_user . ", " . $id_day . ", " . $presence . ", NULL, NULL)";
                 }
             }
             if ($test_type == _DATE_TEST_TYPE_PAPER) {
                 $num_day++;
                 if ($user_info['score'] >= $score_min) {
                     $num_day_finished++;
                 }
                 if ($first) {
                     $first = false;
                     $query .= " ('0000-00-00', " . $id_date . ", " . $id_user . ", 0, " . ($user_info['score'] >= $score_min ? 1 : 0) . ", '" . $user_info['score'] . "', '" . $user_info['note'] . "')";
                 } else {
                     $query .= ", ('0000-00-00', " . $id_date . ", " . $id_user . ", 0, " . ($user_info['score'] >= $score_min ? 1 : 0) . ", '" . $user_info['score'] . "', '" . $user_info['note'] . "')";
                 }
             } else {
                 if ($first) {
                     $first = false;
                     $query .= " ('0000-00-00', " . $id_date . ", " . $id_user . ", 0, 0, NULL, '" . $user_info['note'] . "')";
                 } else {
                     $query .= ", ('0000-00-00', " . $id_date . ", " . $id_user . ", 0, 0, NULL, '" . $user_info['note'] . "')";
                 }
             }
             if ($num_day == $num_day_finished && ($test_type == _DATE_TEST_TYPE_NONE || $test_type == _DATE_TEST_TYPE_PAPER)) {
                 saveTrackStatusChange($id_user, $id_course, _CUS_END);
                 //$cman->AssignCourseCompetencesToUser($id_course, $id_user);
                 $cmodel->assignCourseCompetencesToUser($id_course, $id_user);
                 $this->setDateFinished($id_date, $id_user);
             } elseif ($test_type == _DATE_TEST_TYPE_NONE || $test_type == _DATE_TEST_TYPE_PAPER) {
                 $query_itinere = "UPDATE " . $this->courseuser_table . " SET `status` = " . _CUS_BEGIN . "," . " date_complete = NULL" . " WHERE idUser = "******" AND idCourse = " . $id_course;
                 sql_query($query_itinere);
                 //TODO: funzione per togliere la competenza ad un utente se gli era stata precedentemente assegnata (forse)
             }
         }
         return sql_query($query);
     }
     return false;
 }
Exemplo n.º 2
0
 public function updateUserStatusInCourse($id_user, $id_course, $new_status)
 {
     $query = "UPDATE " . $this->subscribe_table . " SET status = " . (int) $new_status . ", waiting = " . ($new_status < 0 ? "1" : "0") . " " . ($new_status == _CUS_END ? ", date_complete = NOW() " : '') . " WHERE idCourse = " . $id_course . " AND idUser ";
     if (is_array($id_user)) {
         $query .= " IN (" . implode(',', $id_user) . ")";
     } else {
         $query .= " = " . (int) $id_user;
     }
     if ($this->db->query($query)) {
         if ($new_status == _CUS_END) {
             //require_once($GLOBALS['where_lms'].'/lib/lib.competences.php');
             //$cman = new Competences_Manager();
             $cmodel = new CompetencesAdm();
             $list = is_array($id_user) ? $id_user : array((int) $id_user);
             foreach ($list as $idst_user) {
                 $res1 = $cmodel->assignCourseCompetencesToUser($id_course, $id_user);
                 //$cman->AssignCourseCompetencesToUser($id_course, $id_user);
                 $res2 = $this->saveTrackStatusChange($id_user, $id_course, $new_status);
                 //TO DO: check if all users are been tracked  and had competences assigned
             }
             return true;
             //this should be in dependance with above results
         } else {
             //no 'completed' status --> just return with "ok"
             return true;
         }
     } else {
         //query error
         return false;
     }
 }
Exemplo n.º 3
0
/**
 * Save notification of user status in a course
 * @param int $idUser id of the user
 * @param int $idCourse id of the course
 * @param int $status new status
 **/
function saveTrackStatusChange($idUser, $idCourse, $status)
{
    require_once _lms_ . '/lib/lib.course.php';
    list($prev_status) = sql_fetch_row(sql_query("\r\n\t\tSELECT status\r\n\t\tFROM %lms_courseuser\r\n\t\tWHERE idUser = '******' AND idCourse = '" . (int) $idCourse . "'"));
    $extra = '';
    if ($prev_status != $status) {
        switch ($status) {
            case _CUS_SUBSCRIBED:
                //approved subscriptin for example
                $extra = ", date_inscr = NOW()";
                break;
            case _CUS_BEGIN:
                //first access
                UpdatesLms::resetCache();
                $extra = ", date_first_access = NOW()";
                break;
            case _CUS_END:
                //end course
                $extra = ", date_complete = NOW()";
                break;
        }
    }
    if (!sql_query("\r\n\tUPDATE %lms_courseuser\r\n\tSET status = '" . (int) $status . "' " . $extra . "\r\n\tWHERE idUser = '******' AND idCourse = '" . (int) $idCourse . "'")) {
        return false;
    }
    $re = sql_query("\r\n\tSELECT when_do \r\n\tFROM %lms_statuschangelog\r\n\tWHERE status_user = '******' AND \r\n\t\tidUser = '******' AND \r\n\t\tidCourse = '" . (int) $idCourse . "'");
    if (sql_num_rows($re)) {
        sql_query("\r\n\t\t\tUPDATE %lms_statuschangelog\r\n\t\t\tSET when_do = NOW()\r\n\t\t\tWHERE status_user = '******' AND\r\n\t\t\t\tidUser = '******' AND\r\n\t\t\t\tidCourse = '" . (int) $idCourse . "'");
    } else {
        sql_query("\r\n\t\t\tINSERT INTO %lms_statuschangelog\r\n\t\t\tSET status_user = '******',\r\n\t\t\t\tidUser = '******',\r\n\t\t\t\tidCourse = '" . (int) $idCourse . "',\r\n\t\t\t\twhen_do = NOW()");
    }
    if ($prev_status != $status && $status == _CUS_END) {
        // send alert
        require_once _lms_ . '/lib/lib.course.php';
        require_once _base_ . '/lib/lib.eventmanager.php';
        $cd = new DoceboCourse($idCourse);
        $acl_man =& Docebo::user()->getAclManager();
        $teachers = Man_Course::getIdUserOfLevel($idCourse, '6');
        $array_subst = array('[user]' => $acl_man->getUserName($idUser), '[course]' => $cd->getValue('name'));
        $msg_composer = new EventMessageComposer();
        $msg_composer->setSubjectLangText('email', '_USER_END_COURSE_SBJ', false);
        $msg_composer->setBodyLangText('email', '_USER_END_COURSE_TEXT', $array_subst);
        $msg_composer->setBodyLangText('sms', '_USER_END_COURSE_TEXT_SMS', $array_subst);
        // send message to the user subscribed
        createNewAlert('UserCourseEnded', 'status', 'modify', '1', 'User end course', $teachers, $msg_composer);
        //add course's competences scores to user
        $cmodel = new CompetencesAdm();
        $cmodel->assignCourseCompetencesToUser($idCourse, $idUser);
        //increment coursecompleted if this course is in a coursepath
        require_once _lms_ . '/lib/lib.coursepath.php';
        $cpmodel = new CoursePath_Manager();
        $cpmodel->assignComplete($idCourse, $idUser);
    }
    return true;
}