class QuizfileuploadResponse in Quiz File Upload 6
Same name and namespace in other branches
- 7.5 quizfileupload.classes.inc \QuizfileuploadResponse
- 7 quizfileupload.classes.inc \QuizfileuploadResponse
- 7.4 quizfileupload.classes.inc \QuizfileuploadResponse
Extension of QuizQuestionResponse
Hierarchy
- class \QuizfileuploadResponse extends \QuizQuestionResponse
Expanded class hierarchy of QuizfileuploadResponse
1 string reference to 'QuizfileuploadResponse'
- quizfileupload_quiz_question_info in ./
quizfileupload.module - Implementation of hook_quiz_question_info().
File
- ./
quizfileupload.classes.inc, line 171 - The main classes for the multichoice question type.
View source
class QuizfileuploadResponse extends QuizQuestionResponse {
/**
* Constructor
*/
public function __construct($result_id, stdClass $question_node, $tries = NULL) {
$tries = $_FILES;
$this->answer = $tries;
$result->is_correct = TRUE;
$this->question->score_weight = NULL;
parent::__construct($result_id, $question_node, $tries);
if (!isset($answer)) {
// Question has been answered allready. We fetch the answer data from the database.
$sql = 'SELECT * FROM {quiz_fileupload_user_answers}
WHERE question_nid = %d AND question_vid = %d AND result_id = %d';
$r = db_fetch_object(db_query($sql, $question_node->nid, $question_node->vid, $result_id));
if (!empty($r)) {
$this->score = $r->score;
$this->evaluated = $r->is_evaluated;
$this->answer_id = $r->answer_id;
}
}
else {
$this->score = variable_get('quizfileupload_default_score', 0);
$this->evaluated = TRUE;
}
}
/**
* Implementation of isValid
*
* @see QuizQuestionResponse#isValid()
*/
public function isValid() {
$dir = variable_get('file_directory_path', 'sites/default/files');
$is_writable = file_check_directory($dir, 1);
if (!$is_writable) {
return t('File system path is not writable. Contact administrator to check settings at url /admin/settings/file-system');
}
if (isset($this->answer['files']['type']['tries']) && empty($this->answer['files']['type']['tries'])) {
$file = db_fetch_object(db_query('SELECT filename, filepath FROM {files} f
INNER JOIN {quiz_fileupload_user_answers} qf ON (f.fid = qf.fid)
WHERE answer_id = %d', $this->answer_id));
if (is_object($file)) {
// Don't throw error as the file has been already attached.
return TRUE;
}
else {
return t('Please upload a valid file.');
}
}
if (isset($this->answer['files']['type']['tries']) && !empty($this->answer['files']['type']['tries'])) {
$file = file_save_upload('tries', array(), file_directory_path());
if (!$file) {
form_set_error('field', 'Error uploading file.');
return;
}
$message = quizfileupload_validate_extensions($file, $this->question->filetypes);
return empty($message) ? TRUE : $message[0];
}
return FALSE;
}
/**
* Implementation of save
*
* @see QuizQuestionResponse#save()
*/
public function save() {
if ($this
->isValid() !== TRUE) {
return;
}
$file = file_save_upload('tries', array(), file_directory_path());
file_set_status($file, FILE_STATUS_PERMANENT);
$sql = 'INSERT INTO {quiz_fileupload_user_answers}
(result_id, question_vid, question_nid, fid, score)
VALUES (%d, %d, %d, "%s", %d)';
db_query($sql, $this->rid, $this->question->vid, $this->question->nid, $file->fid, $this
->score());
$this->answer_id = db_last_insert_id('quiz_fileupload_user_answers', 'answer_id');
}
/**
* Implementation of delete
*
* @see QuizQuestionResponse#delete()
*/
public function delete() {
$sql = 'DELETE FROM {quiz_fileupload_user_answers} WHERE result_id = %d AND question_nid = %d AND question_vid = %d';
db_query($sql, $this->rid, $this->question->nid, $this->question->vid);
}
/**
* Implementation of score
*
* @return uint
*
* @see QuizQuestionResponse#score()
*/
public function score() {
return variable_get('quizfileupload_default_score', 0);
}
/**
* Implementation of getResponse
*
* @return answer
*
* @see QuizQuestionResponse#getResponse()
*/
public function getResponse() {
return $this->answer;
}
/**
* Implementation of getReportFormResponse
*
* @see getReportFormResponse($showpoints, $showfeedback, $allow_scoring)
*/
public function getReportFormResponse($showpoints = TRUE, $showfeedback = TRUE, $allow_scoring = FALSE) {
$answer_id = $this->answer_id;
$file = db_fetch_object(db_query('SELECT filename, filepath FROM {files} f
INNER JOIN {quiz_fileupload_user_answers} qf ON (f.fid = qf.fid)
WHERE answer_id = %d', $answer_id));
// Return themed report
return array(
'#type' => 'markup',
'#value' => is_object($file) ? l($file->filename, file_create_url($file->filepath)) : t('n/a'),
);
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
QuizfileuploadResponse:: |
public | function | Implementation of delete | |
QuizfileuploadResponse:: |
public | function | Implementation of getReportFormResponse | |
QuizfileuploadResponse:: |
public | function | Implementation of getResponse | |
QuizfileuploadResponse:: |
public | function | Implementation of isValid | |
QuizfileuploadResponse:: |
public | function | Implementation of save | |
QuizfileuploadResponse:: |
public | function | Implementation of score | |
QuizfileuploadResponse:: |
public | function | Constructor |