00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 require_once("./cfg/config.inc");
00023
00035 class XMLExport {
00036 public:
00050 function openHeader($action){
00051 global $xmlexport_version;
00052 $ret = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
00053 <appdb_export version=\"{$xmlexport_version}\" action=\"{$action}\">";
00054 return $ret;
00055 }
00056
00058
00064 function createPages($page, $page_count){
00065 $ret = "
00066 <page>
00067 <current>{$page}</current>
00068 <count>{$page_count}</count>
00069 </page>";
00070 return $ret;
00071 }
00072
00074 function closeHeader(){
00075 $ret = "
00076 </appdb_export>";
00077 return $ret;
00078 }
00079
00081
00097 function createAppInfo($id, $verid, $name, $desc, $category, $url, $versions_list="", $category_list="", $test_results="", $comment_list="", $verinfo="", $bugs_list=""){
00098 $ret = "
00099 <app id=\"{$id}\"";
00100 if ($verid>0)
00101 $ret .= " verid=\"{$verid}\" ";
00102 $ret .= ">
00103 <name>" . $this->prepareString($name) . "</name>";
00104
00105 if ($verinfo)
00106 $ret .= $verinfo;
00107
00108 $ret .= "\n <desc>";
00109 if ($test_results){
00110 $ret .= $this->prepareString($desc, -1, 0);
00111 } else {
00112 $ret .= $this->prepareString($desc, 255);
00113 }
00114 $ret .= "</desc>
00115 <category>{$category}</category>
00116 <url>" . $this->prepareString($url) . "</url>";
00117 if ($versions_list){
00118 $ret .= "\n <version-list>";
00119 $ret .= $versions_list;
00120 $ret .= "\n </version-list>";
00121 }
00122 if ($category_list){
00123 $ret .= "\n <category-list>";
00124 $ret .= $category_list;
00125 $ret .= "\n </category-list>";
00126 }
00127
00128 if ($test_results)
00129 $ret .= $test_results;
00130
00131 if ($bugs_list){
00132 $ret .= "\n <bug-list>";
00133 $ret .= $bugs_list;
00134 $ret .= "\n </bug-list>";
00135 }
00136
00137 if ($comment_list){
00138 $ret .= "\n <comment-list>";
00139 $ret .= $comment_list;
00140 $ret .= "\n </comment-list>";
00141 }
00142
00143 $ret .= "\n </app>";
00144 return $ret;
00145 }
00146
00148
00156 function createAppVersionInfo($verid, $appver, $rating, $winever){
00157 $ret = "
00158 <version id=\"{$verid}\">
00159 <app-ver>" . $this->prepareString($appver) . "</app-ver>
00160 <rating>{$rating}</rating>
00161 <wine-ver>" . $this->prepareString($winever) . "</wine-ver>
00162 </version>";
00163 return $ret;
00164 }
00165
00167
00180 function createAppTestingInfo($testid, $rating, $winever, $works, $notworks, $nottested, $comment, $vername, $lic){
00181 $ret = "
00182 <app-ver>" . $this->prepareString($vername) . "</app-ver>
00183 <license>" . $this->prepareString($lic) . "</license>
00184 <test-result id=\"{$testid}\">
00185 <rating>{$rating}</rating>
00186 <wine-ver>" . $this->prepareString($winever) . "</wine-ver>
00187 <works>" . $this->prepareString($works, -1, 0) . "</works>;
00188 <not-works>" . $this->prepareString($notworks, -1, 0) . "</not-works>
00189 <not-tested>" . $this->prepareString($nottested, -1, 0) . "</not-tested>
00190 <comment>" . $this->prepareString($comment, -1, 0) . "</comment>
00191 </test-result>";
00192 return $ret;
00193 }
00194
00196
00208 function createTop5TestResults($testid, $rating, $winever, $testdate, $distrib, $installs, $runs, $curr){
00209 $ret = "
00210 <test id=\"{$testid}\">
00211 <current>{$curr}</current>
00212 <distrib>" . $this->prepareString($distrib) . "</distrib>
00213 <date>{$testdate}</date>
00214 <wine>" . $this->prepareString($winever) . "</wine>
00215 <install>";
00216 if ($installs=="Yes"){
00217 $ret .= "1";
00218 } else {
00219 $ret .= "0";
00220 }
00221 $ret .= "</install>
00222 <run>";
00223 if ($runs=="Yes"){
00224 $ret .= "1";
00225 } else {
00226 $ret .= "0";
00227 }
00228 $ret .= "</run>
00229 <rating>{$rating}</rating>
00230 </test>";
00231 return $ret;
00232 }
00233
00235
00242 function createCategoryInfo($id, $name, $desc){
00243 $ret = "
00244 <category id=\"{$id}\">
00245 <name>" . $this->prepareString($name) . "</name>
00246 <desc>" . $this->prepareString($desc, 60) . "</desc>
00247 </category>";
00248 return $ret;
00249 }
00250
00252
00259 function createCategoryAppInfo($id, $name, $desc){
00260 $ret = "
00261 <app id=\"{$id}\">
00262 <name>" . $this->prepareString($name) . "</name>
00263 <desc>" . $this->prepareString($desc, 60) . "</desc>
00264 </app>";
00265 return $ret;
00266 }
00267
00269
00279 function createComment($id, $parent, $user, $subject, $body, $time){
00280 $ret = "
00281 <comment id=\"{$id}\">
00282 <topic>" . $this->prepareString($subject) . "</topic>
00283 <date>{$time}</date>
00284 <autor>";
00285
00286 if ($user){
00287 $ret .= $this->prepareString($user);
00288 } else {
00289 $ret .= "Anonymous";
00290 }
00291
00292 $ret .= "</autor>
00293 <message>" . $this->prepareString($body, -1, 0) . "</message>
00294 <parent>{$parent}</parent>
00295 </comment>";
00296 return $ret;
00297 }
00298
00300
00308 function createBugList($bug_id, $bug_status, $resolution, $short_desc){
00309 $ret = "
00310 <bug id=\"{$bug_id}\">
00311 <desc>" . $this->prepareString($short_desc) . "</desc>
00312 <status>{$bug_status}</status>
00313 <resolution>{$resolution}</resolution>
00314 </bug>
00315 ";
00316 return $ret;
00317 }
00318
00319 private:
00321
00332 function prepareString($string, $len = 0, $strip_html = 1){
00333
00334
00335 $string = trim($string);
00336
00337 if ($strip_html==1){
00339 $string = strip_tags($string);
00341 $string = preg_replace("/\s+/", " ", $string);
00342 } else {
00344 $string = strip_tags($string, "<ul><li><b><i><strong>");
00346 $string = preg_replace('/(http:\/\/[^\s]+)/', '<a href="$1">$1</a>', $string);
00348 $string = nl2br ($string);
00349 }
00350
00351 if ($len > 0)
00352 $string = substr($string, 0, $len);
00353
00355 $string = htmlentities($string);
00356 return $string;
00357 }
00358
00359 };
00360
00361 ?>