mambax7 /
newbb5
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\Newbb; |
||
| 4 | |||
| 5 | /** |
||
| 6 | * NewBB 5.0x, the forum module for XOOPS project |
||
| 7 | * |
||
| 8 | * @copyright XOOPS Project (https://xoops.org) |
||
| 9 | * @license GNU GPL 2 or later (https://www.gnu.org/licenses/gpl-2.0.html) |
||
| 10 | * @author Taiwen Jiang (phppp or D.J.) <[email protected]> |
||
| 11 | * @since 4.00 |
||
| 12 | * @package module::newbb |
||
| 13 | */ |
||
| 14 | |||
| 15 | |||
| 16 | |||
| 17 | \defined('NEWBB_FUNCTIONS_INI') || require $GLOBALS['xoops']->path('modules/newbb/include/functions.ini.php'); |
||
| 18 | |||
| 19 | /** |
||
| 20 | * @param $RPG |
||
| 21 | * @param $RPGDIFF |
||
| 22 | * @return array|number |
||
| 23 | */ |
||
| 24 | function newbb_calculateLevel($RPG, $RPGDIFF) |
||
| 25 | { |
||
| 26 | //$RPG = $user->getVar('posts'); |
||
| 27 | //$RPGDIFF = $user->getVar('user_regdate'); |
||
| 28 | |||
| 29 | $today = \time(); |
||
| 30 | $diff = $today - $RPGDIFF; |
||
| 31 | $exp = \round($diff / 86400, 0); |
||
| 32 | if ($exp <= 0) { |
||
| 33 | $exp = 1; |
||
| 34 | } |
||
| 35 | $ppd = \round($RPG / $exp, 0); |
||
| 36 | $level = \pow(\log10($RPG), 3); |
||
| 37 | $ep = \floor(100 * ($level - \floor($level))); |
||
| 38 | $showlevel = \floor($level + 1); |
||
| 39 | $hpmulti = \round($ppd / 6, 1); |
||
| 40 | if ($hpmulti > 1.5) { |
||
| 41 | $hpmulti = 1.5; |
||
| 42 | } |
||
| 43 | if ($hpmulti < 1) { |
||
| 44 | $hpmulti = 1; |
||
| 45 | } |
||
| 46 | $maxhp = $level * 25 * $hpmulti; |
||
| 47 | $hp = $ppd / 5; |
||
| 48 | if ($hp >= 1) { |
||
| 49 | $hp = $maxhp; |
||
| 50 | } else { |
||
| 51 | $hp = \floor($hp * $maxhp); |
||
| 52 | } |
||
| 53 | $hp = \floor($hp); |
||
| 54 | $maxhp = \floor($maxhp); |
||
| 55 | $zhp = $maxhp; |
||
| 56 | if ($maxhp <= 0) { |
||
| 57 | $zhp = 1; |
||
| 58 | } |
||
| 59 | $hpf = \floor(100 * ($hp / $zhp)) - 1; |
||
| 60 | $maxmp = ($exp * $level) / 5; |
||
| 61 | $mp = $RPG / 3; |
||
| 62 | if ($mp >= $maxmp) { |
||
| 63 | $mp = $maxmp; |
||
| 64 | } |
||
| 65 | $maxmp = \floor($maxmp); |
||
| 66 | $mp = \floor($mp); |
||
| 67 | $zmp = $maxmp; |
||
| 68 | if ($maxmp <= 0) { |
||
| 69 | $zmp = 1; |
||
| 70 | } |
||
| 71 | $mpf = \floor(100 * ($mp / $zmp)) - 1; |
||
| 72 | if ($hpf >= 98) { |
||
| 73 | $hpf -= 2; |
||
| 74 | } |
||
| 75 | if ($ep >= 98) { |
||
| 76 | $ep -= 2; |
||
| 77 | } |
||
| 78 | if ($mpf >= 98) { |
||
| 79 | $mpf -= 2; |
||
| 80 | } |
||
| 81 | |||
| 82 | $level = []; |
||
| 83 | $level['level'] = $showlevel; |
||
| 84 | $level['exp'] = $ep; |
||
| 85 | $level['exp_width'] = $ep . '%'; |
||
| 86 | $level['hp'] = $hp; |
||
| 87 | $level['hp_max'] = $maxhp; |
||
| 88 | $level['hp_width'] = $hpf . '%'; |
||
| 89 | $level['mp'] = $mp; |
||
| 90 | $level['mp_max'] = $maxmp; |
||
| 91 | $level['mp_width'] = $mpf . '%'; |
||
| 92 | |||
| 93 | return $level; |
||
| 94 | } |
||
| 95 | |||
| 96 | /** |
||
| 97 | * Class User |
||
| 98 | */ |
||
| 99 | class User |
||
| 100 | { |
||
| 101 | public $user; |
||
| 102 | |||
| 103 | public function __construct() |
||
| 104 | { |
||
| 105 | } |
||
| 106 | |||
| 107 | /** |
||
| 108 | * @return array |
||
| 109 | */ |
||
| 110 | public function getUserbar() |
||
| 111 | { |
||
| 112 | global $isAdmin; |
||
| 113 | |||
| 114 | $userbar = []; |
||
| 115 | if (empty($GLOBALS['xoopsModuleConfig']['userbar_enabled'])) { |
||
| 116 | return $userbar; |
||
| 117 | } |
||
| 118 | |||
| 119 | $user = $this->user; |
||
| 120 | $userbar['profile'] = [ |
||
| 121 | 'link' => XOOPS_URL . '/userinfo.php?uid=' . $user->getVar('uid'), |
||
| 122 | 'name' => _PROFILE, |
||
| 123 | ]; |
||
| 124 | |||
| 125 | if (\is_object($GLOBALS['xoopsUser'])) { |
||
| 126 | $userbar['pm'] = [ |
||
| 127 | 'link' => "javascript:void openWithSelfMain('" . XOOPS_URL . '/pmlite.php?send2=1&to_userid=' . $user->getVar('uid') . "', 'pmlite', 450, 380);", |
||
| 128 | 'name' => \_MD_NEWBB_PM, |
||
| 129 | ]; |
||
| 130 | } |
||
| 131 | if ($user->getVar('user_viewemail') || $isAdmin) { |
||
| 132 | $userbar['email'] = [ |
||
| 133 | 'link' => "javascript:void window.open('mailto:" . $user->getVar('email') . "', 'new');", |
||
| 134 | 'name' => \_MD_NEWBB_EMAIL, |
||
| 135 | ]; |
||
| 136 | } |
||
| 137 | $url = $user->getVar('url'); |
||
| 138 | if ($url) { |
||
| 139 | $userbar['url'] = [ |
||
| 140 | 'link' => "javascript:void window.open('" . $url . "', 'new');", |
||
| 141 | 'name' => \_MD_NEWBB_WWW, |
||
| 142 | ]; |
||
| 143 | } |
||
| 144 | $icq = $user->getVar('user_icq'); |
||
| 145 | if ($icq) { |
||
| 146 | $userbar['icq'] = [ |
||
| 147 | 'link' => "javascript:void window.open('http://wwp.icq.com/scripts/search.dll?to=" . $icq . "', 'new');", |
||
| 148 | 'name' => \_MD_NEWBB_ICQ, |
||
| 149 | ]; |
||
| 150 | } |
||
| 151 | $aim = $user->getVar('user_aim'); |
||
| 152 | if ($aim) { |
||
| 153 | $userbar['aim'] = [ |
||
| 154 | 'link' => "javascript:void window.open('aim:goim?screenname=" . $aim . '&message=Hi+' . $aim . '+Are+you+there?' . "', 'new');", |
||
| 155 | 'name' => \_MD_NEWBB_AIM, |
||
| 156 | ]; |
||
| 157 | } |
||
| 158 | $yim = $user->getVar('user_yim'); |
||
| 159 | if ($yim) { |
||
| 160 | $userbar['yim'] = [ |
||
| 161 | 'link' => "javascript:void window.open('http://edit.yahoo.com/config/send_webmesg?.target=" . $yim . '&.src=pg' . "', 'new');", |
||
| 162 | 'name' => \_MD_NEWBB_YIM, |
||
| 163 | ]; |
||
| 164 | } |
||
| 165 | $msn = $user->getVar('user_msnm'); |
||
| 166 | if ($msn) { |
||
| 167 | $userbar['msnm'] = [ |
||
| 168 | 'link' => "javascript:void window.open('http://members.msn.com?mem=" . $msn . "', 'new');", |
||
| 169 | 'name' => \_MD_NEWBB_MSNM, |
||
| 170 | ]; |
||
| 171 | } |
||
| 172 | |||
| 173 | return $userbar; |
||
| 174 | } |
||
| 175 | |||
| 176 | /** |
||
| 177 | * @return string |
||
| 178 | */ |
||
| 179 | public function getLevel() |
||
| 180 | { |
||
| 181 | global $forumUrl; |
||
| 182 | |||
| 183 | $level = newbb_calculateLevel($this->user->getVar('posts'), $this->user->getVar('user_regdate')); |
||
| 184 | $info = ''; |
||
| 185 | if (2 == $GLOBALS['xoopsModuleConfig']['user_level']) { |
||
| 186 | static $rpg_images; |
||
| 187 | if (null === $rpg_images) { |
||
| 188 | $iconHandler = \newbbGetIconHandler(); |
||
| 189 | $rpg_path = $iconHandler->getPath('rpg'); |
||
| 190 | foreach (['img_left', 'img_backing', 'img_right', 'blue', 'green', 'orange'] as $img) { |
||
| 191 | // irmtfan fix: double "/" removed |
||
| 192 | $rpg_images[$img] = XOOPS_URL . $rpg_path . '/' . $img . '.gif'; |
||
| 193 | } |
||
| 194 | } |
||
| 195 | // irmtfan hardcore removed align="left" |
||
| 196 | $table = "<table class='userlevel'><tr><td class='end'><img src='" |
||
| 197 | . $rpg_images['img_left'] |
||
| 198 | . "' alt='' ></td><td class='center' background='" |
||
| 199 | . $rpg_images['img_backing'] |
||
| 200 | . "'><img src='%s' width='%d' alt='' class='icon_left' ></td><td><img src='" |
||
| 201 | . $rpg_images['img_right'] |
||
| 202 | . "' alt='' ></td></tr></table>"; |
||
| 203 | |||
| 204 | $info = \_MD_NEWBB_LEVEL . ' ' . $level['level'] . '<br><span title="' . \_MD_NEWBB_HP_DESC . '">' . \_MD_NEWBB_HP . ' ' . $level['hp'] . ' / ' . $level['hp_max'] . '</span><br>' . \sprintf($table, $rpg_images['orange'], $level['hp_width']); |
||
| 205 | $info .= '<span title="' . \_MD_NEWBB_MP_DESC . '">' . \_MD_NEWBB_MP . ' ' . $level['mp'] . ' / ' . $level['mp_max'] . '</span><br>' . \sprintf($table, $rpg_images['green'], $level['mp_width']); |
||
| 206 | $info .= '<span title="' . \_MD_NEWBB_EXP_DESC . '">' . \_MD_NEWBB_EXP . ' ' . $level['exp'] . '</span><br>' . \sprintf($table, $rpg_images['blue'], $level['exp_width']); |
||
| 207 | } else { |
||
| 208 | $info = \_MD_NEWBB_LEVEL . ' ' . $level['level'] . '; <span title="' . \_MD_NEWBB_EXP_DESC . '">' . \_MD_NEWBB_EXP . ' ' . $level['exp'] . '</span><br>'; |
||
| 209 | $info .= '<span title="' . \_MD_NEWBB_HP_DESC . '">' . \_MD_NEWBB_HP . ' ' . $level['hp'] . ' / ' . $level['hp_max'] . '</span><br>'; |
||
| 210 | $info .= '<span title="' . \_MD_NEWBB_MP_DESC . '">' . \_MD_NEWBB_MP . ' ' . $level['mp'] . ' / ' . $level['mp_max'] . '</span>'; |
||
| 211 | } |
||
| 212 | |||
| 213 | return $info; |
||
| 214 | } |
||
| 215 | |||
| 216 | /** |
||
| 217 | * @param \XoopsUser $user |
||
| 218 | * @return mixed |
||
| 219 | */ |
||
| 220 | public function getInfo($user) |
||
| 221 | { |
||
| 222 | global $myts; |
||
| 223 | static $name_anonymous; |
||
| 224 | |||
| 225 | if (!\is_object($user) || !$user->isActive()) { |
||
| 226 | if (null === $name_anonymous) { |
||
| 227 | $name_anonymous = $myts->htmlSpecialChars($GLOBALS['xoopsConfig']['anonymous']); |
||
| 228 | } |
||
| 229 | |||
| 230 | return ['name' => $name_anonymous, 'link' => $name_anonymous]; |
||
| 231 | } |
||
| 232 | |||
| 233 | $this->user = $user; |
||
| 234 | |||
| 235 | $userinfo['uid'] = $user->getVar('uid'); |
||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Loading history...
|
|||
| 236 | |||
| 237 | $name = empty($GLOBALS['xoopsModuleConfig']['show_realname']) ? $user->getVar('uname') : $user->getVar('name'); |
||
| 238 | $userinfo['name'] = $name ?: $user->getVar('uname'); |
||
| 239 | |||
| 240 | $userinfo['link'] = '<a href=\'' . XOOPS_URL . '/userinfo.php?uid=' . $user->getVar('uid') . '\'>' . $userinfo['name'] . '</a>'; |
||
| 241 | |||
| 242 | $userinfo['avatar'] = $user->getVar('user_avatar'); |
||
| 243 | // START hacked by irmtfan - easier rank getting - consistency with previous version back rank.title and rank.image |
||
| 244 | $userrank = $user->rank(); |
||
| 245 | $userinfo['rank'] = []; |
||
| 246 | if (isset($userrank['image']) && $userrank['image']) { |
||
| 247 | $userinfo['rank']['image'] = $userrank['image']; |
||
| 248 | $userinfo['rank']['title'] = $userrank['title']; |
||
| 249 | } |
||
| 250 | // END hacked by irmtfan - easier rank getting - a little correctness dot removed |
||
| 251 | // START hacked by irmtfan - easier groups getting - can we use $_SESSION['xoopsUserGroups']??? |
||
| 252 | //checks for user's groups |
||
| 253 | $userinfo['groups'] = []; |
||
| 254 | /** @var \XoopsMemberHandler $memberHandler */ |
||
| 255 | $memberHandler = \xoops_getHandler('member'); |
||
| 256 | $usergroups = $memberHandler->getGroupsByUser($userinfo['uid'], true); |
||
| 257 | foreach ($usergroups as $group) { |
||
| 258 | $userinfo['groups'][] = $group->getVar('name'); |
||
| 259 | } |
||
| 260 | // END hacked by irmtfan - easier groups getting - can we use $_SESSION['xoopsUserGroups']??? |
||
| 261 | $userinfo['from'] = $user->getVar('user_from'); |
||
| 262 | |||
| 263 | require_once \dirname(__DIR__) . '/include/functions.time.php'; |
||
| 264 | $userinfo['regdate'] = \newbbFormatTimestamp($user->getVar('user_regdate'), 'reg'); |
||
| 265 | $userinfo['last_login'] = \newbbFormatTimestamp($user->getVar('last_login')); // irmtfan add last_login |
||
| 266 | |||
| 267 | $userinfo['posts'] = $user->getVar('posts'); |
||
| 268 | |||
| 269 | if (!empty($GLOBALS['xoopsModuleConfig']['user_level'])) { |
||
| 270 | $userinfo['level'] = $this->getLevel(); |
||
| 271 | } |
||
| 272 | |||
| 273 | if (!empty($GLOBALS['xoopsModuleConfig']['userbar_enabled'])) { |
||
| 274 | $userinfo['userbar'] = $this->getUserbar(); |
||
| 275 | } |
||
| 276 | |||
| 277 | $userinfo['signature'] = $user->getVar('user_sig'); |
||
| 278 | |||
| 279 | return $userinfo; |
||
| 280 | } |
||
| 281 | } |
||
| 282 |