Completed
Push — master ( 88aa0c...4fa222 )
by René
20s queued 13s
created

UserDeletedJob   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 21 1
A run() 0 21 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\ShareMapper;
37
use OCA\Polls\Db\SubscriptionMapper;
38
use OCA\Polls\Db\VoteMapper;
39
40
class UserDeletedJob extends QueuedJob {
41
42
	/** @var CommentMapper **/
43
	private $commentMapper;
44
45
	/** @var LogMapper **/
46
	private $logMapper;
47
48
	/** @var OptionMapper **/
49
	private $optionMapper;
50
51
	/** @var PollMapper **/
52
	private $pollMapper;
53
54
	/** @var PreferencesMapper **/
55
	private $preferencesMapper;
56
57
	/** @var SubscriptionMapper **/
58
	private $subscriptionMapper;
59
60
	/** @var ShareMapper **/
61
	private $shareMapper;
62
63
	/** @var VoteMapper **/
64
	private $voteMapper;
65
66
	/** @var LoggerInterface */
67
	private $logger;
68
69
	public function __construct(CommentMapper $commentMapper,
70
		LogMapper $logMapper,
71
		OptionMapper $optionMapper,
72
		PollMapper $pollMapper,
73
		PreferencesMapper $preferencesMapper,
74
		ShareMapper $shareMapper,
75
		SubscriptionMapper $subscriptionMapper,
76
		VoteMapper $voteMapper,
77
		ITimeFactory $time,
78
		LoggerInterface $logger
79
	) {
80
		parent::__construct($time);
81
		$this->commentMapper = $commentMapper;
82
		$this->logMapper = $logMapper;
83
		$this->optionMapper = $optionMapper;
84
		$this->pollMapper = $pollMapper;
85
		$this->preferencesMapper = $preferencesMapper;
86
		$this->shareMapper = $shareMapper;
87
		$this->subscriptionMapper = $subscriptionMapper;
88
		$this->voteMapper = $voteMapper;
89
		$this->logger = $logger;
90
	}
91
92
	protected function run($arguments) {
93
		$owner = $arguments['owner'];
94
		$this->logger->info('Deleting polls for deleted user {user}', [
95
			'user' => $owner
96
		]);
97
98
		$replacementName = 'deleted_' . \OC::$server->getSecureRandom()->generate(
99
			8,
100
			ISecureRandom::CHAR_DIGITS .
101
			ISecureRandom::CHAR_LOWER .
102
			ISecureRandom::CHAR_UPPER
103
		);
104
105
		$this->pollMapper->deleteByUserId($owner);
106
		$this->logMapper->deleteByUserId($owner);
107
		$this->shareMapper->deleteByUserId($owner);
108
		$this->preferencesMapper->deleteByUserId($owner);
109
		$this->subscriptionMapper->deleteByUserId($owner);
110
		$this->commentMapper->renameUserId($owner, $replacementName);
111
		$this->optionMapper->renameUserId($owner, $replacementName);
112
		$this->voteMapper->renameUserId($owner, $replacementName);
113
	}
114
}
115