public function execute(WorkflowInstance $workflow) { $members = $workflow->getAssignedMembers(); if (!$members || !count($members)) { return true; } $context = $this->getContextFields($workflow->getTarget()); $member = $this->getMemberFields(); $initiator = $this->getMemberFields($workflow->Initiator()); $variables = array(); foreach ($context as $field => $val) { $variables["\$Context.{$field}"] = $val; } foreach ($member as $field => $val) { $variables["\$Member.{$field}"] = $val; } foreach ($initiator as $field => $val) { $variables["\$Initiator.{$field}"] = $val; } $pastActions = $workflow->Actions()->sort('Created DESC'); $variables["\$CommentHistory"] = $this->customise(array('PastActions' => $pastActions, 'Now' => SS_Datetime::now()))->renderWith('CommentHistory'); $subject = str_replace(array_keys($variables), array_values($variables), $this->EmailSubject); $item = $workflow->customise(array('Items' => $workflow->Actions(), 'Member' => Member::currentUser(), 'Context' => $workflow->getTarget(), 'CommentHistory' => $variables["\$CommentHistory"])); if ($this->ListingTemplateID) { $item = $workflow->customise(array('Items' => $workflow->Actions(), 'Member' => Member::currentUser(), 'Initiator' => $workflow->Initiator(), 'Context' => $workflow->getTarget())); $template = DataObject::get_by_id('ListingTemplate', $this->ListingTemplateID); $view = SSViewer::fromString($template->ItemTemplate); } else { $view = SSViewer::fromString($this->EmailTemplate); } $body = $view->process($item); $from = str_replace(array_keys($variables), array_values($variables), $this->EmailFrom); foreach ($members as $member) { if ($member->Email) { $email = new Email(); $email->setTo($member->Email); $email->setSubject($subject); $email->setFrom($from); $email->setBody($body); $email->send(); } } return true; }
public function execute(WorkflowInstance $workflow) { $workflow->Users()->removeAll(); $workflow->Groups()->removeAll(); $workflow->Users()->addMany($this->Users()); $workflow->Groups()->addMany($this->Groups()); if ($this->AssignInitiator) { $workflow->Users()->add($workflow->Initiator()); } return true; }
public function execute(WorkflowInstance $workflow) { $workflow->Users()->removeAll(); //Due to http://open.silverstripe.org/ticket/8258, there are errors occuring if Group has been extended //We use a direct delete query here before ticket 8258 fixed //$workflow->Groups()->removeAll(); $workflowID = $workflow->ID; $query = <<<SQL \t\tDELETE FROM "WorkflowInstance_Groups" WHERE ("WorkflowInstance_Groups"."WorkflowInstanceID" = '{$workflowID}'); SQL; DB::query($query); $workflow->Users()->addMany($this->Users()); $workflow->Groups()->addMany($this->Groups()); if ($this->AssignInitiator) { $workflow->Users()->add($workflow->Initiator()); } return true; }