function saveMetadataFile()
 {
     global $permissions;
     $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);
     $xml = $xml . "\n</{$name}>\n";
     $file = $this->getMetaDir() . '/metadump.xml';
     debug("dumping metadata xml in", $file);
     $fp = fopen("{$file}", "w");
     fwrite($fp, $xml);
     fclose($fp);
     return true;
 }
 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;
 }
 function writeXML($name, $array, $level = 0)
 {
     if (empty($array)) {
         //return "\n" . str_repeat('  ',$level) . "<$name />";
         return "";
     }
     if (sotf_Utils::isAssocArray($array)) {
         $retval = "\n" . str_repeat('  ', $level) . "<{$name}>";
         reset($array);
         while (list($key, $value) = each($array)) {
             $type = gettype($value);
             switch ($type) {
                 case 'array':
                     $retval .= sotf_Utils::writeXML($key, $value, $level + 1);
                     break;
                 default:
                     $retval .= "\n" . str_repeat('  ', $level + 1) . "<{$key}>" . htmlspecialchars($value) . "</{$key}>";
             }
         }
         $retval .= "\n" . str_repeat('  ', $level) . "</{$name}>";
     } else {
         reset($array);
         while (list($key, $value) = each($array)) {
             $type = gettype($value);
             switch ($type) {
                 case 'array':
                     $retval .= sotf_Utils::writeXML($name, $value, $level);
                     break;
                 default:
                     $retval .= "\n" . str_repeat('  ', $level) . "<{$name}>" . htmlspecialchars($value) . "</{$name}>";
             }
         }
     }
     return $retval;
 }