/** * Gets the workflow definition for a given dataobject, if there is one * * Will recursively query parent elements until it finds one, if available * * @param DataObject $dataObject */ public function getDefinitionFor(DataObject $dataObject) { if ($dataObject->hasExtension('WorkflowApplicable') || $dataObject->hasExtension('FileWorkflowApplicable')) { if ($dataObject->WorkflowDefinitionID) { return DataObject::get_by_id('WorkflowDefinition', $dataObject->WorkflowDefinitionID); } if ($dataObject->ParentID) { return $this->getDefinitionFor($dataObject->Parent()); } if ($dataObject->hasMethod('workflowParent')) { $obj = $dataObject->workflowParent(); if ($obj) { return $this->getDefinitionFor($obj); } } } return null; }