--- /dev/null
- * @package com.woltlab.wcf
- * @subpackage data
- * @category Community Framework
+ <?php
+ namespace wcf\data;
+
+ /**
+ * Default interface for actions implementing quick reply with parameter validation.
+ *
+ * @author Alexander Ebert
+ * @copyright 2001-2018 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
++ * @package WoltLabSuite\Core\Data
+ */
+ interface IMessageQuickReplyParametersAction extends IMessageQuickReplyAction {
+ /**
+ * Returns the list of allowed data parameters for the 'quickReply' action. The
+ * 'message' key is permitted by default.
+ *
+ * @return string[]
+ */
+ public function getAllowedQuickReplyParameters();
+ }
namespace wcf\system\message;
use wcf\data\DatabaseObjectDecorator;
use wcf\data\IAttachmentMessageQuickReplyAction;
+use wcf\data\IDatabaseObjectAction;
use wcf\data\IMessage;
use wcf\data\IMessageQuickReplyAction;
-use wcf\system\bbcode\PreParser;
+ use wcf\data\IMessageQuickReplyParametersAction;
+use wcf\data\IVisitableObjectAction;
+use wcf\system\bbcode\BBCodeHandler;
use wcf\system\event\EventHandler;
+use wcf\system\exception\ParentClassException;
use wcf\system\exception\SystemException;
use wcf\system\exception\UserInputException;
use wcf\system\SingletonFactory;
unset($parameters['data']['tmpHash']);
}
- $allowedDataParameters = array('message');
++ $allowedDataParameters = ['message'];
++ if (!WCF::getUser()->userID) $allowedDataParameters[] = 'username';
+ if ($object instanceof IMessageQuickReplyParametersAction) {
+ $allowedDataParameters = array_merge($allowedDataParameters, $object->getAllowedQuickReplyParameters());
+ }
- $eventParameters = array(
++ $eventParameters = [
+ 'allowedDataParameters' => $allowedDataParameters,
+ 'object' => $object
- );
++ ];
+ EventHandler::getInstance()->fireAction($this, 'allowedDataParameters', $eventParameters);
+ $allowedDataParameters = $eventParameters['allowedDataParameters'];
+
+ foreach ($parameters['data'] as $key => $value) {
+ if (!in_array($key, $allowedDataParameters)) {
+ unset($parameters['data'][$key]);
+ }
+ }
+
- // message settings
- $parameters['data'] = array_merge($parameters['data'], MessageFormSettingsHandler::getSettings($parameters));
-
- $parameters['data']['enableHtml'] = 0;
- $parameters['data']['showSignature'] = (WCF::getUser()->userID ? WCF::getUser()->showSignature : 0);
-
EventHandler::getInstance()->fireAction($this, 'validateParameters', $parameters);
}