improve Questtype ?submit? and store additional data for Character answers
This commit is contained in:
parent
9cdd0cf8e3
commit
95837803a1
14 changed files with 302 additions and 38 deletions
|
|
@ -24,7 +24,7 @@
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('quests');
|
||||
public $models = array('quests', 'uploads', 'users');
|
||||
|
||||
|
||||
|
||||
|
|
@ -41,11 +41,8 @@
|
|||
*/
|
||||
public function saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers)
|
||||
{
|
||||
// Get already submitted answer
|
||||
$characterSubmission = $this->Submit->getCharacterSubmission($quest['id'], $character['id']);
|
||||
|
||||
// Save answer
|
||||
if(is_null($characterSubmission) && array_key_exists('answers', $_FILES))
|
||||
if(array_key_exists('answers', $_FILES))
|
||||
{
|
||||
$answer = $_FILES['answers'];
|
||||
|
||||
|
|
@ -78,8 +75,17 @@
|
|||
);
|
||||
}
|
||||
|
||||
// Create filename
|
||||
$filename = sprintf(
|
||||
'%s,%s,%s.%s',
|
||||
$character['url'],
|
||||
mb_substr($quest['url'], 0, 32),
|
||||
date('Ymd-His'),
|
||||
mb_substr(mb_substr($answer['name'], strrpos($answer['name'], '.')+1), 0, 4)
|
||||
);
|
||||
|
||||
// Save file
|
||||
if(!$this->Submit->setCharacterSubmission($seminary['id'], $quest['id'], $this->Auth->getUserId(), $character['id'], $answer)) {
|
||||
if(!$this->Submit->setCharacterSubmission($seminary['id'], $quest['id'], $this->Auth->getUserId(), $character['id'], $answer, $filename)) {
|
||||
throw new \hhu\z\exceptions\SubmissionNotValidException(
|
||||
new \hhu\z\exceptions\FileUploadException(error_get_last()['message'])
|
||||
);
|
||||
|
|
@ -88,6 +94,21 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save additional data for the answers of a Character for a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $data Additional (POST-) data
|
||||
*/
|
||||
public function saveDataForCharacterAnswers($seminary, $questgroup, $quest, $character, $data)
|
||||
{
|
||||
$this->Submit->addCommentForCharacterAnswer($this->Auth->getUserId(), $data['submission_id'], $data['comment']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if answers of a Character for a Quest match the correct ones.
|
||||
*
|
||||
|
|
@ -119,19 +140,38 @@
|
|||
*/
|
||||
public function quest($seminary, $questgroup, $quest, $character, $exception)
|
||||
{
|
||||
// Answer (Submission)
|
||||
$characterSubmission = $this->Submit->getCharacterSubmission($quest['id'], $character['id']);
|
||||
// Answers (Submissions)
|
||||
$characterSubmissions = $this->Submit->getCharacterSubmissions($quest['id'], $character['id']);
|
||||
foreach($characterSubmissions as &$submission)
|
||||
{
|
||||
$submission['upload'] = $this->Uploads->getSeminaryuploadById($submission['upload_id']);
|
||||
$submission['comments'] = $this->Submit->getCharacterSubmissionComments($submission['id']);
|
||||
foreach($submission['comments'] as &$comment)
|
||||
{
|
||||
try {
|
||||
$comment['user'] = $this->Users->getUserById($comment['created_user_id']);
|
||||
$comment['user']['character'] = $this->Characters->getCharacterForUserAndSeminary($comment['user']['id'], $seminary['id']);
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Has Character already solved Quest?
|
||||
$solved = $this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']);
|
||||
|
||||
// Last Quest status for Character
|
||||
$lastStatus = $this->Quests->getLastQuestStatus($quest['id'], $character['id']);
|
||||
|
||||
// Get allowed mimetypes
|
||||
$mimetypes = $this->Submit->getAllowedMimetypes($seminary['id']);
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('submission', $characterSubmission);
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('submissions', $characterSubmissions);
|
||||
$this->set('solved', $solved);
|
||||
$this->set('lastStatus', $lastStatus);
|
||||
$this->set('mimetypes', $mimetypes);
|
||||
$this->set('exception', $exception);
|
||||
}
|
||||
|
|
@ -149,15 +189,30 @@
|
|||
*/
|
||||
public function submission($seminary, $questgroup, $quest, $character)
|
||||
{
|
||||
// Get Character submission
|
||||
$submission = $this->Submit->getCharacterSubmission($quest['id'], $character['id']);
|
||||
// Get Character submissions
|
||||
$submissions = $this->Submit->getCharacterSubmissions($quest['id'], $character['id']);
|
||||
foreach($submissions as &$submission)
|
||||
{
|
||||
$submission['upload'] = $this->Uploads->getSeminaryuploadById($submission['upload_id']);
|
||||
$submission['comments'] = $this->Submit->getCharacterSubmissionComments($submission['id']);
|
||||
foreach($submission['comments'] as &$comment)
|
||||
{
|
||||
try {
|
||||
$comment['user'] = $this->Users->getUserById($comment['created_user_id']);
|
||||
$comment['user']['character'] = $this->Characters->getCharacterForUserAndSeminary($comment['user']['id'], $seminary['id']);
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Status
|
||||
$solved = $this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']);
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('submission', $submission);
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('submissions', $submissions);
|
||||
$this->set('solved', $solved);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue