3 namespace wcf\data\label
;
5 use wcf\data\DatabaseObjectEditor
;
6 use wcf\data\IEditableCachedObject
;
7 use wcf\system\cache\builder\LabelCacheBuilder
;
11 * Provides functions to edit labels.
13 * @author Alexander Ebert
14 * @copyright 2001-2019 WoltLab GmbH
15 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
17 * @method static Label create(array $parameters = [])
18 * @method Label getDecoratedObject()
21 class LabelEditor
extends DatabaseObjectEditor
implements IEditableCachedObject
26 protected static $baseClass = Label
::class;
31 public static function resetCache()
33 LabelCacheBuilder
::getInstance()->reset();
37 * Adds the label to a specific position in the label group.
40 * @param int $showOrder
42 public function setShowOrder($groupID, $showOrder = 0)
44 // shift back labels in old label group with higher showOrder
45 if ($this->showOrder
) {
46 $sql = "UPDATE wcf" . WCF_N
. "_label
47 SET showOrder = showOrder - 1
50 $statement = WCF
::getDB()->prepareStatement($sql);
51 $statement->execute([$this->groupID
, $this->showOrder
]);
54 // shift labels in new label group with higher showOrder
56 $sql = "UPDATE wcf" . WCF_N
. "_label
57 SET showOrder = showOrder + 1
60 $statement = WCF
::getDB()->prepareStatement($sql);
61 $statement->execute([$groupID, $showOrder]);
64 // get maximum existing show order
65 $sql = "SELECT MAX(showOrder)
66 FROM wcf" . WCF_N
. "_label
68 $statement = WCF
::getDB()->prepareStatement($sql);
69 $statement->execute([$groupID]);
70 $maxShowOrder = $statement->fetchSingleColumn() ?
: 0;
72 if (!$showOrder ||
$showOrder > $maxShowOrder) {
73 $showOrder = $maxShowOrder +
1;
76 $this->update(['showOrder' => $showOrder]);