/** * Export-Function. * creates xml out of nested-set-structure * * @param int obj_id book-id * @param string type Object-Type of XML-Struktur * * @return String xml-Structur * @access public */ function export($obj_id, $type) { // {{{ $result = $this->db->queryF(' SELECT * FROM xmlnestedset,xmltags WHERE ns_tag_fk = tag_pk AND ns_book_fk = %s AND ns_type = %s ORDER BY ns_l', array('integer', 'text'), array($obj_id, $type)); if (ilDB::isDbError($result)) { die($this->className . "::checkTable(): " . $result->getMessage() . ":<br>" . $q); } $xml = ""; $lastDepth = -1; while (is_array($row = $this->db->fetchAssoc($result))) { // {{{ tags $Anfang = "<" . $row[tag_name]; $result_param = $this->db->queryF('SELECT * FROM xmlparam WHERE tag_fk = %s', array('integer'), array($row[tag_pk])); while (is_array($row_param = $this->db->fetchAssoc($result_param))) { $param_value = $row_param[param_value]; if (is_object($this->param_modifier)) { $obj =& $this->param_modifier; $method = $this->param_modifier_method; $param_value = $obj->{$method}($row[tag_name], $row_param[param_name], $param_value); } $Anfang .= " " . $row_param[param_name] . "=\"" . $param_value . "\""; } $Anfang .= ">"; $Ende = "</" . $row[tag_name] . ">"; // }}} // {{{ TagValue if ($row[tag_name] == "TAGVALUE") { $result_value = $this->db->queryF('SELECT * FROM xmlvalue WHERE tag_fk = %s', array('integer'), array($row[tag_pk])); $row_value = $this->db->fetchAssoc($result_value); $Anfang = $row_value["tag_value"]; $Ende = ""; $Anfang = htmlspecialchars($Anfang); // $Anfang = utf8_encode($Anfang); } // }}} $D = $row[tag_depth]; if ($D == $lastDepth) { $xml .= $xmlE[$D]; $xml .= $Anfang; $xmlE[$D] = $Ende; } else { if ($D > $lastDepth) { $xml .= $Anfang; $xmlE[$D] = $Ende; } else { for ($i = $lastDepth; $i >= $D; $i--) { $xml .= $xmlE[$i]; } $xml .= $Anfang; $xmlE[$D] = $Ende; } } $lastDepth = $D; } for ($i = $lastDepth; $i > 0; $i--) { $xml .= $xmlE[$i]; } return $xml; // }}} }