Exemple #1
0
 public function startAttempt($quiz, $studentId = null)
 {
     db()->beginTransaction();
     if (empty($studentId)) {
         $studentId = studentId();
     }
     if (!empty($quiz['maxAttemptNum'])) {
         $numAttemptsUsed = field_sql('SELECT COUNT(quizAttemptId) FROM quiz_attempt WHERE quizId=:quizId AND studentId=:studentId', array('quizId' => $quiz['quizId'], 'studentId' => $studentId));
         if ($numAttemptsUsed >= $quiz['maxAttemptNum']) {
             throw new Exception('Attempt limit consumed', 403);
         }
     }
     $numAttemptsInproc = field_sql('SELECT COUNT(quizAttemptId) FROM quiz_attempt WHERE quizId=:quizId AND studentId=:studentId AND status=:status', array('quizId' => $quiz['quizId'], 'studentId' => $studentId, 'status' => STATUS_INPROC));
     if ($numAttemptsInproc > 0) {
         throw new Exception('Already started', 403);
     }
     entry_change('quiz_attempt', array('quizId' => $quiz['quizId'], 'studentId' => $studentId, 'status' => STATUS_INPROC, 'timeStart' => date('Y-m-d H:i:s')));
     $attemptId = db()->lastInsertId();
     $questions = entries_sql('SELECT questionId FROM question WHERE questionBaseId=:questionBaseId', array('questionBaseId' => $quiz['questionBaseId']));
     if (empty($questions)) {
         throw new Exception('Questions not found', 404);
     }
     shuffle($questions);
     $num = 1;
     foreach ($questions as $q) {
         if (!empty($quiz['numQuestion']) && $num > $quiz['numQuestion']) {
             break;
         }
         entry_change('question_session', array('num' => $num++, 'quizAttemptId' => $attemptId, 'questionId' => $q['questionId'], 'status' => STATUS_NEW));
     }
     db()->commit();
     return $attemptId;
 }
 public function login()
 {
     if (studentId()) {
         redirect('c=up');
     }
     $login = val($_REQUEST, 'login');
     $passw = val($_REQUEST, 'passw');
     if (!empty($passw)) {
         $studentId = field_sql('SELECT studentId FROM student WHERE login=:login AND passw=:passw', array('login' => $login, 'passw' => md5($passw)));
         if (empty($studentId)) {
             env('warning', lng('main:loginfailed'));
         } else {
             $_SESSION['studentId'] = $studentId;
             redirect('c=up');
         }
     }
     env('breadcrumbs', array(lng('main:loginpage')));
     tpl('login_form', array('login' => $login, 'passw' => ''));
 }
Exemple #3
0
function get_fields()
{
    # no sense in doing all this so many times
    if (isset($GLOBALS['gotten_fields'])) {
        return $GLOBALS['gotten_fields'];
    }
    $fields_str = unix_newlines($_REQUEST['fields']);
    $GLOBALS['gotten_fields'] = array();
    $fields_str = rtrim($fields_str);
    $fields = split("\n", $fields_str);
    foreach ($fields as $field) {
        list($name, $type, $options) = split('  *', $field);
        if ($options) {
            $options = split(',', $options);
        }
        if (!$type) {
            $type = $name;
        }
        $input = field_input($type);
        $format = field_format($type);
        $sql = field_sql($type);
        $GLOBALS['gotten_fields'][] = array($name, $type, $input, $format, $sql, $options);
    }
    return $GLOBALS['gotten_fields'];
}