Add clipboard support for tags
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / acp / page / TagListPage.class.php
CommitLineData
04c06e85
MW
1<?php
2namespace wcf\acp\page;
3use wcf\page\SortablePage;
ea3185a0 4use wcf\system\clipboard\ClipboardHandler;
04c06e85
MW
5use wcf\system\WCF;
6use 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 */
18class 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}