Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1 | daniel-mar | 1 | <?php |
2 | |||
3 | if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgeführt werden.'); |
||
4 | |||
5 | if (!headers_sent()) header("Pragma: public"); |
||
6 | if (!headers_sent()) header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); |
||
7 | if (!headers_sent()) header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); |
||
8 | if (!headers_sent()) header("Cache-Control: private", false); |
||
9 | if (!headers_sent()) header("Content-type: application/octet-stream"); |
||
10 | if (!headers_sent()) header("Content-Disposition: attachment; filename=\"Personal WebBase-Dump.xml\""); |
||
11 | if (!headers_sent()) header("Content-Transfer-Encoding: binary"); |
||
12 | |||
13 | flush(); |
||
14 | |||
15 | // Kleinsten Datensatz finden, um Exportdatei übersichtlich zu halten (kleinster Wert bekommt id=1) |
||
16 | |||
17 | $min = 'x'; |
||
18 | foreach ($tables_modules as $m1 => $m2) |
||
19 | { |
||
20 | $rs = db_query("SELECT MIN(`id`) AS `mi` FROM `$m1`"); |
||
21 | $rw = db_fetch($rs); |
||
22 | if ((($rw['mi'] < $min) || ($min == 'x')) && ($rw['mi'] != '')) |
||
23 | $min = $rw['mi']; |
||
24 | } |
||
25 | unset($m1); |
||
26 | unset($m2); |
||
27 | if ($min == 'x') $min = 0; |
||
28 | |||
29 | function binaere_daten($inp) |
||
30 | { |
||
31 | $res = false; |
||
32 | for ($i=0; $i<=31; $i++) |
||
33 | { |
||
34 | // Ausnahme: 09h, 0Ah, 0Dh |
||
35 | if ((strpos($inp, chr($i)) !== false) && ($i != 9) && ($i != 10) && ($i != 13)) |
||
36 | { |
||
37 | $res = true; |
||
38 | } |
||
39 | } |
||
40 | return $res; |
||
41 | } |
||
42 | |||
43 | // Exportieren |
||
44 | |||
45 | $webbasedump = new XmlElement; |
||
46 | |||
47 | $webbasedump->name = 'webbasedump'; |
||
48 | $webbasedump->attributes['xmlns'] = 'http://www.personal-webbase.de/'; |
||
49 | $webbasedump->attributes['version'] = '1.0'; |
||
50 | $webbasedump->attributes['server'] = $configuration['common_links_notifier']['wb_system_url']; |
||
51 | $webbasedump->attributes['account'] = $wb_user_username; |
||
52 | $webbasedump->attributes['date'] = date('Y-m-d'); |
||
53 | $webbasedump->attributes['time'] = date('H:i:s'); |
||
54 | |||
55 | function is_cnid($fieldname) |
||
56 | { |
||
57 | if (strlen($fieldname) < strlen('_cnid')) |
||
58 | { |
||
59 | return false; |
||
60 | } |
||
61 | else |
||
62 | { |
||
63 | return (substr(strtolower($fieldname), strlen($fieldname)-strlen('_cnid'), strlen('_cnid')) == '_cnid'); |
||
64 | } |
||
65 | } |
||
66 | |||
67 | foreach ($tables_modules as $n1 => $n2) |
||
68 | { |
||
69 | if (isset($tables_database[$n1]['user_cnid'])) |
||
70 | { |
||
71 | $res = db_query("SELECT * FROM `$n1` WHERE `user_cnid` = '".$benutzer['id']."'"); |
||
72 | if (db_num($res) > 0) |
||
73 | { |
||
74 | $table = new XmlElement; |
||
75 | $table->name = 'table'; |
||
76 | $table->attributes['name'] = substr(strtolower($n1), strlen($WBConfig->getMySQLPrefix()), strlen($n1)-strlen($WBConfig->getMySQLPrefix())); |
||
77 | |||
78 | while ($row = db_fetch($res)) |
||
79 | { |
||
80 | $element = new XmlElement; |
||
81 | $element->name = 'element'; |
||
82 | |||
83 | $i = 0; |
||
84 | foreach ($row as $m1 => $m2) |
||
85 | { |
||
86 | $i++; |
||
87 | if ($i % 2 == 0) |
||
88 | { |
||
89 | if (strtolower($m1) != 'user_cnid') |
||
90 | { |
||
91 | $value = new XmlElement; |
||
92 | $value->name = 'value'; |
||
93 | $value->attributes['name'] = strtolower($m1); |
||
94 | |||
95 | if ((($m1 == 'id') || (is_cnid($m1))) && ((strtolower($m1) != 'folder_cnid') || ($m2 != '0'))) |
||
96 | { |
||
97 | // Datensatz-Wert (ID-Nummer) im Datensatz anpassen |
||
98 | // Bedingung: Feldname = "ID" oder Postfix "_CNID" vorhanden |
||
99 | // Ausnahme: Feld "FOLDER_CNID" hat den legalen Wert "0" |
||
100 | $value->content = $m2-$min+1; |
||
101 | } |
||
102 | else |
||
103 | { |
||
104 | if (binaere_daten($m2)) |
||
105 | { |
||
106 | $value->content = base64_encode($m2); |
||
107 | $value->attributes['encode'] = 'base64'; |
||
108 | } |
||
109 | else |
||
110 | { |
||
111 | $value->content = $m2; |
||
112 | } |
||
113 | } |
||
114 | |||
115 | $element->children[] = $value; |
||
116 | } |
||
117 | } |
||
118 | } |
||
119 | $table->children[] = $element; |
||
120 | |||
121 | unset($m1); |
||
122 | unset($m2); |
||
123 | } |
||
124 | $webbasedump->children[] = $table; |
||
125 | } |
||
126 | } |
||
127 | } |
||
128 | |||
129 | unset($n1); |
||
130 | unset($n2); |
||
131 | |||
132 | $xml = new xml(); |
||
133 | $output = $xml->object_to_xml_code($webbasedump); |
||
134 | |||
135 | $buffersize = 1024*8; |
||
136 | for ($i=0; $i<strlen($output); $i=$i+$buffersize) |
||
137 | { |
||
138 | if (strlen($output) < $i+$buffersize) |
||
139 | { |
||
140 | $tmp = substr($output, $i, strlen($output)-$i-1); |
||
141 | } |
||
142 | else |
||
143 | { |
||
144 | $tmp = substr($output, $i, $buffersize); |
||
145 | } |
||
146 | echo $tmp; |
||
147 | flush(); |
||
148 | } |
||
149 | |||
150 | ?> |