2 namespace wcf\acp\page
;
3 use wcf\data\label\group\LabelGroupList
;
4 use wcf\data\language\item\LanguageItemList
;
5 use wcf\page\SortablePage
;
6 use wcf\system\language\LanguageFactory
;
7 use wcf\system\request\LinkHandler
;
9 use wcf\util\HeaderUtil
;
10 use wcf\util\StringUtil
;
13 * Lists available label groups.
15 * @author Alexander Ebert
16 * @copyright 2001-2019 WoltLab GmbH
17 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @package WoltLabSuite\Core\Acp\Page
20 * @property LabelGroupList $objectList
22 class LabelGroupListPage
extends SortablePage
{
26 public $activeMenuItem = 'wcf.acp.menu.link.label.group.list';
31 public $defaultSortField = 'showOrder';
36 public $itemsPerPage = 50;
41 public $validSortFields = ['groupID', 'groupName', 'groupDescription', 'showOrder', 'labels'];
46 public $neededPermissions = ['admin.content.label.canManageLabel'];
51 public $objectListClassName = LabelGroupList
::class;
56 public $groupName = '';
61 public $groupDescription = '';
66 public function readParameters() {
67 parent
::readParameters();
71 if (!empty($_POST['groupName'])) $parameters['groupName'] = StringUtil
::trim($_POST['groupName']);
72 if (!empty($_POST['groupDescription'])) $parameters['groupDescription'] = StringUtil
::trim($_POST['groupDescription']);
74 if (!empty($parameters)) {
75 HeaderUtil
::redirect(LinkHandler
::getInstance()->getLink('LabelGroupList', $parameters));
80 if (isset($_REQUEST['groupName'])) $this->groupName
= StringUtil
::trim($_REQUEST['groupName']);
81 if (isset($_REQUEST['groupDescription'])) $this->groupDescription
= StringUtil
::trim($_REQUEST['groupDescription']);
87 protected function initObjectList() {
88 parent
::initObjectList();
90 $this->objectList
->sqlSelects
.= '(SELECT COUNT(*) FROM wcf'.WCF_N
.'_label WHERE groupID = label_group.groupID) AS labels';
92 if ($this->groupName
) {
93 $languageItemList = new LanguageItemList();
94 $languageItemList->getConditionBuilder()->add('languageCategoryID = ?', [LanguageFactory
::getInstance()->getCategory('wcf.acp.label')->languageCategoryID
]);
95 $languageItemList->getConditionBuilder()->add('languageID = ?', [WCF
::getLanguage()->languageID
]);
96 $languageItemList->getConditionBuilder()->add('languageItem LIKE ?', ['wcf.acp.label.group%']);
97 $languageItemList->getConditionBuilder()->add('languageItemValue LIKE ?', ['%'.addcslashes($this->groupName
, '_%').'%']);
98 $languageItemList->readObjects();
101 foreach ($languageItemList as $languageItem) {
102 $labelIDs[] = str_replace('wcf.acp.label.group', '', $languageItem->languageItem
);
105 if (!empty($labelIDs)) {
106 $this->objectList
->getConditionBuilder()->add('(groupName LIKE ? OR groupID IN (?))', ['%'.addcslashes($this->groupName
, '_%').'%', $labelIDs]);
109 $this->objectList
->getConditionBuilder()->add('groupName LIKE ?', ['%'.addcslashes($this->groupName
, '_%').'%']);
113 if ($this->groupDescription
) {
114 $this->objectList
->getConditionBuilder()->add('label_group.groupDescription LIKE ?', ['%'.addcslashes($this->groupDescription
, '_%').'%']);
121 public function assignVariables() {
122 parent
::assignVariables();
124 WCF
::getTPL()->assign([
125 'groupName' => $this->groupName
,
126 'groupDescription' => $this->groupDescription
,