public function loadByName($workflowName, $workflowVersion = 0)
{
if ($workflowVersion == 0) {
// Load the latest version of the workflow definition by default.
$workflowVersion = $this->getCurrentVersion($workflowName);
}
$filename = $this->getFilename($workflowName, $workflowVersion);
// Load the document.
$document = new DOMDocument();
if (is_readable($filename)) {
libxml_use_internal_errors(true);
$loaded = @$document->load($filename);
if ($loaded === false) {
$message = '';
foreach (libxml_get_errors() as $error) {
$message .= $error->message;
}
throw new ezcWorkflowDefinitionStorageException(sprintf('Could not load workflow "%s" (version %d) from "%s".%s', $workflowName, $workflowVersion, $filename, $message != '' ? "\n" . $message : ''));
}
} else {
throw new ezcWorkflowDefinitionStorageException(sprintf('Could not read file "%s".', $filename));
}
return $this->loadFromDocument($document);
}