1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
You may not change or alter any portion of this comment or credits |
4
|
|
|
of supporting developers from this source code or any supporting source code |
5
|
|
|
which is considered copyrighted (c) material of the original comment or credit authors. |
6
|
|
|
|
7
|
|
|
This program is distributed in the hope that it will be useful, |
8
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
9
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* @copyright XOOPS Project (http://xoops.org) |
14
|
|
|
* @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html) |
15
|
|
|
* @package class |
16
|
|
|
* @subpackage xml |
17
|
|
|
* @since 1.0.0 |
18
|
|
|
* @author Kazumi Ono (AKA onokazu) |
19
|
|
|
* @version $Id $ |
20
|
|
|
*/ |
21
|
|
|
class MetaWeblogApi extends XoopsXmlRpcApi |
22
|
|
|
{ |
23
|
|
|
/** |
24
|
|
|
* @param $params |
25
|
|
|
* @param $response |
26
|
|
|
* @param $module |
27
|
|
|
*/ |
28
|
1 |
View Code Duplication |
public function __construct(&$params, &$response, &$module) |
29
|
|
|
{ |
30
|
1 |
|
parent::__construct($params, $response, $module); |
31
|
1 |
|
$this->_setXoopsTagMap('storyid', 'postid'); |
32
|
1 |
|
$this->_setXoopsTagMap('published', 'dateCreated'); |
33
|
1 |
|
$this->_setXoopsTagMap('uid', 'userid'); |
34
|
|
|
//$this->_setXoopsTagMap('hometext', 'description'); |
35
|
1 |
|
} |
36
|
|
|
|
37
|
|
|
public function newPost() |
38
|
|
|
{ |
39
|
|
|
if (!$this->_checkUser($this->params[1], $this->params[2])) { |
40
|
|
|
$this->response->add(new XoopsXmlRpcFault(104)); |
41
|
|
|
} else { |
42
|
|
|
if (!$fields = $this->_getPostFields(null, $this->params[0])) { |
43
|
|
|
$this->response->add(new XoopsXmlRpcFault(106)); |
44
|
|
View Code Duplication |
} else { |
45
|
|
|
$missing = array(); |
46
|
|
|
$post = array(); |
47
|
|
|
foreach ($fields as $tag => $detail) { |
48
|
|
|
$maptag = $this->_getXoopsTagMap($tag); |
49
|
|
|
if (!isset($this->params[3][$maptag])) { |
50
|
|
|
$data = $this->_getTagCdata($this->params[3]['description'], $maptag, true); |
51
|
|
|
if (trim($data) == '') { |
52
|
|
|
if ($detail['required']) { |
53
|
|
|
$missing[] = $maptag; |
54
|
|
|
} |
55
|
|
|
} else { |
56
|
|
|
$post[$tag] = $data; |
57
|
|
|
} |
58
|
|
|
} else { |
59
|
|
|
$post[$tag] = $this->params[3][$maptag]; |
60
|
|
|
} |
61
|
|
|
} |
62
|
|
|
if (count($missing) > 0) { |
63
|
|
|
$msg = ''; |
64
|
|
|
foreach ($missing as $m) { |
65
|
|
|
$msg .= '<' . $m . '> '; |
66
|
|
|
echo $m; |
67
|
|
|
} |
68
|
|
|
$this->response->add(new XoopsXmlRpcFault(109, $msg)); |
69
|
|
|
} else { |
70
|
|
|
$newparams = array(); |
71
|
|
|
$newparams[0] = $this->params[0]; |
72
|
|
|
$newparams[1] = $this->params[1]; |
73
|
|
|
$newparams[2] = $this->params[2]; |
74
|
|
|
foreach ($post as $key => $value) { |
75
|
|
|
$newparams[3][$key] = $value; |
76
|
|
|
unset($value); |
77
|
|
|
} |
78
|
|
|
$newparams[3]['xoops_text'] = $this->params[3]['description']; |
79
|
|
|
if (isset($this->params[3]['categories']) && is_array($this->params[3]['categories'])) { |
80
|
|
|
foreach ($this->params[3]['categories'] as $k => $v) { |
81
|
|
|
$newparams[3]['categories'][$k] = $v; |
82
|
|
|
} |
83
|
|
|
} |
84
|
|
|
$newparams[4] = $this->params[4]; |
85
|
|
|
$xoopsapi = $this->_getXoopsApi($newparams); |
86
|
|
|
$xoopsapi->_setUser($this->user, $this->isadmin); |
87
|
|
|
$xoopsapi->newPost(); |
88
|
|
|
} |
89
|
|
|
} |
90
|
|
|
} |
91
|
|
|
} |
92
|
|
|
|
93
|
|
|
public function editPost() |
94
|
|
|
{ |
95
|
|
|
if (!$this->_checkUser($this->params[1], $this->params[2])) { |
96
|
|
|
$this->response->add(new XoopsXmlRpcFault(104)); |
97
|
|
|
} else { |
98
|
|
|
if (!$fields = $this->_getPostFields($this->params[0])) { |
|
|
|
|
99
|
|
View Code Duplication |
} else { |
100
|
|
|
$missing = array(); |
101
|
|
|
$post = array(); |
102
|
|
|
foreach ($fields as $tag => $detail) { |
103
|
|
|
$maptag = $this->_getXoopsTagMap($tag); |
104
|
|
|
if (!isset($this->params[3][$maptag])) { |
105
|
|
|
$data = $this->_getTagCdata($this->params[3]['description'], $maptag, true); |
106
|
|
|
if (trim($data) == ''){ |
107
|
|
|
if ($detail['required']) { |
108
|
|
|
$missing[] = $tag; |
109
|
|
|
} |
110
|
|
|
} else { |
111
|
|
|
$post[$tag] = $data; |
112
|
|
|
} |
113
|
|
|
} else { |
114
|
|
|
$post[$tag] = $this->params[3][$maptag]; |
115
|
|
|
} |
116
|
|
|
} |
117
|
|
|
if (count($missing) > 0) { |
118
|
|
|
$msg = ''; |
119
|
|
|
foreach ($missing as $m) { |
120
|
|
|
$msg .= '<' . $m . '> '; |
121
|
|
|
} |
122
|
|
|
$this->response->add(new XoopsXmlRpcFault(109, $msg)); |
123
|
|
|
} else { |
124
|
|
|
$newparams = array(); |
125
|
|
|
$newparams[0] = $this->params[0]; |
126
|
|
|
$newparams[1] = $this->params[1]; |
127
|
|
|
$newparams[2] = $this->params[2]; |
128
|
|
|
foreach ($post as $key => $value) { |
129
|
|
|
$newparams[3][$key] = $value; |
130
|
|
|
unset($value); |
131
|
|
|
} |
132
|
|
|
if (isset($this->params[3]['categories']) && is_array($this->params[3]['categories'])) { |
133
|
|
|
foreach ($this->params[3]['categories'] as $k => $v) { |
134
|
|
|
$newparams[3]['categories'][$k] = $v; |
135
|
|
|
} |
136
|
|
|
} |
137
|
|
|
$newparams[3]['xoops_text'] = $this->params[3]['description']; |
138
|
|
|
$newparams[4] = $this->params[4]; |
139
|
|
|
$xoopsapi = $this->_getXoopsApi($newparams); |
140
|
|
|
$xoopsapi->_setUser($this->user, $this->isadmin); |
141
|
|
|
$xoopsapi->editPost(); |
142
|
|
|
} |
143
|
|
|
} |
144
|
|
|
} |
145
|
|
|
} |
146
|
|
|
|
147
|
|
|
public function getPost() |
148
|
|
|
{ |
149
|
|
|
if (!$this->_checkUser($this->params[1], $this->params[2])) { |
150
|
|
|
$this->response->add(new XoopsXmlRpcFault(104)); |
151
|
|
|
} else { |
152
|
|
|
$xoops_url = \XoopsBaseConfig::get('url'); |
153
|
|
|
$xoopsapi = $this->_getXoopsApi($this->params); |
154
|
|
|
$xoopsapi->_setUser($this->user, $this->isadmin); |
155
|
|
|
$ret = $xoopsapi->getPost(false); |
156
|
|
|
if (is_array($ret)) { |
157
|
|
|
$struct = new XoopsXmlRpcStruct(); |
158
|
|
|
$content = ''; |
159
|
|
View Code Duplication |
foreach ($ret as $key => $value) { |
160
|
|
|
$maptag = $this->_getXoopsTagMap($key); |
161
|
|
|
switch ($maptag) { |
162
|
|
|
case 'userid': |
163
|
|
|
$struct->add('userid', new XoopsXmlRpcString($value)); |
164
|
|
|
break; |
165
|
|
|
case 'dateCreated': |
166
|
|
|
$struct->add('dateCreated', new XoopsXmlRpcDatetime($value)); |
167
|
|
|
break; |
168
|
|
|
case 'postid': |
169
|
|
|
$struct->add('postid', new XoopsXmlRpcString($value)); |
170
|
|
|
$struct->add('link', new XoopsXmlRpcString($xoops_url . '/modules/xoopssections/item.php?item=' . $value)); |
171
|
|
|
$struct->add('permaLink', new XoopsXmlRpcString($xoops_url . '/modules/xoopssections/item.php?item=' . $value)); |
172
|
|
|
break; |
173
|
|
|
case 'title': |
174
|
|
|
$struct->add('title', new XoopsXmlRpcString($value)); |
175
|
|
|
break; |
176
|
|
|
default : |
|
|
|
|
177
|
|
|
$content .= '<' . $key . '>' . trim($value) . '</' . $key . '>'; |
178
|
|
|
break; |
179
|
|
|
} |
180
|
|
|
} |
181
|
|
|
$struct->add('description', new XoopsXmlRpcString($content)); |
182
|
|
|
$this->response->add($struct); |
183
|
|
|
} else { |
184
|
|
|
$this->response->add(new XoopsXmlRpcFault(106)); |
185
|
|
|
} |
186
|
|
|
} |
187
|
|
|
} |
188
|
|
|
|
189
|
|
|
public function getRecentPosts() |
190
|
|
|
{ |
191
|
|
|
if (!$this->_checkUser($this->params[1], $this->params[2])) { |
192
|
|
|
$this->response->add(new XoopsXmlRpcFault(104)); |
193
|
|
|
} else { |
194
|
|
|
$xoops_url = \XoopsBaseConfig::get('url'); |
195
|
|
|
$xoopsapi = $this->_getXoopsApi($this->params); |
196
|
|
|
$xoopsapi->_setUser($this->user, $this->isadmin); |
197
|
|
|
$ret = $xoopsapi->getRecentPosts(false); |
198
|
|
|
if (is_array($ret)) { |
199
|
|
|
$arr = new XoopsXmlRpcArray(); |
200
|
|
|
$count = count($ret); |
201
|
|
|
if ($count == 0) { |
202
|
|
|
$this->response->add(new XoopsXmlRpcFault(106, 'Found 0 Entries')); |
203
|
|
|
} else { |
204
|
|
|
for ($i = 0; $i < $count; ++$i) { |
205
|
|
|
$struct = new XoopsXmlRpcStruct(); |
206
|
|
|
$content = ''; |
207
|
|
View Code Duplication |
foreach ($ret[$i] as $key => $value) { |
208
|
|
|
$maptag = $this->_getXoopsTagMap($key); |
209
|
|
|
switch($maptag) { |
210
|
|
|
case 'userid': |
211
|
|
|
$struct->add('userid', new XoopsXmlRpcString($value)); |
212
|
|
|
break; |
213
|
|
|
case 'dateCreated': |
214
|
|
|
$struct->add('dateCreated', new XoopsXmlRpcDatetime($value)); |
215
|
|
|
break; |
216
|
|
|
case 'postid': |
217
|
|
|
$struct->add('postid', new XoopsXmlRpcString($value)); |
218
|
|
|
$struct->add('link', new XoopsXmlRpcString($xoops_url.'/modules/news/article.php?item_id='.$value)); |
219
|
|
|
$struct->add('permaLink', new XoopsXmlRpcString($xoops_url.'/modules/news/article.php?item_id='.$value)); |
220
|
|
|
break; |
221
|
|
|
case 'title': |
222
|
|
|
$struct->add('title', new XoopsXmlRpcString($value)); |
223
|
|
|
break; |
224
|
|
|
default : |
|
|
|
|
225
|
|
|
$content .= '<'.$key.'>'.trim($value).'</'.$key.'>'; |
226
|
|
|
break; |
227
|
|
|
} |
228
|
|
|
} |
229
|
|
|
$struct->add('description', new XoopsXmlRpcString($content)); |
230
|
|
|
$arr->add($struct); |
231
|
|
|
unset($struct); |
232
|
|
|
} |
233
|
|
|
$this->response->add($arr); |
234
|
|
|
} |
235
|
|
|
} else { |
236
|
|
|
$this->response->add(new XoopsXmlRpcFault(106)); |
237
|
|
|
} |
238
|
|
|
} |
239
|
|
|
} |
240
|
|
|
|
241
|
|
|
public function getCategories() |
242
|
|
|
{ |
243
|
|
|
if (!$this->_checkUser($this->params[1], $this->params[2])) { |
244
|
|
|
$this->response->add(new XoopsXmlRpcFault(104)); |
245
|
|
|
} else { |
246
|
|
|
$xoops_url = \XoopsBaseConfig::get('url'); |
247
|
|
|
$xoopsapi = $this->_getXoopsApi($this->params); |
248
|
|
|
$xoopsapi->_setUser($this->user, $this->isadmin); |
249
|
|
|
$ret = $xoopsapi->getCategories(false); |
250
|
|
|
if (is_array($ret)) { |
251
|
|
|
$arr = new XoopsXmlRpcArray(); |
252
|
|
|
foreach ($ret as $id => $detail) { |
253
|
|
|
$struct = new XoopsXmlRpcStruct(); |
254
|
|
|
$struct->add('description', new XoopsXmlRpcString($detail)); |
255
|
|
|
$struct->add('htmlUrl', new XoopsXmlRpcString($xoops_url.'/modules/news/index.php?storytopic='.$id)); |
256
|
|
|
$struct->add('rssUrl', new XoopsXmlRpcString('')); |
257
|
|
|
$catstruct = new XoopsXmlRpcStruct(); |
258
|
|
|
$catstruct->add($detail['title'], $struct); |
259
|
|
|
$arr->add($catstruct); |
260
|
|
|
unset($struct); |
261
|
|
|
unset($catstruct); |
262
|
|
|
} |
263
|
|
|
$this->response->add($arr); |
264
|
|
|
} else { |
265
|
|
|
$this->response->add(new XoopsXmlRpcFault(106)); |
266
|
|
|
} |
267
|
|
|
} |
268
|
|
|
} |
269
|
|
|
} |
270
|
|
|
|
This check looks for the bodies of
if
statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.These
if
bodies can be removed. If you have an empty if but statements in theelse
branch, consider inverting the condition.could be turned into
This is much more concise to read.