Moved event and added avatar link
authorAlexander Ebert <ebert@woltlab.com>
Sat, 19 May 2018 11:05:15 +0000 (13:05 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Sat, 19 May 2018 11:05:15 +0000 (13:05 +0200)
wcfsetup/install/files/lib/acp/action/UserExportGdprAction.class.php

index f4011f99c4533b4b8bc53369d8a77e0bfbcdc04e..b1b69037584bead527575ab41850f7ab567ae111 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\acp\action;
 use wcf\action\AbstractAction;
 use wcf\data\package\PackageCache;
+use wcf\data\user\avatar\DefaultAvatar;
 use wcf\data\user\group\UserGroup;
 use wcf\data\user\UserProfile;
 use wcf\system\event\EventHandler;
@@ -91,6 +92,7 @@ class UserExportGdprAction extends AbstractAction {
         * @inheritDoc
         */
        public function execute() {
+               // you MUST NOT use the `execute` event to provide data, use `export` (see below) instead!
                parent::execute();
                
                $this->ipAddresses = array(
@@ -110,12 +112,16 @@ class UserExportGdprAction extends AbstractAction {
                        )
                );
                
+               EventHandler::getInstance()->fireAction($this, 'export');
+               
                foreach ($this->ipAddresses as $package => $tableNames) {
                        if (PackageCache::getInstance()->getPackageByIdentifier($package) === null) {
                                continue;
                        }
                        
-                       $this->data[$package] = array();
+                       if (!isset($this->data[$package])) {
+                               $this->data[$package] = array();
+                       }
                        
                        $ipAddresses = array();
                        foreach ($tableNames as $tableName) {
@@ -128,8 +134,6 @@ class UserExportGdprAction extends AbstractAction {
                        $this->data[$package]['ipAddresses'] = $ipAddresses;
                }
                
-               EventHandler::getInstance()->fireAction($this, 'export');
-               
                $this->data['@@generator'] = array(
                        'software' => 'WoltLab Community Framework',
                        'version' => WCF_VERSION,
@@ -161,9 +165,14 @@ class UserExportGdprAction extends AbstractAction {
         * @return      array
         */
        public function exportIpAddresses($databaseTable, $ipAddressColumn, $timeColumn, $userIDColumn) {
+               if (!LOG_IP_ADDRESS) {
+                       return array();
+               }
+               
                $sql = "SELECT  ${ipAddressColumn}, ${timeColumn}
                        FROM    ${databaseTable}
-                       WHERE   ${userIDColumn} = ?";
+                       WHERE   ${userIDColumn} = ?
+                               AND {$ipAddressColumn} <> ''";
                $statement = WCF::getDB()->prepareStatement($sql);
                $statement->execute(array($this->user->userID));
                
@@ -190,6 +199,10 @@ class UserExportGdprAction extends AbstractAction {
                        if ($this->user->{$property}) $data[$property] = $this->user->{$property};
                }
                
+               if ($this->user->avatarID || (MODULE_GRAVATAR && $this->user->enableGravatar)) {
+                       $data['avatarURL'] = $this->user->getAvatar()->getURL();
+               }
+               
                return $data;
        }