Commit | Line | Data |
---|---|---|
04c06e85 MW |
1 | <?php |
2 | namespace wcf\acp\page; | |
3 | use wcf\page\SortablePage; | |
ea3185a0 | 4 | use wcf\system\clipboard\ClipboardHandler; |
04c06e85 MW |
5 | use wcf\system\WCF; |
6 | use wcf\util\StringUtil; | |
7 | ||
8 | /** | |
9 | * Shows a list of tags. | |
10 | * | |
11 | * @author Tim Duesterhus | |
2b6cb5c2 | 12 | * @copyright 2001-2015 WoltLab GmbH |
04c06e85 | 13 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
f4f05aa5 | 14 | * @package com.woltlab.wcf |
04c06e85 MW |
15 | * @subpackage acp.page |
16 | * @category Community Framework | |
17 | */ | |
18 | class TagListPage extends SortablePage { | |
19 | /** | |
0ad90fc3 | 20 | * @see \wcf\page\AbstractPage::$activeMenuItem |
04c06e85 MW |
21 | */ |
22 | public $activeMenuItem = 'wcf.acp.menu.link.tag.list'; | |
23 | ||
24 | /** | |
0ad90fc3 | 25 | * @see \wcf\page\AbstractPage::$neededPermissions |
04c06e85 MW |
26 | */ |
27 | public $neededPermissions = array('admin.content.tag.canManageTag'); | |
28 | ||
b46211f7 | 29 | /** |
30 | * @see wcf\page\AbstractPage::$neededModules | |
31 | */ | |
32 | public $neededModules = array('MODULE_TAGGING'); | |
33 | ||
04c06e85 | 34 | /** |
0ad90fc3 | 35 | * @see \wcf\page\SortablePage::$defaultSortField |
04c06e85 MW |
36 | */ |
37 | public $defaultSortField = 'name'; | |
38 | ||
39 | /** | |
0ad90fc3 | 40 | * @see \wcf\page\SortablePage::$validSortFields |
04c06e85 MW |
41 | */ |
42 | public $validSortFields = array('tagID', 'languageID', 'name', 'usageCount'); | |
43 | ||
44 | /** | |
0ad90fc3 | 45 | * @see \wcf\page\MultipleLinkPage::$objectListClassName |
04c06e85 MW |
46 | */ |
47 | public $objectListClassName = 'wcf\data\tag\TagList'; | |
48 | ||
49 | /** | |
50 | * search-query | |
51 | * @var string | |
52 | */ | |
53 | public $search = ''; | |
54 | ||
55 | /** | |
0ad90fc3 | 56 | * @see \wcf\page\IPage::assignVariables() |
04c06e85 MW |
57 | */ |
58 | public function assignVariables() { | |
59 | parent::assignVariables(); | |
60 | ||
61 | WCF::getTPL()->assign(array( | |
ea3185a0 | 62 | 'hasMarkedItems' => ClipboardHandler::getInstance()->hasMarkedItems(ClipboardHandler::getInstance()->getObjectTypeID('com.woltlab.wcf.tag')), |
04c06e85 MW |
63 | 'search' => $this->search |
64 | )); | |
65 | } | |
66 | ||
67 | /** | |
0ad90fc3 | 68 | * @see \wcf\page\IPage::readParameters() |
04c06e85 MW |
69 | */ |
70 | public function readParameters() { | |
71 | parent::readParameters(); | |
72 | ||
73 | if (isset($_REQUEST['search'])) $this->search = StringUtil::trim($_REQUEST['search']); | |
74 | } | |
75 | ||
76 | /** | |
0ad90fc3 | 77 | * @see \wcf\page\MultipleLinkPage::initObjectList() |
04c06e85 MW |
78 | */ |
79 | protected function initObjectList() { | |
80 | parent::initObjectList(); | |
81 | ||
82 | $this->objectList->sqlSelects = "(SELECT COUNT(*) FROM wcf".WCF_N."_tag_to_object t2o WHERE t2o.tagID = tag.tagID) AS usageCount"; | |
83 | $this->objectList->sqlSelects .= ", language.languageName, language.languageCode"; | |
84 | $this->objectList->sqlSelects .= ", synonym.name AS synonymName"; | |
85 | ||
86 | $this->objectList->sqlJoins = "LEFT JOIN wcf".WCF_N."_language language ON tag.languageID = language.languageID"; | |
87 | $this->objectList->sqlJoins .= " LEFT JOIN wcf".WCF_N."_tag synonym ON tag.synonymFor = synonym.tagID"; | |
88 | ||
89 | if ($this->search !== '') { | |
90 | $this->objectList->getConditionBuilder()->add('tag.name LIKE ?', array($this->search.'%')); | |
91 | } | |
92 | } | |
93 | } |