-
Notifications
You must be signed in to change notification settings - Fork 453
/
DeleteUserRequest.php
120 lines (101 loc) · 3.81 KB
/
DeleteUserRequest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
namespace Concrete\Core\Workflow\Request;
use Concrete\Core\User\UserInfo;
use Concrete\Core\Workflow\Description as WorkflowDescription;
use Concrete\Core\Workflow\Progress\Action\Action as WorkflowProgressAction;
use Concrete\Core\Workflow\Progress\Progress;
use Concrete\Core\Workflow\Progress\UserProgress;
use PermissionKey;
use URL;
class DeleteUserRequest extends UserRequest
{
protected $requestAction = 'delete';
public function __construct()
{
$pk = PermissionKey::getByHandle('delete_user');
parent::__construct($pk);
}
public function getWorkflowRequestDescriptionObject()
{
$d = new WorkflowDescription();
$ui = UserInfo::getByID($this->getRequestedUserID());
$d->setEmailDescription(t("User account \"%s\" has been marked for deletion. The deletion request needs to be approved.",
$ui->getUserName()));
$d->setDescription(t("User %s Submitted for Deletion.", $ui->getUserName()));
$d->setInContextDescription(t("User Submitted for Deletion."));
$d->setShortStatus(t("Pending"));
return $d;
}
public function approve(Progress $wp)
{
$ui = UserInfo::getByID($this->getRequestedUserID());
$ui->delete();
$wpr = parent::cancel($wp);
// Make sure any workflow progress objects tied to this user are not
// left lying around to mess up the waiting for me view.
$workflowProgress = UserProgress::getList($this->getRequestedUserID(), [
'wpIsCompleted' => 0,
'wpApproved' => 0,
]);
foreach ($workflowProgress as $wp) {
// Skip the deletion of the current progress object as that would
// cause problems in the code that follows.
$wr = $wp->getWorkflowRequestObject();
if ($wr->getWorkflowRequestID() !== $this->getWorkflowRequestID()) {
$wp->delete();
}
}
$url = (string) URL::to('/dashboard/users/search/view', $this->getRequestedUserID(), 'deleted');
$wpr->setWorkflowProgressResponseURL($url);
$wpr->message = t("User %s has been deleted.", $ui->getUserName());
return $wpr;
}
/**
* After canceling delete request, do nothing
*/
public function cancel(Progress $wp)
{
$ui = UserInfo::getByID($this->getRequestedUserID());
$wpr = parent::cancel($wp);
$wpr->message = t("User deletion request has been cancelled.");
return $wpr;
}
public function getWorkflowRequestStyleClass()
{
return 'info';
}
public function getWorkflowRequestApproveButtonClass()
{
return '';
}
public function getWorkflowRequestApproveButtonInnerButtonRightHTML()
{
return '<i class="fa fa-thumbs-o-up"></i>';
}
public function getWorkflowRequestApproveButtonText()
{
return t('Delete User');
}
public function getWorkflowRequestAdditionalActions(Progress $wp)
{
$buttons = array();
$button = new WorkflowProgressAction();
$button->setWorkflowProgressActionLabel(t('Review'));
$button->addWorkflowProgressActionButtonParameter('dialog-title', t('User Details'));
$button->addWorkflowProgressActionButtonParameter('dialog-width', '420');
$button->addWorkflowProgressActionButtonParameter('dialog-height', '310');
$button->setWorkflowProgressActionURL(\URL::to('/ccm/system/dialogs/user/details') . '?uID=' . $this->getRequestedUserID());
$button->setWorkflowProgressActionStyleClass('dialog-launch');
$buttons[] = $button;
return $buttons;
}
/**
* Gets the translated text of action of user workflow request
*
* @return string
*/
public function getRequestActionText()
{
return t("Deletion");
}
}