3 namespace wcf\acp\page
;
5 use wcf\data\tag\TagList
;
6 use wcf\page\SortablePage
;
7 use wcf\system\clipboard\ClipboardHandler
;
9 use wcf\util\StringUtil
;
12 * Shows a list of tags.
14 * @author Tim Duesterhus
15 * @copyright 2001-2019 WoltLab GmbH
16 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
18 * @property TagList $objectList
20 class TagListPage
extends SortablePage
25 public $activeMenuItem = 'wcf.acp.menu.link.tag.list';
30 public $neededPermissions = ['admin.content.tag.canManageTag'];
35 public $neededModules = ['MODULE_TAGGING'];
40 public $defaultSortField = 'name';
45 public $validSortFields = ['tagID', 'languageID', 'name', 'usageCount'];
50 public $objectListClassName = TagList
::class;
61 public function assignVariables()
63 parent
::assignVariables();
65 WCF
::getTPL()->assign([
66 'hasMarkedItems' => ClipboardHandler
::getInstance()->hasMarkedItems(ClipboardHandler
::getInstance()->getObjectTypeID('com.woltlab.wcf.tag')),
67 'search' => $this->search
,
74 public function readParameters()
76 parent
::readParameters();
78 if (isset($_REQUEST['search'])) {
79 $this->search
= StringUtil
::trim($_REQUEST['search']);
86 protected function initObjectList()
88 parent
::initObjectList();
90 $this->objectList
->sqlSelects
= "(
92 FROM wcf" . WCF_N
. "_tag_to_object t2o
93 WHERE t2o.tagID = tag.tagID
95 $this->objectList
->sqlSelects
.= ", language.languageName, language.languageCode";
96 $this->objectList
->sqlSelects
.= ", synonym.name AS synonymName";
98 $this->objectList
->sqlJoins
= "
99 LEFT JOIN wcf" . WCF_N
. "_language language
100 ON tag.languageID = language.languageID
101 LEFT JOIN wcf" . WCF_N
. "_tag synonym
102 ON tag.synonymFor = synonym.tagID";
104 if ($this->search
!== '') {
105 $this->objectList
->getConditionBuilder()->add('tag.name LIKE ?', [$this->search
. '%']);