2 namespace wcf\data\smiley
;
3 use wcf\data\AbstractDatabaseObjectAction
;
4 use wcf\data\ISortableAction
;
5 use wcf\system\exception\PermissionDeniedException
;
6 use wcf\system\exception\UserInputException
;
10 * Executes smiley-related actions.
12 * @author Alexander Ebert
13 * @copyright 2001-2014 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package com.woltlab.wcf
16 * @subpackage data.smiley
17 * @category Community Framework
19 class SmileyAction
extends AbstractDatabaseObjectAction
implements ISortableAction
{
21 * @see \wcf\data\AbstractDatabaseObjectAction::$className
23 protected $className = 'wcf\data\smiley\SmileyEditor';
26 * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
28 protected $permissionsDelete = array('admin.content.smiley.canManageSmiley');
31 * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
33 protected $permissionsUpdate = array('admin.content.smiley.canManageSmiley');
36 * @see \wcf\data\AbstractDatabaseObjectAction::$requireACP
38 protected $requireACP = array('delete', 'update', 'updatePosition');
41 * @see \wcf\data\ISortableAction::validateUpdatePosition()
43 public function validateUpdatePosition() {
44 // validate permissions
45 if (is_array($this->permissionsUpdate
) && count($this->permissionsUpdate
)) {
46 WCF
::getSession()->checkPermissions($this->permissionsUpdate
);
49 throw new PermissionDeniedException();
52 if (!isset($this->parameters
['data']['structure'])) {
53 throw new UserInputException('structure');
56 $this->readInteger('offset', true, 'data');
60 * @see \wcf\data\ISortableAction::updatePosition()
62 public function updatePosition() {
63 $smileyList = new SmileyList();
64 $smileyList->readObjects();
66 $i = $this->parameters
['data']['offset'];
67 WCF
::getDB()->beginTransaction();
68 foreach ($this->parameters
['data']['structure'][0] as $smileyID) {
69 $smiley = $smileyList->search($smileyID);
70 if ($smiley === null) continue;
72 $editor = new SmileyEditor($smiley);
73 $editor->update(array('showOrder' => $i++
));
75 WCF
::getDB()->commitTransaction();