XoopsXmlRpcApi   A
last analyzed

Complexity

Total Complexity 21

Size/Duplication

Total Lines 184
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 21
eloc 58
dl 0
loc 184
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A _setXoopsTagMap() 0 4 2
A _getXoopsApi() 0 8 2
A _getXoopsTagMap() 0 7 2
A __construct() 0 5 1
A _getPostFields() 0 23 1
A _checkUser() 0 22 4
A _getTagCdata() 0 12 3
A _checkAdmin() 0 14 4
A _setUser() 0 5 2
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 https://xoops.org/
14
 * @license      GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
15
 * @package
16
 * @since
17
 * @author       XOOPS Development Team, Kazumi Ono (AKA onokazu)
18
 */
19
20
21
/**
22
 * Class XoopsXmlRpcApi
23
 */
24
class XoopsXmlRpcApi
25
{
26
    // reference to method parameters
27
    public $params;
28
29
    // reference to xmlrpc document class object
30
    public $response;
31
32
    // reference to module class object
33
    public $module;
34
35
    // map between xoops tags and blogger specific tags
36
    public $xoopsTagMap = array();
37
38
    // user class object
39
    public $user;
40
41
    public $isadmin = false;
42
43
    /**
44
     * @param $params
45
     * @param $response
46
     * @param $module
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
     * @param      $user
57
     * @param bool $isadmin
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
     * @param $username
69
     * @param $password
70
     *
71
     * @return bool
72
     */
73
    public function _checkUser($username, $password)
74
    {
75
        if (isset($this->user)) {
76
            return true;
77
        }
78
        /** @var XoopsMemberHandler $member_handler */
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
        /** @var  XoopsGroupPermHandler $moduleperm_handler */
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
     * @return bool
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
     * @param null $post_id
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $post_id is correct as it would always require null to be passed?
Loading history...
118
     * @param null $blog_id
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $blog_id is correct as it would always require null to be passed?
Loading history...
119
     *
120
     * @return array
121
     */
122
    public function &_getPostFields($post_id = null, $blog_id = null)
0 ignored issues
show
Unused Code introduced by
The parameter $blog_id is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

122
    public function &_getPostFields($post_id = null, /** @scrutinizer ignore-unused */ $blog_id = null)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $post_id is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

122
    public function &_getPostFields(/** @scrutinizer ignore-unused */ $post_id = null, $blog_id = null)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
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
        if (!isset($blog_id)) {
132
            if (!isset($post_id)) {
133
                return false;
134
            }
135
            $itemman =& $this->mf->get(MANAGER_ITEM);
136
            $item =& $itemman->get($post_id);
137
            $blog_id = $item->getVar('sect_id');
138
        }
139
        $sectman =& $this->mf->get(MANAGER_SECTION);
140
        $this->section =& $sectman->get($blog_id);
141
        $ret =& $this->section->getVar('sect_fields');
142
        */
143
144
        return $ret;
145
    }
146
147
    /**
148
     * @param $xoopstag
149
     * @param $blogtag
150
     */
151
    public function _setXoopsTagMap($xoopstag, $blogtag)
152
    {
153
        if (trim($blogtag) != '') {
154
            $this->xoopsTagMap[$xoopstag] = $blogtag;
155
        }
156
    }
157
158
    /**
159
     * @param $xoopstag
160
     *
161
     * @return mixed
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
     * @param      $text
174
     * @param      $tag
175
     * @param bool $remove
176
     *
177
     * @return string
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
    // kind of dirty method to load XOOPS API and create a new object thereof
194
    // returns itself if the calling object is XOOPS API
195
    /**
196
     * @param $params
197
     *
198
     * @return $this|XoopsApi
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