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.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
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 {@link http://xoops.org/ XOOPS Project} |
||
14 | * @license {@link http://www.fsf.org/copyleft/gpl.html GNU public license} |
||
15 | * @package |
||
16 | * @since |
||
17 | * @author XOOPS Development Team, |
||
18 | * @author GIJ=CHECKMATE (PEAK Corp. http://www.peak.ne.jp/) |
||
19 | * @author Antiques Promotion (http://www.antiquespromotion.ca) |
||
20 | * @return bool |
||
21 | */ |
||
22 | |||
23 | if ((!defined('XOOPS_ROOT_PATH')) || !($GLOBALS['xoopsUser'] instanceof XoopsUser) |
||
24 | || !$GLOBALS['xoopsUser']->IsAdmin() |
||
25 | ) { |
||
26 | exit('Restricted access' . PHP_EOL); |
||
27 | } |
||
28 | |||
29 | /** |
||
30 | * @param string $tablename |
||
31 | * |
||
32 | * @return bool |
||
33 | */ |
||
34 | function tableExists($tablename) |
||
35 | { |
||
36 | $result = $GLOBALS['xoopsDB']->queryF("SHOW TABLES LIKE '$tablename'"); |
||
37 | |||
38 | return $GLOBALS['xoopsDB']->getRowsNum($result) > 0; |
||
39 | } |
||
40 | |||
41 | /** |
||
42 | * |
||
43 | * Prepares system prior to attempting to install module |
||
44 | * @param XoopsModule $module {@link XoopsModule} |
||
45 | * |
||
46 | * @return bool true if ready to install, false if not |
||
47 | */ |
||
48 | function xoops_module_pre_update_apcal(XoopsModule $module) |
||
49 | { |
||
50 | $moduleDirName = basename(dirname(__DIR__)); |
||
51 | $classUtility = ucfirst($moduleDirName) . 'Utility'; |
||
52 | if (!class_exists($classUtility)) { |
||
53 | xoops_load('utility', $moduleDirName); |
||
54 | } |
||
55 | //check for minimum XOOPS version |
||
56 | if (!$classUtility::checkVerXoops($module)) { |
||
57 | return false; |
||
58 | } |
||
59 | |||
60 | // check for minimum PHP version |
||
61 | if (!$classUtility::checkVerPhp($module)) { |
||
62 | return false; |
||
63 | } |
||
64 | |||
65 | return true; |
||
66 | } |
||
67 | |||
68 | function xoops_module_update_apcal(XoopsModule $module) |
||
69 | { |
||
70 | // global $xoopsDB; |
||
71 | $moduleDirName = basename(dirname(__DIR__)); |
||
72 | $capsDirName = strtoupper($moduleDirName); |
||
73 | |||
74 | View Code Duplication | if (!$GLOBALS['xoopsDB']->queryF("SELECT shortsummary FROM {$GLOBALS['xoopsDB']->prefix('apcal_event')}")) { |
|
0 ignored issues
–
show
|
|||
75 | if ($GLOBALS['xoopsDB']->queryF("ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_event')} ADD shortsummary VARCHAR(255) AFTER groupid")) { |
||
76 | } |
||
77 | } |
||
78 | $result = $GLOBALS['xoopsDB']->queryF("SELECT id, summary FROM {$GLOBALS['xoopsDB']->prefix('apcal_event')}"); |
||
79 | while ($row = $GLOBALS['xoopsDB']->fetchArray($result)) { |
||
80 | $shortsummary = makeShort($row['summary']); |
||
81 | $GLOBALS['xoopsDB']->queryF("UPDATE {$GLOBALS['xoopsDB']->prefix('apcal_event')} SET shortsummary='{$shortsummary}' WHERE id={$row['id']}"); |
||
82 | } |
||
83 | |||
84 | View Code Duplication | if (!$GLOBALS['xoopsDB']->queryF("SELECT cat_shorttitle FROM {$GLOBALS['xoopsDB']->prefix('apcal_cat')}")) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
85 | if ($GLOBALS['xoopsDB']->queryF("ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_cat')} ADD cat_shorttitle VARCHAR(255) AFTER enabled")) { |
||
86 | } |
||
87 | } |
||
88 | $result = $GLOBALS['xoopsDB']->queryF("SELECT cid, cat_title FROM {$GLOBALS['xoopsDB']->prefix('apcal_cat')}"); |
||
89 | while ($row = $GLOBALS['xoopsDB']->fetchArray($result)) { |
||
90 | $cat_shorttitle = makeShort($row['cat_title']); |
||
91 | $GLOBALS['xoopsDB']->queryF("UPDATE {$GLOBALS['xoopsDB']->prefix('apcal_cat')} SET cat_shorttitle='{$cat_shorttitle}' WHERE cid={$row['cid']}"); |
||
92 | } |
||
93 | |||
94 | if (!$GLOBALS['xoopsDB']->queryF("SELECT email,url,mainCategory, otherHours FROM {$GLOBALS['xoopsDB']->prefix('apcal_event')}")) { |
||
95 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_event')} "; |
||
96 | $sql .= 'ADD url VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT \'\' AFTER location,'; |
||
97 | $sql .= 'ADD email VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT \'\' AFTER url,'; |
||
98 | $sql .= 'ADD mainCategory SMALLINT( 5 ) UNSIGNED ZEROFILL NOT NULL DEFAULT \'00000\' AFTER dtstamp,'; |
||
99 | $sql .= 'ADD otherHours VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT \'\' AFTER end'; |
||
100 | $GLOBALS['xoopsDB']->queryF($sql); |
||
101 | } |
||
102 | |||
103 | if (!$GLOBALS['xoopsDB']->queryF("SELECT color,canbemain FROM {$GLOBALS['xoopsDB']->prefix('apcal_cat')}")) { |
||
104 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_cat')} "; |
||
105 | $sql .= 'ADD color VARCHAR( 7 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT \'#5555AA\' AFTER cat_desc,'; |
||
106 | $sql .= 'ADD canbemain TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT \'0\' AFTER autocreated'; |
||
107 | $GLOBALS['xoopsDB']->queryF($sql); |
||
108 | } |
||
109 | |||
110 | $sql = "CREATE TABLE IF NOT EXISTS {$GLOBALS['xoopsDB']->prefix('apcal_pictures')} "; |
||
111 | $sql .= '(id int(10) unsigned NOT NULL AUTO_INCREMENT,'; |
||
112 | $sql .= 'event_id int(10) unsigned zerofill NOT NULL,'; |
||
113 | $sql .= 'picture varchar(255) NOT NULL,'; |
||
114 | $sql .= 'main_pic tinyint(1) unsigned NOT NULL DEFAULT \'0\','; |
||
115 | $sql .= 'PRIMARY KEY (id)) '; |
||
116 | $sql .= 'ENGINE=MyISAM DEFAULT CHARSET=utf8'; |
||
117 | $GLOBALS['xoopsDB']->queryF($sql); |
||
118 | |||
119 | $sql = "CREATE TABLE IF NOT EXISTS {$GLOBALS['xoopsDB']->prefix('apcal_ro_events')} ( |
||
120 | roe_id int(10) unsigned NOT NULL AUTO_INCREMENT, |
||
121 | roe_eventid mediumint(8) unsigned zerofill NOT NULL DEFAULT '00000000', |
||
122 | roe_number int(10) NOT NULL DEFAULT '0', |
||
123 | roe_datelimit int(10) NOT NULL DEFAULT '0', |
||
124 | roe_needconfirm INT(10) NOT NULL DEFAULT '0', |
||
125 | roe_waitinglist INT(10) NOT NULL DEFAULT '0', |
||
126 | roe_submitter int(10) NOT NULL DEFAULT '0', |
||
127 | roe_date_created int(10) NOT NULL DEFAULT '0', |
||
128 | PRIMARY KEY (roe_id), |
||
129 | KEY event (roe_eventid)) |
||
130 | ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; |
||
131 | $GLOBALS['xoopsDB']->queryF($sql); |
||
132 | |||
133 | $sql = "CREATE TABLE IF NOT EXISTS {$GLOBALS['xoopsDB']->prefix('apcal_ro_members')} ( |
||
134 | rom_id int(10) unsigned NOT NULL AUTO_INCREMENT, |
||
135 | rom_eventid mediumint(8) unsigned zerofill NOT NULL DEFAULT '00000000', |
||
136 | rom_firstname varchar(200) DEFAULT NULL, |
||
137 | rom_lastname varchar(200) DEFAULT NULL, |
||
138 | rom_email varchar(200) DEFAULT NULL, |
||
139 | rom_extrainfo1 varchar(200) DEFAULT NULL, |
||
140 | rom_extrainfo2 varchar(200) DEFAULT NULL, |
||
141 | rom_extrainfo3 varchar(200) DEFAULT NULL, |
||
142 | rom_extrainfo4 varchar(200) DEFAULT NULL, |
||
143 | rom_extrainfo5 varchar(200) DEFAULT NULL, |
||
144 | rom_poster_ip varchar(200) DEFAULT NULL, |
||
145 | rom_status int(10) NOT NULL DEFAULT '0', |
||
146 | rom_submitter int(10) NOT NULL DEFAULT '0', |
||
147 | rom_date_created int(10) NOT NULL DEFAULT '0', |
||
148 | PRIMARY KEY (rom_id), |
||
149 | UNIQUE KEY UNQ_EMAIL (rom_eventid, rom_email), |
||
150 | KEY event (rom_eventid)) |
||
151 | ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; |
||
152 | $GLOBALS['xoopsDB']->queryF($sql); |
||
153 | |||
154 | $sql = "CREATE TABLE IF NOT EXISTS {$GLOBALS['xoopsDB']->prefix('apcal_ro_notify')} ( |
||
155 | ron_id int(10) unsigned NOT NULL AUTO_INCREMENT, |
||
156 | ron_eventid mediumint(8) unsigned zerofill NOT NULL DEFAULT '00000000', |
||
157 | ron_email varchar(200) DEFAULT NULL, |
||
158 | ron_submitter int(10) DEFAULT NULL, |
||
159 | ron_date_created int(11) NOT NULL DEFAULT '0', |
||
160 | PRIMARY KEY (ron_id), |
||
161 | KEY event (ron_eventid)) |
||
162 | ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; |
||
163 | $GLOBALS['xoopsDB']->queryF($sql); |
||
164 | |||
165 | $GLOBALS['xoopsDB']->queryF("UPDATE {$GLOBALS['xoopsDB']->prefix('apcal_event')} SET start_date=NULL,end_date=NULL"); |
||
166 | $GLOBALS['xoopsDB']->queryF("UPDATE {$GLOBALS['xoopsDB']->prefix('apcal_event')} t, (SELECT id, shortsummary FROM {$GLOBALS['xoopsDB']->prefix('apcal_event')} x WHERE x.rrule_pid>0 GROUP BY x.shortsummary ORDER BY start) AS e SET t.rrule_pid=e.id WHERE t.shortsummary=e.shortsummary;"); |
||
167 | |||
168 | // fix problem from removed poster_ip |
||
169 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_ro_members')} ADD `rom_status` INT(1) NOT NULL DEFAULT '0' AFTER `rom_extrainfo5`;"; |
||
170 | $GLOBALS['xoopsDB']->queryF($sql); |
||
171 | // fix problem from removed poster_ip |
||
172 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_ro_members')} ADD `rom_poster_ip` VARCHAR(200) NULL DEFAULT '' AFTER `rom_extrainfo5`;"; |
||
173 | $GLOBALS['xoopsDB']->queryF($sql); |
||
174 | |||
175 | // fix problem from removed roe_waitinglist |
||
176 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_ro_events')} ADD `roe_waitinglist` INT(10) NOT NULL DEFAULT '0' AFTER `roe_datelimit`;"; |
||
177 | $GLOBALS['xoopsDB']->queryF($sql); |
||
178 | |||
179 | // fix problem from removed roe_waitinglist |
||
180 | $sql = "ALTER TABLE {$GLOBALS['xoopsDB']->prefix('apcal_ro_events')} ADD `roe_needconfirm` INT(10) NOT NULL DEFAULT '0' AFTER `roe_datelimit`;"; |
||
181 | $GLOBALS['xoopsDB']->queryF($sql); |
||
182 | |||
183 | // if (!is_dir(XOOPS_UPLOAD_PATH . '/apcal/')) { |
||
184 | // mkdir(XOOPS_UPLOAD_PATH . '/apcal/', 0755); |
||
185 | // } |
||
186 | // if (!is_dir(XOOPS_UPLOAD_PATH . '/apcal/thumbs/')) { |
||
187 | // mkdir(XOOPS_UPLOAD_PATH . '/apcal/thumbs/', 0755); |
||
188 | // } |
||
189 | |||
190 | require_once __DIR__ . '/config.php'; |
||
191 | $configurator = new ModuleConfigurator(); |
||
192 | $classUtility = ucfirst($moduleDirName) . 'Utility'; |
||
193 | if (!class_exists($classUtility)) { |
||
194 | xoops_load('utility', $moduleDirName); |
||
195 | } |
||
196 | |||
197 | //delete old HTML templates |
||
198 | if (count($configurator->templateFolders) > 0) { |
||
199 | foreach ($configurator->templateFolders as $folder) { |
||
200 | $templateFolder = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $folder); |
||
201 | if (is_dir($templateFolder)) { |
||
202 | $templateList = array_diff(scandir($templateFolder), array('..', '.')); |
||
203 | foreach ($templateList as $k => $v) { |
||
204 | $fileInfo = new SplFileInfo($templateFolder . $v); |
||
205 | if ($fileInfo->getExtension() === 'html' && $fileInfo->getFilename() !== 'index.html') { |
||
206 | if (file_exists($templateFolder . $v)) { |
||
207 | unlink($templateFolder . $v); |
||
208 | } |
||
209 | } |
||
210 | } |
||
211 | } |
||
212 | } |
||
213 | } |
||
214 | |||
215 | // --- DELETE OLD FILES --------------- |
||
216 | if (count($configurator->oldFiles) > 0) { |
||
217 | // foreach (array_keys($GLOBALS['uploadFolders']) as $i) { |
||
218 | foreach (array_keys($configurator->oldFiles) as $i) { |
||
219 | $tempFile = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $configurator->oldFiles[$i]); |
||
220 | if (is_file($tempFile)) { |
||
221 | unlink($tempFile); |
||
222 | } |
||
223 | } |
||
224 | } |
||
225 | |||
226 | // --- DELETE OLD FOLDERS --------------- |
||
227 | xoops_load('XoopsFile'); |
||
228 | if (count($configurator->oldFolders) > 0) { |
||
229 | // foreach (array_keys($GLOBALS['uploadFolders']) as $i) { |
||
230 | foreach (array_keys($configurator->oldFolders) as $i) { |
||
231 | $tempFolder = $GLOBALS['xoops']->path('modules/' . $moduleDirName . $configurator->oldFolders[$i]); |
||
232 | /* @var $folderHandler XoopsObjectHandler */ |
||
233 | $folderHandler = XoopsFile::getHandler('folder', $tempFolder); |
||
234 | $folderHandler->delete($tempFolder); |
||
235 | } |
||
236 | } |
||
237 | |||
238 | // --- CREATE FOLDERS --------------- |
||
239 | View Code Duplication | if (count($configurator->uploadFolders) > 0) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
240 | // foreach (array_keys($GLOBALS['uploadFolders']) as $i) { |
||
241 | foreach (array_keys($configurator->uploadFolders) as $i) { |
||
242 | $classUtility::createFolder($configurator->uploadFolders[$i]); |
||
243 | } |
||
244 | } |
||
245 | |||
246 | // --- COPY blank.png FILES --------------- |
||
247 | View Code Duplication | if (count($configurator->blankFiles) > 0) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
248 | $file = __DIR__ . '/../assets/images/blank.png'; |
||
249 | foreach (array_keys($configurator->blankFiles) as $i) { |
||
250 | $dest = $configurator->blankFiles[$i] . '/blank.png'; |
||
251 | $classUtility::copyFile($file, $dest); |
||
252 | } |
||
253 | } |
||
254 | |||
255 | //delete .html entries from the tpl table |
||
256 | $sql = 'DELETE FROM ' . $GLOBALS['xoopsDB']->prefix('tplfile') . " WHERE `tpl_module` = '" . $module->getVar('dirname', 'n') . '\' AND `tpl_file` LIKE \'%.html%\''; |
||
257 | $GLOBALS['xoopsDB']->queryF($sql); |
||
258 | |||
259 | /** @var XoopsGroupPermHandler $gpermHandler */ |
||
260 | $gpermHandler = xoops_getHandler('groupperm'); |
||
261 | |||
262 | return $gpermHandler->deleteByModule($module->getVar('mid'), 'item_read'); |
||
263 | |||
264 | return true; |
||
265 | } |
||
266 | |||
267 | /** |
||
268 | * @param $str |
||
269 | * @return mixed |
||
270 | */ |
||
271 | View Code Duplication | function makeShort($str) |
|
0 ignored issues
–
show
This function seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
272 | { |
||
273 | $replacements = array( |
||
274 | 'Š' => 'S', |
||
275 | 'š' => 's', |
||
276 | 'Ž' => 'Z', |
||
277 | 'ž' => 'z', |
||
278 | 'À' => 'A', |
||
279 | 'Á' => 'A', |
||
280 | 'Â' => 'A', |
||
281 | 'Ã' => 'A', |
||
282 | 'Ä' => 'A', |
||
283 | 'Å' => 'A', |
||
284 | 'Æ' => 'A', |
||
285 | 'Ç' => 'C', |
||
286 | 'È' => 'E', |
||
287 | 'É' => 'E', |
||
288 | 'Ê' => 'E', |
||
289 | 'Ë' => 'E', |
||
290 | 'Ì' => 'I', |
||
291 | 'Í' => 'I', |
||
292 | 'Î' => 'I', |
||
293 | 'Ï' => 'I', |
||
294 | 'Ñ' => 'N', |
||
295 | 'Ò' => 'O', |
||
296 | 'Ó' => 'O', |
||
297 | 'Ô' => 'O', |
||
298 | 'Õ' => 'O', |
||
299 | 'Ö' => 'O', |
||
300 | 'Ø' => 'O', |
||
301 | 'Ù' => 'U', |
||
302 | 'Ú' => 'U', |
||
303 | 'Û' => 'U', |
||
304 | 'Ü' => 'U', |
||
305 | 'Ý' => 'Y', |
||
306 | 'Þ' => 'B', |
||
307 | 'ß' => 'ss', |
||
308 | 'à' => 'a', |
||
309 | 'á' => 'a', |
||
310 | 'â' => 'a', |
||
311 | 'ã' => 'a', |
||
312 | 'ä' => 'a', |
||
313 | 'å' => 'a', |
||
314 | 'æ' => 'a', |
||
315 | 'ç' => 'c', |
||
316 | 'è' => 'e', |
||
317 | 'é' => 'e', |
||
318 | 'ê' => 'e', |
||
319 | 'ë' => 'e', |
||
320 | 'ì' => 'i', |
||
321 | 'í' => 'i', |
||
322 | 'î' => 'i', |
||
323 | 'ï' => 'i', |
||
324 | 'ð' => 'o', |
||
325 | 'ñ' => 'n', |
||
326 | 'ò' => 'o', |
||
327 | 'ó' => 'o', |
||
328 | 'ô' => 'o', |
||
329 | 'õ' => 'o', |
||
330 | 'ö' => 'o', |
||
331 | 'ø' => 'o', |
||
332 | 'ù' => 'u', |
||
333 | 'ú' => 'u', |
||
334 | 'û' => 'u', |
||
335 | 'ý' => 'y', |
||
336 | 'ý' => 'y', |
||
337 | 'þ' => 'b', |
||
338 | 'ÿ' => 'y' |
||
339 | ); |
||
340 | |||
341 | $str = strip_tags($str); |
||
342 | $str = strtr($str, $replacements); |
||
343 | |||
344 | return str_replace(array(' ', '-', '/', "\\", "'", '"', "\r", "\n", '&', '?', '!', '%', ',', '.'), '', $str); |
||
345 | } |
||
346 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.