Файл: library/XenForo/ControllerAdmin/SmilieCategory.php
Строк: 123
<?php
/**
* Controller to manage smilie categories in the admin control panel.
*
* @package XenForo_Smilie
*/
class XenForo_ControllerAdmin_SmilieCategory extends XenForo_ControllerAdmin_Abstract
{
protected function _preDispatch($action)
{
$this->assertAdminPermission('bbCodeSmilie');
}
/**
* Displays a list of smilie categories.
*
* @return XenForo_Controller_ResponseAbstract
*/
public function actionIndex()
{
$smilieModel = $this->_getSmilieModel();
$smilieCategories = $smilieModel->getAllSmilieCategories();
$viewParams = array(
'smilieCategories' => $smilieModel->prepareSmilieCategories($smilieCategories)
);
return $this->responseView('XenForo_ViewAdmin_SmilieCategory_List', 'smilie_category_list', $viewParams);
}
public function actionAdd()
{
$viewParams = array(
'smilieCategory' => array(
'display_order' => 0
)
);
return $this->responseView('XenForo_ViewAdmin_SmilieCategory_Edit', 'smilie_category_edit', $viewParams);
}
public function actionEdit()
{
$smilieCategoryId = $this->_input->filterSingle('smilie_category_id', XenForo_Input::UINT);
$smilieCategory = $this->_getSmilieCategoryOrError($smilieCategoryId);
$viewParams = array(
'smilieCategory' => $smilieCategory
);
return $this->responseView('XenForo_ViewAdmin_SmilieCategory_Edit', 'smilie_category_edit', $viewParams);
}
public function actionSave()
{
$this->_assertPostOnly();
$smilieCategoryId = $this->_input->filterSingle('smilie_category_id', XenForo_Input::UINT);
$dwInput = $this->_input->filter(array(
'smilie_category_id' => XenForo_Input::STRING,
'display_order' => XenForo_Input::UINT,
));
$titlePhrase = $this->_input->filterSingle('title', XenForo_Input::STRING);
$dw = XenForo_DataWriter::create('XenForo_DataWriter_SmilieCategory');
if ($smilieCategoryId)
{
$dw->setExistingData($smilieCategoryId);
}
$dw->bulkSet($dwInput);
$dw->setExtraData(XenForo_DataWriter_SmilieCategory::DATA_TITLE, $titlePhrase);
$dw->save();
return $this->responseRedirect(
XenForo_ControllerResponse_Redirect::SUCCESS,
XenForo_Link::buildAdminLink('smilies') . $this->getLastHash('c' . $dw->get('smilie_category_id'))
);
}
public function actionDelete()
{
if ($this->isConfirmedPost())
{
return $this->_deleteData(
'XenForo_DataWriter_SmilieCategory', 'smilie_category_id',
XenForo_Link::buildAdminLink('smilies')
);
}
else
{
$smilieCategoryId = $this->_input->filterSingle('smilie_category_id', XenForo_Input::STRING);
$smilieCategory = $this->_getSmilieCategoryOrError($smilieCategoryId);
$viewParams = array(
'smilieCategory' => $smilieCategory
);
return $this->responseView('XenForo_ViewAdmin_SmilieCategory_Delete', 'smilie_category_delete', $viewParams);
}
}
/**
* Gets a valid smilie category or throws an exception.
*
* @param string $smilieCategoryId
*
* @return array
*/
protected function _getSmilieCategoryOrError($smilieCategoryId)
{
$smilieModel = $this->_getSmilieModel();
$info = $smilieModel->getSmilieCategoryById($smilieCategoryId);
if (!$info)
{
throw $this->responseException($this->responseError(new XenForo_Phrase('requested_smilie_category_not_found'), 404));
}
$smilieCategory = $smilieModel->prepareSmilieCategory($info);
return $smilieCategory;
}
/**
* @return XenForo_Model_Smilie
*/
protected function _getSmilieModel()
{
return $this->getModelFromCache('XenForo_Model_Smilie');
}
}