XoopsModules25x /
xhelp
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 declare(strict_types=1); |
||||
| 2 | |||||
| 3 | /* |
||||
| 4 | * You may not change or alter any portion of this comment or credits |
||||
| 5 | * of supporting developers from this source code or any supporting source code |
||||
| 6 | * which is considered copyrighted (c) material of the original comment or credit authors. |
||||
| 7 | * |
||||
| 8 | * This program is distributed in the hope that it will be useful, |
||||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||||
| 11 | */ |
||||
| 12 | |||||
| 13 | /** |
||||
| 14 | * @copyright {@link https://xoops.org/ XOOPS Project} |
||||
| 15 | * @license {@link https://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later} |
||||
| 16 | * @author Brian Wahoff <[email protected]> |
||||
| 17 | * @author Eric Juden <[email protected]> |
||||
| 18 | * @author XOOPS Development Team |
||||
| 19 | */ |
||||
| 20 | |||||
| 21 | use Xmf\Request; |
||||
| 22 | use XoopsModules\Xhelp; |
||||
| 23 | |||||
| 24 | /** @var Xhelp\Helper $helper */ |
||||
| 25 | require_once __DIR__ . '/header.php'; |
||||
| 26 | |||||
| 27 | require_once \dirname(__DIR__, 2) . '/mainfile.php'; |
||||
| 28 | if (!defined('XHELP_CONSTANTS_INCLUDED')) { |
||||
| 29 | require_once XOOPS_ROOT_PATH . '/modules/xhelp/include/constants.php'; |
||||
| 30 | } |
||||
| 31 | |||||
| 32 | //require_once XHELP_BASE_PATH . '/functions.php'; |
||||
| 33 | $helper->loadLanguage('modinfo'); |
||||
| 34 | $helper->loadLanguage('main'); |
||||
| 35 | |||||
| 36 | $op = ''; |
||||
| 37 | |||||
| 38 | if (Request::hasVar('op', 'GET')) { |
||||
| 39 | $op = $_GET['op']; |
||||
| 40 | } |
||||
| 41 | |||||
| 42 | switch ($op) { |
||||
| 43 | case 'updateTopics': |
||||
| 44 | global $xoopsModule; |
||||
| 45 | $myTopics = updateTopics(); |
||||
| 46 | break; |
||||
| 47 | case 'updateDepts': |
||||
| 48 | global $xoopsModule; |
||||
| 49 | $myDepts = updateDepts(); |
||||
| 50 | break; |
||||
| 51 | default: |
||||
| 52 | return false; |
||||
| 53 | } |
||||
| 54 | |||||
| 55 | /** |
||||
| 56 | * @return bool |
||||
| 57 | */ |
||||
| 58 | function updateDepts(): bool |
||||
| 59 | { |
||||
| 60 | global $xoopsDB; |
||||
| 61 | $helper = Xhelp\Helper::getInstance(); |
||||
| 62 | |||||
| 63 | echo "<link rel='stylesheet' type='text/css' media'screen' href='" . XOOPS_URL . "/xoops.css'> |
||||
| 64 | <link rel='stylesheet' type='text/css' media='screen' href='" . xoops_getcss() . "'> |
||||
| 65 | <link rel='stylesheet' type='text/css' media='screen' href='../system/style.css'>"; |
||||
| 66 | echo "<table width='100%' border='1' cellpadding='0' cellspacing='2' class='formButton'>"; |
||||
| 67 | echo '<tr><th>' . _MI_XHELP_DEFAULT_DEPT . '</th></tr>'; |
||||
| 68 | echo "<tr class='head'><td>" . _XHELP_TEXT_DEPTS_ADDED . '</td></tr>'; |
||||
| 69 | |||||
| 70 | if (!$xhelp_config = removeDepts()) { |
||||
| 71 | return false; |
||||
| 72 | } |
||||
| 73 | |||||
| 74 | //Retrieve list of departments |
||||
| 75 | /** @var \XoopsModules\Xhelp\DepartmentHandler $departmentHandler */ |
||||
| 76 | $departmentHandler = $helper->getHandler('Department'); |
||||
| 77 | $depts = $departmentHandler->getObjects(); |
||||
| 78 | |||||
| 79 | $class = 'odd'; |
||||
| 80 | foreach ($depts as $dept) { |
||||
| 81 | $deptid = $dept->getVar('id'); |
||||
| 82 | $deptname = $dept->getVar('department'); |
||||
| 83 | |||||
| 84 | /** @var \XoopsModules\Xhelp\ConfigOptionHandler $configOptionHandler */ |
||||
| 85 | $configOptionHandler = $helper->getHandler('ConfigOption'); |
||||
| 86 | $newOption = $configOptionHandler->create(); |
||||
| 87 | $newOption->setVar('confop_name', $deptname); |
||||
| 88 | $newOption->setVar('confop_value', $deptid); |
||||
| 89 | $newOption->setVar('conf_id', $xhelp_config); |
||||
| 90 | |||||
| 91 | if (!$configOptionHandler->insert($newOption, true)) { |
||||
| 92 | return false; |
||||
| 93 | } |
||||
| 94 | |||||
| 95 | echo "<tr class='" . $class . "'><td>" . $dept->getVar('department') . '</td></tr>'; |
||||
| 96 | $class = ('odd' === $class) ? 'even' : 'odd'; |
||||
| 97 | } |
||||
| 98 | echo "<tr class='foot'><td>" . _XHELP_TEXT_UPDATE_COMP . "<br><br><input type='button' name='closeWindow' value='" . _XHELP_TEXT_CLOSE_WINDOW . "' class='formButton' onClick=\"window.opener.location=window.opener.location;window.close();\"></td></tr>"; |
||||
| 99 | echo '</table>'; |
||||
| 100 | |||||
| 101 | return true; |
||||
| 102 | } |
||||
| 103 | |||||
| 104 | /** |
||||
| 105 | * @return bool |
||||
| 106 | */ |
||||
| 107 | function removeDepts(): bool |
||||
| 108 | { |
||||
| 109 | global $xoopsDB; |
||||
| 110 | $helper = Xhelp\Helper::getInstance(); |
||||
| 111 | |||||
| 112 | //Needs force on delete |
||||
| 113 | /** @var \XoopsConfigHandler $configHandler */ |
||||
| 114 | $configHandler = xoops_getHandler('config'); |
||||
| 115 | |||||
| 116 | // Select the config from the xoops_config table |
||||
| 117 | $criteria = new \Criteria('conf_name', 'xhelp_defaultDept'); |
||||
| 118 | $config = $configHandler->getConfigs($criteria); |
||||
| 119 | |||||
| 120 | if (count($config) > 0) { |
||||
| 121 | $xhelp_config = $config[0]->getVar('conf_id'); |
||||
| 122 | } else { |
||||
| 123 | return false; |
||||
| 124 | } |
||||
| 125 | |||||
| 126 | // Remove the config options |
||||
| 127 | /** @var \XoopsModules\Xhelp\ConfigOptionHandler $configOptionHandler */ |
||||
| 128 | $configOptionHandler = $helper->getHandler('ConfigOption'); |
||||
| 129 | $criteria = new \Criteria('conf_id', $xhelp_config); |
||||
| 130 | $configOptions = $configOptionHandler->getObjects($criteria); |
||||
| 131 | |||||
| 132 | if (count($configOptions) > 0) { |
||||
| 133 | foreach ($configOptions as $option) { |
||||
| 134 | if (!$configOptionHandler->deleteAll($option, true)) { // Remove each config option |
||||
| 135 | return false; |
||||
| 136 | } |
||||
| 137 | } |
||||
| 138 | } else { // If no config options were found |
||||
| 139 | return $xhelp_config; |
||||
| 140 | } |
||||
| 141 | |||||
| 142 | return $xhelp_config; |
||||
| 143 | } |
||||
| 144 | |||||
| 145 | /** |
||||
| 146 | * @param bool $onInstall |
||||
| 147 | * @return bool |
||||
| 148 | */ |
||||
| 149 | function updateTopics(bool $onInstall = false): bool |
||||
| 150 | { |
||||
| 151 | if (!$onInstall) { // Don't need to display anything if installing |
||||
| 152 | echo "<link rel='stylesheet' type='text/css' media='screen' href='" . XOOPS_URL . "/xoops.css'> |
||||
| 153 | <link rel='stylesheet' type='text/css' media='screen' href='" . xoops_getcss() . "'> |
||||
| 154 | <link rel='stylesheet' type='text/css' media='screen' href='../system/style.css'>"; |
||||
| 155 | echo "<table width='100%' border='1' cellpadding='0' cellspacing='2' class='formButton'>"; |
||||
| 156 | echo '<tr><th>' . _MI_XHELP_ANNOUNCEMENTS . '</th></tr>'; |
||||
| 157 | echo "<tr class='head'><td>" . _XHELP_TEXT_TOPICS_ADDED . '</td></tr>'; |
||||
| 158 | } |
||||
| 159 | if (!$xhelp_config = removeTopics()) { |
||||
| 160 | return false; |
||||
| 161 | } |
||||
| 162 | |||||
| 163 | //Retrieve list of topics from DB |
||||
| 164 | global $xoopsDB; |
||||
| 165 | $ret = $xoopsDB->query('SELECT topic_id, topic_title FROM ' . $xoopsDB->prefix('topics')); |
||||
| 166 | $myTopics = []; |
||||
| 167 | $myTopics[_MI_XHELP_ANNOUNCEMENTS_NONE] = 0; |
||||
| 168 | while (false !== ($arr = $xoopsDB->fetchArray($ret))) { |
||||
| 169 | $myTopics[$arr['topic_title']] = $arr['topic_id']; |
||||
| 170 | } |
||||
| 171 | |||||
| 172 | $class = 'odd'; |
||||
| 173 | foreach ($myTopics as $topic => $value) { |
||||
| 174 | $xhelp_id = $xoopsDB->genId($xoopsDB->prefix('configoption') . '_uid_seq'); |
||||
| 175 | $sql = sprintf('INSERT INTO `%s` (confop_id, confop_name, confop_value, conf_id) VALUES (%u, %s, %s, %u)', $xoopsDB->prefix('configoption'), $xhelp_id, $xoopsDB->quoteString($topic), $xoopsDB->quoteString($value), $xhelp_config); |
||||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||
| 176 | |||||
| 177 | if (!$result = $xoopsDB->queryF($sql)) { |
||||
|
0 ignored issues
–
show
|
|||||
| 178 | return false; |
||||
| 179 | } |
||||
| 180 | |||||
| 181 | if (empty($xhelp_id)) { |
||||
| 182 | $xhelp_id = $xoopsDB->getInsertId(); |
||||
|
0 ignored issues
–
show
|
|||||
| 183 | } |
||||
| 184 | if (!$onInstall) { // Don't need to display anything if installing |
||||
| 185 | echo "<tr class='" . $class . "'><td>" . $topic . '</td></tr>'; |
||||
| 186 | $class = ('odd' === $class) ? 'even' : 'odd'; |
||||
| 187 | } |
||||
| 188 | } |
||||
| 189 | if (!$onInstall) { // Don't need to display anything if installing |
||||
| 190 | echo "<tr class='foot'><td>" . _XHELP_TEXT_UPDATE_COMP . "<br><br><input type='button' name='closeWindow' value='" . _XHELP_TEXT_CLOSE_WINDOW . "' class='formButton' onClick=\"javascript:window.opener.location=window.opener.location;window.close();\"></td></tr>"; |
||||
| 191 | echo '</table>'; |
||||
| 192 | } |
||||
| 193 | return true; |
||||
| 194 | } |
||||
| 195 | |||||
| 196 | /** |
||||
| 197 | * @return bool|string |
||||
| 198 | */ |
||||
| 199 | function removeTopics() |
||||
| 200 | { |
||||
| 201 | global $xoopsDB; |
||||
| 202 | // Select the config from the xoops_config table |
||||
| 203 | $sql = sprintf('SELECT * FROM `%s` WHERE conf_name = %s', $xoopsDB->prefix('config'), "'xhelp_announcements'"); |
||||
| 204 | if (!$ret = $xoopsDB->query($sql)) { |
||||
| 205 | return false; |
||||
| 206 | } |
||||
| 207 | $xhelp_config = false; |
||||
|
0 ignored issues
–
show
|
|||||
| 208 | $arr = $xoopsDB->fetchArray($ret); |
||||
| 209 | $xhelp_config = $arr['conf_id']; |
||||
| 210 | |||||
| 211 | // Remove the config options |
||||
| 212 | $sql = sprintf('DELETE FROM `%s` WHERE conf_id = %s', $xoopsDB->prefix('configoption'), $xhelp_config); |
||||
| 213 | if (!$ret = $xoopsDB->queryF($sql)) { |
||||
|
0 ignored issues
–
show
|
|||||
| 214 | return false; |
||||
| 215 | } |
||||
| 216 | |||||
| 217 | return $xhelp_config; |
||||
| 218 | } |
||||
| 219 | |||||
| 220 | /** |
||||
| 221 | * |
||||
| 222 | * @param \XoopsModule $module |
||||
| 223 | * @return bool |
||||
| 224 | */ |
||||
| 225 | function xoops_module_install_xhelp(\XoopsModule $module): bool |
||||
|
0 ignored issues
–
show
The parameter
$module 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
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...
|
|||||
| 226 | { |
||||
| 227 | $myTopics = updateTopics(true); |
||||
|
0 ignored issues
–
show
|
|||||
| 228 | $hasRoles = Xhelp\Utility::createRoles(); |
||||
|
0 ignored issues
–
show
|
|||||
| 229 | $hasStatuses = Xhelp\Utility::createStatuses(); |
||||
|
0 ignored issues
–
show
|
|||||
| 230 | $hasNotifications = Xhelp\Utility::createNotifications(); |
||||
|
0 ignored issues
–
show
|
|||||
| 231 | $hasTicketLists = Xhelp\Utility::createDefaultTicketLists(); |
||||
|
0 ignored issues
–
show
|
|||||
| 232 | |||||
| 233 | return true; |
||||
| 234 | } |
||||
| 235 |