Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Admin/Controller/CaptchaQuestion.php
<?php

namespace XF\Admin\Controller;

use
XF\Mvc\ParameterBag;

class
CaptchaQuestion extends AbstractController
{
    protected function
preDispatchController($action, ParameterBag $params)
    {
       
$this->assertAdminPermission('option');
    }

    public function
actionIndex()
    {
       
$questionRepo = $this->getCaptchaQuestionRepo();
       
$questions = $questionRepo->findCaptchaQuestionsForList()->fetch();

       
$viewParams = [
           
'questions' => $questions
       
];
        return
$this->view('XF:CaptchaQuestion\Listing', 'captcha_question_list', $viewParams);
    }

    protected function
questionAddEdit(\XF\Entity\CaptchaQuestion $question)
    {
       
$viewParams = [
           
'question' => $question
       
];
        return
$this->view('XF:CaptchaQuestion\Edit', 'captcha_question_edit', $viewParams);
    }

    public function
actionAdd()
    {
       
$question = $this->em()->create('XF:CaptchaQuestion');
        return
$this->questionAddEdit($question);
    }

    public function
actionEdit(ParameterBag $params)
    {
       
$question = $this->assertCaptchaQuestionExists($params['captcha_question_id']);
        return
$this->questionAddEdit($question);
    }

    protected function
questionSaveProcess(\XF\Entity\CaptchaQuestion $question)
    {
       
$input = $this->filter([
           
'question' => 'str',
           
'answers' => 'array-str',
           
'active' => 'bool'
       
]);

       
$form = $this->formAction();
       
$form->basicEntitySave($question, $input);

        return
$form;
    }

    public function
actionSave(ParameterBag $params)
    {
       
$this->assertPostOnly();

        if (
$params['captcha_question_id'])
        {
           
$question = $this->assertCaptchaQuestionExists($params['captcha_question_id']);
        }
        else
        {
           
$question = $this->em()->create('XF:CaptchaQuestion');
        }

       
$form = $this->questionSaveProcess($question);
       
$form->run();

        return
$this->redirect($this->buildLink('captcha-questions') . $this->buildLinkHash($question->captcha_question_id));
    }

    public function
actionDelete(ParameterBag $params)
    {
       
$question = $this->assertCaptchaQuestionExists($params['captcha_question_id']);

       
/** @var \XF\ControllerPlugin\Delete $plugin */
       
$plugin = $this->plugin('XF:Delete');
        return
$plugin->actionDelete(
           
$question,
           
$this->buildLink('captcha-questions/delete', $question),
           
$this->buildLink('captcha-questions/edit', $question),
           
$this->buildLink('captcha-questions'),
           
$question->question
       
);
    }

    public function
actionToggle()
    {
       
/** @var \XF\ControllerPlugin\Toggle $plugin */
       
$plugin = $this->plugin('XF:Toggle');
        return
$plugin->actionToggle('XF:CaptchaQuestion');
    }

   
/**
     * @param string $id
     * @param array|string|null $with
     * @param null|string $phraseKey
     *
     * @return \XF\Entity\CaptchaQuestion
     */
   
protected function assertCaptchaQuestionExists($id, $with = null, $phraseKey = null)
    {
        return
$this->assertRecordExists('XF:CaptchaQuestion', $id, $with, $phraseKey);
    }

   
/**
     * @return \XF\Repository\CaptchaQuestion
     */
   
protected function getCaptchaQuestionRepo()
    {
        return
$this->repository('XF:CaptchaQuestion');
    }
}