1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: 13: 14: 15: 16: 17: 18:
19:
20:
21: 22: 23:
24: class XoopsXmlRpcApi
25: {
26:
27: public $params;
28:
29:
30: public $response;
31:
32:
33: public $module;
34:
35:
36: public $xoopsTagMap = array();
37:
38:
39: public $user;
40:
41: public $isadmin = false;
42:
43: 44: 45: 46: 47:
48: public function __construct(&$params, &$response, &$module)
49: {
50: $this->params =& $params;
51: $this->response =& $response;
52: $this->module =& $module;
53: }
54:
55: 56: 57: 58:
59: public function _setUser(&$user, $isadmin = false)
60: {
61: if (is_object($user)) {
62: $this->user =& $user;
63: $this->isadmin = $isadmin;
64: }
65: }
66:
67: 68: 69: 70: 71: 72:
73: public function _checkUser($username, $password)
74: {
75: if (isset($this->user)) {
76: return true;
77: }
78:
79: $member_handler = xoops_getHandler('member');
80: $this->user = $member_handler->loginUser(addslashes($username), addslashes($password));
81: if (!is_object($this->user)) {
82: unset($this->user);
83:
84: return false;
85: }
86:
87: $moduleperm_handler = xoops_getHandler('groupperm');
88: if (!$moduleperm_handler->checkRight('module_read', $this->module->getVar('mid'), $this->user->getGroups())) {
89: unset($this->user);
90:
91: return false;
92: }
93:
94: return true;
95: }
96:
97: 98: 99:
100: public function _checkAdmin()
101: {
102: if ($this->isadmin) {
103: return true;
104: }
105: if (!isset($this->user)) {
106: return false;
107: }
108: if (!$this->user->isAdmin($this->module->getVar('mid'))) {
109: return false;
110: }
111: $this->isadmin = true;
112:
113: return true;
114: }
115:
116: 117: 118: 119: 120: 121:
122: public function &_getPostFields($post_id = null, $blog_id = null)
123: {
124: $ret = array();
125: $ret['title'] = array('required' => true, 'form_type' => 'textbox', 'value_type' => 'text');
126: $ret['hometext'] = array('required' => false, 'form_type' => 'textarea', 'data_type' => 'textarea');
127: $ret['moretext'] = array('required' => false, 'form_type' => 'textarea', 'data_type' => 'textarea');
128: $ret['categories'] = array('required' => false, 'form_type' => 'select_multi', 'data_type' => 'array');
129:
130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142:
143:
144: return $ret;
145: }
146:
147: 148: 149: 150:
151: public function _setXoopsTagMap($xoopstag, $blogtag)
152: {
153: if (trim($blogtag) != '') {
154: $this->xoopsTagMap[$xoopstag] = $blogtag;
155: }
156: }
157:
158: 159: 160: 161: 162:
163: public function _getXoopsTagMap($xoopstag)
164: {
165: if (isset($this->xoopsTagMap[$xoopstag])) {
166: return $this->xoopsTagMap[$xoopstag];
167: }
168:
169: return $xoopstag;
170: }
171:
172: 173: 174: 175: 176: 177: 178:
179: public function _getTagCdata(&$text, $tag, $remove = true)
180: {
181: $ret = '';
182: $match = array();
183: if (preg_match("/\<" . $tag . "\>(.*)\<\/" . $tag . "\>/is", $text, $match)) {
184: if ($remove) {
185: $text = str_replace($match[0], '', $text);
186: }
187: $ret = $match[1];
188: }
189:
190: return $ret;
191: }
192:
193:
194:
195: 196: 197: 198: 199:
200: public function &_getXoopsApi(&$params)
201: {
202: if (strtolower(get_class($this)) !== 'xoopsapi') {
203: require_once(XOOPS_ROOT_PATH . '/class/xml/rpc/xoopsapi.php');
204:
205: return new XoopsApi($params, $this->response, $this->module);
206: } else {
207: return $this;
208: }
209: }
210: }
211: