Source of file AssignContentApproversAction.php
Size: 2,257 Bytes - Last Modified: 2021-12-23T10:49:13+00:00
/var/www/docs.ssmods.com/process/src/src/Actions/AssignContentApproversAction.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | <?php namespace Symbiote\AdvancedWorkflow\Actions; use SilverStripe\Security\Group; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowInstance; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\DropdownField; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowAction; use Symbiote\AdvancedWorkflow\Extension\ContentApproversExtension; class AssignContentApproversAction extends WorkflowAction { private static $icon = 'symbiote/silverstripe-advancedworkflow:images/assign.png'; private static $table_name = 'AssignContentApproversAction'; private static $db = [ 'GroupType' => 'Varchar', 'AssignInitiator' => 'Boolean', ]; public function getCMSFields() { $fields = parent::getCMSFields(); $types = array('approver' => 'Approver', 'publisher' => 'Publisher'); $fields->addFieldsToTab('Root.Main', array( new DropdownField('GroupType', 'Type of user group to assign', $types), new CheckboxField('AssignInitiator', $this->fieldLabel('AssignInitiator')), )); return $fields; } public function execute(WorkflowInstance $workflow) { $appliedTo = null; $target = $workflow->getTarget(); if ($target && $target->hasMethod('updateContentApproverContext')) { $target->invokeWithExtensions('updateContentApproverContext', $target); } if ($target && $target->hasExtension(ContentApproversExtension::class)) { $user = null; $group = null; switch ($this->GroupType) { case 'publisher': $group = $target->getPublisher(); break; default: $group = $target->getApprover(); break; } if ($group) { $workflow->Users()->removeAll(); $workflow->Groups()->removeAll(); $workflow->Groups()->add($group); } } if ($this->AssignInitiator) { $workflow->Users()->add($workflow->Initiator()); } // if we don't find any approvers we just return true so that we can approve some other way? return true; } } |