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>
16 * @package WoltLabSuite\Core\Data\Label
18 * @method static Label create(array $parameters = [])
19 * @method Label getDecoratedObject()
22 class LabelEditor
extends DatabaseObjectEditor
implements IEditableCachedObject
27 protected static $baseClass = Label
::class;
32 public static function resetCache()
34 LabelCacheBuilder
::getInstance()->reset();
38 * Adds the label to a specific position in the label group.
41 * @param int $showOrder
43 public function setShowOrder($groupID, $showOrder = 0)
45 // shift back labels in old label group with higher showOrder
46 if ($this->showOrder
) {
47 $sql = "UPDATE wcf" . WCF_N
. "_label
48 SET showOrder = showOrder - 1
51 $statement = WCF
::getDB()->prepareStatement($sql);
52 $statement->execute([$this->groupID
, $this->showOrder
]);
55 // shift labels in new label group with higher showOrder
57 $sql = "UPDATE wcf" . WCF_N
. "_label
58 SET showOrder = showOrder + 1
61 $statement = WCF
::getDB()->prepareStatement($sql);
62 $statement->execute([$groupID, $showOrder]);
65 // get maximum existing show order
66 $sql = "SELECT MAX(showOrder)
67 FROM wcf" . WCF_N
. "_label
69 $statement = WCF
::getDB()->prepareStatement($sql);
70 $statement->execute([$groupID]);
71 $maxShowOrder = $statement->fetchSingleColumn() ?
: 0;
73 if (!$showOrder ||
$showOrder > $maxShowOrder) {
74 $showOrder = $maxShowOrder +
1;
77 $this->update(['showOrder' => $showOrder]);