Example #1
0
                    $dataHa['exercise'] .= translateFN('Prossimo esercizio') . '</a>';
                }
            }
        }
        break;
    case 'view':
    default:
        $exercise = ExerciseDAO::getExercise($id_node);
        if ($user_level < $exercise->getExerciseLevel()) {
            $form = translateFN("Esercizio di livello superiore al tuo");
        } else {
            $viewer = ExerciseViewerFactory::create($exercise->getExerciseFamily());
            $action = 'exercise.php';
            $form = $viewer->getViewingForm($userObj, $exercise, $sess_id_course_instance, $action);
            // vito 26 gennaio 2009
            if (($id = ExerciseDAO::getNextExerciseId($exercise, $sess_id_user)) != NULL) {
                $next_exercise_menu_link = CDOMElement::create('a');
                $next_exercise_menu_link->setAttribute('href', "{$http_root_dir}/browsing/exercise.php?id_node={$id}");
                $next_exercise_menu_link->addCHild(new CText(translateFN('Prossimo esercizio')));
                $dataHa['go_back'] .= $next_exercise_menu_link->getHtml();
            }
        }
        $dataHa['exercise'] = $form;
        $node_title = $exercise->getTitle();
        $icon = CourseViewer::getCSSClassNameForExerciseType($exercise->getExerciseFamily());
        break;
}
/*
 * Actions menu
*/
if ($id_profile == AMA_TYPE_AUTHOR) {
Example #2
0
        break;
    case 'delete':
        /*
         * posso cancellare l'esercizio solo se:
         * 1. nessuna istanza di corso attiva
         * 2. istanza del corso attiva, ma nessuno studente ha già svolto l'esercizio.
         * 
         * quindi deve:
         * 1. ottieni istanze corso attive (esiste già il metodo AMA?)
         * 2. se istanza corso attiva, verifica se esiste studente che ha svolto esercizio
         * in questa istanza corso.
         * se tutto ok, cancella l'esercizio,
         * altrimenti mostra un messaggio che spiega perche' non e' possibile cancellare l'esercizio.
         * 
         */
        if (!ExerciseDAO::canEditExercise($id_node)) {
            $dataHa['exercise'] = translateFN("L'esercizio non può essere eliminato.");
            break;
        }
        $result = ExerciseDAO::delete($id_node);
        if (AMA_DataHandler::isError($result)) {
            $errObj = new ADA_Error($result, translateFN("Errore durante la cancellazione dell'esercizio"));
        }
        $dataHa['exercise'] = translateFN("L'esercizio &egrave; stato cancellato correttamente");
        break;
}
//$dataHa['go_back'].= "<BR><a href=\"$http_root_dir/browsing/exercise.php?id_node=$id_next_exercise\">".translateFN("Prossimo esercizio")."</a>";
$content_dataAr = array('banner' => isset($banner) ? $banner : '', 'status' => $status, 'course_title' => isset($course_title) ? $course_title : '', 'user_name' => $user_name, 'user_type' => $user_type, 'user_level' => $user_level, 'author' => isset($node_author) ? $node_author : '', 'node_level' => isset($node_level) ? $node_level : '', 'visited' => isset($visited) ? $visited : '', 'path' => $node_path, 'title' => $node_title, 'form' => $dataHa['exercise'], 'media' => isset($dataHa['media']) ? $dataHa['media'] : '', 'messages' => $user_messages->getHtml(), 'agenda' => $user_agenda->getHtml(), 'chat_users' => isset($online_users) ? $online_users : '', 'icon' => $icon);
// FIXME: non dovrebbe essere necessario aggiungere questa riga!
$layout_dataAr['node_type'] = '';
ARE::render($layout_dataAr, $content_dataAr);
Example #3
0
if (!isset($op)) {
    $op = 'default';
}
switch ($op) {
    case 'exe':
        $user_answer = $dh->get_ex_history_info($id_exe);
        if (AMA_DataHandler::isError($user_answer)) {
            //print("errore");
            $errObj = new ADA_Error($user_answer, translateFN("Errore nell'ottenimento della risposta utente"));
        }
        $node = $user_answer['node_id'];
        //$student_id      = $user_answer['student_id'];
        //$course_instance = $user_answer['course_id'];
        $id_student = $user_answer['student_id'];
        $id_course_instance = $user_answer['course_id'];
        $exercise = ExerciseDAO::getExercise($node, $id_exe);
        $_SESSION['exercise_object'] = serialize($exercise);
        if (AMA_DataHandler::isError($exercise)) {
            //print("errore");
            $errObj = new ADA_Error($exercise, translateFN("Errore nella lettura dell'esercizio"));
        }
        $viewer = ExerciseViewerFactory::create($exercise->getExerciseFamily());
        $history = $viewer->getExerciseHtml($exercise);
        $status = translateFN('Esercizio dello studente');
        break;
    case 'list':
    case 'default':
        // lettura dei dati dal database
        // Seleziona gli esercizi dello studente selezionato nel corso selezionato
        $userObj->get_exercise_dataFN($id_course_instance, $userObj->getId());
        // Esercizi svolti e relativi punteggi
Example #4
0
 function get_exercisesFN($user_level)
 {
     //global $dh,$error;
     //global $sess_id_user, $sess_id_course_instance;
     $dh = isset($GLOBALS['dh']) ? $GLOBALS['dh'] : null;
     $error = isset($GLOBALS['error']) ? $GLOBALS['error'] : null;
     $debug = isset($GLOBALS['debug']) ? $GLOBALS['debug'] : null;
     $sess_id_course_instance = isset($_SESSION['sess_id_course_instance']) ? $_SESSION['sess_id_course_instance'] : null;
     $sess_id_user = isset($_SESSION['sess_id_user']) ? $_SESSION['sess_id_user'] : null;
     // filtering exercises:
     // have the exercises been already  executed?
     // HTML EMBEDDED VERSION
     if (!empty($this->children)) {
         $exerc_Ar = $this->children;
         // mydebug(__LINE__,__FILE__,$exerc_Ar);
         $dataAr = array();
         foreach ($exerc_Ar as $id_exerc) {
             $temp = $dh->get_node_info($id_exerc);
             $type = $temp['type'];
             $exercise_type_family = $type[0];
             // first char = family (3 multiple, 4 open manual 5 open automatic 6 cloze etc)
             /*
             switch (strlen($exercise_type)){
             case 1:
             default:
             $exercise_type_mode = 0;// single
             $exercise_type_interaction = 0; // r+feedback
             break;
             case 2:
             $exercise_type_mode = $exercise_type[1];// second char = mode (0 single, 1 sequence, 2 random)
             $exercise_type_interaction = 0; // r+feedback
             break;
             case 3:
             $exercise_type_mode = $exercise_type[1];// second char = mode (0 single, 1 sequence, 2 random)
             $exercise_type_interaction = $exercise_type[2]; // third char = interaction (0 r+feedback 1 feedback 2 blind)
             break;
             }
             */
             if ($this->isNodeExercise($exercise_type_family)) {
                 //      if ($exercise_type_family >= ADA_STANDARD_EXERCISE_TYPE) {
                 // versione che legge nel DB la storia dell'esercizio
                 /*
                  $exercise = $dh->get_node_info($id_exerc);
                 // mydebug(__LINE__,__FILE__,$exercObj);
                 $exerc_title = $exercise['name'];
                 $out_fields_ar = array('data_visita','ripetibile');
                 $history_exerc = $dh->find_ex_history_list($out_fields_ar,$sess_id_user, $sess_id_course_instance, $id_exerc);
                 if (is_array($history_exerc)){
                   $h_exerc = array_shift($history_exerc);
                   // global $debug; $debug = 1; mydebug(__LINE__,__FILE__,$h_exerc); $debug=0;
                   if (is_array($h_exerc))
                   $already_executed = !$h_exerc[2];
                   else
                   $already_executed = "";
                 } else {
                   $already_executed = "";
                 }
                 */
                 // versione che utilizza la classe apposita
                 $exercise = ExerciseDAO::getExercise($id_exerc);
                 $exerc_title = $exercise->getTitle();
                 $already_executed = !$exercise->getRepeatable();
                 if (!$already_executed) {
                     // not yet viewed  or repeatable
                     $alt = translateFN("Esercizio");
                     $icon = "_exer.png";
                     $ok = true;
                 } else {
                     $alt = translateFN("Esercizio gi&agrave; eseguito");
                     $icon = "_exerdis.png";
                     // _gruppodis.png
                     $ok = false;
                 }
                 if ($ok) {
                     $exerc_ok = array("<img name=gruppo alt=\"{$alt}\" src=\"img/{$icon}\"> <a href=exercise.php?id_node={$id_exerc}>{$exerc_title}</a>");
                 } else {
                     $exerc_ok = array("<img name=gruppo alt=\"{$alt}\" src=\"img/{$icon}\">{$exerc_title}");
                 }
                 array_push($dataAr, $exerc_ok);
             }
         }
         $dataAr = $this->_removeEmptyElements($dataAr);
         $rules = '';
         $style = 'table_link';
         $t = new Table();
         $t->initTable('0', 'center', '0', '0', '100%', '', '', '', '', '0', '0', $rules, $style);
         $t->setTable($dataAr, $caption = "", $summary = translateFN("Indice degli esercizi collegati"));
         return $t->getTable();
     } else {
         return $this->_wrapTextInSpan(translateFN('Nessuno'), 'noitem')->getHtml() . "<p>";
     }
 }
Example #5
0
 function getExerciseReport($exerciseObj, $id_course_instance)
 {
     /*
      * ottiene i dati relativi alla risposte fornite dagli utenti nella classe
      * e alle risposte possibile ammesse dall'esercizio
      */
     $exercise_data = ExerciseDAO::getExerciseInfo($exerciseObj, $id_course_instance);
     $possible_answers = $exerciseObj->getExerciseData();
     $div = CDOMElement::create('div');
     $div->addChild(new CText($exerciseObj->getText()));
     $data = array();
     $exercise_data_count = count($exercise_data);
     $thead_data = array(translateFN('Testo della risposta'), translateFN('Punteggio'), translateFN('Numero di risposte'));
     /*
      * scorre le risposte fornite dalla classe
      */
     for ($i = 0; $i < $exercise_data_count; $i++) {
         $href = 'view.php?id_node=' . $exercise_data[$i]['risposta_libera'];
         $answer = CDOMElement::create('a', "href:{$href}");
         $answer_id = $exercise_data[$i]['risposta_libera'];
         $answer->addChild(new CText($exerciseObj->getExerciseDataAnswerForItem($answer_id)));
         $tbody_data[$i] = array($answer->getHtml(), $exercise_data[$i]['punteggio'], $exercise_data[$i]['risposte']);
         if (isset($possible_answers[$answer_id])) {
             unset($possible_answers[$answer_id]);
         }
     }
     /*
      * considera eventuali risposte all'esercizio che non sono state date
      * da nessuno studente
      */
     foreach ($possible_answers as $answer_id => $answer_data) {
         $href = 'view.php?id_node=' . $answer_id;
         $answer = CDOMElement::create('a', "href:{$href}");
         $answer->addChild(new CText($exerciseObj->getExerciseDataAnswerForItem($answer_id)));
         $tbody_data[$i] = array($answer->getHtml(), $exerciseObj->getExerciseDataCorrectnessForItem($answer_id), 0);
         $i++;
     }
     $div->addChild(BaseHtmlLib::tableElement('', $thead_data, $tbody_data));
     return $div->getHtml();
 }