public function execute(WorkflowInstance $workflow)
 {
     if (!($target = $workflow->getTarget())) {
         return true;
     }
     if (class_exists('AbstractQueuedJob') && $this->UnpublishDelay) {
         $job = new WorkflowPublishTargetJob($target, "unpublish");
         $days = $this->UnpublishDelay;
         $after = date('Y-m-d H:i:s', strtotime("+{$days} days"));
         singleton('QueuedJobService')->queueJob($job, $after);
     } else {
         if ($target->hasExtension('WorkflowEmbargoExpiryExtension')) {
             // setting future date stuff if needbe
             // set these values regardless
             $target->DesiredUnPublishDate = '';
             $target->DesiredPublishDate = '';
             $target->write();
             if ($target->hasMethod('doUnpublish')) {
                 $target->doUnpublish();
             }
         } else {
             if ($target->hasMethod('doUnpublish')) {
                 $target->doUnpublish();
             }
         }
     }
     return true;
 }
 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)
 {
     if (!($target = $workflow->getTarget())) {
         return true;
     }
     if ($target->hasField($this->Property)) {
         $target->setField($this->Property, $this->Value);
     }
     $target->write();
     return true;
 }
 public function execute(WorkflowInstance $workflow)
 {
     $email = new Email();
     $members = $workflow->getAssignedMembers();
     $emails = '';
     if (!$members || !count($members)) {
         return;
     }
     foreach ($members as $member) {
         if ($member->Email) {
             $emails .= "{$member->Email}, ";
         }
     }
     $context = $this->getContextFields($workflow->getTarget());
     $member = $this->getMemberFields();
     $variables = array();
     foreach ($context as $field => $val) {
         $variables["\$Context.{$field}"] = $val;
     }
     foreach ($member as $field => $val) {
         $variables["\$Member.{$field}"] = $val;
     }
     $subject = str_replace(array_keys($variables), array_values($variables), $this->EmailSubject);
     if ($this->ListingTemplateID) {
         $item = $workflow->customise(array('Items' => $workflow->Actions(), 'Member' => Member::currentUser(), 'Context' => $workflow->getTarget()));
         $template = DataObject::get_by_id('ListingTemplate', $this->ListingTemplateID);
         $view = SSViewer::fromString($template->ItemTemplate);
         $body = $view->process($item);
     } else {
         $body = str_replace(array_keys($variables), array_values($variables), $this->EmailTemplate);
     }
     $email->setSubject($subject);
     $email->setFrom($this->EmailFrom);
     $email->setBcc(substr($emails, 0, -2));
     $email->setBody($body);
     $email->send();
     return true;
 }
 public function execute(WorkflowInstance $workflow)
 {
     if (!($target = $workflow->getTarget())) {
         return true;
     }
     if (class_exists('AbstractQueuedJob') && $this->PublishDelay) {
         $job = new WorkflowPublishTargetJob($target);
         $days = $this->PublishDelay;
         $after = date('Y-m-d H:i:s', strtotime("+{$days} days"));
         singleton('QueuedJobService')->queueJob($job, $after);
     } else {
         $target->doPublish();
     }
     return true;
 }