diff --git a/workflow/engine/src/ProcessMaker/Exporter/Exporter.php b/workflow/engine/src/ProcessMaker/Exporter/Exporter.php index bdb6b2231..df6c61c7a 100644 --- a/workflow/engine/src/ProcessMaker/Exporter/Exporter.php +++ b/workflow/engine/src/ProcessMaker/Exporter/Exporter.php @@ -21,7 +21,15 @@ abstract class Exporter */ protected $bpmnProject; - protected $projectData; + /** + * @var array + */ + protected $projectData = array(); + + /** + * @var array + */ + protected $metadata = array(); public function __construct($prjUid) { @@ -29,6 +37,16 @@ abstract class Exporter $this->bpmnProject = Project\Bpmn::load($prjUid); $this->projectData = $this->bpmnProject->getProject(); + + $this->metadata = array( + "vendor_version" => \System::getVersion(), + "vendor_version_code" => "Michelangelo", + "export_timestamp" => date("U"), + "export_datetime" => date("Y-m-d\TH:i:sP"), + "export_server_addr" => isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"].":".$_SERVER["SERVER_PORT"] : "Unknown", + "export_server_os" => PHP_OS , + "export_server_php_version" => PHP_VERSION_ID, + ); } /** @@ -73,6 +91,7 @@ abstract class Exporter $data = array(); $data["metadata"] = $this->getMetadata(); + $data["metadata"]["workspace"] = defined("SYS_SYS") ? SYS_SYS : "Unknown"; $data["metadata"]["name"] = $this->getProjectName(); $data["metadata"]["uid"] = $this->getProjectUid(); @@ -166,22 +185,22 @@ abstract class Exporter return self::VERSION; } + public function setMetadata($key, $value) + { + $this->metadata[$key] = $value; + } + /** * Returns all metadata to include on export content * * @return array */ - public function getMetadata() + public function getMetadata($key = "", $default = "") { - return array( - "vendor_version" => \System::getVersion(), - "vendor_version_code" => "Michelangelo", - "export_timestamp" => date("U"), - "export_datetime" => date("Y-m-d\TH:i:sP)"), - "export_server_addr" => isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"].":".$_SERVER["SERVER_PORT"] : "Unknown", - "export_server_os" => PHP_OS , - "export_server_php_version" => PHP_VERSION_ID, - "workspace" => defined("SYS_SYS") ? SYS_SYS : "Unknown", - ); + if (! empty($key)) { + return isset($this->metadata[$key]) ? $this->metadata[$key] : $default; + } else { + return $this->metadata; + } } } \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project.php b/workflow/engine/src/ProcessMaker/Services/Api/Project.php index b77e43511..e78448041 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project.php @@ -101,6 +101,7 @@ class Project extends Api $version = \ProcessMaker\Util\Common::getLastVersion($outputDir . $exporter->getProjectName() . "-*.pmx") + 1; $outputFilename = $outputDir . sprintf("%s-%s.%s", $exporter->getProjectName(), $version, "pmx"); + $exporter->setMetadata("export_version", $version); $exporter->saveExport($outputFilename); $httpStream = new \ProcessMaker\Util\IO\HttpStream();