Apply PSR-12 code style (#3886)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / user / rank / UserRankAction.class.php
1 <?php
2
3 namespace wcf\data\user\rank;
4
5 use wcf\data\AbstractDatabaseObjectAction;
6 use wcf\system\exception\InvalidObjectArgument;
7 use wcf\system\file\upload\UploadFile;
8
9 /**
10 * Executes user rank-related actions.
11 *
12 * @author Marcel Werk
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
16 *
17 * @method UserRankEditor[] getObjects()
18 * @method UserRankEditor getSingleObject()
19 */
20 class UserRankAction extends AbstractDatabaseObjectAction
21 {
22 /**
23 * @inheritDoc
24 */
25 protected $permissionsDelete = ['admin.user.rank.canManageRank'];
26
27 /**
28 * @inheritDoc
29 */
30 protected $requireACP = ['delete'];
31
32 /**
33 * @inheritDoc
34 */
35 public function create()
36 {
37 /** @var UserRank $rank */
38 $rank = parent::create();
39
40 if (isset($this->parameters['rankImageFile']) && $this->parameters['rankImageFile']) {
41 if (!($this->parameters['rankImageFile'] instanceof UploadFile)) {
42 throw new InvalidObjectArgument(
43 $this->parameters['rankImageFile'],
44 UploadFile::class,
45 "The parameter 'rankImageFile'"
46 );
47 }
48
49 if (!$this->parameters['rankImageFile']->isProcessed()) {
50 $fileName = $rank->rankID . '-' . $this->parameters['rankImageFile']->getFilename();
51
52 \rename(
53 $this->parameters['rankImageFile']->getLocation(),
54 WCF_DIR . UserRank::RANK_IMAGE_DIR . $fileName
55 );
56 $this->parameters['rankImageFile']->setProcessed(WCF_DIR . UserRank::RANK_IMAGE_DIR . $fileName);
57
58 $updateData['rankImage'] = $fileName;
59
60 $rankEditor = new UserRankEditor($rank);
61 $rankEditor->update($updateData);
62 }
63 }
64
65 return $rank;
66 }
67
68 /**
69 * @inheritDoc
70 */
71 public function update()
72 {
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'],
78 UploadFile::class,
79 "An array values of 'rankImageFile__removedFiles'"
80 );
81 }
82
83 @\unlink($file->getLocation());
84 }
85 }
86
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.");
90 }
91
92 $object = \reset($this->objects);
93
94 if (!$this->parameters['rankImageFile']) {
95 $this->parameters['data']['rankImage'] = "";
96 } else {
97 if (!($this->parameters['rankImageFile'] instanceof UploadFile)) {
98 throw new InvalidObjectArgument(
99 $this->parameters['rankImageFile'],
100 UploadFile::class,
101 "The parameter 'rankImageFile'"
102 );
103 }
104
105 if (!$this->parameters['rankImageFile']->isProcessed()) {
106 $fileName = $object->rankID . '-' . $this->parameters['rankImageFile']->getFilename();
107
108 \rename(
109 $this->parameters['rankImageFile']->getLocation(),
110 WCF_DIR . UserRank::RANK_IMAGE_DIR . $fileName
111 );
112 $this->parameters['rankImageFile']->setProcessed(WCF_DIR . UserRank::RANK_IMAGE_DIR . $fileName);
113
114 $this->parameters['data']['rankImage'] = $fileName;
115 }
116 }
117 }
118
119 parent::update();
120 }
121 }