Remove ?>'s from files. They're pointless, and just asking for people to mess with...
[lhc/web/wiklou.git] / includes / api / ApiFormatWddx.php
1 <?php
2
3 /*
4 * Created on Oct 22, 2006
5 *
6 * API for MediaWiki 1.8+
7 *
8 * Copyright (C) 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 * http://www.gnu.org/copyleft/gpl.html
24 */
25
26 if (!defined('MEDIAWIKI')) {
27 // Eclipse helper - will be ignored in production
28 require_once ('ApiFormatBase.php');
29 }
30
31 /**
32 * @addtogroup API
33 */
34 class ApiFormatWddx extends ApiFormatBase {
35
36 public function __construct($main, $format) {
37 parent :: __construct($main, $format);
38 }
39
40 public function getMimeType() {
41 return 'text/xml';
42 }
43
44 public function execute() {
45 if (function_exists('wddx_serialize_value')) {
46 $this->printText(wddx_serialize_value($this->getResultData()));
47 } else {
48 $this->printText('<?xml version="1.0" encoding="utf-8"?>');
49 $this->printText('<wddxPacket version="1.0"><header/><data>');
50 $this->slowWddxPrinter($this->getResultData());
51 $this->printText('</data></wddxPacket>');
52 }
53 }
54
55 /**
56 * Recursivelly go through the object and output its data in WDDX format.
57 */
58 function slowWddxPrinter($elemValue) {
59 switch (gettype($elemValue)) {
60 case 'array' :
61 $this->printText('<struct>');
62 foreach ($elemValue as $subElemName => $subElemValue) {
63 $this->printText(wfElement('var', array (
64 'name' => $subElemName
65 ), null));
66 $this->slowWddxPrinter($subElemValue);
67 $this->printText('</var>');
68 }
69 $this->printText('</struct>');
70 break;
71 case 'integer' :
72 case 'double' :
73 $this->printText(wfElement('number', null, $elemValue));
74 break;
75 case 'string' :
76 $this->printText(wfElement('string', null, $elemValue));
77 break;
78 default :
79 ApiBase :: dieDebug(__METHOD__, 'Unknown type ' . gettype($elemValue));
80 }
81 }
82
83 protected function getDescription() {
84 return 'Output data in WDDX format' . parent :: getDescription();
85 }
86
87 public function getVersion() {
88 return __CLASS__ . ': $Id$';
89 }
90 }
91