Merge branch 'refs/heads/21-qr' into 30-qr
authorAlexander Ebert <ebert@woltlab.com>
Sun, 11 Mar 2018 17:42:33 +0000 (18:42 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Sun, 11 Mar 2018 17:42:33 +0000 (18:42 +0100)
# Conflicts:
# wcfsetup/install/files/lib/system/message/QuickReplyManager.class.php

1  2 
wcfsetup/install/files/lib/data/IMessageQuickReplyParametersAction.class.php
wcfsetup/install/files/lib/system/message/QuickReplyManager.class.php

index 0000000000000000000000000000000000000000,d40e16684372e6c313013afd40103d9f022e8475..b68739a04812298d5159d5060b2a1b81f21c79f3
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,20 @@@
 - * @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();
+ }
index ad6fc0d5b98e6c8ddec157993f247afda994d24e,e0bdf444e74d0b9d29075757a96913d6200e3ae6..a00d6ffb876e09e99ba6f6c3ce25c7de167430a3
@@@ -2,13 -2,11 +2,14 @@@
  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;
@@@ -159,6 -156,29 +160,24 @@@ class QuickReplyManager extends Singlet
                        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);
        }