/** * 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(); } }