This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
1 | <?php |
||||||
2 | |||||||
3 | namespace XoopsModules\Mastopgo2; |
||||||
4 | |||||||
5 | ### ============================================================= |
||||||
6 | ### Mastop InfoDigital - Paixão por Internet |
||||||
7 | ### ============================================================= |
||||||
8 | ### Classe para Colocar as imagens da biblioteca em um Select |
||||||
9 | ### ============================================================= |
||||||
10 | ### Developer: Fernando Santos (topet05), [email protected] |
||||||
11 | ### Copyright: Mastop InfoDigital © 2003-2007 |
||||||
12 | ### ------------------------------------------------------------- |
||||||
13 | ### www.mastop.com.br |
||||||
14 | ### ============================================================= |
||||||
15 | ### |
||||||
16 | ### ============================================================= |
||||||
17 | |||||||
18 | // defined('XOOPS_ROOT_PATH') || die('Restricted access'); |
||||||
19 | |||||||
20 | require_once XOOPS_ROOT_PATH . '/class/xoopsform/formselect.php'; |
||||||
21 | |||||||
22 | /** |
||||||
23 | * Class FormSelectImage |
||||||
24 | */ |
||||||
25 | class FormSelectImage extends \XoopsFormSelect |
||||||
26 | { |
||||||
27 | /** |
||||||
28 | * OptGroup |
||||||
29 | * @var array |
||||||
30 | * @access private |
||||||
31 | */ |
||||||
32 | public $_optgroups = []; |
||||||
33 | public $_optgroupsID = []; |
||||||
34 | |||||||
35 | /** |
||||||
36 | * Construtor |
||||||
37 | * |
||||||
38 | * @param string $caption |
||||||
39 | * @param string $name |
||||||
40 | * @param mixed $value Valor pré-selecionado (ou array de valores). |
||||||
41 | * @param string $cat Nome da Categoria da biblioteca. Se vazio ou não definido, retorna todas as bibliotecas que o cara pode acessar. |
||||||
42 | * @internal param int $size Número de Linhas. "1" dá um Select List normal de 1 opção. |
||||||
43 | */ |
||||||
44 | public function __construct($caption, $name, $value = null, $cat = null) |
||||||
45 | { |
||||||
46 | parent::__construct($caption, $name, $value); |
||||||
47 | $this->addOptGroupArray($this->getImageList($cat)); |
||||||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||||||
48 | } |
||||||
49 | |||||||
50 | /** |
||||||
51 | * Adiciona um Optgroup |
||||||
52 | * |
||||||
53 | * @param array|string $value opções do Grupo |
||||||
54 | * @param string $name Nome do Grupo de Opções |
||||||
55 | */ |
||||||
56 | public function addOptGroup($value = [], $name = ' ') |
||||||
57 | { |
||||||
58 | $this->_optgroups[$name] = $value; |
||||||
59 | } |
||||||
60 | |||||||
61 | /** |
||||||
62 | * Adiciona múltiplos Optgroups |
||||||
63 | * |
||||||
64 | * @param array $options Array com nome->opções |
||||||
65 | */ |
||||||
66 | public function addOptGroupArray($options) |
||||||
67 | { |
||||||
68 | if (is_array($options)) { |
||||||
0 ignored issues
–
show
|
|||||||
69 | foreach ($options as $k => $v) { |
||||||
70 | $this->addOptGroup($v, $k); |
||||||
71 | } |
||||||
72 | } |
||||||
73 | } |
||||||
74 | |||||||
75 | /** |
||||||
76 | * @param null $cat |
||||||
0 ignored issues
–
show
|
|||||||
77 | * |
||||||
78 | * @return array |
||||||
79 | */ |
||||||
80 | public function getImageList($cat = null) |
||||||
81 | { |
||||||
82 | global $xoopsUser; |
||||||
83 | $ret = []; |
||||||
84 | if (!is_object($xoopsUser)) { |
||||||
85 | $group = [XOOPS_GROUP_ANONYMOUS]; |
||||||
86 | } else { |
||||||
87 | $group = $xoopsUser->getGroups(); |
||||||
88 | } |
||||||
89 | $imgcatHandler = xoops_getHandler('imagecategory'); |
||||||
90 | $catlist = $imgcatHandler->getList($group, 'imgcat_read', 1); |
||||||
0 ignored issues
–
show
The method
getList() does not exist on XoopsObjectHandler . It seems like you code against a sub-type of XoopsObjectHandler such as XoopsModuleHandler or XoopsImageHandler or XoopsRankHandler or XoopsCommentHandler or XoopsTplsetHandler or XoopsAvatarHandler or XoopsBlockHandler or XoopsImagesetHandler or XoopsPersistableObjectHandler or XoopsImagecategoryHandler .
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
91 | if ($catlist && is_array($cat)) { |
||||||
0 ignored issues
–
show
|
|||||||
92 | foreach ($catlist as $k => $v) { |
||||||
93 | if (!in_array($k, $cat)) { |
||||||
94 | unset($catlist[$k]); |
||||||
95 | } |
||||||
96 | } |
||||||
97 | } elseif (is_int($cat)) { |
||||||
0 ignored issues
–
show
|
|||||||
98 | $catlist = array_key_exists($cat, $catlist) ? [$cat => $catlist[$cat]] : []; |
||||||
99 | } |
||||||
100 | $imageHandler = xoops_getHandler('image'); |
||||||
101 | foreach ($catlist as $k => $v) { |
||||||
102 | $this->_optgroupsID[$v] = $k; |
||||||
103 | $criteria = new \CriteriaCompo(new \Criteria('imgcat_id', $k)); |
||||||
104 | $criteria->add(new \Criteria('image_display', 1)); |
||||||
105 | $total = $imageHandler->getCount($criteria); |
||||||
0 ignored issues
–
show
The method
getCount() does not exist on XoopsObjectHandler . It seems like you code against a sub-type of said class. However, the method does not exist in XoopsGroupHandler or XoopsConfigCategoryHandler or XoopsRankHandler or XoopsConfigOptionHandler or XoopsBlockHandler or XoopsImagesetHandler . Are you sure you never get one of those?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
106 | if ($total > 0) { |
||||||
107 | $imgcat = $imgcatHandler->get($k); |
||||||
108 | $storetype = $imgcat->getVar('imgcat_storetype'); |
||||||
109 | if ('db' === $storetype) { |
||||||
110 | $images = $imageHandler->getObjects($criteria, false, true); |
||||||
0 ignored issues
–
show
The method
getObjects() does not exist on XoopsObjectHandler . It seems like you code against a sub-type of said class. However, the method does not exist in XoopsRankHandler or XoUserHandler . Are you sure you never get one of those?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
111 | } else { |
||||||
112 | $images = $imageHandler->getObjects($criteria, false, false); |
||||||
113 | } |
||||||
114 | foreach ($images as $i) { |
||||||
115 | if ('db' === $storetype) { |
||||||
116 | $ret[$v]['/image.php?id=' . $i->getVar('image_id')] = $i->getVar('image_nicename'); |
||||||
117 | } else { |
||||||
118 | $ret[$v]['/uploads/' . $i->getVar('image_name')] = $i->getVar('image_nicename'); |
||||||
119 | } |
||||||
120 | } |
||||||
121 | } else { |
||||||
122 | $ret[$v] = ''; |
||||||
123 | } |
||||||
124 | } |
||||||
125 | |||||||
126 | return $ret; |
||||||
127 | } |
||||||
128 | |||||||
129 | /** |
||||||
130 | * Pega todos os Optgroups |
||||||
131 | * |
||||||
132 | * @return array Array com nome->opções |
||||||
133 | */ |
||||||
134 | public function getOptGroups() |
||||||
135 | { |
||||||
136 | return $this->_optgroups; |
||||||
137 | } |
||||||
138 | |||||||
139 | /** |
||||||
140 | * Pega todos os IDs dos Optgroups |
||||||
141 | * |
||||||
142 | * @return array Array com nome->ids |
||||||
143 | */ |
||||||
144 | public function getOptGroupsID() |
||||||
145 | { |
||||||
146 | return $this->_optgroupsID; |
||||||
147 | } |
||||||
148 | |||||||
149 | /** |
||||||
150 | * @return string |
||||||
151 | */ |
||||||
152 | public function render() |
||||||
153 | { |
||||||
154 | global $xoopsUser; |
||||||
155 | if (!is_object($xoopsUser)) { |
||||||
156 | $group = [XOOPS_GROUP_ANONYMOUS]; |
||||||
157 | } else { |
||||||
158 | $group = &$xoopsUser->getGroups(); |
||||||
159 | } |
||||||
160 | $imgcatHandler = xoops_getHandler('imagecategory'); |
||||||
161 | $catlist = $imgcatHandler->getList($group, 'imgcat_write', 1); |
||||||
162 | $catlist_total = count($catlist); |
||||||
163 | $optIds = $this->getOptGroupsID(); |
||||||
164 | $ret = "<select onchange='if(this.options[this.selectedIndex].value != \"\"){ document.getElementById(\"" |
||||||
165 | . $this->getName() |
||||||
166 | . '_img").src="' |
||||||
167 | . XOOPS_URL |
||||||
168 | . '"+this.options[this.selectedIndex].value;} else {document.getElementById("' |
||||||
169 | . $this->getName() |
||||||
170 | . '_img").src="' |
||||||
171 | . XOOPS_URL |
||||||
172 | . '/modules/' |
||||||
173 | . MGO_MOD_DIR |
||||||
174 | . "/assets/images/spager.gif\";}' size='" |
||||||
175 | . $this->getSize() |
||||||
176 | . "'" |
||||||
177 | . $this->getExtra() |
||||||
178 | . ''; |
||||||
179 | if (false !== $this->isMultiple()) { |
||||||
180 | $ret .= " name='" . $this->getName() . "[]' id='" . $this->getName() . "[]' multiple='multiple'>\n"; |
||||||
181 | } else { |
||||||
182 | $ret .= " name='" . $this->getName() . "' id='" . $this->getName() . "'>\n"; |
||||||
183 | } |
||||||
184 | $ret .= "<option value=''>" . _SELECT . "</option>\n"; |
||||||
185 | foreach ($this->getOptGroups() as $nome => $valores) { |
||||||
186 | $ret .= '\n<optgroup id="img_cat_' . $optIds[$nome] . '" label="' . $nome . '">'; |
||||||
187 | if (is_array($valores)) { |
||||||
188 | foreach ($valores as $value => $name) { |
||||||
189 | $ret .= "<option value='" . htmlspecialchars($value, ENT_QUOTES) . "'"; |
||||||
190 | if (count($this->getValue()) > 0 && in_array($value, $this->getValue())) { |
||||||
191 | $ret .= ' selected'; |
||||||
192 | $imagem = $value; |
||||||
193 | } |
||||||
194 | $ret .= '>' . $name . "</option>\n"; |
||||||
195 | } |
||||||
196 | } |
||||||
197 | $ret .= '</optgroup>\n'; |
||||||
198 | } |
||||||
199 | $browse_url = __DIR__ . '/formimage_browse.php'; |
||||||
200 | $browse_url = str_replace(XOOPS_ROOT_PATH, XOOPS_URL, $browse_url); |
||||||
201 | $ret .= '</select>'; |
||||||
202 | $ret .= ($catlist_total > 0) ? " <input type='button' value='" |
||||||
203 | . _ADDIMAGE |
||||||
204 | . "' onclick=\"window.open('$browse_url?target=" |
||||||
205 | . $this->getName() |
||||||
206 | . "','MastopFormImage','resizable=yes,width=500,height=470,left='+(screen.availWidth/2-200)+',top='+(screen.availHeight/2-200)+'');return false;\">" : ''; |
||||||
207 | $ret .= "<br><img id='" . $this->getName() . "_img' src='" . (!empty($imagem) ? XOOPS_URL . $imagem : XOOPS_URL . '/modules/' . MGO_MOD_DIR . '/assets/images/spacer.gif') . "'>"; |
||||||
208 | |||||||
209 | return $ret; |
||||||
210 | } |
||||||
211 | } |
||||||
212 |