*/ require "init.inc.php"; $id = sotf_Utils::getParameter('id'); $type = sotf_Utils::getParameter('type'); $prg =& new sotf_Programme($id); if (!$prg) { raiseError("no_such_object", $id); } if (!$prg->isLocal()) { raiseError("works only for local objects!", $id); exit; } checkPerm($prg, 'change'); if ($type == 1) { // send XBMF metadata $meta = new sotf_Metadata($prg); $md = $meta->getXBMFMetadata(); header("Content-type: application/xml\n"); //header("Content-type: text/plain\n"); //header("Content-transfer-encoding: binary\n"); header("Content-length: " . strlen($md) . "\n"); echo $md; } elseif ($type == 2) { // actualize metadata $prg->saveMetadataFile(); // send XBMF $file = tempnam($config['tmpDir'], 'export'); $dir = $prg->getDir(); $dir1 = basename($dir); $dir2 = dirname($dir); $xdir = "XBMF_{$dir1}";
function saveMetadataFile() { global $permissions; if (!is_dir($this->getMetaDir())) { addError("Programme dir not found", $this->getMetaDir()); return false; } $name = get_class($this); $name = str_replace("sotf_", "", $name); $xml = "<{$name}>"; $xml .= sotf_Utils::writeXML('data', $this->data, 1); $roles = $this->getRoles(); $xml .= sotf_Utils::writeXML('role', $roles, 1); $perms = $permissions->listUsersAndPermissions($this->id); $xml .= sotf_Utils::writeXML('permission', $perms, 1); $links = $this->getAssociatedObjects('sotf_links', 'caption'); $xml .= sotf_Utils::writeXML('link', $links, 1); $rights = $this->getAssociatedObjects('sotf_rights', 'start_time'); $xml .= sotf_Utils::writeXML('right', $rights, 1); $topics = $this->getTopics(); $xml .= sotf_Utils::writeXML('topic', $topics, 1); $xml = $xml . "\n</{$name}>\n"; // TODO: save more data from other tables as well !!!!! $file = $this->getMetaDir() . '/metadump.xml'; debug("dumping metadata xml in", $file); $fp = fopen("{$file}", "w"); if (!$fp) { logError("Could not dump metadata into {$file}"); // TODO: in this case the prg has been deleted in the meantime?? } else { fwrite($fp, $xml); fclose($fp); } // save XBMF if (is_writable($this->getMetaDir())) { $meta = new sotf_Metadata($this); $xbmf = $meta->getXBMFMetadata(); $file = $this->getMetaDir() . '/metadata.xml'; sotf_Utils::save($file, $xbmf); } // to change modify_date $this->update(); return true; }