XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
metaweblogapi.php
Go to the documentation of this file.
1 <?php
2 // $Id: metaweblogapi.php 8066 2011-11-06 05:09:33Z beckmi $
3 // ------------------------------------------------------------------------ //
4 // XOOPS - PHP Content Management System //
5 // Copyright (c) 2000 XOOPS.org //
6 // <http://www.xoops.org/> //
7 // ------------------------------------------------------------------------ //
8 // This program is free software; you can redistribute it and/or modify //
9 // it under the terms of the GNU General Public License as published by //
10 // the Free Software Foundation; either version 2 of the License, or //
11 // (at your option) any later version. //
12 // //
13 // You may not change or alter any portion of this comment or credits //
14 // of supporting developers from this source code or any supporting //
15 // source code which is considered copyrighted (c) material of the //
16 // original comment or credit authors. //
17 // //
18 // This program is distributed in the hope that it will be useful, //
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
21 // GNU General Public License for more details. //
22 // //
23 // You should have received a copy of the GNU General Public License //
24 // along with this program; if not, write to the Free Software //
25 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
26 // ------------------------------------------------------------------------ //
27 // Author: Kazumi Ono (AKA onokazu) //
28 // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
29 // Project: The XOOPS Project //
30 // ------------------------------------------------------------------------- //
31 if (!defined('XOOPS_ROOT_PATH')) {
32  die("XOOPS root path not defined");
33 }
34 require_once XOOPS_ROOT_PATH.'/class/xml/rpc/xmlrpcapi.php';
35 
37 {
39  {
41  $this->_setXoopsTagMap('storyid', 'postid');
42  $this->_setXoopsTagMap('published', 'dateCreated');
43  $this->_setXoopsTagMap('uid', 'userid');
44  //$this->_setXoopsTagMap('hometext', 'description');
45  }
46 
47  function newPost()
48  {
49  if (!$this->_checkUser($this->params[1], $this->params[2])) {
50 
51  $this->response->add(new XoopsXmlRpcFault(104));
52  } else {
53  if (!$fields =& $this->_getPostFields(null, $this->params[0])) {
54  $this->response->add(new XoopsXmlRpcFault(106));
55  } else {
56  $missing = array();
57  $post = array();
58  foreach ($fields as $tag => $detail) {
59  $maptag = $this->_getXoopsTagMap($tag);
60  if (!isset($this->params[3][$maptag])) {
61  $data = $this->_getTagCdata($this->params[3]['description'], $maptag, true);
62  if (trim($data) == ''){
63  if ($detail['required']) {
64  $missing[] = $maptag;
65  }
66  } else {
67  $post[$tag] = $data;
68  }
69  } else {
70  $post[$tag] = $this->params[3][$maptag];
71  }
72  }
73  if (count($missing) > 0) {
74  $msg = '';
75  foreach ($missing as $m) {
76  $msg .= '<'.$m.'> ';echo $m;
77  }
78  $this->response->add(new XoopsXmlRpcFault(109, $msg));
79  } else {
80  $newparams = array();
81  $newparams[0] = $this->params[0];
82  $newparams[1] = $this->params[1];
83  $newparams[2] = $this->params[2];
84  foreach ($post as $key => $value) {
85  $newparams[3][$key] =& $value;
86  unset($value);
87  }
88  $newparams[3]['xoops_text'] = $this->params[3]['description'];
89  if (isset($this->params[3]['categories']) && is_array($this->params[3]['categories'])) {
90  foreach ($this->params[3]['categories'] as $k => $v) {
91  $newparams[3]['categories'][$k] = $v;
92  }
93  }
94  $newparams[4] = $this->params[4];
95  $xoopsapi =& $this->_getXoopsApi($newparams);
96  $xoopsapi->_setUser($this->user, $this->isadmin);
97  $xoopsapi->newPost();
98  }
99  }
100  }
101  }
102 
103  function editPost()
104  {
105  if (!$this->_checkUser($this->params[1], $this->params[2])) {
106  $this->response->add(new XoopsXmlRpcFault(104));
107  } else {
108  if (!$fields =& $this->_getPostFields($this->params[0])) {
109  } else {
110  $missing = array();
111  $post = array();
112  foreach ($fields as $tag => $detail) {
113  $maptag = $this->_getXoopsTagMap($tag);
114  if (!isset($this->params[3][$maptag])) {
115  $data = $this->_getTagCdata($this->params[3]['description'], $maptag, true);
116  if (trim($data) == ''){
117  if ($detail['required']) {
118  $missing[] = $tag;
119  }
120  } else {
121  $post[$tag] = $data;
122  }
123  } else {
124  $post[$tag] =& $this->params[3][$maptag];
125  }
126  }
127  if (count($missing) > 0) {
128  $msg = '';
129  foreach ($missing as $m) {
130  $msg .= '<'.$m.'> ';
131  }
132  $this->response->add(new XoopsXmlRpcFault(109, $msg));
133  } else {
134  $newparams = array();
135  $newparams[0] = $this->params[0];
136  $newparams[1] = $this->params[1];
137  $newparams[2] = $this->params[2];
138  foreach ($post as $key => $value) {
139  $newparams[3][$key] =& $value;
140  unset($value);
141  }
142  if (isset($this->params[3]['categories']) && is_array($this->params[3]['categories'])) {
143  foreach ($this->params[3]['categories'] as $k => $v) {
144  $newparams[3]['categories'][$k] = $v;
145  }
146  }
147  $newparams[3]['xoops_text'] = $this->params[3]['description'];
148  $newparams[4] = $this->params[4];
149  $xoopsapi =& $this->_getXoopsApi($newparams);
150  $xoopsapi->_setUser($this->user, $this->isadmin);
151  $xoopsapi->editPost();
152  }
153  }
154  }
155  }
156 
157  function getPost()
158  {
159  if (!$this->_checkUser($this->params[1], $this->params[2])) {
160  $this->response->add(new XoopsXmlRpcFault(104));
161  } else {
162  $xoopsapi =& $this->_getXoopsApi($this->params);
163  $xoopsapi->_setUser($this->user, $this->isadmin);
164  $ret =& $xoopsapi->getPost(false);
165  if (is_array($ret)) {
166  $struct = new XoopsXmlRpcStruct();
167  $content = '';
168  foreach ($ret as $key => $value) {
169  $maptag = $this->_getXoopsTagMap($key);
170  switch($maptag) {
171  case 'userid':
172  $struct->add('userid', new XoopsXmlRpcString($value));
173  break;
174  case 'dateCreated':
175  $struct->add('dateCreated', new XoopsXmlRpcDatetime($value));
176  break;
177  case 'postid':
178  $struct->add('postid', new XoopsXmlRpcString($value));
179  $struct->add('link', new XoopsXmlRpcString(XOOPS_URL.'/modules/xoopssections/item.php?item='.$value));
180  $struct->add('permaLink', new XoopsXmlRpcString(XOOPS_URL.'/modules/xoopssections/item.php?item='.$value));
181  break;
182  case 'title':
183  $struct->add('title', new XoopsXmlRpcString($value));
184  break;
185  default :
186  $content .= '<'.$key.'>'.trim($value).'</'.$key.'>';
187  break;
188  }
189  }
190  $struct->add('description', new XoopsXmlRpcString($content));
191  $this->response->add($struct);
192  } else {
193  $this->response->add(new XoopsXmlRpcFault(106));
194  }
195  }
196  }
197 
198  function getRecentPosts()
199  {
200  if (!$this->_checkUser($this->params[1], $this->params[2])) {
201  $this->response->add(new XoopsXmlRpcFault(104));
202  } else {
203  $xoopsapi =& $this->_getXoopsApi($this->params);
204  $xoopsapi->_setUser($this->user, $this->isadmin);
205  $ret =& $xoopsapi->getRecentPosts(false);
206  if (is_array($ret)) {
207  $arr = new XoopsXmlRpcArray();
208  $count = count($ret);
209  if ($count == 0) {
210  $this->response->add(new XoopsXmlRpcFault(106, 'Found 0 Entries'));
211  } else {
212  for ($i = 0; $i < $count; $i++) {
213  $struct = new XoopsXmlRpcStruct();
214  $content = '';
215  foreach($ret[$i] as $key => $value) {
216  $maptag = $this->_getXoopsTagMap($key);
217  switch($maptag) {
218  case 'userid':
219  $struct->add('userid', new XoopsXmlRpcString($value));
220  break;
221  case 'dateCreated':
222  $struct->add('dateCreated', new XoopsXmlRpcDatetime($value));
223  break;
224  case 'postid':
225  $struct->add('postid', new XoopsXmlRpcString($value));
226  $struct->add('link', new XoopsXmlRpcString(XOOPS_URL.'/modules/news/article.php?item_id='.$value));
227  $struct->add('permaLink', new XoopsXmlRpcString(XOOPS_URL.'/modules/news/article.php?item_id='.$value));
228  break;
229  case 'title':
230  $struct->add('title', new XoopsXmlRpcString($value));
231  break;
232  default :
233  $content .= '<'.$key.'>'.trim($value).'</'.$key.'>';
234  break;
235  }
236  }
237  $struct->add('description', new XoopsXmlRpcString($content));
238  $arr->add($struct);
239  unset($struct);
240  }
241  $this->response->add($arr);
242  }
243  } else {
244  $this->response->add(new XoopsXmlRpcFault(106));
245  }
246  }
247  }
248 
249  function getCategories()
250  {
251  if (!$this->_checkUser($this->params[1], $this->params[2])) {
252  $this->response->add(new XoopsXmlRpcFault(104));
253  } else {
254  $xoopsapi =& $this->_getXoopsApi($this->params);
255  $xoopsapi->_setUser($this->user, $this->isadmin);
256  $ret =& $xoopsapi->getCategories(false);
257  if (is_array($ret)) {
258  $arr = new XoopsXmlRpcArray();
259  foreach ($ret as $id => $detail) {
260  $struct = new XoopsXmlRpcStruct();
261  $struct->add('description', new XoopsXmlRpcString($detail));
262  $struct->add('htmlUrl', new XoopsXmlRpcString(XOOPS_URL.'/modules/news/index.php?storytopic='.$id));
263  $struct->add('rssUrl', new XoopsXmlRpcString(''));
264  $catstruct = new XoopsXmlRpcStruct();
265  $catstruct->add($detail['title'], $struct);
266  $arr->add($catstruct);
267  unset($struct);
268  unset($catstruct);
269  }
270  $this->response->add($arr);
271  } else {
272  $this->response->add(new XoopsXmlRpcFault(106));
273  }
274  }
275  }
276 }
277 ?>