1: <?php
2: // $Id: xmlrpcapi.php,v 1.1 2007/05/15 02:34:53 minahito Exp $
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:
32:
33: class XoopsXmlRpcApi
34: {
35:
36: // reference to method parameters
37: var $params;
38:
39: // reference to xmlrpc document class object
40: var $response;
41:
42: // reference to module class object
43: var $module;
44:
45: // map between xoops tags and blogger specific tags
46: var $xoopsTagMap = array();
47:
48: // user class object
49: var $user;
50:
51: var $isadmin = false;
52:
53:
54:
55: function XoopsXmlRpcApi(&$params, &$response, &$module)
56: {
57: $this->params =& $params;
58: $this->response =& $response;
59: $this->module =& $module;
60: }
61:
62: function _setUser(&$user, $isadmin = false)
63: {
64: if (is_object($user)) {
65: $this->user =& $user;
66: $this->isadmin = $isadmin;
67: }
68: }
69:
70: function _checkUser($username, $password)
71: {
72: if (isset($this->user)) {
73: return true;
74: }
75: $member_handler =& xoops_gethandler('member');
76: $this->user =& $member_handler->loginUser(addslashes($username), addslashes($password));
77: if (!is_object($this->user)) {
78: unset($this->user);
79: return false;
80: }
81: $moduleperm_handler =& xoops_gethandler('groupperm');
82: if (!$moduleperm_handler->checkRight('module_read', $this->module->getVar('mid'), $this->user->getGroups())) {
83: unset($this->user);
84: return false;
85: }
86: return true;
87: }
88:
89: function _checkAdmin()
90: {
91: if ($this->isadmin) {
92: return true;
93: }
94: if (!isset($this->user)) {
95: return false;
96: }
97: if (!$this->user->isAdmin($this->module->getVar('mid'))) {
98: return false;
99: }
100: $this->isadmin = true;
101: return true;
102: }
103:
104: function &_getPostFields($post_id = null, $blog_id = null)
105: {
106: $ret = array();
107: $ret['title'] = array('required' => true, 'form_type' => 'textbox', 'value_type' => 'text');
108: $ret['hometext'] = array('required' => false, 'form_type' => 'textarea', 'data_type' => 'textarea');
109: $ret['moretext'] = array('required' => false, 'form_type' => 'textarea', 'data_type' => 'textarea');
110: $ret['categories'] = array('required' => false, 'form_type' => 'select_multi', 'data_type' => 'array');
111: /*
112: if (!isset($blog_id)) {
113: if (!isset($post_id)) {
114: return false;
115: }
116: $itemman =& $this->mf->get(MANAGER_ITEM);
117: $item =& $itemman->get($post_id);
118: $blog_id = $item->getVar('sect_id');
119: }
120: $sectman =& $this->mf->get(MANAGER_SECTION);
121: $this->section =& $sectman->get($blog_id);
122: $ret =& $this->section->getVar('sect_fields');
123: */
124: return $ret;
125: }
126:
127: function _setXoopsTagMap($xoopstag, $blogtag)
128: {
129: if (trim($blogtag) != '') {
130: $this->xoopsTagMap[$xoopstag] = $blogtag;
131: }
132: }
133:
134: function _getXoopsTagMap($xoopstag)
135: {
136: if (isset($this->xoopsTagMap[$xoopstag])) {
137: return $this->xoopsTagMap[$xoopstag];
138: }
139: return $xoopstag;
140: }
141:
142: function _getTagCdata(&$text, $tag, $remove = true)
143: {
144: $ret = '';
145: $match = array();
146: if (preg_match("/\<".$tag."\>(.*)\<\/".$tag."\>/is", $text, $match)) {
147: if ($remove) {
148: $text = str_replace($match[0], '', $text);
149: }
150: $ret = $match[1];
151: }
152: return $ret;
153: }
154:
155: // kind of dirty method to load XOOPS API and create a new object thereof
156: // returns itself if the calling object is XOOPS API
157: function &_getXoopsApi(&$params)
158: {
159: if (strtolower(get_class($this)) != 'xoopsapi') {
160: require_once(XOOPS_ROOT_PATH.'/class/xml/rpc/xoopsapi.php');
161: $instance =new XoopsApi($params, $this->response, $this->module);
162: return $instance;
163: } else {
164: return $this;
165: }
166: }
167: }
168: ?>
169: