1 | <?php |
||
10 | class AssignUsersToWorkflowAction extends WorkflowAction { |
||
|
|||
11 | |||
12 | private static $db = array( |
||
13 | 'AssignInitiator' => 'Boolean', |
||
14 | ); |
||
15 | |||
16 | private static $many_many = array( |
||
17 | 'Users' => 'Member', |
||
18 | 'Groups' => 'Group' |
||
19 | ); |
||
20 | |||
21 | public static $icon = 'advancedworkflow/images/assign.png'; |
||
22 | |||
23 | public function execute(WorkflowInstance $workflow) { |
||
24 | $workflow->Users()->removeAll(); |
||
25 | //Due to http://open.silverstripe.org/ticket/8258, there are errors occuring if Group has been extended |
||
26 | //We use a direct delete query here before ticket 8258 fixed |
||
27 | //$workflow->Groups()->removeAll(); |
||
28 | $workflowID = $workflow->ID; |
||
29 | $query = <<<SQL |
||
30 | DELETE FROM "WorkflowInstance_Groups" WHERE ("WorkflowInstance_Groups"."WorkflowInstanceID" = '$workflowID'); |
||
31 | SQL; |
||
32 | DB::query($query); |
||
33 | $workflow->Users()->addMany($this->Users()); |
||
34 | $workflow->Groups()->addMany($this->Groups()); |
||
35 | if ($this->AssignInitiator) { |
||
36 | $workflow->Users()->add($workflow->Initiator()); |
||
37 | } |
||
38 | return true; |
||
39 | } |
||
40 | |||
41 | public function getCMSFields() { |
||
42 | $fields = parent::getCMSFields(); |
||
43 | |||
44 | $cmsUsers = Member::mapInCMSGroups(); |
||
45 | |||
46 | $fields->addFieldsToTab('Root.Main', array( |
||
47 | new HeaderField('AssignUsers', $this->fieldLabel('AssignUsers')), |
||
48 | new CheckboxField('AssignInitiator', $this->fieldLabel('AssignInitiator')), |
||
49 | $users = CheckboxSetField::create('Users', $this->fieldLabel('Users'), $cmsUsers), |
||
50 | new TreeMultiselectField('Groups', $this->fieldLabel('Groups'), 'Group') |
||
51 | )); |
||
52 | |||
53 | // limit to the users which actually can access the CMS |
||
54 | $users->setSource(Member::mapInCMSGroups()); |
||
55 | |||
56 | return $fields; |
||
57 | } |
||
58 | |||
59 | public function fieldLabels($relations = true) { |
||
60 | return array_merge(parent::fieldLabels($relations), array( |
||
61 | 'AssignUsers' => _t('AssignUsersToWorkflowAction.ASSIGNUSERS', 'Assign Users'), |
||
62 | 'Users' => _t('AssignUsersToWorkflowAction.USERS', 'Users'), |
||
63 | 'Groups' => _t('AssignUsersToWorkflowAction.GROUPS', 'Groups'), |
||
64 | 'AssignInitiator' => _t('AssignUsersToWorkflowAction.INITIATOR', 'Assign Initiator'), |
||
65 | )); |
||
66 | } |
||
67 | |||
68 | /** |
||
69 | * Returns a set of all Members that are assigned to this WorkflowAction subclass, either directly or via a group. |
||
70 | * |
||
71 | * @return ArrayList |
||
72 | */ |
||
73 | public function getAssignedMembers() { |
||
95 | } |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.