Passed
Pull Request — master (#1490)
by René
04:02
created

UserDeletedJob   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 2
eloc 32
dl 0
loc 67
rs 10
c 2
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 19 1
A run() 0 20 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2021 Jonas Rittershofer <[email protected]>
4
 *
5
 * @author Jonas Rittershofer <[email protected]>
6
 *
7
 * @license GNU AGPL version 3 or any later version
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Affero General Public License as
11
 * published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License
20
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
 *
22
 */
23
24
namespace OCA\Polls\Cron;
25
26
use OCP\AppFramework\Utility\ITimeFactory;
27
use OCP\BackgroundJob\QueuedJob;
28
use OCP\Security\ISecureRandom;
29
use Psr\Log\LoggerInterface;
30
31
use OCA\Polls\Db\CommentMapper;
32
use OCA\Polls\Db\LogMapper;
33
use OCA\Polls\Db\OptionMapper;
34
use OCA\Polls\Db\PollMapper;
35
use OCA\Polls\Db\PreferencesMapper;
36
use OCA\Polls\Db\SubscriptionMapper;
37
use OCA\Polls\Db\VoteMapper;
38
39
class UserDeletedJob extends QueuedJob {
40
41
	/** @var CommentMapper **/
42
	private $commentMapper;
43
44
	/** @var LogMapper **/
45
	private $logMapper;
46
47
	/** @var OptionMapper **/
48
	private $optionMapper;
49
50
	/** @var PollMapper **/
51
	private $pollMapper;
52
53
	/** @var PreferencesMapper **/
54
	private $preferencesMapper;
55
56
	/** @var SubscriptionMapper **/
57
	private $subscriptionMapper;
58
59
	/** @var VoteMapper **/
60
	private $voteMapper;
61
62
	/** @var LoggerInterface */
63
	private $logger;
64
65
	public function __construct(CommentMapper $commentMapper,
66
		LogMapper $logMapper,
67
		OptionMapper $optionMapper,
68
		PollMapper $pollMapper,
69
		PreferencesMapper $preferencesMapper,
70
		SubscriptionMapper $subscriptionMapper,
71
		VoteMapper $voteMapper,
72
		ITimeFactory $time,
73
		LoggerInterface $logger
74
	) {
75
		parent::__construct($time);
76
		$this->commentMapper = $commentMapper;
77
		$this->logMapper = $logMapper;
78
		$this->optionMapper = $optionMapper;
79
		$this->pollMapper = $pollMapper;
80
		$this->preferencesMapper = $preferencesMapper;
81
		$this->subscriptionMapper = $subscriptionMapper;
82
		$this->voteMapper = $voteMapper;
83
		$this->logger = $logger;
84
	}
85
86
	protected function run($arguments) {
87
		$owner = $arguments['owner'];
88
		$this->logger->info('Deleting polls for deleted user {user}', [
89
			'user' => $owner
90
		]);
91
92
		$replacementName = 'deleted_' . \OC::$server->getSecureRandom()->generate(
93
			8,
94
			ISecureRandom::CHAR_DIGITS .
95
			ISecureRandom::CHAR_LOWER .
96
			ISecureRandom::CHAR_UPPER
97
		);
98
99
		$this->pollMapper->deleteByUserId($owner);
100
		$this->logMapper->deleteByUserId($owner);
101
		$this->preferencesMapper->deleteByUserId($owner);
102
		$this->subscriptionMapper->deleteByUserId($owner);
103
		$this->commentMapper->renameUserId($owner, $replacementName);
104
		$this->optionMapper->renameUserId($owner, $replacementName);
105
		$this->voteMapper->renameUserId($owner, $replacementName);
106
	}
107
}
108