function serialize_process($pId) { // <process> $out = '<process>' . "\n"; $proc_info = $this->get_process($pId); $procname = $proc_info['normalized_name']; $out .= ' <name>' . htmlspecialchars($proc_info['name']) . '</name>' . "\n"; $out .= ' <isValid>' . htmlspecialchars($proc_info['isValid']) . '</isValid>' . "\n"; $out .= ' <version>' . htmlspecialchars($proc_info['version']) . '</version>' . "\n"; $out .= ' <isActive>' . htmlspecialchars($proc_info['isActive']) . '</isActive>' . "\n"; $out .= ' <description>' . htmlspecialchars($proc_info['description']) . '</description>' . "\n"; $out .= ' <lastModif>' . date("d/m/Y [h:i:s]", $proc_info['lastModif']) . '</lastModif>' . "\n"; $out .= ' <sharedCode><![CDATA['; $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/shared.php", "r"); while (!feof($fp)) { $line = fread($fp, 8192); $out .= $line; } fclose($fp); $out .= ' ]]></sharedCode>' . "\n"; // Now loop over activities $query = "select * from " . GALAXIA_TABLE_PREFIX . "activities where pId={$pId}"; $result = $this->query($query); $out .= ' <activities>' . "\n"; $am = new ActivityManager($this->db); while ($res = $result->fetchRow()) { $name = $res['normalized_name']; $out .= ' <activity>' . "\n"; $out .= ' <name>' . htmlspecialchars($res['name']) . '</name>' . "\n"; $out .= ' <type>' . htmlspecialchars($res['type']) . '</type>' . "\n"; $out .= ' <description>' . htmlspecialchars($res['description']) . '</description>' . "\n"; $out .= ' <lastModif>' . date("d/m/Y [h:i:s]", $res['lastModif']) . '</lastModif>' . "\n"; $out .= ' <isInteractive>' . $res['isInteractive'] . '</isInteractive>' . "\n"; $out .= ' <isAutoRouted>' . $res['isAutoRouted'] . '</isAutoRouted>' . "\n"; $out .= ' <expirationTime>' . $res['expirationTime'] . '</expirationTime>' . "\n"; $out .= ' <roles>' . "\n"; $roles = $am->get_activity_roles($res['activityId']); foreach ($roles as $role) { $out .= ' <role>' . htmlspecialchars($role['name']) . '</role>' . "\n"; } $out .= ' </roles>' . "\n"; $out .= ' <code><![CDATA['; $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/activities/{$name}.php", "r"); while (!feof($fp)) { $line = fread($fp, 8192); $out .= $line; } fclose($fp); $out .= ' ]]></code>'; if ($res['isInteractive'] == 'y') { $out .= ' <template><![CDATA['; $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/templates/{$name}.tpl", "r"); while (!feof($fp)) { $line = fread($fp, 8192); $out .= $line; } fclose($fp); $out .= ' ]]></template>'; } $out .= ' </activity>' . "\n"; } $out .= ' </activities>' . "\n"; $out .= ' <transitions>' . "\n"; $transitions = $am->get_process_transitions($pId); foreach ($transitions as $tran) { $out .= ' <transition>' . "\n"; $out .= ' <from>' . htmlspecialchars($tran['actFromName']) . '</from>' . "\n"; $out .= ' <to>' . htmlspecialchars($tran['actToName']) . '</to>' . "\n"; $out .= ' </transition>' . "\n"; } $out .= ' </transitions>' . "\n"; $out .= '</process>' . "\n"; //$fp = fopen(GALAXIA_PROCESSES."/$procname/$procname.xml","w"); //fwrite($fp,$out); //fclose($fp); return $out; }