File size: 1.54Kb
<?php
namespace BS\Contests\XF\Pub\Controller;
use XF\Mvc\ParameterBag;
class Forum extends XFCP_Forum
{
protected function setupThreadCreate(\XF\Entity\Forum $forum)
{
$creator = parent::setupThreadCreate($forum);
if ($forum->isContestForum())
{
$contest = $this->getContestFromInput();
$creator->setContest($contest);
}
return $creator;
}
protected function getContestFromInput()
{
$input = $this->request->filter([
'contest.type' => 'str',
'contest.end_date' => 'datetime',
'contest.count_members' => 'uint',
'contest.count_winners' => 'uint',
'contest.criteria.reaction_score' => 'uint',
'contest.criteria.message_count' => 'uint',
'contest.criteria.register_days' => 'uint',
'contest.auto_give_prize' => 'bool',
'contest.prizes' => 'array-str'
]);
$prizes = array_values(array_filter($input['contest.prizes']));
$contest = $this->em()->create('BS\Contests:Contest');
$contest->bulkSet([
'user_id' => \XF::visitor()->user_id,
'type' => $input['contest.type'],
'end_date' => $input['contest.end_date'],
'count_members' => $input['contest.count_members'],
'count_winners' => $input['contest.count_winners'],
'criteria' => [
'reaction_score' => $input['contest.criteria.reaction_score'],
'message_count' => $input['contest.criteria.message_count'],
'register_days' => $input['contest.criteria.register_days']
],
'auto_give_prize' => $input['contest.auto_give_prize'],
'prizes' => $prizes
]);
return $contest;
}
}