2 namespace wcf\system\clipboard\action
;
3 use wcf\data\clipboard\action\ClipboardAction
;
4 use wcf\data\DatabaseObject
;
5 use wcf\system\clipboard\ClipboardEditorItem
;
6 use wcf\system\exception\SystemException
;
10 * Abstract implementation of a clipboard action handler.
12 * @author Matthias Schmidt
13 * @copyright 2001-2016 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package com.woltlab.wcf
16 * @subpackage system.clipboard.action
17 * @category Community Framework
19 abstract class AbstractClipboardAction
implements IClipboardAction
{
21 * list of the clipboard actions which are executed by the action class
24 protected $actionClassActions = [];
27 * relevant database objects
28 * @var DatabaseObject[]
30 protected $objects = [];
33 * list of the supported clipboard actions
36 protected $supportedActions = [];
41 public function execute(array $objects, ClipboardAction
$action) {
42 if (!in_array($action->actionName
, $this->supportedActions
)) {
43 throw new SystemException("Unknown clipboard action '".$action->actionName
."'");
46 $this->objects
= $objects;
48 $item = new ClipboardEditorItem();
49 $item->setName($this->getTypeName().'.'.$action->actionName
);
51 // set action class-related data
52 if (in_array($action->actionName
, $this->actionClassActions
)) {
53 $item->addParameter('actionName', $action->actionName
);
54 $item->addParameter('className', $this->getClassName());
57 // validate objects if relevant method exists and set valid object ids
58 $methodName = 'validate'.ucfirst($action->actionName
);
59 if (method_exists($this, $methodName)) {
60 $objectIDs = $this->$methodName();
61 if (empty($objectIDs)) {
65 $item->addParameter('objectIDs', $objectIDs);
74 public function getEditorLabel(array $objects) {
75 return WCF
::getLanguage()->getDynamicVariable('wcf.clipboard.label.'.$this->getTypeName().'.marked', [
76 'count' => count($objects)