3 namespace wcf\data\user\rank
;
5 use wcf\data\AbstractDatabaseObjectAction
;
6 use wcf\system\exception\InvalidObjectArgument
;
7 use wcf\system\file\upload\UploadFile
;
10 * Executes user rank-related actions.
13 * @copyright 2001-2019 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package WoltLabSuite\Core\Data\User\Rank
17 * @method UserRankEditor[] getObjects()
18 * @method UserRankEditor getSingleObject()
20 class UserRankAction
extends AbstractDatabaseObjectAction
25 protected $permissionsDelete = ['admin.user.rank.canManageRank'];
30 protected $requireACP = ['delete'];
35 public function create()
37 /** @var UserRank $rank */
38 $rank = parent
::create();
40 if (isset($this->parameters
['rankImageFile']) && $this->parameters
['rankImageFile']) {
41 if (!($this->parameters
['rankImageFile'] instanceof UploadFile
)) {
42 throw new InvalidObjectArgument(
43 $this->parameters
['rankImageFile'],
45 "The parameter 'rankImageFile'"
49 if (!$this->parameters
['rankImageFile']->isProcessed()) {
50 $fileName = $rank->rankID
. '-' . $this->parameters
['rankImageFile']->getFilename();
53 $this->parameters
['rankImageFile']->getLocation(),
54 WCF_DIR
. UserRank
::RANK_IMAGE_DIR
. $fileName
56 $this->parameters
['rankImageFile']->setProcessed(WCF_DIR
. UserRank
::RANK_IMAGE_DIR
. $fileName);
58 $updateData['rankImage'] = $fileName;
60 $rankEditor = new UserRankEditor($rank);
61 $rankEditor->update($updateData);
71 public function update()
73 if (isset($this->parameters
['rankImageFile__removedFiles']) && \
is_array($this->parameters
['rankImageFile__removedFiles'])) {
74 foreach ($this->parameters
['rankImageFile__removedFiles'] as $file) {
75 if (!($file instanceof UploadFile
)) {
76 throw new InvalidObjectArgument(
77 $this->parameters
['rankImageFile__removedFiles'],
79 "An array values of 'rankImageFile__removedFiles'"
83 @\
unlink($file->getLocation());
87 if (isset($this->parameters
['rankImageFile'])) {
88 if (\
count($this->objects
) > 1) {
89 throw new \
BadMethodCallException("The parameter 'rankImageFile' can only be processed, if there is only one object to update.");
92 $object = \reset
($this->objects
);
94 if (!$this->parameters
['rankImageFile']) {
95 $this->parameters
['data']['rankImage'] = "";
97 if (!($this->parameters
['rankImageFile'] instanceof UploadFile
)) {
98 throw new InvalidObjectArgument(
99 $this->parameters
['rankImageFile'],
101 "The parameter 'rankImageFile'"
105 if (!$this->parameters
['rankImageFile']->isProcessed()) {
106 $fileName = $object->rankID
. '-' . $this->parameters
['rankImageFile']->getFilename();
109 $this->parameters
['rankImageFile']->getLocation(),
110 WCF_DIR
. UserRank
::RANK_IMAGE_DIR
. $fileName
112 $this->parameters
['rankImageFile']->setProcessed(WCF_DIR
. UserRank
::RANK_IMAGE_DIR
. $fileName);
114 $this->parameters
['data']['rankImage'] = $fileName;