/** * used to configure object with database's data options * * @access protected * */ protected function configureProperties() { //first character if ($this->tipo[0] != self::NODE_TYPE) { return false; } //second character ignored because not applicable //third character delegated to parent class //fourth character delegated to parent class //fifth character ignored because not applicable //sixth character delegated to parent class return parent::configureProperties(); }
/** * save test's data (e.g. points earned, end time, level gained, etc.) * send a message to tutor and switcher when user reaches max course's level * set course subscription to complete * * @access protected * * @return returns true if test data is saved, false otherwise */ protected function saveTest() { $dh = $GLOBALS['dh']; $r = parent::saveTest(); $sess_id_course = $_SESSION['sess_id_course']; $sess_id_course_instance = $_SESSION['sess_id_course_instance']; if ($this->id_istanza == 0 || $this->id_istanza == NULL) { $this->id_istanza = $sess_id_course_instance; } if ($r) { //check for barrier and conseguent level up if ($this->barrier) { $level_gained = null; if (!is_null($r['min_barrier_points']) && $r['points'] >= $r['min_barrier_points']) { $level = $dh->_get_student_level($_SESSION['sess_id_user'], $this->id_istanza); if ($level < $this->livello) { $level = $this->livello; } if ($dh->set_student_level($this->id_istanza, array($_SESSION['sess_id_user']), $level)) { $level_gained = $level; $res = $dh->test_saveTest($r['id_history_test'], $r['tempo_scaduto'], $r['points'], $r['repeatable'], $r['min_barrier_points'], $level_gained); if (is_object($res) && get_class($res) == 'AMA_Error') { $this->_onSaveError = true; $this->rollBack(); return false; } //Send message to switcher and tutor when the user reaches max course's level //Set course subscription to complete $userObj = read_user($_SESSION['sess_id_user']); $max_level = $dh->get_course_max_level($sess_id_course); if ($level >= $max_level) { // se è l'ultimo esercizio (ovvero se il livello dello studente è il massimo possibile) // e l'esercizio è di tipo sbarramento // 1. cambia lo stato dell'iscrizione dello studente all'istanza corso /** * @author giorgio disabled on 12/nov/2014 completion is now * handled using modules/service-complete module */ // $dh->course_instance_student_subscribe($_SESSION['sess_id_course_instance'], $_SESSION['sess_id_user'], ADA_SERVICE_SUBSCRIPTION_STATUS_COMPLETED, $level); /* // 2. genera il messaggio da inviare allo switcher $tester = $userObj->getDefaultTester(); $tester_dh = AMA_DataHandler::instance(MultiPort::getDSN($tester)); $tester_info_Ar = $dh->get_tester_info_from_pointer($tester); // common? $tester_name = $tester_info_Ar[1]; $switchers_Ar = $tester_dh->get_users_by_type(array(AMA_TYPE_SWITCHER)); if (AMA_DataHandler::isError($switchers_Ar) || !is_array($switchers_Ar)) { // ?? } else { $switcher_id = $switchers_Ar[0]; // // FIXME: only the first switcher per provider ! if ($switcher_id) { $switcher = $dh->get_switcher($switcher_id); if (!AMA_DataHandler::isError($switcher)) { // prepare message to send $message_ha['destinatari'] = $switcher['username']; $message_ha['titolo'] = translateFN("Completamento corso") . "<br>"; // $message_ha['testo'] = $correttore->getMessageForTutor($user_name, $exercise); // FIXME should be a function of ExerciseCorrectionFactory?? $message_ha['testo'] = translateFN("Il corsista") . " $user_name " . translateFN("ha terminato il corso con id") . " " . $sess_id_course . "/" . $sess_id_course_instance; $message_ha['data_ora'] = "now"; $message_ha['tipo'] = ADA_MSG_SIMPLE; $message_ha['priorita'] = 1; $message_ha['mittente'] = $user_name; $mh = new MessageHandler(); $mh->send_message($message_ha); } } } // genera il messaggio da inviare al tutor // codice precedente $tutor_id = $dh->course_instance_tutor_get($sess_id_course_instance); if (AMA_DataHandler::isError($tutor_id)) { //? } // only one tutor per class if ($tutor_id) { $tutor = $dh->get_tutor($tutor_id); if (!AMA_DataHandler::isError($tutor)) { // prepare message to send $message_ha['destinatari'] = $tutor['username']; $message_ha['titolo'] = translateFN("Esercizio svolto da ") . $user_name . "<br>"; $message_ha['testo'] = $correttore->getMessageForTutor($user_name, $exercise); $message_ha['data_ora'] = "now"; $message_ha['tipo'] = ADA_MSG_SIMPLE; if ($course_completed) { $message_ha['tipo'] = ADA_MSG_MAIL; $message_ha['testo'].= translateFN("Il corsista") . " " . translateFN("ha terminato il corso con id") . " " . $sess_id_course . "/" . $sess_id_course_instance; } $message_ha['priorita'] = 1; $message_ha['mittente'] = $user_name; $mh = new MessageHandler(); $mh->send_message($message_ha); } } */ } // max level attained } } } } return true; }