Example #1
0
 /**
  * Triggers a workflow request, queries a permission key to see what workflows are attached to it
  * and initiates them.
  *
  * @param \PermissionKey $pk
  *
  * @return optional WorkflowProgress
  */
 protected function triggerRequest(\PermissionKey $pk)
 {
     if (!$this->wrID) {
         $this->save();
     }
     if (!$pk->canPermissionKeyTriggerWorkflow()) {
         throw new Exception(t('This permission key cannot start a workflow.'));
     }
     $pa = $pk->getPermissionAccessObject();
     $workflows = array();
     $workflowsStarted = 0;
     if (is_object($pa)) {
         $workflows = $pa->getWorkflows();
         foreach ($workflows as $wf) {
             if ($wf->validateTrigger($this)) {
                 $this->addWorkflowProgress($wf);
                 ++$workflowsStarted;
             }
         }
     }
     if ($workflowsStarted == 0) {
         $defaultWorkflow = new EmptyWorkflow();
         $wp = $this->addWorkflowProgress($defaultWorkflow);
         return $wp->getWorkflowProgressResponseObject();
     }
 }