@@ -16,8 +16,9 @@ discard block |
||
| 16 | 16 | * @version 2.1 Beta 3 |
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | -if (!defined('SMF')) |
|
| 19 | +if (!defined('SMF')) { |
|
| 20 | 20 | die('No direct access...'); |
| 21 | +} |
|
| 21 | 22 | |
| 22 | 23 | |
| 23 | 24 | /** |
@@ -28,14 +29,16 @@ discard block |
||
| 28 | 29 | function sha1_smf($str) |
| 29 | 30 | { |
| 30 | 31 | // If we have mhash loaded in, use it instead! |
| 31 | - if (function_exists('mhash') && defined('MHASH_SHA1')) |
|
| 32 | - return bin2hex(mhash(MHASH_SHA1, $str)); |
|
| 32 | + if (function_exists('mhash') && defined('MHASH_SHA1')) { |
|
| 33 | + return bin2hex(mhash(MHASH_SHA1, $str)); |
|
| 34 | + } |
|
| 33 | 35 | |
| 34 | 36 | $nblk = (strlen($str) + 8 >> 6) + 1; |
| 35 | 37 | $blks = array_pad(array(), $nblk * 16, 0); |
| 36 | 38 | |
| 37 | - for ($i = 0; $i < strlen($str); $i++) |
|
| 38 | - $blks[$i >> 2] |= ord($str{$i}) << (24 - ($i % 4) * 8); |
|
| 39 | + for ($i = 0; $i < strlen($str); $i++) { |
|
| 40 | + $blks[$i >> 2] |= ord($str{$i}) << (24 - ($i % 4) * 8); |
|
| 41 | + } |
|
| 39 | 42 | |
| 40 | 43 | $blks[$i >> 2] |= 0x80 << (24 - ($i % 4) * 8); |
| 41 | 44 | |
@@ -70,10 +73,11 @@ discard block |
||
| 70 | 73 | |
| 71 | 74 | for ($j = 0; $j < 80; $j++) |
| 72 | 75 | { |
| 73 | - if ($j < 16) |
|
| 74 | - $w[$j] = isset($x[$i + $j]) ? $x[$i + $j] : 0; |
|
| 75 | - else |
|
| 76 | - $w[$j] = sha1_rol($w[$j - 3] ^ $w[$j - 8] ^ $w[$j - 14] ^ $w[$j - 16], 1); |
|
| 76 | + if ($j < 16) { |
|
| 77 | + $w[$j] = isset($x[$i + $j]) ? $x[$i + $j] : 0; |
|
| 78 | + } else { |
|
| 79 | + $w[$j] = sha1_rol($w[$j - 3] ^ $w[$j - 8] ^ $w[$j - 14] ^ $w[$j - 16], 1); |
|
| 80 | + } |
|
| 77 | 81 | |
| 78 | 82 | $t = sha1_rol($a, 5) + sha1_ft($j, $b, $c, $d) + $e + $w[$j] + sha1_kt($j); |
| 79 | 83 | $e = $d; |
@@ -103,12 +107,15 @@ discard block |
||
| 103 | 107 | */ |
| 104 | 108 | function sha1_ft($t, $b, $c, $d) |
| 105 | 109 | { |
| 106 | - if ($t < 20) |
|
| 107 | - return ($b & $c) | ((~$b) & $d); |
|
| 108 | - if ($t < 40) |
|
| 109 | - return $b ^ $c ^ $d; |
|
| 110 | - if ($t < 60) |
|
| 111 | - return ($b & $c) | ($b & $d) | ($c & $d); |
|
| 110 | + if ($t < 20) { |
|
| 111 | + return ($b & $c) | ((~$b) & $d); |
|
| 112 | + } |
|
| 113 | + if ($t < 40) { |
|
| 114 | + return $b ^ $c ^ $d; |
|
| 115 | + } |
|
| 116 | + if ($t < 60) { |
|
| 117 | + return ($b & $c) | ($b & $d) | ($c & $d); |
|
| 118 | + } |
|
| 112 | 119 | |
| 113 | 120 | return $b ^ $c ^ $d; |
| 114 | 121 | } |
@@ -132,10 +139,11 @@ discard block |
||
| 132 | 139 | function sha1_rol($num, $cnt) |
| 133 | 140 | { |
| 134 | 141 | // Unfortunately, PHP uses unsigned 32-bit longs only. So we have to kludge it a bit. |
| 135 | - if ($num & 0x80000000) |
|
| 136 | - $a = ($num >> 1 & 0x7fffffff) >> (31 - $cnt); |
|
| 137 | - else |
|
| 138 | - $a = $num >> (32 - $cnt); |
|
| 142 | + if ($num & 0x80000000) { |
|
| 143 | + $a = ($num >> 1 & 0x7fffffff) >> (31 - $cnt); |
|
| 144 | + } else { |
|
| 145 | + $a = $num >> (32 - $cnt); |
|
| 146 | + } |
|
| 139 | 147 | |
| 140 | 148 | return ($num << $cnt) | $a; |
| 141 | 149 | } |
@@ -22,22 +22,24 @@ discard block |
||
| 22 | 22 | <script>'; |
| 23 | 23 | |
| 24 | 24 | // When using Go Back due to fatal_error, allow the form to be re-submitted with changes. |
| 25 | - if (isBrowser('is_firefox')) |
|
| 26 | - echo ' |
|
| 25 | + if (isBrowser('is_firefox')) { |
|
| 26 | + echo ' |
|
| 27 | 27 | window.addEventListener("pageshow", reActivate, false);'; |
| 28 | + } |
|
| 28 | 29 | |
| 29 | 30 | // Start with message icons - and any missing from this theme. |
| 30 | 31 | echo ' |
| 31 | 32 | var icon_urls = {'; |
| 32 | - foreach ($context['icons'] as $icon) |
|
| 33 | - echo ' |
|
| 33 | + foreach ($context['icons'] as $icon) { |
|
| 34 | + echo ' |
|
| 34 | 35 | \'', $icon['value'], '\': \'', $icon['url'], '\'', $icon['is_last'] ? '' : ','; |
| 36 | + } |
|
| 35 | 37 | echo ' |
| 36 | 38 | };'; |
| 37 | 39 | |
| 38 | 40 | // If this is a poll - use some javascript to ensure the user doesn't create a poll with illegal option combinations. |
| 39 | - if ($context['make_poll']) |
|
| 40 | - echo ' |
|
| 41 | + if ($context['make_poll']) { |
|
| 42 | + echo ' |
|
| 41 | 43 | var pollOptionNum = 0, pollTabIndex; |
| 42 | 44 | var pollOptionId = ', $context['last_choice_id'], '; |
| 43 | 45 | function addPollOption() |
@@ -56,11 +58,13 @@ discard block |
||
| 56 | 58 | |
| 57 | 59 | setOuterHTML(document.getElementById(\'pollMoreOptions\'), ', JavaScriptEscape('<dt><label for="options-'), ' + pollOptionId + ', JavaScriptEscape('">' . $txt['option'] . ' '), ' + pollOptionNum + ', JavaScriptEscape('</label>:</dt><dd><input type="text" name="options['), ' + pollOptionId + ', JavaScriptEscape(']" id="options-'), ' + pollOptionId + ', JavaScriptEscape('" value="" size="80" maxlength="255" tabindex="'), ' + pollTabIndex + ', JavaScriptEscape('" class="input_text"></dd><p id="pollMoreOptions"></p>'), '); |
| 58 | 60 | }'; |
| 61 | + } |
|
| 59 | 62 | |
| 60 | 63 | // If we are making a calendar event we want to ensure we show the current days in a month etc... this is done here. |
| 61 | - if ($context['make_event']) |
|
| 62 | - echo ' |
|
| 64 | + if ($context['make_event']) { |
|
| 65 | + echo ' |
|
| 63 | 66 | var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];'; |
| 67 | + } |
|
| 64 | 68 | |
| 65 | 69 | // End of the javascript, start the form and display the link tree. |
| 66 | 70 | echo ' |
@@ -80,9 +84,10 @@ discard block |
||
| 80 | 84 | </div> |
| 81 | 85 | </div><br>'; |
| 82 | 86 | |
| 83 | - if ($context['make_event'] && (!$context['event']['new'] || !empty($context['current_board']))) |
|
| 84 | - echo ' |
|
| 87 | + if ($context['make_event'] && (!$context['event']['new'] || !empty($context['current_board']))) { |
|
| 88 | + echo ' |
|
| 85 | 89 | <input type="hidden" name="eventid" value="', $context['event']['id'], '">'; |
| 90 | + } |
|
| 86 | 91 | |
| 87 | 92 | // Start the main table. |
| 88 | 93 | echo ' |
@@ -117,26 +122,28 @@ discard block |
||
| 117 | 122 | } |
| 118 | 123 | |
| 119 | 124 | // If it's locked, show a message to warn the replier. |
| 120 | - if (!empty($context['locked'])) |
|
| 121 | - echo ' |
|
| 125 | + if (!empty($context['locked'])) { |
|
| 126 | + echo ' |
|
| 122 | 127 | <p class="errorbox"> |
| 123 | 128 | ', $txt['topic_locked_no_reply'], ' |
| 124 | 129 | </p>'; |
| 130 | + } |
|
| 125 | 131 | |
| 126 | - if (!empty($modSettings['drafts_post_enabled'])) |
|
| 127 | - echo ' |
|
| 132 | + if (!empty($modSettings['drafts_post_enabled'])) { |
|
| 133 | + echo ' |
|
| 128 | 134 | <div id="draft_section" class="infobox"', isset($context['draft_saved']) ? '' : ' style="display: none;"', '>', |
| 129 | 135 | sprintf($txt['draft_saved'], $scripturl . '?action=profile;u=' . $context['user']['id'] . ';area=showdrafts'), ' |
| 130 | 136 | ', (!empty($modSettings['drafts_keep_days']) ? ' <strong>' . sprintf($txt['draft_save_warning'], $modSettings['drafts_keep_days']) . '</strong>' : ''), ' |
| 131 | 137 | </div>'; |
| 138 | + } |
|
| 132 | 139 | |
| 133 | 140 | // The post header... important stuff |
| 134 | 141 | echo ' |
| 135 | 142 | <dl id="post_header">'; |
| 136 | 143 | |
| 137 | 144 | // Custom posting fields. |
| 138 | - if (!empty($context['posting_fields']) && is_array($context['posting_fields'])) |
|
| 139 | - foreach ($context['posting_fields'] as $pf) |
|
| 145 | + if (!empty($context['posting_fields']) && is_array($context['posting_fields'])) { |
|
| 146 | + foreach ($context['posting_fields'] as $pf) |
|
| 140 | 147 | echo ' |
| 141 | 148 | <dt> |
| 142 | 149 | ', $pf['dt'] ,' |
@@ -144,6 +151,7 @@ discard block |
||
| 144 | 151 | <dd> |
| 145 | 152 | ', $pf['dd'] ,' |
| 146 | 153 | </dd>'; |
| 154 | + } |
|
| 147 | 155 | |
| 148 | 156 | |
| 149 | 157 | // Guests have to put in their name and email... |
@@ -157,14 +165,15 @@ discard block |
||
| 157 | 165 | <input type="text" name="guestname" size="25" value="', $context['name'], '" tabindex="', $context['tabindex']++, '" class="input_text"> |
| 158 | 166 | </dd>'; |
| 159 | 167 | |
| 160 | - if (empty($modSettings['guest_post_no_email'])) |
|
| 161 | - echo ' |
|
| 168 | + if (empty($modSettings['guest_post_no_email'])) { |
|
| 169 | + echo ' |
|
| 162 | 170 | <dt> |
| 163 | 171 | <span', isset($context['post_error']['no_email']) || isset($context['post_error']['bad_email']) ? ' class="error"' : '', ' id="caption_email">', $txt['email'], ':</span> |
| 164 | 172 | </dt> |
| 165 | 173 | <dd> |
| 166 | 174 | <input type="email" name="email" size="25" value="', $context['email'], '" tabindex="', $context['tabindex']++, '" class="input_text" required> |
| 167 | 175 | </dd>'; |
| 176 | + } |
|
| 168 | 177 | } |
| 169 | 178 | |
| 170 | 179 | // Now show the subject box for this post. |
@@ -182,9 +191,10 @@ discard block |
||
| 182 | 191 | <select name="icon" id="icon" onchange="showimage()">'; |
| 183 | 192 | |
| 184 | 193 | // Loop through each message icon allowed, adding it to the drop down list. |
| 185 | - foreach ($context['icons'] as $icon) |
|
| 186 | - echo ' |
|
| 194 | + foreach ($context['icons'] as $icon) { |
|
| 195 | + echo ' |
|
| 187 | 196 | <option value="', $icon['value'], '"', $icon['value'] == $context['icon'] ? ' selected' : '', '>', $icon['name'], '</option>'; |
| 197 | + } |
|
| 188 | 198 | |
| 189 | 199 | echo ' |
| 190 | 200 | </select> |
@@ -219,9 +229,10 @@ discard block |
||
| 219 | 229 | { |
| 220 | 230 | echo ' |
| 221 | 231 | <optgroup label="', $category['name'], '">'; |
| 222 | - foreach ($category['boards'] as $board) |
|
| 223 | - echo ' |
|
| 232 | + foreach ($category['boards'] as $board) { |
|
| 233 | + echo ' |
|
| 224 | 234 | <option value="', $board['id'], '"', $board['selected'] ? ' selected' : '', '>', $board['child_level'] > 0 ? str_repeat('==', $board['child_level'] - 1) . '=>' : '', ' ', $board['name'], ' </option>'; |
| 235 | + } |
|
| 225 | 236 | echo ' |
| 226 | 237 | </optgroup>'; |
| 227 | 238 | } |
@@ -257,9 +268,10 @@ discard block |
||
| 257 | 268 | <span class="label">', $txt['calendar_timezone'], '</span> |
| 258 | 269 | <select name="tz" id="tz"', !empty($context['event']['allday']) ? ' disabled' : '', '>'; |
| 259 | 270 | |
| 260 | - foreach ($context['all_timezones'] as $tz => $tzname) |
|
| 261 | - echo ' |
|
| 271 | + foreach ($context['all_timezones'] as $tz => $tzname) { |
|
| 272 | + echo ' |
|
| 262 | 273 | <option value="', $tz, '"', $tz == $context['event']['tz'] ? ' selected' : '', '>', $tzname, '</option>'; |
| 274 | + } |
|
| 263 | 275 | |
| 264 | 276 | echo ' |
| 265 | 277 | </select> |
@@ -325,14 +337,15 @@ discard block |
||
| 325 | 337 | <input type="checkbox" id="poll_change_vote" name="poll_change_vote"', !empty($context['poll']['change_vote']) ? ' checked' : '', ' class="input_check"> |
| 326 | 338 | </dd>'; |
| 327 | 339 | |
| 328 | - if ($context['poll_options']['guest_vote_enabled']) |
|
| 329 | - echo ' |
|
| 340 | + if ($context['poll_options']['guest_vote_enabled']) { |
|
| 341 | + echo ' |
|
| 330 | 342 | <dt> |
| 331 | 343 | <label for="poll_guest_vote">', $txt['poll_guest_vote'], ':</label> |
| 332 | 344 | </dt> |
| 333 | 345 | <dd> |
| 334 | 346 | <input type="checkbox" id="poll_guest_vote" name="poll_guest_vote"', !empty($context['poll_options']['guest_vote']) ? ' checked' : '', ' class="input_check"> |
| 335 | 347 | </dd>'; |
| 348 | + } |
|
| 336 | 349 | |
| 337 | 350 | echo ' |
| 338 | 351 | <dt> |
@@ -353,8 +366,8 @@ discard block |
||
| 353 | 366 | ', template_control_richedit($context['post_box_name'], 'smileyBox_message', 'bbcBox_message'); |
| 354 | 367 | |
| 355 | 368 | // If we're editing and displaying edit details, show a box where they can say why |
| 356 | - if (isset($context['editing']) && $modSettings['show_modify']) |
|
| 357 | - echo ' |
|
| 369 | + if (isset($context['editing']) && $modSettings['show_modify']) { |
|
| 370 | + echo ' |
|
| 358 | 371 | <dl> |
| 359 | 372 | <dt class="clear"> |
| 360 | 373 | <span id="caption_edit_reason">', $txt['reason_for_edit'], ':</span> |
@@ -363,20 +376,23 @@ discard block |
||
| 363 | 376 | <input type="text" name="modify_reason"', isset($context['last_modified_reason']) ? ' value="' . $context['last_modified_reason'] . '"' : '', ' tabindex="', $context['tabindex']++, '" size="80" maxlength="80" class="input_text"> |
| 364 | 377 | </dd> |
| 365 | 378 | </dl>'; |
| 379 | + } |
|
| 366 | 380 | |
| 367 | 381 | // If this message has been edited in the past - display when it was. |
| 368 | - if (isset($context['last_modified'])) |
|
| 369 | - echo ' |
|
| 382 | + if (isset($context['last_modified'])) { |
|
| 383 | + echo ' |
|
| 370 | 384 | <div class="padding smalltext"> |
| 371 | 385 | ', $context['last_modified_text'], ' |
| 372 | 386 | </div>'; |
| 387 | + } |
|
| 373 | 388 | |
| 374 | 389 | // If the admin has enabled the hiding of the additional options - show a link and image for it. |
| 375 | - if (!empty($modSettings['additional_options_collapsable'])) |
|
| 376 | - echo ' |
|
| 390 | + if (!empty($modSettings['additional_options_collapsable'])) { |
|
| 391 | + echo ' |
|
| 377 | 392 | <div id="postAdditionalOptionsHeader"> |
| 378 | 393 | <strong><a href="#" id="postMoreExpandLink"> ', $context['can_post_attachment'] ? $txt['post_additionalopt_attach'] : $txt['post_additionalopt'], '</a></strong> |
| 379 | 394 | </div>'; |
| 395 | + } |
|
| 380 | 396 | |
| 381 | 397 | echo ' |
| 382 | 398 | <div id="postAdditionalOptions">'; |
@@ -408,19 +424,21 @@ discard block |
||
| 408 | 424 | <input type="hidden" name="attach_del[]" value="0"> |
| 409 | 425 | ', $txt['uncheck_unwatchd_attach'], ': |
| 410 | 426 | </dd>'; |
| 411 | - foreach ($context['current_attachments'] as $attachment) |
|
| 412 | - echo ' |
|
| 427 | + foreach ($context['current_attachments'] as $attachment) { |
|
| 428 | + echo ' |
|
| 413 | 429 | <dd class="smalltext"> |
| 414 | 430 | <label for="attachment_', $attachment['attachID'], '"><input type="checkbox" id="attachment_', $attachment['attachID'], '" name="attach_del[]" value="', $attachment['attachID'], '"', empty($attachment['unchecked']) ? ' checked' : '', ' class="input_check"> ', $attachment['name'], (empty($attachment['approved']) ? ' (' . $txt['awaiting_approval'] . ')' : ''), |
| 415 | 431 | !empty($modSettings['attachmentPostLimit']) || !empty($modSettings['attachmentSizeLimit']) ? sprintf($txt['attach_kb'], comma_format(round(max($attachment['size'], 1028) / 1028), 0)) : '', '</label> |
| 416 | 432 | </dd>'; |
| 433 | + } |
|
| 417 | 434 | |
| 418 | 435 | echo ' |
| 419 | 436 | </dl>'; |
| 420 | 437 | |
| 421 | - if (!empty($context['files_in_session_warning'])) |
|
| 422 | - echo ' |
|
| 438 | + if (!empty($context['files_in_session_warning'])) { |
|
| 439 | + echo ' |
|
| 423 | 440 | <div class="smalltext">', $context['files_in_session_warning'], '</div>'; |
| 441 | + } |
|
| 424 | 442 | } |
| 425 | 443 | |
| 426 | 444 | // Is the user allowed to post any additional ones? If so give them the boxes to do it! |
@@ -473,8 +491,8 @@ discard block |
||
| 473 | 491 | ', empty($modSettings['attachmentSizeLimit']) ? '' : ('<input type="hidden" name="MAX_FILE_SIZE" value="' . $modSettings['attachmentSizeLimit'] * 1028 . '">'); |
| 474 | 492 | |
| 475 | 493 | // Show more boxes if they aren't approaching that limit. |
| 476 | - if ($context['num_allowed_attachments'] > 1) |
|
| 477 | - echo ' |
|
| 494 | + if ($context['num_allowed_attachments'] > 1) { |
|
| 495 | + echo ' |
|
| 478 | 496 | <script> |
| 479 | 497 | var allowed_attachments = ', $context['num_allowed_attachments'], '; |
| 480 | 498 | var current_attachment = 1; |
@@ -495,9 +513,10 @@ discard block |
||
| 495 | 513 | </div> |
| 496 | 514 | </div> |
| 497 | 515 | </dd>'; |
| 498 | - else |
|
| 499 | - echo ' |
|
| 516 | + } else { |
|
| 517 | + echo ' |
|
| 500 | 518 | </dd>'; |
| 519 | + } |
|
| 501 | 520 | |
| 502 | 521 | // Add any template changes for an alternative upload system here. |
| 503 | 522 | call_integration_hook('integrate_upload_template'); |
@@ -506,21 +525,25 @@ discard block |
||
| 506 | 525 | <dd class="smalltext">'; |
| 507 | 526 | |
| 508 | 527 | // Show some useful information such as allowed extensions, maximum size and amount of attachments allowed. |
| 509 | - if (!empty($modSettings['attachmentCheckExtensions'])) |
|
| 510 | - echo ' |
|
| 528 | + if (!empty($modSettings['attachmentCheckExtensions'])) { |
|
| 529 | + echo ' |
|
| 511 | 530 | ', $txt['allowed_types'], ': ', $context['allowed_extensions'], '<br>'; |
| 531 | + } |
|
| 512 | 532 | |
| 513 | - if (!empty($context['attachment_restrictions'])) |
|
| 514 | - echo ' |
|
| 533 | + if (!empty($context['attachment_restrictions'])) { |
|
| 534 | + echo ' |
|
| 515 | 535 | ', $txt['attach_restrictions'], ' ', implode(', ', $context['attachment_restrictions']), '<br>'; |
| 536 | + } |
|
| 516 | 537 | |
| 517 | - if ($context['num_allowed_attachments'] == 0) |
|
| 518 | - echo ' |
|
| 538 | + if ($context['num_allowed_attachments'] == 0) { |
|
| 539 | + echo ' |
|
| 519 | 540 | ', $txt['attach_limit_nag'], '<br>'; |
| 541 | + } |
|
| 520 | 542 | |
| 521 | - if (!$context['can_post_attachment_unapproved']) |
|
| 522 | - echo ' |
|
| 543 | + if (!$context['can_post_attachment_unapproved']) { |
|
| 544 | + echo ' |
|
| 523 | 545 | <span class="alert">', $txt['attachment_requires_approval'], '</span>', '<br>'; |
| 546 | + } |
|
| 524 | 547 | |
| 525 | 548 | echo ' |
| 526 | 549 | </dd> |
@@ -543,10 +566,11 @@ discard block |
||
| 543 | 566 | <dt><strong>', $txt['subject'], '</strong></dt> |
| 544 | 567 | <dd><strong>', $txt['draft_saved_on'], '</strong></dd>'; |
| 545 | 568 | |
| 546 | - foreach ($context['drafts'] as $draft) |
|
| 547 | - echo ' |
|
| 569 | + foreach ($context['drafts'] as $draft) { |
|
| 570 | + echo ' |
|
| 548 | 571 | <dt>', $draft['link'], '</dt> |
| 549 | 572 | <dd>', $draft['poster_time'], '</dd>'; |
| 573 | + } |
|
| 550 | 574 | echo ' |
| 551 | 575 | </dl> |
| 552 | 576 | </div>'; |
@@ -571,9 +595,10 @@ discard block |
||
| 571 | 595 | ', template_control_richedit_buttons($context['post_box_name']); |
| 572 | 596 | |
| 573 | 597 | // Option to delete an event if user is editing one. |
| 574 | - if ($context['make_event'] && !$context['event']['new']) |
|
| 575 | - echo ' |
|
| 598 | + if ($context['make_event'] && !$context['event']['new']) { |
|
| 599 | + echo ' |
|
| 576 | 600 | <input type="submit" name="deleteevent" value="', $txt['event_delete'], '" data-confirm="', $txt['event_delete_confirm'] ,'" class="button_submit you_sure">'; |
| 601 | + } |
|
| 577 | 602 | |
| 578 | 603 | echo ' |
| 579 | 604 | </span> |
@@ -582,9 +607,10 @@ discard block |
||
| 582 | 607 | <br class="clear">'; |
| 583 | 608 | |
| 584 | 609 | // Assuming this isn't a new topic pass across the last message id. |
| 585 | - if (isset($context['topic_last_message'])) |
|
| 586 | - echo ' |
|
| 610 | + if (isset($context['topic_last_message'])) { |
|
| 611 | + echo ' |
|
| 587 | 612 | <input type="hidden" name="last_msg" value="', $context['topic_last_message'], '">'; |
| 613 | + } |
|
| 588 | 614 | |
| 589 | 615 | echo ' |
| 590 | 616 | <input type="hidden" name="additional_options" id="additional_options" value="', $context['show_additional_options'] ? '1' : '0', '"> |
@@ -726,9 +752,10 @@ discard block |
||
| 726 | 752 | |
| 727 | 753 | newPostsHTML += \'<div class="windowbg\' + (++reply_counter % 2 == 0 ? \'2\' : \'\') + \'"><div id="msg\' + newPosts[i].getAttribute("id") + \'"><div class="floatleft"><h5>', $txt['posted_by'], ': \' + newPosts[i].getElementsByTagName("poster")[0].firstChild.nodeValue + \'</h5><span class="smalltext">« <strong>', $txt['on'], ':</strong> \' + newPosts[i].getElementsByTagName("time")[0].firstChild.nodeValue + \' »</span> <span class="new_posts" id="image_new_\' + newPosts[i].getAttribute("id") + \'">', $txt['new'], '</span></div>\';'; |
| 728 | 754 | |
| 729 | - if ($context['can_quote']) |
|
| 730 | - echo ' |
|
| 755 | + if ($context['can_quote']) { |
|
| 756 | + echo ' |
|
| 731 | 757 | newPostsHTML += \'<ul class="quickbuttons" id="msg_\' + newPosts[i].getAttribute("id") + \'_quote"><li><a href="#postmodify" onclick="return insertQuoteFast(\\\'\' + newPosts[i].getAttribute("id") + \'\\\');" class="quote_button"><span>', $txt['quote'], '</span><\' + \'/a></li></ul>\';'; |
| 758 | + } |
|
| 732 | 759 | |
| 733 | 760 | echo ' |
| 734 | 761 | newPostsHTML += \'<br class="clear">\'; |
@@ -771,8 +798,8 @@ discard block |
||
| 771 | 798 | }'; |
| 772 | 799 | |
| 773 | 800 | // Code for showing and hiding additional options. |
| 774 | - if (!empty($modSettings['additional_options_collapsable'])) |
|
| 775 | - echo ' |
|
| 801 | + if (!empty($modSettings['additional_options_collapsable'])) { |
|
| 802 | + echo ' |
|
| 776 | 803 | var oSwapAdditionalOptions = new smc_Toggle({ |
| 777 | 804 | bToggleEnabled: true, |
| 778 | 805 | bCurrentlyCollapsed: ', $context['show_additional_options'] ? 'false' : 'true', ', |
@@ -800,10 +827,11 @@ discard block |
||
| 800 | 827 | } |
| 801 | 828 | ] |
| 802 | 829 | });'; |
| 830 | + } |
|
| 803 | 831 | |
| 804 | 832 | // Code for showing and hiding drafts |
| 805 | - if (!empty($context['drafts'])) |
|
| 806 | - echo ' |
|
| 833 | + if (!empty($context['drafts'])) { |
|
| 834 | + echo ' |
|
| 807 | 835 | var oSwapDraftOptions = new smc_Toggle({ |
| 808 | 836 | bToggleEnabled: true, |
| 809 | 837 | bCurrentlyCollapsed: true, |
@@ -825,6 +853,7 @@ discard block |
||
| 825 | 853 | } |
| 826 | 854 | ] |
| 827 | 855 | });'; |
| 856 | + } |
|
| 828 | 857 | |
| 829 | 858 | echo ' |
| 830 | 859 | var oEditorID = "', $context['post_box_name'] ,'"; |
@@ -845,8 +874,9 @@ discard block |
||
| 845 | 874 | foreach ($context['previous_posts'] as $post) |
| 846 | 875 | { |
| 847 | 876 | $ignoring = false; |
| 848 | - if (!empty($post['is_ignored'])) |
|
| 849 | - $ignored_posts[] = $ignoring = $post['id']; |
|
| 877 | + if (!empty($post['is_ignored'])) { |
|
| 878 | + $ignored_posts[] = $ignoring = $post['id']; |
|
| 879 | + } |
|
| 850 | 880 | |
| 851 | 881 | echo ' |
| 852 | 882 | <div class="windowbg"> |
@@ -1029,10 +1059,10 @@ discard block |
||
| 1029 | 1059 | <div id="temporary_posting_area" style="display: none;"></div> |
| 1030 | 1060 | <script>'; |
| 1031 | 1061 | |
| 1032 | - if ($context['close_window']) |
|
| 1033 | - echo ' |
|
| 1062 | + if ($context['close_window']) { |
|
| 1063 | + echo ' |
|
| 1034 | 1064 | window.close();'; |
| 1035 | - else |
|
| 1065 | + } else |
|
| 1036 | 1066 | { |
| 1037 | 1067 | // Lucky for us, Internet Explorer has an "innerText" feature which basically converts entities <--> text. Use it if possible ;). |
| 1038 | 1068 | echo ' |
@@ -1086,11 +1116,12 @@ discard block |
||
| 1086 | 1116 | </p> |
| 1087 | 1117 | <ul>'; |
| 1088 | 1118 | |
| 1089 | - foreach ($context['groups'] as $group) |
|
| 1090 | - echo ' |
|
| 1119 | + foreach ($context['groups'] as $group) { |
|
| 1120 | + echo ' |
|
| 1091 | 1121 | <li> |
| 1092 | 1122 | <label for="who_', $group['id'], '"><input type="checkbox" name="who[', $group['id'], ']" id="who_', $group['id'], '" value="', $group['id'], '" checked class="input_check"> ', $group['name'], '</label> <em>(', $group['member_count'], ')</em> |
| 1093 | 1123 | </li>'; |
| 1124 | + } |
|
| 1094 | 1125 | |
| 1095 | 1126 | echo ' |
| 1096 | 1127 | <li> |
@@ -25,8 +25,9 @@ discard block |
||
| 25 | 25 | |
| 26 | 26 | // Get everything started up... |
| 27 | 27 | define('SMF', 1); |
| 28 | -if (function_exists('set_magic_quotes_runtime') && strnatcmp(phpversion(), '5.3.0') < 0) |
|
| 28 | +if (function_exists('set_magic_quotes_runtime') && strnatcmp(phpversion(), '5.3.0') < 0) { |
|
| 29 | 29 | @set_magic_quotes_runtime(0); |
| 30 | +} |
|
| 30 | 31 | error_reporting(defined('E_STRICT') ? E_ALL | E_STRICT : E_ALL); |
| 31 | 32 | $time_start = microtime(); |
| 32 | 33 | |
@@ -34,16 +35,18 @@ discard block |
||
| 34 | 35 | ob_start(); |
| 35 | 36 | |
| 36 | 37 | // Do some cleaning, just in case. |
| 37 | -foreach (array('db_character_set', 'cachedir') as $variable) |
|
| 38 | +foreach (array('db_character_set', 'cachedir') as $variable) { |
|
| 38 | 39 | if (isset($GLOBALS[$variable])) |
| 39 | 40 | unset($GLOBALS[$variable], $GLOBALS[$variable]); |
| 41 | +} |
|
| 40 | 42 | |
| 41 | 43 | // Load the settings... |
| 42 | 44 | require_once(dirname(__FILE__) . '/Settings.php'); |
| 43 | 45 | |
| 44 | 46 | // Make absolutely sure the cache directory is defined. |
| 45 | -if ((empty($cachedir) || !file_exists($cachedir)) && file_exists($boarddir . '/cache')) |
|
| 47 | +if ((empty($cachedir) || !file_exists($cachedir)) && file_exists($boarddir . '/cache')) { |
|
| 46 | 48 | $cachedir = $boarddir . '/cache'; |
| 49 | +} |
|
| 47 | 50 | |
| 48 | 51 | // Without those we can't go anywhere |
| 49 | 52 | require_once($sourcedir . '/QueryString.php'); |
@@ -53,8 +56,9 @@ discard block |
||
| 53 | 56 | require_once($sourcedir . '/Load.php'); |
| 54 | 57 | |
| 55 | 58 | // If $maintenance is set specifically to 2, then we're upgrading or something. |
| 56 | -if (!empty($maintenance) && $maintenance == 2) |
|
| 59 | +if (!empty($maintenance) && $maintenance == 2) { |
|
| 57 | 60 | display_maintenance_message(); |
| 61 | +} |
|
| 58 | 62 | |
| 59 | 63 | // Create a variable to store some SMF specific functions in. |
| 60 | 64 | $smcFunc = array(); |
@@ -69,8 +73,9 @@ discard block |
||
| 69 | 73 | cleanRequest(); |
| 70 | 74 | |
| 71 | 75 | // Seed the random generator. |
| 72 | -if (empty($modSettings['rand_seed']) || mt_rand(1, 250) == 69) |
|
| 76 | +if (empty($modSettings['rand_seed']) || mt_rand(1, 250) == 69) { |
|
| 73 | 77 | smf_seed_generator(); |
| 78 | +} |
|
| 74 | 79 | |
| 75 | 80 | // Before we get carried away, are we doing a scheduled task? If so save CPU cycles by jumping out! |
| 76 | 81 | if (isset($_GET['scheduled'])) |
@@ -90,9 +95,9 @@ discard block |
||
| 90 | 95 | if (!empty($modSettings['enableCompressedOutput']) && !headers_sent()) |
| 91 | 96 | { |
| 92 | 97 | // If zlib is being used, turn off output compression. |
| 93 | - if (ini_get('zlib.output_compression') >= 1 || ini_get('output_handler') == 'ob_gzhandler') |
|
| 94 | - $modSettings['enableCompressedOutput'] = '0'; |
|
| 95 | - else |
|
| 98 | + if (ini_get('zlib.output_compression') >= 1 || ini_get('output_handler') == 'ob_gzhandler') { |
|
| 99 | + $modSettings['enableCompressedOutput'] = '0'; |
|
| 100 | + } else |
|
| 96 | 101 | { |
| 97 | 102 | ob_end_clean(); |
| 98 | 103 | ob_start('ob_gzhandler'); |
@@ -141,18 +146,21 @@ discard block |
||
| 141 | 146 | loadPermissions(); |
| 142 | 147 | |
| 143 | 148 | // Attachments don't require the entire theme to be loaded. |
| 144 | - if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'dlattach') |
|
| 145 | - detectBrowser(); |
|
| 149 | + if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'dlattach') { |
|
| 150 | + detectBrowser(); |
|
| 151 | + } |
|
| 146 | 152 | // Load the current theme. (note that ?theme=1 will also work, may be used for guest theming.) |
| 147 | - else |
|
| 148 | - loadTheme(); |
|
| 153 | + else { |
|
| 154 | + loadTheme(); |
|
| 155 | + } |
|
| 149 | 156 | |
| 150 | 157 | // Check if the user should be disallowed access. |
| 151 | 158 | is_not_banned(); |
| 152 | 159 | |
| 153 | 160 | // If we are in a topic and don't have permission to approve it then duck out now. |
| 154 | - if (!empty($topic) && empty($board_info['cur_topic_approved']) && !allowedTo('approve_posts') && ($user_info['id'] != $board_info['cur_topic_starter'] || $user_info['is_guest'])) |
|
| 155 | - fatal_lang_error('not_a_topic', false); |
|
| 161 | + if (!empty($topic) && empty($board_info['cur_topic_approved']) && !allowedTo('approve_posts') && ($user_info['id'] != $board_info['cur_topic_starter'] || $user_info['is_guest'])) { |
|
| 162 | + fatal_lang_error('not_a_topic', false); |
|
| 163 | + } |
|
| 156 | 164 | |
| 157 | 165 | $no_stat_actions = array('clock', 'dlattach', 'findmember', 'jsoption', 'likes', 'loadeditorlocale', 'modifycat', 'requestmembers', 'smstats', 'suggest', 'about:unknown', '.xml', 'xmlhttp', 'verificationcode', 'viewquery', 'viewsmfile'); |
| 158 | 166 | call_integration_hook('integrate_pre_log_stats', array(&$no_stat_actions)); |
@@ -163,8 +171,9 @@ discard block |
||
| 163 | 171 | writeLog(); |
| 164 | 172 | |
| 165 | 173 | // Track forum statistics and hits...? |
| 166 | - if (!empty($modSettings['hitStats'])) |
|
| 167 | - trackStats(array('hits' => '+')); |
|
| 174 | + if (!empty($modSettings['hitStats'])) { |
|
| 175 | + trackStats(array('hits' => '+')); |
|
| 176 | + } |
|
| 168 | 177 | } |
| 169 | 178 | unset($no_stat_actions); |
| 170 | 179 | |
@@ -178,13 +187,14 @@ discard block |
||
| 178 | 187 | return ($_REQUEST['action'] == 'login2' ? 'Login2' : ($_REQUEST['action'] == 'logintfa' ? 'LoginTFA' : 'Logout')); |
| 179 | 188 | } |
| 180 | 189 | // Don't even try it, sonny. |
| 181 | - else |
|
| 182 | - return 'InMaintenance'; |
|
| 190 | + else { |
|
| 191 | + return 'InMaintenance'; |
|
| 192 | + } |
|
| 183 | 193 | } |
| 184 | 194 | // If guest access is off, a guest can only do one of the very few following actions. |
| 185 | - elseif (empty($modSettings['allow_guestAccess']) && $user_info['is_guest'] && (!isset($_REQUEST['action']) || !in_array($_REQUEST['action'], array('coppa', 'login', 'login2', 'logintfa', 'reminder', 'activate', 'help', 'helpadmin', 'smstats', 'verificationcode', 'signup', 'signup2')))) |
|
| 186 | - return 'KickGuest'; |
|
| 187 | - elseif (empty($_REQUEST['action'])) |
|
| 195 | + elseif (empty($modSettings['allow_guestAccess']) && $user_info['is_guest'] && (!isset($_REQUEST['action']) || !in_array($_REQUEST['action'], array('coppa', 'login', 'login2', 'logintfa', 'reminder', 'activate', 'help', 'helpadmin', 'smstats', 'verificationcode', 'signup', 'signup2')))) { |
|
| 196 | + return 'KickGuest'; |
|
| 197 | + } elseif (empty($_REQUEST['action'])) |
|
| 188 | 198 | { |
| 189 | 199 | // Action and board are both empty... BoardIndex! Unless someone else wants to do something different. |
| 190 | 200 | if (empty($board) && empty($topic)) |
@@ -200,8 +210,9 @@ discard block |
||
| 200 | 210 | |
| 201 | 211 | $call = call_helper($defaultAction, true); |
| 202 | 212 | |
| 203 | - if (!empty($call)) |
|
| 204 | - return $call; |
|
| 213 | + if (!empty($call)) { |
|
| 214 | + return $call; |
|
| 215 | + } |
|
| 205 | 216 | } |
| 206 | 217 | |
| 207 | 218 | // No default action huh? then go to our good old BoardIndex. |
@@ -331,8 +342,9 @@ discard block |
||
| 331 | 342 | |
| 332 | 343 | $call = call_helper($fallbackAction, true); |
| 333 | 344 | |
| 334 | - if (!empty($call)) |
|
| 335 | - return $call; |
|
| 345 | + if (!empty($call)) { |
|
| 346 | + return $call; |
|
| 347 | + } |
|
| 336 | 348 | } |
| 337 | 349 | |
| 338 | 350 | // No fallback action, huh? |
@@ -89,8 +89,9 @@ discard block |
||
| 89 | 89 | foreach ($section['areas'] as $i => $area) |
| 90 | 90 | { |
| 91 | 91 | // Not supposed to be printed? |
| 92 | - if (empty($area['label'])) |
|
| 93 | - continue; |
|
| 92 | + if (empty($area['label'])) { |
|
| 93 | + continue; |
|
| 94 | + } |
|
| 94 | 95 | |
| 95 | 96 | echo ' |
| 96 | 97 | <li', !empty($area['subsections']) ? ' class="subsections"' : '', '>'; |
@@ -99,8 +100,9 @@ discard block |
||
| 99 | 100 | <a class="', $area['icon_class'], !empty($area['selected']) ? ' chosen ' : '', '" href="', (isset($area['url']) ? $area['url'] : $menu_context['base_url'] . ';area=' . $i), $menu_context['extra_parameters'], '">', $area['icon'], $area['label'], '</a>'; |
| 100 | 101 | |
| 101 | 102 | // Is this the current area, or just some area? |
| 102 | - if (!empty($area['selected']) && empty($context['tabs'])) |
|
| 103 | - $context['tabs'] = isset($area['subsections']) ? $area['subsections'] : array(); |
|
| 103 | + if (!empty($area['selected']) && empty($context['tabs'])) { |
|
| 104 | + $context['tabs'] = isset($area['subsections']) ? $area['subsections'] : array(); |
|
| 105 | + } |
|
| 104 | 106 | |
| 105 | 107 | // Are there any subsections? |
| 106 | 108 | if (!empty($area['subsections'])) |
@@ -110,8 +112,9 @@ discard block |
||
| 110 | 112 | |
| 111 | 113 | foreach ($area['subsections'] as $sa => $sub) |
| 112 | 114 | { |
| 113 | - if (!empty($sub['disabled'])) |
|
| 114 | - continue; |
|
| 115 | + if (!empty($sub['disabled'])) { |
|
| 116 | + continue; |
|
| 117 | + } |
|
| 115 | 118 | |
| 116 | 119 | $url = isset($sub['url']) ? $sub['url'] : (isset($area['url']) ? $area['url'] : $menu_context['base_url'] . ';area=' . $i) . ';sa=' . $sa; |
| 117 | 120 | |
@@ -158,8 +161,9 @@ discard block |
||
| 158 | 161 | <h3 class="catbg">'; |
| 159 | 162 | |
| 160 | 163 | // The function is in Admin.template.php, but since this template is used elsewhere too better check if the function is available |
| 161 | - if (function_exists('template_admin_quick_search')) |
|
| 162 | - template_admin_quick_search(); |
|
| 164 | + if (function_exists('template_admin_quick_search')) { |
|
| 165 | + template_admin_quick_search(); |
|
| 166 | + } |
|
| 163 | 167 | |
| 164 | 168 | // Exactly how many tabs do we have? |
| 165 | 169 | if (!empty($context['tabs'])) |
@@ -174,30 +178,36 @@ discard block |
||
| 174 | 178 | } |
| 175 | 179 | |
| 176 | 180 | // Did this not even exist - or do we not have a label? |
| 177 | - if (!isset($tab_context['tabs'][$id])) |
|
| 178 | - $tab_context['tabs'][$id] = array('label' => $tab['label']); |
|
| 179 | - elseif (!isset($tab_context['tabs'][$id]['label'])) |
|
| 180 | - $tab_context['tabs'][$id]['label'] = $tab['label']; |
|
| 181 | + if (!isset($tab_context['tabs'][$id])) { |
|
| 182 | + $tab_context['tabs'][$id] = array('label' => $tab['label']); |
|
| 183 | + } elseif (!isset($tab_context['tabs'][$id]['label'])) { |
|
| 184 | + $tab_context['tabs'][$id]['label'] = $tab['label']; |
|
| 185 | + } |
|
| 181 | 186 | |
| 182 | 187 | // Has a custom URL defined in the main admin structure? |
| 183 | - if (isset($tab['url']) && !isset($tab_context['tabs'][$id]['url'])) |
|
| 184 | - $tab_context['tabs'][$id]['url'] = $tab['url']; |
|
| 188 | + if (isset($tab['url']) && !isset($tab_context['tabs'][$id]['url'])) { |
|
| 189 | + $tab_context['tabs'][$id]['url'] = $tab['url']; |
|
| 190 | + } |
|
| 185 | 191 | |
| 186 | 192 | // Any additional paramaters for the url? |
| 187 | - if (isset($tab['add_params']) && !isset($tab_context['tabs'][$id]['add_params'])) |
|
| 188 | - $tab_context['tabs'][$id]['add_params'] = $tab['add_params']; |
|
| 193 | + if (isset($tab['add_params']) && !isset($tab_context['tabs'][$id]['add_params'])) { |
|
| 194 | + $tab_context['tabs'][$id]['add_params'] = $tab['add_params']; |
|
| 195 | + } |
|
| 189 | 196 | |
| 190 | 197 | // Has it been deemed selected? |
| 191 | - if (!empty($tab['is_selected'])) |
|
| 192 | - $tab_context['tabs'][$id]['is_selected'] = true; |
|
| 198 | + if (!empty($tab['is_selected'])) { |
|
| 199 | + $tab_context['tabs'][$id]['is_selected'] = true; |
|
| 200 | + } |
|
| 193 | 201 | |
| 194 | 202 | // Does it have its own help? |
| 195 | - if (!empty($tab['help'])) |
|
| 196 | - $tab_context['tabs'][$id]['help'] = $tab['help']; |
|
| 203 | + if (!empty($tab['help'])) { |
|
| 204 | + $tab_context['tabs'][$id]['help'] = $tab['help']; |
|
| 205 | + } |
|
| 197 | 206 | |
| 198 | 207 | // Is this the last one? |
| 199 | - if (!empty($tab['is_last']) && !isset($tab_context['override_last'])) |
|
| 200 | - $tab_context['tabs'][$id]['is_last'] = true; |
|
| 208 | + if (!empty($tab['is_last']) && !isset($tab_context['override_last'])) { |
|
| 209 | + $tab_context['tabs'][$id]['is_last'] = true; |
|
| 210 | + } |
|
| 201 | 211 | } |
| 202 | 212 | |
| 203 | 213 | // Find the selected tab |
@@ -214,17 +224,18 @@ discard block |
||
| 214 | 224 | // Show an icon and/or a help item? |
| 215 | 225 | if (!empty($selected_tab['icon_class']) || !empty($tab_context['icon_class']) || !empty($selected_tab['icon']) || !empty($tab_context['icon']) || !empty($selected_tab['help']) || !empty($tab_context['help'])) |
| 216 | 226 | { |
| 217 | - if (!empty($selected_tab['icon_class']) || !empty($tab_context['icon_class'])) |
|
| 218 | - echo '<span class="', !empty($selected_tab['icon_class']) ? $selected_tab['icon_class'] : $tab_context['icon_class'], ' icon"></span>'; |
|
| 219 | - elseif (!empty($selected_tab['icon']) || !empty($tab_context['icon'])) |
|
| 220 | - echo '<img src="', $settings['images_url'], '/icons/', !empty($selected_tab['icon']) ? $selected_tab['icon'] : $tab_context['icon'], '" alt="" class="icon">'; |
|
| 227 | + if (!empty($selected_tab['icon_class']) || !empty($tab_context['icon_class'])) { |
|
| 228 | + echo '<span class="', !empty($selected_tab['icon_class']) ? $selected_tab['icon_class'] : $tab_context['icon_class'], ' icon"></span>'; |
|
| 229 | + } elseif (!empty($selected_tab['icon']) || !empty($tab_context['icon'])) { |
|
| 230 | + echo '<img src="', $settings['images_url'], '/icons/', !empty($selected_tab['icon']) ? $selected_tab['icon'] : $tab_context['icon'], '" alt="" class="icon">'; |
|
| 231 | + } |
|
| 221 | 232 | |
| 222 | - if (!empty($selected_tab['help']) || !empty($tab_context['help'])) |
|
| 223 | - echo '<a href="', $scripturl, '?action=helpadmin;help=', !empty($selected_tab['help']) ? $selected_tab['help'] : $tab_context['help'], '" onclick="return reqOverlayDiv(this.href);" class="help"><span class="generic_icons help" title="', $txt['help'], '"></span></a>'; |
|
| 233 | + if (!empty($selected_tab['help']) || !empty($tab_context['help'])) { |
|
| 234 | + echo '<a href="', $scripturl, '?action=helpadmin;help=', !empty($selected_tab['help']) ? $selected_tab['help'] : $tab_context['help'], '" onclick="return reqOverlayDiv(this.href);" class="help"><span class="generic_icons help" title="', $txt['help'], '"></span></a>'; |
|
| 235 | + } |
|
| 224 | 236 | |
| 225 | 237 | echo $tab_context['title']; |
| 226 | - } |
|
| 227 | - else |
|
| 238 | + } else |
|
| 228 | 239 | { |
| 229 | 240 | echo ' |
| 230 | 241 | ', $tab_context['title']; |
@@ -237,11 +248,12 @@ discard block |
||
| 237 | 248 | } |
| 238 | 249 | |
| 239 | 250 | // Shall we use the tabs? Yes, it's the only known way! |
| 240 | - if (!empty($selected_tab['description']) || !empty($tab_context['description'])) |
|
| 241 | - echo ' |
|
| 251 | + if (!empty($selected_tab['description']) || !empty($tab_context['description'])) { |
|
| 252 | + echo ' |
|
| 242 | 253 | <p class="information"> |
| 243 | 254 | ', !empty($selected_tab['description']) ? $selected_tab['description'] : $tab_context['description'], ' |
| 244 | 255 | </p>'; |
| 256 | + } |
|
| 245 | 257 | |
| 246 | 258 | // Print out all the items in this tab (if any). |
| 247 | 259 | if (!empty($context['tabs'])) |
@@ -253,8 +265,9 @@ discard block |
||
| 253 | 265 | |
| 254 | 266 | foreach ($tab_context['tabs'] as $sa => $tab) |
| 255 | 267 | { |
| 256 | - if (!empty($tab['disabled'])) |
|
| 257 | - continue; |
|
| 268 | + if (!empty($tab['disabled'])) { |
|
| 269 | + continue; |
|
| 270 | + } |
|
| 258 | 271 | |
| 259 | 272 | if (!empty($tab['is_selected'])) |
| 260 | 273 | { |
@@ -262,12 +275,12 @@ discard block |
||
| 262 | 275 | <li> |
| 263 | 276 | <a class="active" href="', isset($tab['url']) ? $tab['url'] : $menu_context['base_url'] . ';area=' . $menu_context['current_area'] . ';sa=' . $sa, $menu_context['extra_parameters'], isset($tab['add_params']) ? $tab['add_params'] : '', '">', $tab['label'], '</a> |
| 264 | 277 | </li>'; |
| 265 | - } |
|
| 266 | - else |
|
| 267 | - echo ' |
|
| 278 | + } else { |
|
| 279 | + echo ' |
|
| 268 | 280 | <li> |
| 269 | 281 | <a href="', isset($tab['url']) ? $tab['url'] : $menu_context['base_url'] . ';area=' . $menu_context['current_area'] . ';sa=' . $sa, $menu_context['extra_parameters'], isset($tab['add_params']) ? $tab['add_params'] : '', '">', $tab['label'], '</a> |
| 270 | 282 | </li>'; |
| 283 | + } |
|
| 271 | 284 | } |
| 272 | 285 | |
| 273 | 286 | // the end of tabs |
@@ -13,8 +13,9 @@ discard block |
||
| 13 | 13 | * @version 2.1 Beta 3 |
| 14 | 14 | */ |
| 15 | 15 | |
| 16 | -if (!defined('SMF')) |
|
| 16 | +if (!defined('SMF')) { |
|
| 17 | 17 | die('No direct access...'); |
| 18 | +} |
|
| 18 | 19 | |
| 19 | 20 | /** |
| 20 | 21 | * Entry point function, permission checks, admin bars, etc. |
@@ -99,27 +100,27 @@ discard block |
||
| 99 | 100 | 'function' => function($rowData) use ($scripturl) |
| 100 | 101 | { |
| 101 | 102 | // Since the moderator group has no explicit members, no link is needed. |
| 102 | - if ($rowData['id_group'] == 3) |
|
| 103 | - $group_name = $rowData['group_name']; |
|
| 104 | - else |
|
| 103 | + if ($rowData['id_group'] == 3) { |
|
| 104 | + $group_name = $rowData['group_name']; |
|
| 105 | + } else |
|
| 105 | 106 | { |
| 106 | 107 | $color_style = empty($rowData['online_color']) ? '' : sprintf(' style="color: %1$s;"', $rowData['online_color']); |
| 107 | 108 | |
| 108 | 109 | if (allowedTo('manage_membergroups')) |
| 109 | 110 | { |
| 110 | 111 | $group_name = sprintf('<a href="%1$s?action=admin;area=membergroups;sa=members;group=%2$d"%3$s>%4$s</a>', $scripturl, $rowData['id_group'], $color_style, $rowData['group_name']); |
| 111 | - } |
|
| 112 | - else |
|
| 112 | + } else |
|
| 113 | 113 | { |
| 114 | 114 | $group_name = sprintf('<a href="%1$s?action=groups;sa=members;group=%2$d"%3$s>%4$s</a>', $scripturl, $rowData['id_group'], $color_style, $rowData['group_name']); |
| 115 | 115 | } |
| 116 | 116 | } |
| 117 | 117 | |
| 118 | 118 | // Add a help option for moderator and administrator. |
| 119 | - if ($rowData['id_group'] == 1) |
|
| 120 | - $group_name .= sprintf(' (<a href="%1$s?action=helpadmin;help=membergroup_administrator" onclick="return reqOverlayDiv(this.href);">?</a>)', $scripturl); |
|
| 121 | - elseif ($rowData['id_group'] == 3) |
|
| 122 | - $group_name .= sprintf(' (<a href="%1$s?action=helpadmin;help=membergroup_moderator" onclick="return reqOverlayDiv(this.href);">?</a>)', $scripturl); |
|
| 119 | + if ($rowData['id_group'] == 1) { |
|
| 120 | + $group_name .= sprintf(' (<a href="%1$s?action=helpadmin;help=membergroup_administrator" onclick="return reqOverlayDiv(this.href);">?</a>)', $scripturl); |
|
| 121 | + } elseif ($rowData['id_group'] == 3) { |
|
| 122 | + $group_name .= sprintf(' (<a href="%1$s?action=helpadmin;help=membergroup_moderator" onclick="return reqOverlayDiv(this.href);">?</a>)', $scripturl); |
|
| 123 | + } |
|
| 123 | 124 | |
| 124 | 125 | return $group_name; |
| 125 | 126 | }, |
@@ -198,8 +199,9 @@ discard block |
||
| 198 | 199 | $_REQUEST['group'] = isset($_REQUEST['group']) ? (int) $_REQUEST['group'] : 0; |
| 199 | 200 | |
| 200 | 201 | // No browsing of guests, membergroup 0 or moderators. |
| 201 | - if (in_array($_REQUEST['group'], array(-1, 0, 3))) |
|
| 202 | - fatal_lang_error('membergroup_does_not_exist', false); |
|
| 202 | + if (in_array($_REQUEST['group'], array(-1, 0, 3))) { |
|
| 203 | + fatal_lang_error('membergroup_does_not_exist', false); |
|
| 204 | + } |
|
| 203 | 205 | |
| 204 | 206 | // Load up the group details. |
| 205 | 207 | $request = $smcFunc['db_query']('', ' |
@@ -214,8 +216,9 @@ discard block |
||
| 214 | 216 | ) |
| 215 | 217 | ); |
| 216 | 218 | // Doesn't exist? |
| 217 | - if ($smcFunc['db_num_rows']($request) == 0) |
|
| 218 | - fatal_lang_error('membergroup_does_not_exist', false); |
|
| 219 | + if ($smcFunc['db_num_rows']($request) == 0) { |
|
| 220 | + fatal_lang_error('membergroup_does_not_exist', false); |
|
| 221 | + } |
|
| 219 | 222 | $context['group'] = $smcFunc['db_fetch_assoc']($request); |
| 220 | 223 | $smcFunc['db_free_result']($request); |
| 221 | 224 | |
@@ -248,21 +251,25 @@ discard block |
||
| 248 | 251 | 'name' => $row['real_name'] |
| 249 | 252 | ); |
| 250 | 253 | |
| 251 | - if ($user_info['id'] == $row['id_member'] && $context['group']['group_type'] != 1) |
|
| 252 | - $context['group']['can_moderate'] = true; |
|
| 254 | + if ($user_info['id'] == $row['id_member'] && $context['group']['group_type'] != 1) { |
|
| 255 | + $context['group']['can_moderate'] = true; |
|
| 256 | + } |
|
| 253 | 257 | } |
| 254 | 258 | $smcFunc['db_free_result']($request); |
| 255 | 259 | |
| 256 | 260 | // If this group is hidden then it can only "exists" if the user can moderate it! |
| 257 | - if ($context['group']['hidden'] && !$context['group']['can_moderate']) |
|
| 258 | - fatal_lang_error('membergroup_does_not_exist', false); |
|
| 261 | + if ($context['group']['hidden'] && !$context['group']['can_moderate']) { |
|
| 262 | + fatal_lang_error('membergroup_does_not_exist', false); |
|
| 263 | + } |
|
| 259 | 264 | |
| 260 | 265 | // You can only assign membership if you are the moderator and/or can manage groups! |
| 261 | - if (!$context['group']['can_moderate']) |
|
| 262 | - $context['group']['assignable'] = 0; |
|
| 266 | + if (!$context['group']['can_moderate']) { |
|
| 267 | + $context['group']['assignable'] = 0; |
|
| 268 | + } |
|
| 263 | 269 | // Non-admins cannot assign admins. |
| 264 | - elseif ($context['group']['id'] == 1 && !allowedTo('admin_forum')) |
|
| 265 | - $context['group']['assignable'] = 0; |
|
| 270 | + elseif ($context['group']['id'] == 1 && !allowedTo('admin_forum')) { |
|
| 271 | + $context['group']['assignable'] = 0; |
|
| 272 | + } |
|
| 266 | 273 | |
| 267 | 274 | // Removing member from group? |
| 268 | 275 | if (isset($_POST['remove']) && !empty($_REQUEST['rem']) && is_array($_REQUEST['rem']) && $context['group']['assignable']) |
@@ -271,8 +278,9 @@ discard block |
||
| 271 | 278 | validateToken('mod-mgm'); |
| 272 | 279 | |
| 273 | 280 | // Make sure we're dealing with integers only. |
| 274 | - foreach ($_REQUEST['rem'] as $key => $group) |
|
| 275 | - $_REQUEST['rem'][$key] = (int) $group; |
|
| 281 | + foreach ($_REQUEST['rem'] as $key => $group) { |
|
| 282 | + $_REQUEST['rem'][$key] = (int) $group; |
|
| 283 | + } |
|
| 276 | 284 | |
| 277 | 285 | require_once($sourcedir . '/Subs-Membergroups.php'); |
| 278 | 286 | removeMembersFromGroups($_REQUEST['rem'], $_REQUEST['group'], true); |
@@ -295,16 +303,18 @@ discard block |
||
| 295 | 303 | { |
| 296 | 304 | $member_names[$index] = trim($smcFunc['strtolower']($member_names[$index])); |
| 297 | 305 | |
| 298 | - if (strlen($member_names[$index]) == 0) |
|
| 299 | - unset($member_names[$index]); |
|
| 306 | + if (strlen($member_names[$index]) == 0) { |
|
| 307 | + unset($member_names[$index]); |
|
| 308 | + } |
|
| 300 | 309 | } |
| 301 | 310 | |
| 302 | 311 | // Any passed by ID? |
| 303 | 312 | $member_ids = array(); |
| 304 | - if (!empty($_REQUEST['member_add'])) |
|
| 305 | - foreach ($_REQUEST['member_add'] as $id) |
|
| 313 | + if (!empty($_REQUEST['member_add'])) { |
|
| 314 | + foreach ($_REQUEST['member_add'] as $id) |
|
| 306 | 315 | if ($id > 0) |
| 307 | 316 | $member_ids[] = (int) $id; |
| 317 | + } |
|
| 308 | 318 | |
| 309 | 319 | // Construct the query pelements. |
| 310 | 320 | if (!empty($member_ids)) |
@@ -332,8 +342,9 @@ discard block |
||
| 332 | 342 | 'id_group' => $_REQUEST['group'], |
| 333 | 343 | )) |
| 334 | 344 | ); |
| 335 | - while ($row = $smcFunc['db_fetch_assoc']($request)) |
|
| 336 | - $members[] = $row['id_member']; |
|
| 345 | + while ($row = $smcFunc['db_fetch_assoc']($request)) { |
|
| 346 | + $members[] = $row['id_member']; |
|
| 347 | + } |
|
| 337 | 348 | $smcFunc['db_free_result']($request); |
| 338 | 349 | } |
| 339 | 350 | |
@@ -372,10 +383,11 @@ discard block |
||
| 372 | 383 | $context['sort_direction'] = isset($_REQUEST['desc']) ? 'down' : 'up'; |
| 373 | 384 | |
| 374 | 385 | // The where on the query is interesting. Non-moderators should only see people who are in this group as primary. |
| 375 | - if ($context['group']['can_moderate']) |
|
| 376 | - $where = $context['group']['is_post_group'] ? 'id_post_group = {int:group}' : 'id_group = {int:group} OR FIND_IN_SET({int:group}, additional_groups) != 0'; |
|
| 377 | - else |
|
| 378 | - $where = $context['group']['is_post_group'] ? 'id_post_group = {int:group}' : 'id_group = {int:group}'; |
|
| 386 | + if ($context['group']['can_moderate']) { |
|
| 387 | + $where = $context['group']['is_post_group'] ? 'id_post_group = {int:group}' : 'id_group = {int:group} OR FIND_IN_SET({int:group}, additional_groups) != 0'; |
|
| 388 | + } else { |
|
| 389 | + $where = $context['group']['is_post_group'] ? 'id_post_group = {int:group}' : 'id_group = {int:group}'; |
|
| 390 | + } |
|
| 379 | 391 | |
| 380 | 392 | // Count members of the group. |
| 381 | 393 | $request = $smcFunc['db_query']('', ' |
@@ -416,8 +428,9 @@ discard block |
||
| 416 | 428 | $last_online = empty($row['last_login']) ? $txt['never'] : timeformat($row['last_login']); |
| 417 | 429 | |
| 418 | 430 | // Italicize the online note if they aren't activated. |
| 419 | - if ($row['is_activated'] % 10 != 1) |
|
| 420 | - $last_online = '<em title="' . $txt['not_activated'] . '">' . $last_online . '</em>'; |
|
| 431 | + if ($row['is_activated'] % 10 != 1) { |
|
| 432 | + $last_online = '<em title="' . $txt['not_activated'] . '">' . $last_online . '</em>'; |
|
| 433 | + } |
|
| 421 | 434 | |
| 422 | 435 | $context['members'][] = array( |
| 423 | 436 | 'id' => $row['id_member'], |
@@ -437,9 +450,10 @@ discard block |
||
| 437 | 450 | $context['page_title'] = $txt['membergroups_members_title'] . ': ' . $context['group']['name']; |
| 438 | 451 | createToken('mod-mgm'); |
| 439 | 452 | |
| 440 | - if ($context['group']['assignable']) |
|
| 441 | - loadJavaScriptFile('suggest.js', array('defer' => false), 'smf_suggest'); |
|
| 442 | -} |
|
| 453 | + if ($context['group']['assignable']) { |
|
| 454 | + loadJavaScriptFile('suggest.js', array('defer' => false), 'smf_suggest'); |
|
| 455 | + } |
|
| 456 | + } |
|
| 443 | 457 | |
| 444 | 458 | /** |
| 445 | 459 | * Show and manage all group requests. |
@@ -453,16 +467,18 @@ discard block |
||
| 453 | 467 | $context['sub_template'] = 'show_list'; |
| 454 | 468 | |
| 455 | 469 | // Verify we can be here. |
| 456 | - if ($user_info['mod_cache']['gq'] == '0=1') |
|
| 457 | - isAllowedTo('manage_membergroups'); |
|
| 470 | + if ($user_info['mod_cache']['gq'] == '0=1') { |
|
| 471 | + isAllowedTo('manage_membergroups'); |
|
| 472 | + } |
|
| 458 | 473 | |
| 459 | 474 | // Normally, we act normally... |
| 460 | 475 | $where = ($user_info['mod_cache']['gq'] == '1=1' || $user_info['mod_cache']['gq'] == '0=1' ? $user_info['mod_cache']['gq'] : 'lgr.' . $user_info['mod_cache']['gq']); |
| 461 | 476 | |
| 462 | - if (isset($_GET['closed'])) |
|
| 463 | - $where .= ' AND lgr.status != {int:status_open}'; |
|
| 464 | - else |
|
| 465 | - $where .= ' AND lgr.status = {int:status_open}'; |
|
| 477 | + if (isset($_GET['closed'])) { |
|
| 478 | + $where .= ' AND lgr.status != {int:status_open}'; |
|
| 479 | + } else { |
|
| 480 | + $where .= ' AND lgr.status = {int:status_open}'; |
|
| 481 | + } |
|
| 466 | 482 | |
| 467 | 483 | $where_parameters = array( |
| 468 | 484 | 'status_open' => 0, |
@@ -475,8 +491,9 @@ discard block |
||
| 475 | 491 | validateToken('mod-gr'); |
| 476 | 492 | |
| 477 | 493 | // Clean the values. |
| 478 | - foreach ($_POST['groupr'] as $k => $request) |
|
| 479 | - $_POST['groupr'][$k] = (int) $request; |
|
| 494 | + foreach ($_POST['groupr'] as $k => $request) { |
|
| 495 | + $_POST['groupr'][$k] = (int) $request; |
|
| 496 | + } |
|
| 480 | 497 | |
| 481 | 498 | $log_changes = array(); |
| 482 | 499 | |
@@ -513,8 +530,8 @@ discard block |
||
| 513 | 530 | $request_list = array(); |
| 514 | 531 | while ($row = $smcFunc['db_fetch_assoc']($request)) |
| 515 | 532 | { |
| 516 | - if (!isset($log_changes[$row['id_request']])) |
|
| 517 | - $log_changes[$row['id_request']] = array( |
|
| 533 | + if (!isset($log_changes[$row['id_request']])) { |
|
| 534 | + $log_changes[$row['id_request']] = array( |
|
| 518 | 535 | 'id_request' => $row['id_request'], |
| 519 | 536 | 'status' => $_POST['req_action'] == 'approve' ? 1 : 2, // 1 = approved, 2 = rejected |
| 520 | 537 | 'id_member_acted' => $user_info['id'], |
@@ -522,6 +539,7 @@ discard block |
||
| 522 | 539 | 'time_acted' => time(), |
| 523 | 540 | 'act_reason' => $_POST['req_action'] != 'approve' && !empty($_POST['groupreason']) && !empty($_POST['groupreason'][$row['id_request']]) ? $smcFunc['htmlspecialchars']($_POST['groupreason'][$row['id_request']], ENT_QUOTES) : '', |
| 524 | 541 | ); |
| 542 | + } |
|
| 525 | 543 | $request_list[] = $row['id_request']; |
| 526 | 544 | } |
| 527 | 545 | $smcFunc['db_free_result']($request); |
@@ -744,21 +762,24 @@ discard block |
||
| 744 | 762 | $group_requests = array(); |
| 745 | 763 | while ($row = $smcFunc['db_fetch_assoc']($request)) |
| 746 | 764 | { |
| 747 | - if (empty($row['reason'])) |
|
| 748 | - $reason = '<em>(' . $txt['mc_groupr_no_reason'] . ')</em>'; |
|
| 749 | - else |
|
| 750 | - $reason = censorText($row['reason']); |
|
| 765 | + if (empty($row['reason'])) { |
|
| 766 | + $reason = '<em>(' . $txt['mc_groupr_no_reason'] . ')</em>'; |
|
| 767 | + } else { |
|
| 768 | + $reason = censorText($row['reason']); |
|
| 769 | + } |
|
| 751 | 770 | |
| 752 | 771 | if (isset($_GET['closed'])) |
| 753 | 772 | { |
| 754 | - if ($row['status'] == 1) |
|
| 755 | - $reason .= '<br><br><strong>' . $txt['mc_groupr_approved'] . '</strong>'; |
|
| 756 | - elseif ($row['status'] == 2) |
|
| 757 | - $reason .= '<br><br><strong>' . $txt['mc_groupr_rejected'] . '</strong>'; |
|
| 773 | + if ($row['status'] == 1) { |
|
| 774 | + $reason .= '<br><br><strong>' . $txt['mc_groupr_approved'] . '</strong>'; |
|
| 775 | + } elseif ($row['status'] == 2) { |
|
| 776 | + $reason .= '<br><br><strong>' . $txt['mc_groupr_rejected'] . '</strong>'; |
|
| 777 | + } |
|
| 758 | 778 | |
| 759 | 779 | $reason .= ' (' . timeformat($row['time_acted']) . ')'; |
| 760 | - if (!empty($row['act_reason'])) |
|
| 761 | - $reason .= '<br><br>' . censorText($row['act_reason']); |
|
| 780 | + if (!empty($row['act_reason'])) { |
|
| 781 | + $reason .= '<br><br>' . censorText($row['act_reason']); |
|
| 782 | + } |
|
| 762 | 783 | } |
| 763 | 784 | |
| 764 | 785 | $group_requests[] = array( |
@@ -14,8 +14,9 @@ discard block |
||
| 14 | 14 | * @version 2.1 Beta 3 |
| 15 | 15 | */ |
| 16 | 16 | |
| 17 | -if (!defined('SMF')) |
|
| 17 | +if (!defined('SMF')) { |
|
| 18 | 18 | die('No direct access...'); |
| 19 | +} |
|
| 19 | 20 | |
| 20 | 21 | /** |
| 21 | 22 | * Ask them for their login information. (shows a page for the user to type |
@@ -29,8 +30,9 @@ discard block |
||
| 29 | 30 | global $txt, $context, $scripturl, $user_info; |
| 30 | 31 | |
| 31 | 32 | // You are already logged in, go take a tour of the boards |
| 32 | - if (!empty($user_info['id'])) |
|
| 33 | - redirectexit(); |
|
| 33 | + if (!empty($user_info['id'])) { |
|
| 34 | + redirectexit(); |
|
| 35 | + } |
|
| 34 | 36 | |
| 35 | 37 | // We need to load the Login template/language file. |
| 36 | 38 | loadLanguage('Login'); |
@@ -57,10 +59,11 @@ discard block |
||
| 57 | 59 | ); |
| 58 | 60 | |
| 59 | 61 | // Set the login URL - will be used when the login process is done (but careful not to send us to an attachment). |
| 60 | - if (isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SESSION['old_url']) != 0) |
|
| 61 | - $_SESSION['login_url'] = $_SESSION['old_url']; |
|
| 62 | - elseif (isset($_SESSION['login_url']) && strpos($_SESSION['login_url'], 'dlattach') !== false) |
|
| 63 | - unset($_SESSION['login_url']); |
|
| 62 | + if (isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SESSION['old_url']) != 0) { |
|
| 63 | + $_SESSION['login_url'] = $_SESSION['old_url']; |
|
| 64 | + } elseif (isset($_SESSION['login_url']) && strpos($_SESSION['login_url'], 'dlattach') !== false) { |
|
| 65 | + unset($_SESSION['login_url']); |
|
| 66 | + } |
|
| 64 | 67 | |
| 65 | 68 | // Create a one time token. |
| 66 | 69 | createToken('login'); |
@@ -83,8 +86,9 @@ discard block |
||
| 83 | 86 | global $cookiename, $modSettings, $context, $sourcedir, $maintenance; |
| 84 | 87 | |
| 85 | 88 | // Check to ensure we're forcing SSL for authentication |
| 86 | - if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) |
|
| 87 | - fatal_lang_error('login_ssl_required'); |
|
| 89 | + if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) { |
|
| 90 | + fatal_lang_error('login_ssl_required'); |
|
| 91 | + } |
|
| 88 | 92 | |
| 89 | 93 | // Load cookie authentication stuff. |
| 90 | 94 | require_once($sourcedir . '/Subs-Auth.php'); |
@@ -102,19 +106,20 @@ discard block |
||
| 102 | 106 | list (,, $timeout) = smf_json_decode($_COOKIE[$cookiename], true); |
| 103 | 107 | |
| 104 | 108 | // That didn't work... Maybe it's using serialize? |
| 105 | - if (is_null($timeout)) |
|
| 106 | - list (,, $timeout) = safe_unserialize($_COOKIE[$cookiename]); |
|
| 107 | - } |
|
| 108 | - elseif (isset($_SESSION['login_' . $cookiename])) |
|
| 109 | + if (is_null($timeout)) { |
|
| 110 | + list (,, $timeout) = safe_unserialize($_COOKIE[$cookiename]); |
|
| 111 | + } |
|
| 112 | + } elseif (isset($_SESSION['login_' . $cookiename])) |
|
| 109 | 113 | { |
| 110 | 114 | list (,, $timeout) = smf_json_decode($_SESSION['login_' . $cookiename]); |
| 111 | 115 | |
| 112 | 116 | // Try for old format |
| 113 | - if (is_null($timeout)) |
|
| 114 | - list (,, $timeout) = safe_unserialize($_SESSION['login_' . $cookiename]); |
|
| 117 | + if (is_null($timeout)) { |
|
| 118 | + list (,, $timeout) = safe_unserialize($_SESSION['login_' . $cookiename]); |
|
| 119 | + } |
|
| 120 | + } else { |
|
| 121 | + trigger_error('Login2(): Cannot be logged in without a session or cookie', E_USER_ERROR); |
|
| 115 | 122 | } |
| 116 | - else |
|
| 117 | - trigger_error('Login2(): Cannot be logged in without a session or cookie', E_USER_ERROR); |
|
| 118 | 123 | |
| 119 | 124 | $user_settings['password_salt'] = substr(md5(mt_rand()), 0, 4); |
| 120 | 125 | updateMemberData($user_info['id'], array('password_salt' => $user_settings['password_salt'])); |
@@ -125,16 +130,18 @@ discard block |
||
| 125 | 130 | $tfadata = smf_json_decode($_COOKIE[$cookiename . '_tfa'], true); |
| 126 | 131 | |
| 127 | 132 | // If that didn't work, try unserialize instead... |
| 128 | - if (is_null($tfadata)) |
|
| 129 | - $tfadata = safe_unserialize($_COOKIE[$cookiename . '_tfa']); |
|
| 133 | + if (is_null($tfadata)) { |
|
| 134 | + $tfadata = safe_unserialize($_COOKIE[$cookiename . '_tfa']); |
|
| 135 | + } |
|
| 130 | 136 | |
| 131 | 137 | list ($tfamember, $tfasecret, $exp, $state, $preserve) = $tfadata; |
| 132 | 138 | |
| 133 | 139 | // If we're preserving the cookie, reset it with updated salt |
| 134 | - if ($preserve && time() < $exp) |
|
| 135 | - setTFACookie(3153600, $user_info['password_salt'], hash_salt($user_settings['tfa_backup'], $user_settings['password_salt']), true); |
|
| 136 | - else |
|
| 137 | - setTFACookie(-3600, 0, ''); |
|
| 140 | + if ($preserve && time() < $exp) { |
|
| 141 | + setTFACookie(3153600, $user_info['password_salt'], hash_salt($user_settings['tfa_backup'], $user_settings['password_salt']), true); |
|
| 142 | + } else { |
|
| 143 | + setTFACookie(-3600, 0, ''); |
|
| 144 | + } |
|
| 138 | 145 | } |
| 139 | 146 | |
| 140 | 147 | setLoginCookie($timeout - time(), $user_info['id'], hash_salt($user_settings['passwd'], $user_settings['password_salt'])); |
@@ -145,20 +152,20 @@ discard block |
||
| 145 | 152 | elseif (isset($_GET['sa']) && $_GET['sa'] == 'check') |
| 146 | 153 | { |
| 147 | 154 | // Strike! You're outta there! |
| 148 | - if ($_GET['member'] != $user_info['id']) |
|
| 149 | - fatal_lang_error('login_cookie_error', false); |
|
| 155 | + if ($_GET['member'] != $user_info['id']) { |
|
| 156 | + fatal_lang_error('login_cookie_error', false); |
|
| 157 | + } |
|
| 150 | 158 | |
| 151 | 159 | $user_info['can_mod'] = allowedTo('access_mod_center') || (!$user_info['is_guest'] && ($user_info['mod_cache']['gq'] != '0=1' || $user_info['mod_cache']['bq'] != '0=1' || ($modSettings['postmod_active'] && !empty($user_info['mod_cache']['ap'])))); |
| 152 | 160 | |
| 153 | 161 | // Some whitelisting for login_url... |
| 154 | - if (empty($_SESSION['login_url'])) |
|
| 155 | - redirectexit(empty($user_settings['tfa_secret']) ? '' : 'action=logintfa'); |
|
| 156 | - elseif (!empty($_SESSION['login_url']) && (strpos($_SESSION['login_url'], 'http://') === false && strpos($_SESSION['login_url'], 'https://') === false)) |
|
| 162 | + if (empty($_SESSION['login_url'])) { |
|
| 163 | + redirectexit(empty($user_settings['tfa_secret']) ? '' : 'action=logintfa'); |
|
| 164 | + } elseif (!empty($_SESSION['login_url']) && (strpos($_SESSION['login_url'], 'http://') === false && strpos($_SESSION['login_url'], 'https://') === false)) |
|
| 157 | 165 | { |
| 158 | 166 | unset ($_SESSION['login_url']); |
| 159 | 167 | redirectexit(empty($user_settings['tfa_secret']) ? '' : 'action=logintfa'); |
| 160 | - } |
|
| 161 | - else |
|
| 168 | + } else |
|
| 162 | 169 | { |
| 163 | 170 | // Best not to clutter the session data too much... |
| 164 | 171 | $temp = $_SESSION['login_url']; |
@@ -169,8 +176,9 @@ discard block |
||
| 169 | 176 | } |
| 170 | 177 | |
| 171 | 178 | // Beyond this point you are assumed to be a guest trying to login. |
| 172 | - if (!$user_info['is_guest']) |
|
| 173 | - redirectexit(); |
|
| 179 | + if (!$user_info['is_guest']) { |
|
| 180 | + redirectexit(); |
|
| 181 | + } |
|
| 174 | 182 | |
| 175 | 183 | // Are you guessing with a script? |
| 176 | 184 | checkSession(); |
@@ -178,18 +186,21 @@ discard block |
||
| 178 | 186 | spamProtection('login'); |
| 179 | 187 | |
| 180 | 188 | // Set the login_url if it's not already set (but careful not to send us to an attachment). |
| 181 | - if ((empty($_SESSION['login_url']) && isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SESSION['old_url']) != 0) || (isset($_GET['quicklogin']) && isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'login') === false)) |
|
| 182 | - $_SESSION['login_url'] = $_SESSION['old_url']; |
|
| 189 | + if ((empty($_SESSION['login_url']) && isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'dlattach') === false && preg_match('~(board|topic)[=,]~', $_SESSION['old_url']) != 0) || (isset($_GET['quicklogin']) && isset($_SESSION['old_url']) && strpos($_SESSION['old_url'], 'login') === false)) { |
|
| 190 | + $_SESSION['login_url'] = $_SESSION['old_url']; |
|
| 191 | + } |
|
| 183 | 192 | |
| 184 | 193 | // Been guessing a lot, haven't we? |
| 185 | - if (isset($_SESSION['failed_login']) && $_SESSION['failed_login'] >= $modSettings['failed_login_threshold'] * 3) |
|
| 186 | - fatal_lang_error('login_threshold_fail', 'critical'); |
|
| 194 | + if (isset($_SESSION['failed_login']) && $_SESSION['failed_login'] >= $modSettings['failed_login_threshold'] * 3) { |
|
| 195 | + fatal_lang_error('login_threshold_fail', 'critical'); |
|
| 196 | + } |
|
| 187 | 197 | |
| 188 | 198 | // Set up the cookie length. (if it's invalid, just fall through and use the default.) |
| 189 | - if (isset($_POST['cookieneverexp']) || (!empty($_POST['cookielength']) && $_POST['cookielength'] == -1)) |
|
| 190 | - $modSettings['cookieTime'] = 3153600; |
|
| 191 | - elseif (!empty($_POST['cookielength']) && ($_POST['cookielength'] >= 1 && $_POST['cookielength'] <= 525600)) |
|
| 192 | - $modSettings['cookieTime'] = (int) $_POST['cookielength']; |
|
| 199 | + if (isset($_POST['cookieneverexp']) || (!empty($_POST['cookielength']) && $_POST['cookielength'] == -1)) { |
|
| 200 | + $modSettings['cookieTime'] = 3153600; |
|
| 201 | + } elseif (!empty($_POST['cookielength']) && ($_POST['cookielength'] >= 1 && $_POST['cookielength'] <= 525600)) { |
|
| 202 | + $modSettings['cookieTime'] = (int) $_POST['cookielength']; |
|
| 203 | + } |
|
| 193 | 204 | |
| 194 | 205 | loadLanguage('Login'); |
| 195 | 206 | // Load the template stuff. |
@@ -309,8 +320,9 @@ discard block |
||
| 309 | 320 | $other_passwords[] = crypt(md5($_POST['passwrd']), md5($_POST['passwrd'])); |
| 310 | 321 | |
| 311 | 322 | // Snitz style - SHA-256. Technically, this is a downgrade, but most PHP configurations don't support sha256 anyway. |
| 312 | - if (strlen($user_settings['passwd']) == 64 && function_exists('mhash') && defined('MHASH_SHA256')) |
|
| 313 | - $other_passwords[] = bin2hex(mhash(MHASH_SHA256, $_POST['passwrd'])); |
|
| 323 | + if (strlen($user_settings['passwd']) == 64 && function_exists('mhash') && defined('MHASH_SHA256')) { |
|
| 324 | + $other_passwords[] = bin2hex(mhash(MHASH_SHA256, $_POST['passwrd'])); |
|
| 325 | + } |
|
| 314 | 326 | |
| 315 | 327 | // phpBB3 users new hashing. We now support it as well ;). |
| 316 | 328 | $other_passwords[] = phpBB3_password_check($_POST['passwrd'], $user_settings['passwd']); |
@@ -330,27 +342,29 @@ discard block |
||
| 330 | 342 | // Some common md5 ones. |
| 331 | 343 | $other_passwords[] = md5($user_settings['password_salt'] . $_POST['passwrd']); |
| 332 | 344 | $other_passwords[] = md5($_POST['passwrd'] . $user_settings['password_salt']); |
| 333 | - } |
|
| 334 | - elseif (strlen($user_settings['passwd']) == 40) |
|
| 345 | + } elseif (strlen($user_settings['passwd']) == 40) |
|
| 335 | 346 | { |
| 336 | 347 | // Maybe they are using a hash from before the password fix. |
| 337 | 348 | // This is also valid for SMF 1.1 to 2.0 style of hashing, changed to bcrypt in SMF 2.1 |
| 338 | 349 | $other_passwords[] = sha1(strtolower($user_settings['member_name']) . un_htmlspecialchars($_POST['passwrd'])); |
| 339 | 350 | |
| 340 | 351 | // BurningBoard3 style of hashing. |
| 341 | - if (!empty($modSettings['enable_password_conversion'])) |
|
| 342 | - $other_passwords[] = sha1($user_settings['password_salt'] . sha1($user_settings['password_salt'] . sha1($_POST['passwrd']))); |
|
| 352 | + if (!empty($modSettings['enable_password_conversion'])) { |
|
| 353 | + $other_passwords[] = sha1($user_settings['password_salt'] . sha1($user_settings['password_salt'] . sha1($_POST['passwrd']))); |
|
| 354 | + } |
|
| 343 | 355 | |
| 344 | 356 | // Perhaps we converted to UTF-8 and have a valid password being hashed differently. |
| 345 | 357 | if ($context['character_set'] == 'UTF-8' && !empty($modSettings['previousCharacterSet']) && $modSettings['previousCharacterSet'] != 'utf8') |
| 346 | 358 | { |
| 347 | 359 | // Try iconv first, for no particular reason. |
| 348 | - if (function_exists('iconv')) |
|
| 349 | - $other_passwords['iconv'] = sha1(strtolower(iconv('UTF-8', $modSettings['previousCharacterSet'], $user_settings['member_name'])) . un_htmlspecialchars(iconv('UTF-8', $modSettings['previousCharacterSet'], $_POST['passwrd']))); |
|
| 360 | + if (function_exists('iconv')) { |
|
| 361 | + $other_passwords['iconv'] = sha1(strtolower(iconv('UTF-8', $modSettings['previousCharacterSet'], $user_settings['member_name'])) . un_htmlspecialchars(iconv('UTF-8', $modSettings['previousCharacterSet'], $_POST['passwrd']))); |
|
| 362 | + } |
|
| 350 | 363 | |
| 351 | 364 | // Say it aint so, iconv failed! |
| 352 | - if (empty($other_passwords['iconv']) && function_exists('mb_convert_encoding')) |
|
| 353 | - $other_passwords[] = sha1(strtolower(mb_convert_encoding($user_settings['member_name'], 'UTF-8', $modSettings['previousCharacterSet'])) . un_htmlspecialchars(mb_convert_encoding($_POST['passwrd'], 'UTF-8', $modSettings['previousCharacterSet']))); |
|
| 365 | + if (empty($other_passwords['iconv']) && function_exists('mb_convert_encoding')) { |
|
| 366 | + $other_passwords[] = sha1(strtolower(mb_convert_encoding($user_settings['member_name'], 'UTF-8', $modSettings['previousCharacterSet'])) . un_htmlspecialchars(mb_convert_encoding($_POST['passwrd'], 'UTF-8', $modSettings['previousCharacterSet']))); |
|
| 367 | + } |
|
| 354 | 368 | } |
| 355 | 369 | } |
| 356 | 370 | |
@@ -380,8 +394,9 @@ discard block |
||
| 380 | 394 | $_SESSION['failed_login'] = isset($_SESSION['failed_login']) ? ($_SESSION['failed_login'] + 1) : 1; |
| 381 | 395 | |
| 382 | 396 | // Hmm... don't remember it, do you? Here, try the password reminder ;). |
| 383 | - if ($_SESSION['failed_login'] >= $modSettings['failed_login_threshold']) |
|
| 384 | - redirectexit('action=reminder'); |
|
| 397 | + if ($_SESSION['failed_login'] >= $modSettings['failed_login_threshold']) { |
|
| 398 | + redirectexit('action=reminder'); |
|
| 399 | + } |
|
| 385 | 400 | // We'll give you another chance... |
| 386 | 401 | else |
| 387 | 402 | { |
@@ -392,8 +407,7 @@ discard block |
||
| 392 | 407 | return; |
| 393 | 408 | } |
| 394 | 409 | } |
| 395 | - } |
|
| 396 | - elseif (!empty($user_settings['passwd_flood'])) |
|
| 410 | + } elseif (!empty($user_settings['passwd_flood'])) |
|
| 397 | 411 | { |
| 398 | 412 | // Let's be sure they weren't a little hacker. |
| 399 | 413 | validatePasswordFlood($user_settings['id_member'], $user_settings['passwd_flood'], true); |
@@ -410,8 +424,9 @@ discard block |
||
| 410 | 424 | } |
| 411 | 425 | |
| 412 | 426 | // Check their activation status. |
| 413 | - if (!checkActivation()) |
|
| 414 | - return; |
|
| 427 | + if (!checkActivation()) { |
|
| 428 | + return; |
|
| 429 | + } |
|
| 415 | 430 | |
| 416 | 431 | DoLogin(); |
| 417 | 432 | } |
@@ -423,8 +438,9 @@ discard block |
||
| 423 | 438 | { |
| 424 | 439 | global $sourcedir, $txt, $context, $user_info, $modSettings, $scripturl; |
| 425 | 440 | |
| 426 | - if (!$user_info['is_guest'] || empty($context['tfa_member']) || empty($modSettings['tfa_mode'])) |
|
| 427 | - fatal_lang_error('no_access', false); |
|
| 441 | + if (!$user_info['is_guest'] || empty($context['tfa_member']) || empty($modSettings['tfa_mode'])) { |
|
| 442 | + fatal_lang_error('no_access', false); |
|
| 443 | + } |
|
| 428 | 444 | |
| 429 | 445 | loadLanguage('Profile'); |
| 430 | 446 | require_once($sourcedir . '/Class-TOTP.php'); |
@@ -432,8 +448,9 @@ discard block |
||
| 432 | 448 | $member = $context['tfa_member']; |
| 433 | 449 | |
| 434 | 450 | // Prevent replay attacks by limiting at least 2 minutes before they can log in again via 2FA |
| 435 | - if (time() - $member['last_login'] < 120) |
|
| 436 | - fatal_lang_error('tfa_wait', false); |
|
| 451 | + if (time() - $member['last_login'] < 120) { |
|
| 452 | + fatal_lang_error('tfa_wait', false); |
|
| 453 | + } |
|
| 437 | 454 | |
| 438 | 455 | $totp = new \TOTP\Auth($member['tfa_secret']); |
| 439 | 456 | $totp->setRange(1); |
@@ -447,8 +464,9 @@ discard block |
||
| 447 | 464 | if (!empty($_POST['tfa_code']) && empty($_POST['tfa_backup'])) |
| 448 | 465 | { |
| 449 | 466 | // Check to ensure we're forcing SSL for authentication |
| 450 | - if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) |
|
| 451 | - fatal_lang_error('login_ssl_required'); |
|
| 467 | + if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) { |
|
| 468 | + fatal_lang_error('login_ssl_required'); |
|
| 469 | + } |
|
| 452 | 470 | |
| 453 | 471 | $code = $_POST['tfa_code']; |
| 454 | 472 | |
@@ -458,20 +476,19 @@ discard block |
||
| 458 | 476 | |
| 459 | 477 | setTFACookie(3153600, $member['id_member'], hash_salt($member['tfa_backup'], $member['password_salt']), !empty($_POST['tfa_preserve'])); |
| 460 | 478 | redirectexit(); |
| 461 | - } |
|
| 462 | - else |
|
| 479 | + } else |
|
| 463 | 480 | { |
| 464 | 481 | validatePasswordFlood($member['id_member'], $member['passwd_flood'], false, true); |
| 465 | 482 | |
| 466 | 483 | $context['tfa_error'] = true; |
| 467 | 484 | $context['tfa_value'] = $_POST['tfa_code']; |
| 468 | 485 | } |
| 469 | - } |
|
| 470 | - elseif (!empty($_POST['tfa_backup'])) |
|
| 486 | + } elseif (!empty($_POST['tfa_backup'])) |
|
| 471 | 487 | { |
| 472 | 488 | // Check to ensure we're forcing SSL for authentication |
| 473 | - if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) |
|
| 474 | - fatal_lang_error('login_ssl_required'); |
|
| 489 | + if (!empty($modSettings['force_ssl']) && empty($maintenance) && (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on')) { |
|
| 490 | + fatal_lang_error('login_ssl_required'); |
|
| 491 | + } |
|
| 475 | 492 | |
| 476 | 493 | $backup = $_POST['tfa_backup']; |
| 477 | 494 | |
@@ -485,8 +502,7 @@ discard block |
||
| 485 | 502 | )); |
| 486 | 503 | setTFACookie(3153600, $member['id_member'], hash_salt($member['tfa_backup'], $member['password_salt'])); |
| 487 | 504 | redirectexit('action=profile;area=tfasetup;backup'); |
| 488 | - } |
|
| 489 | - else |
|
| 505 | + } else |
|
| 490 | 506 | { |
| 491 | 507 | validatePasswordFlood($member['id_member'], $member['passwd_flood'], false, true); |
| 492 | 508 | |
@@ -509,8 +525,9 @@ discard block |
||
| 509 | 525 | { |
| 510 | 526 | global $context, $txt, $scripturl, $user_settings, $modSettings; |
| 511 | 527 | |
| 512 | - if (!isset($context['login_errors'])) |
|
| 513 | - $context['login_errors'] = array(); |
|
| 528 | + if (!isset($context['login_errors'])) { |
|
| 529 | + $context['login_errors'] = array(); |
|
| 530 | + } |
|
| 514 | 531 | |
| 515 | 532 | // What is the true activation status of this account? |
| 516 | 533 | $activation_status = $user_settings['is_activated'] > 10 ? $user_settings['is_activated'] - 10 : $user_settings['is_activated']; |
@@ -522,8 +539,9 @@ discard block |
||
| 522 | 539 | return false; |
| 523 | 540 | } |
| 524 | 541 | // Awaiting approval still? |
| 525 | - elseif ($activation_status == 3) |
|
| 526 | - fatal_lang_error('still_awaiting_approval', 'user'); |
|
| 542 | + elseif ($activation_status == 3) { |
|
| 543 | + fatal_lang_error('still_awaiting_approval', 'user'); |
|
| 544 | + } |
|
| 527 | 545 | // Awaiting deletion, changed their mind? |
| 528 | 546 | elseif ($activation_status == 4) |
| 529 | 547 | { |
@@ -531,8 +549,7 @@ discard block |
||
| 531 | 549 | { |
| 532 | 550 | updateMemberData($user_settings['id_member'], array('is_activated' => 1)); |
| 533 | 551 | updateSettings(array('unapprovedMembers' => ($modSettings['unapprovedMembers'] > 0 ? $modSettings['unapprovedMembers'] - 1 : 0))); |
| 534 | - } |
|
| 535 | - else |
|
| 552 | + } else |
|
| 536 | 553 | { |
| 537 | 554 | $context['disable_login_hashing'] = true; |
| 538 | 555 | $context['login_errors'][] = $txt['awaiting_delete_account']; |
@@ -573,8 +590,9 @@ discard block |
||
| 573 | 590 | setLoginCookie(60 * $modSettings['cookieTime'], $user_settings['id_member'], hash_salt($user_settings['passwd'], $user_settings['password_salt'])); |
| 574 | 591 | |
| 575 | 592 | // Reset the login threshold. |
| 576 | - if (isset($_SESSION['failed_login'])) |
|
| 577 | - unset($_SESSION['failed_login']); |
|
| 593 | + if (isset($_SESSION['failed_login'])) { |
|
| 594 | + unset($_SESSION['failed_login']); |
|
| 595 | + } |
|
| 578 | 596 | |
| 579 | 597 | $user_info['is_guest'] = false; |
| 580 | 598 | $user_settings['additional_groups'] = explode(',', $user_settings['additional_groups']); |
@@ -596,16 +614,18 @@ discard block |
||
| 596 | 614 | 'id_member' => $user_info['id'], |
| 597 | 615 | ) |
| 598 | 616 | ); |
| 599 | - if ($smcFunc['db_num_rows']($request) == 1) |
|
| 600 | - $_SESSION['first_login'] = true; |
|
| 601 | - else |
|
| 602 | - unset($_SESSION['first_login']); |
|
| 617 | + if ($smcFunc['db_num_rows']($request) == 1) { |
|
| 618 | + $_SESSION['first_login'] = true; |
|
| 619 | + } else { |
|
| 620 | + unset($_SESSION['first_login']); |
|
| 621 | + } |
|
| 603 | 622 | $smcFunc['db_free_result']($request); |
| 604 | 623 | |
| 605 | 624 | // You've logged in, haven't you? |
| 606 | 625 | $update = array('member_ip' => $user_info['ip'], 'member_ip2' => $_SERVER['BAN_CHECK_IP']); |
| 607 | - if (empty($user_settings['tfa_secret'])) |
|
| 608 | - $update['last_login'] = time(); |
|
| 626 | + if (empty($user_settings['tfa_secret'])) { |
|
| 627 | + $update['last_login'] = time(); |
|
| 628 | + } |
|
| 609 | 629 | updateMemberData($user_info['id'], $update); |
| 610 | 630 | |
| 611 | 631 | // Get rid of the online entry for that old guest.... |
@@ -619,8 +639,8 @@ discard block |
||
| 619 | 639 | $_SESSION['log_time'] = 0; |
| 620 | 640 | |
| 621 | 641 | // Log this entry, only if we have it enabled. |
| 622 | - if (!empty($modSettings['loginHistoryDays'])) |
|
| 623 | - $smcFunc['db_insert']('insert', |
|
| 642 | + if (!empty($modSettings['loginHistoryDays'])) { |
|
| 643 | + $smcFunc['db_insert']('insert', |
|
| 624 | 644 | '{db_prefix}member_logins', |
| 625 | 645 | array( |
| 626 | 646 | 'id_member' => 'int', 'time' => 'int', 'ip' => 'inet', 'ip2' => 'inet', |
@@ -632,13 +652,15 @@ discard block |
||
| 632 | 652 | 'id_member', 'time' |
| 633 | 653 | ) |
| 634 | 654 | ); |
| 655 | + } |
|
| 635 | 656 | |
| 636 | 657 | // Just log you back out if it's in maintenance mode and you AREN'T an admin. |
| 637 | - if (empty($maintenance) || allowedTo('admin_forum')) |
|
| 638 | - redirectexit('action=login2;sa=check;member=' . $user_info['id'], $context['server']['needs_login_fix']); |
|
| 639 | - else |
|
| 640 | - redirectexit('action=logout;' . $context['session_var'] . '=' . $context['session_id'], $context['server']['needs_login_fix']); |
|
| 641 | -} |
|
| 658 | + if (empty($maintenance) || allowedTo('admin_forum')) { |
|
| 659 | + redirectexit('action=login2;sa=check;member=' . $user_info['id'], $context['server']['needs_login_fix']); |
|
| 660 | + } else { |
|
| 661 | + redirectexit('action=logout;' . $context['session_var'] . '=' . $context['session_id'], $context['server']['needs_login_fix']); |
|
| 662 | + } |
|
| 663 | + } |
|
| 642 | 664 | |
| 643 | 665 | /** |
| 644 | 666 | * Logs the current user out of their account. |
@@ -654,13 +676,15 @@ discard block |
||
| 654 | 676 | global $sourcedir, $user_info, $user_settings, $context, $smcFunc, $cookiename, $modSettings; |
| 655 | 677 | |
| 656 | 678 | // Make sure they aren't being auto-logged out. |
| 657 | - if (!$internal) |
|
| 658 | - checkSession('get'); |
|
| 679 | + if (!$internal) { |
|
| 680 | + checkSession('get'); |
|
| 681 | + } |
|
| 659 | 682 | |
| 660 | 683 | require_once($sourcedir . '/Subs-Auth.php'); |
| 661 | 684 | |
| 662 | - if (isset($_SESSION['pack_ftp'])) |
|
| 663 | - $_SESSION['pack_ftp'] = null; |
|
| 685 | + if (isset($_SESSION['pack_ftp'])) { |
|
| 686 | + $_SESSION['pack_ftp'] = null; |
|
| 687 | + } |
|
| 664 | 688 | |
| 665 | 689 | // It won't be first login anymore. |
| 666 | 690 | unset($_SESSION['first_login']); |
@@ -688,24 +712,27 @@ discard block |
||
| 688 | 712 | |
| 689 | 713 | // And some other housekeeping while we're at it. |
| 690 | 714 | $salt = substr(md5(mt_rand()), 0, 4); |
| 691 | - if (!empty($user_info['id'])) |
|
| 692 | - updateMemberData($user_info['id'], array('password_salt' => $salt)); |
|
| 715 | + if (!empty($user_info['id'])) { |
|
| 716 | + updateMemberData($user_info['id'], array('password_salt' => $salt)); |
|
| 717 | + } |
|
| 693 | 718 | |
| 694 | 719 | if (!empty($modSettings['tfa_mode']) && !empty($user_info['id']) && !empty($_COOKIE[$cookiename . '_tfa'])) |
| 695 | 720 | { |
| 696 | 721 | $tfadata = smf_json_decode($_COOKIE[$cookiename . '_tfa'], true); |
| 697 | 722 | |
| 698 | 723 | // If that failed, try the old method |
| 699 | - if (is_null($tfadata)) |
|
| 700 | - $tfadata = safe_unserialize($_COOKIE[$cookiename . '_tfa']); |
|
| 724 | + if (is_null($tfadata)) { |
|
| 725 | + $tfadata = safe_unserialize($_COOKIE[$cookiename . '_tfa']); |
|
| 726 | + } |
|
| 701 | 727 | |
| 702 | 728 | list ($tfamember, $tfasecret, $exp, $state, $preserve) = $tfadata; |
| 703 | 729 | |
| 704 | 730 | // If we're preserving the cookie, reset it with updated salt |
| 705 | - if ($preserve && time() < $exp) |
|
| 706 | - setTFACookie(3153600, $user_info['id'], hash_salt($user_settings['tfa_backup'], $salt), true); |
|
| 707 | - else |
|
| 708 | - setTFACookie(-3600, 0, ''); |
|
| 731 | + if ($preserve && time() < $exp) { |
|
| 732 | + setTFACookie(3153600, $user_info['id'], hash_salt($user_settings['tfa_backup'], $salt), true); |
|
| 733 | + } else { |
|
| 734 | + setTFACookie(-3600, 0, ''); |
|
| 735 | + } |
|
| 709 | 736 | } |
| 710 | 737 | |
| 711 | 738 | session_destroy(); |
@@ -713,14 +740,13 @@ discard block |
||
| 713 | 740 | // Off to the merry board index we go! |
| 714 | 741 | if ($redirect) |
| 715 | 742 | { |
| 716 | - if (empty($_SESSION['logout_url'])) |
|
| 717 | - redirectexit('', $context['server']['needs_login_fix']); |
|
| 718 | - elseif (!empty($_SESSION['logout_url']) && (strpos($_SESSION['logout_url'], 'http://') === false && strpos($_SESSION['logout_url'], 'https://') === false)) |
|
| 743 | + if (empty($_SESSION['logout_url'])) { |
|
| 744 | + redirectexit('', $context['server']['needs_login_fix']); |
|
| 745 | + } elseif (!empty($_SESSION['logout_url']) && (strpos($_SESSION['logout_url'], 'http://') === false && strpos($_SESSION['logout_url'], 'https://') === false)) |
|
| 719 | 746 | { |
| 720 | 747 | unset ($_SESSION['logout_url']); |
| 721 | 748 | redirectexit(); |
| 722 | - } |
|
| 723 | - else |
|
| 749 | + } else |
|
| 724 | 750 | { |
| 725 | 751 | $temp = $_SESSION['logout_url']; |
| 726 | 752 | unset($_SESSION['logout_url']); |
@@ -753,8 +779,9 @@ discard block |
||
| 753 | 779 | function phpBB3_password_check($passwd, $passwd_hash) |
| 754 | 780 | { |
| 755 | 781 | // Too long or too short? |
| 756 | - if (strlen($passwd_hash) != 34) |
|
| 757 | - return; |
|
| 782 | + if (strlen($passwd_hash) != 34) { |
|
| 783 | + return; |
|
| 784 | + } |
|
| 758 | 785 | |
| 759 | 786 | // Range of characters allowed. |
| 760 | 787 | $range = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; |
@@ -766,8 +793,9 @@ discard block |
||
| 766 | 793 | $salt = substr($passwd_hash, 4, 8); |
| 767 | 794 | |
| 768 | 795 | $hash = md5($salt . $passwd, true); |
| 769 | - for (; $count != 0; --$count) |
|
| 770 | - $hash = md5($hash . $passwd, true); |
|
| 796 | + for (; $count != 0; --$count) { |
|
| 797 | + $hash = md5($hash . $passwd, true); |
|
| 798 | + } |
|
| 771 | 799 | |
| 772 | 800 | $output = substr($passwd_hash, 0, 12); |
| 773 | 801 | $i = 0; |
@@ -776,21 +804,25 @@ discard block |
||
| 776 | 804 | $value = ord($hash[$i++]); |
| 777 | 805 | $output .= $range[$value & 0x3f]; |
| 778 | 806 | |
| 779 | - if ($i < 16) |
|
| 780 | - $value |= ord($hash[$i]) << 8; |
|
| 807 | + if ($i < 16) { |
|
| 808 | + $value |= ord($hash[$i]) << 8; |
|
| 809 | + } |
|
| 781 | 810 | |
| 782 | 811 | $output .= $range[($value >> 6) & 0x3f]; |
| 783 | 812 | |
| 784 | - if ($i++ >= 16) |
|
| 785 | - break; |
|
| 813 | + if ($i++ >= 16) { |
|
| 814 | + break; |
|
| 815 | + } |
|
| 786 | 816 | |
| 787 | - if ($i < 16) |
|
| 788 | - $value |= ord($hash[$i]) << 16; |
|
| 817 | + if ($i < 16) { |
|
| 818 | + $value |= ord($hash[$i]) << 16; |
|
| 819 | + } |
|
| 789 | 820 | |
| 790 | 821 | $output .= $range[($value >> 12) & 0x3f]; |
| 791 | 822 | |
| 792 | - if ($i++ >= 16) |
|
| 793 | - break; |
|
| 823 | + if ($i++ >= 16) { |
|
| 824 | + break; |
|
| 825 | + } |
|
| 794 | 826 | |
| 795 | 827 | $output .= $range[($value >> 18) & 0x3f]; |
| 796 | 828 | } |
@@ -821,8 +853,9 @@ discard block |
||
| 821 | 853 | require_once($sourcedir . '/Subs-Auth.php'); |
| 822 | 854 | setLoginCookie(-3600, 0); |
| 823 | 855 | |
| 824 | - if (isset($_SESSION['login_' . $cookiename])) |
|
| 825 | - unset($_SESSION['login_' . $cookiename]); |
|
| 856 | + if (isset($_SESSION['login_' . $cookiename])) { |
|
| 857 | + unset($_SESSION['login_' . $cookiename]); |
|
| 858 | + } |
|
| 826 | 859 | } |
| 827 | 860 | |
| 828 | 861 | // We need a member! |
@@ -836,8 +869,9 @@ discard block |
||
| 836 | 869 | } |
| 837 | 870 | |
| 838 | 871 | // Right, have we got a flood value? |
| 839 | - if ($password_flood_value !== false) |
|
| 840 | - @list ($time_stamp, $number_tries) = explode('|', $password_flood_value); |
|
| 872 | + if ($password_flood_value !== false) { |
|
| 873 | + @list ($time_stamp, $number_tries) = explode('|', $password_flood_value); |
|
| 874 | + } |
|
| 841 | 875 | |
| 842 | 876 | // Timestamp or number of tries invalid? |
| 843 | 877 | if (empty($number_tries) || empty($time_stamp)) |
@@ -853,15 +887,17 @@ discard block |
||
| 853 | 887 | $number_tries = $time_stamp < time() - 20 ? 2 : $number_tries; |
| 854 | 888 | |
| 855 | 889 | // They are trying too fast, make them wait longer |
| 856 | - if ($time_stamp < time() - 10) |
|
| 857 | - $time_stamp = time(); |
|
| 890 | + if ($time_stamp < time() - 10) { |
|
| 891 | + $time_stamp = time(); |
|
| 892 | + } |
|
| 858 | 893 | } |
| 859 | 894 | |
| 860 | 895 | $number_tries++; |
| 861 | 896 | |
| 862 | 897 | // Broken the law? |
| 863 | - if ($number_tries > 5) |
|
| 864 | - fatal_lang_error('login_threshold_brute_fail', 'critical'); |
|
| 898 | + if ($number_tries > 5) { |
|
| 899 | + fatal_lang_error('login_threshold_brute_fail', 'critical'); |
|
| 900 | + } |
|
| 865 | 901 | |
| 866 | 902 | // Otherwise set the members data. If they correct on their first attempt then we actually clear it, otherwise we set it! |
| 867 | 903 | updateMemberData($id_member, array('passwd_flood' => $was_correct && $number_tries == 1 ? '' : $time_stamp . '|' . $number_tries)); |
@@ -13,8 +13,9 @@ discard block |
||
| 13 | 13 | * @version 2.1 Beta 3 |
| 14 | 14 | */ |
| 15 | 15 | |
| 16 | -if (!defined('SMF')) |
|
| 16 | +if (!defined('SMF')) { |
|
| 17 | 17 | die('No direct access...'); |
| 18 | +} |
|
| 18 | 19 | |
| 19 | 20 | /** |
| 20 | 21 | * Add the functions implemented in this file to the $smcFunc array. |
@@ -23,8 +24,8 @@ discard block |
||
| 23 | 24 | { |
| 24 | 25 | global $smcFunc; |
| 25 | 26 | |
| 26 | - if (!isset($smcFunc['db_backup_table']) || $smcFunc['db_backup_table'] != 'smf_db_backup_table') |
|
| 27 | - $smcFunc += array( |
|
| 27 | + if (!isset($smcFunc['db_backup_table']) || $smcFunc['db_backup_table'] != 'smf_db_backup_table') { |
|
| 28 | + $smcFunc += array( |
|
| 28 | 29 | 'db_backup_table' => 'smf_db_backup_table', |
| 29 | 30 | 'db_optimize_table' => 'smf_db_optimize_table', |
| 30 | 31 | 'db_table_sql' => 'smf_db_table_sql', |
@@ -32,7 +33,8 @@ discard block |
||
| 32 | 33 | 'db_get_version' => 'smf_db_get_version', |
| 33 | 34 | 'db_get_engine' => 'smf_db_get_engine', |
| 34 | 35 | ); |
| 35 | -} |
|
| 36 | + } |
|
| 37 | + } |
|
| 36 | 38 | |
| 37 | 39 | /** |
| 38 | 40 | * Backup $table to $backup_table. |
@@ -74,8 +76,9 @@ discard block |
||
| 74 | 76 | )); |
| 75 | 77 | |
| 76 | 78 | // Old school or no school? |
| 77 | - if ($request) |
|
| 78 | - return $request; |
|
| 79 | + if ($request) { |
|
| 80 | + return $request; |
|
| 81 | + } |
|
| 79 | 82 | } |
| 80 | 83 | |
| 81 | 84 | // At this point, the quick method failed. |
@@ -99,8 +102,9 @@ discard block |
||
| 99 | 102 | foreach ($create as $k => $l) |
| 100 | 103 | { |
| 101 | 104 | // Get the name of the auto_increment column. |
| 102 | - if (strpos($l, 'auto_increment')) |
|
| 103 | - $auto_inc = trim($l); |
|
| 105 | + if (strpos($l, 'auto_increment')) { |
|
| 106 | + $auto_inc = trim($l); |
|
| 107 | + } |
|
| 104 | 108 | |
| 105 | 109 | // For the engine type, see if we can work out what it is. |
| 106 | 110 | if (strpos($l, 'ENGINE') !== false || strpos($l, 'TYPE') !== false) |
@@ -108,30 +112,36 @@ discard block |
||
| 108 | 112 | // Extract the engine type. |
| 109 | 113 | preg_match('~(ENGINE|TYPE)=(\w+)(\sDEFAULT)?(\sCHARSET=(\w+))?(\sCOLLATE=(\w+))?~', $l, $match); |
| 110 | 114 | |
| 111 | - if (!empty($match[1])) |
|
| 112 | - $engine = $match[1]; |
|
| 115 | + if (!empty($match[1])) { |
|
| 116 | + $engine = $match[1]; |
|
| 117 | + } |
|
| 113 | 118 | |
| 114 | - if (!empty($match[2])) |
|
| 115 | - $engine = $match[2]; |
|
| 119 | + if (!empty($match[2])) { |
|
| 120 | + $engine = $match[2]; |
|
| 121 | + } |
|
| 116 | 122 | |
| 117 | - if (!empty($match[5])) |
|
| 118 | - $charset = $match[5]; |
|
| 123 | + if (!empty($match[5])) { |
|
| 124 | + $charset = $match[5]; |
|
| 125 | + } |
|
| 119 | 126 | |
| 120 | - if (!empty($match[7])) |
|
| 121 | - $collate = $match[7]; |
|
| 127 | + if (!empty($match[7])) { |
|
| 128 | + $collate = $match[7]; |
|
| 129 | + } |
|
| 122 | 130 | } |
| 123 | 131 | |
| 124 | 132 | // Skip everything but keys... |
| 125 | - if (strpos($l, 'KEY') === false) |
|
| 126 | - unset($create[$k]); |
|
| 133 | + if (strpos($l, 'KEY') === false) { |
|
| 134 | + unset($create[$k]); |
|
| 135 | + } |
|
| 127 | 136 | } |
| 128 | 137 | |
| 129 | - if (!empty($create)) |
|
| 130 | - $create = '( |
|
| 138 | + if (!empty($create)) { |
|
| 139 | + $create = '( |
|
| 131 | 140 | ' . implode(' |
| 132 | 141 | ', $create) . ')'; |
| 133 | - else |
|
| 134 | - $create = ''; |
|
| 142 | + } else { |
|
| 143 | + $create = ''; |
|
| 144 | + } |
|
| 135 | 145 | |
| 136 | 146 | $request = $smcFunc['db_query']('', ' |
| 137 | 147 | CREATE TABLE {raw:backup_table} {raw:create} |
@@ -150,8 +160,9 @@ discard block |
||
| 150 | 160 | |
| 151 | 161 | if ($auto_inc != '') |
| 152 | 162 | { |
| 153 | - if (preg_match('~\`(.+?)\`\s~', $auto_inc, $match) != 0 && substr($auto_inc, -1, 1) == ',') |
|
| 154 | - $auto_inc = substr($auto_inc, 0, -1); |
|
| 163 | + if (preg_match('~\`(.+?)\`\s~', $auto_inc, $match) != 0 && substr($auto_inc, -1, 1) == ',') { |
|
| 164 | + $auto_inc = substr($auto_inc, 0, -1); |
|
| 165 | + } |
|
| 155 | 166 | |
| 156 | 167 | $smcFunc['db_query']('', ' |
| 157 | 168 | ALTER TABLE {raw:backup_table} |
@@ -195,8 +206,9 @@ discard block |
||
| 195 | 206 | 'table' => $table, |
| 196 | 207 | ) |
| 197 | 208 | ); |
| 198 | - if (!$request) |
|
| 199 | - return -1; |
|
| 209 | + if (!$request) { |
|
| 210 | + return -1; |
|
| 211 | + } |
|
| 200 | 212 | |
| 201 | 213 | // How much left? |
| 202 | 214 | $request = $smcFunc['db_query']('', ' |
@@ -239,8 +251,9 @@ discard block |
||
| 239 | 251 | ) |
| 240 | 252 | ); |
| 241 | 253 | $tables = array(); |
| 242 | - while ($row = $smcFunc['db_fetch_row']($request)) |
|
| 243 | - $tables[] = $row[0]; |
|
| 254 | + while ($row = $smcFunc['db_fetch_row']($request)) { |
|
| 255 | + $tables[] = $row[0]; |
|
| 256 | + } |
|
| 244 | 257 | $smcFunc['db_free_result']($request); |
| 245 | 258 | |
| 246 | 259 | return $tables; |
@@ -284,8 +297,9 @@ discard block |
||
| 284 | 297 | if (!empty($row['Default']) || $row['Null'] !== 'YES') |
| 285 | 298 | { |
| 286 | 299 | // Make a special case of auto-timestamp. |
| 287 | - if ($row['Default'] == 'CURRENT_TIMESTAMP') |
|
| 288 | - $schema_create .= ' /*!40102 NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP */'; |
|
| 300 | + if ($row['Default'] == 'CURRENT_TIMESTAMP') { |
|
| 301 | + $schema_create .= ' /*!40102 NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP */'; |
|
| 302 | + } |
|
| 289 | 303 | // Text shouldn't have a default. |
| 290 | 304 | elseif ($row['Default'] !== null) |
| 291 | 305 | { |
@@ -320,14 +334,16 @@ discard block |
||
| 320 | 334 | $row['Key_name'] = $row['Key_name'] == 'PRIMARY' ? 'PRIMARY KEY' : (empty($row['Non_unique']) ? 'UNIQUE ' : ($row['Comment'] == 'FULLTEXT' || (isset($row['Index_type']) && $row['Index_type'] == 'FULLTEXT') ? 'FULLTEXT ' : 'KEY ')) . '`' . $row['Key_name'] . '`'; |
| 321 | 335 | |
| 322 | 336 | // Is this the first column in the index? |
| 323 | - if (empty($indexes[$row['Key_name']])) |
|
| 324 | - $indexes[$row['Key_name']] = array(); |
|
| 337 | + if (empty($indexes[$row['Key_name']])) { |
|
| 338 | + $indexes[$row['Key_name']] = array(); |
|
| 339 | + } |
|
| 325 | 340 | |
| 326 | 341 | // A sub part, like only indexing 15 characters of a varchar. |
| 327 | - if (!empty($row['Sub_part'])) |
|
| 328 | - $indexes[$row['Key_name']][$row['Seq_in_index']] = '`' . $row['Column_name'] . '`(' . $row['Sub_part'] . ')'; |
|
| 329 | - else |
|
| 330 | - $indexes[$row['Key_name']][$row['Seq_in_index']] = '`' . $row['Column_name'] . '`'; |
|
| 342 | + if (!empty($row['Sub_part'])) { |
|
| 343 | + $indexes[$row['Key_name']][$row['Seq_in_index']] = '`' . $row['Column_name'] . '`(' . $row['Sub_part'] . ')'; |
|
| 344 | + } else { |
|
| 345 | + $indexes[$row['Key_name']][$row['Seq_in_index']] = '`' . $row['Column_name'] . '`'; |
|
| 346 | + } |
|
| 331 | 347 | } |
| 332 | 348 | $smcFunc['db_free_result']($result); |
| 333 | 349 | |
@@ -365,8 +381,9 @@ discard block |
||
| 365 | 381 | { |
| 366 | 382 | static $ver; |
| 367 | 383 | |
| 368 | - if (!empty($ver)) |
|
| 369 | - return $ver; |
|
| 384 | + if (!empty($ver)) { |
|
| 385 | + return $ver; |
|
| 386 | + } |
|
| 370 | 387 | |
| 371 | 388 | global $smcFunc; |
| 372 | 389 | |
@@ -391,8 +408,9 @@ discard block |
||
| 391 | 408 | global $smcFunc; |
| 392 | 409 | static $db_type; |
| 393 | 410 | |
| 394 | - if (!empty($db_type)) |
|
| 395 | - return $db_type; |
|
| 411 | + if (!empty($db_type)) { |
|
| 412 | + return $db_type; |
|
| 413 | + } |
|
| 396 | 414 | |
| 397 | 415 | $request = $smcFunc['db_query']('', 'SELECT @@version_comment'); |
| 398 | 416 | list ($comment) = $smcFunc['db_fetch_row']($request); |
@@ -401,13 +419,15 @@ discard block |
||
| 401 | 419 | // Skip these if we don't have a comment. |
| 402 | 420 | if (!empty($comment)) |
| 403 | 421 | { |
| 404 | - if (stripos($comment, 'percona') !== false) |
|
| 405 | - return 'Percona'; |
|
| 406 | - if (stripos($comment, 'mariadb') !== false) |
|
| 407 | - return 'MariaDB'; |
|
| 422 | + if (stripos($comment, 'percona') !== false) { |
|
| 423 | + return 'Percona'; |
|
| 424 | + } |
|
| 425 | + if (stripos($comment, 'mariadb') !== false) { |
|
| 426 | + return 'MariaDB'; |
|
| 427 | + } |
|
| 428 | + } else { |
|
| 429 | + return 'fail'; |
|
| 408 | 430 | } |
| 409 | - else |
|
| 410 | - return 'fail'; |
|
| 411 | 431 | |
| 412 | 432 | return 'MySQL'; |
| 413 | 433 | } |
@@ -13,8 +13,9 @@ discard block |
||
| 13 | 13 | * @version 2.1 Beta 3 |
| 14 | 14 | */ |
| 15 | 15 | |
| 16 | -if (!defined('SMF')) |
|
| 16 | +if (!defined('SMF')) { |
|
| 17 | 17 | die('No direct access...'); |
| 18 | +} |
|
| 18 | 19 | |
| 19 | 20 | /** |
| 20 | 21 | * Gets a single theme's info. |
@@ -27,8 +28,9 @@ discard block |
||
| 27 | 28 | global $smcFunc, $modSettings; |
| 28 | 29 | |
| 29 | 30 | // No data, no fun! |
| 30 | - if (empty($id)) |
|
| 31 | - return false; |
|
| 31 | + if (empty($id)) { |
|
| 32 | + return false; |
|
| 33 | + } |
|
| 32 | 34 | |
| 33 | 35 | // Make sure $id is an int. |
| 34 | 36 | $id = (int) $id; |
@@ -171,8 +173,9 @@ discard block |
||
| 171 | 173 | global $sourcedir, $forum_version, $txt, $scripturl, $context; |
| 172 | 174 | global $explicit_images; |
| 173 | 175 | |
| 174 | - if (empty($path)) |
|
| 175 | - return false; |
|
| 176 | + if (empty($path)) { |
|
| 177 | + return false; |
|
| 178 | + } |
|
| 176 | 179 | |
| 177 | 180 | $xml_data = array(); |
| 178 | 181 | $explicit_images = false; |
@@ -229,9 +232,10 @@ discard block |
||
| 229 | 232 | ); |
| 230 | 233 | |
| 231 | 234 | // Assign the values to be stored. |
| 232 | - foreach ($xml_elements as $var => $name) |
|
| 233 | - if (!empty($theme_info_xml[$name])) |
|
| 235 | + foreach ($xml_elements as $var => $name) { |
|
| 236 | + if (!empty($theme_info_xml[$name])) |
|
| 234 | 237 | $xml_data[$var] = $theme_info_xml[$name]; |
| 238 | + } |
|
| 235 | 239 | |
| 236 | 240 | // Add the supported versions. |
| 237 | 241 | $xml_data['install_for'] = $install_versions; |
@@ -243,8 +247,9 @@ discard block |
||
| 243 | 247 | $explicit_images = true; |
| 244 | 248 | } |
| 245 | 249 | |
| 246 | - if (!empty($theme_info_xml['extra'])) |
|
| 247 | - $xml_data += smf_json_decode($theme_info_xml['extra'], true); |
|
| 250 | + if (!empty($theme_info_xml['extra'])) { |
|
| 251 | + $xml_data += smf_json_decode($theme_info_xml['extra'], true); |
|
| 252 | + } |
|
| 248 | 253 | |
| 249 | 254 | return $xml_data; |
| 250 | 255 | } |
@@ -262,12 +267,14 @@ discard block |
||
| 262 | 267 | global $settings, $explicit_images; |
| 263 | 268 | |
| 264 | 269 | // External use? no problem! |
| 265 | - if ($to_install) |
|
| 266 | - $context['to_install'] = $to_install; |
|
| 270 | + if ($to_install) { |
|
| 271 | + $context['to_install'] = $to_install; |
|
| 272 | + } |
|
| 267 | 273 | |
| 268 | 274 | // One last check. |
| 269 | - if (empty($context['to_install']['theme_dir']) || basename($context['to_install']['theme_dir']) == 'Themes') |
|
| 270 | - fatal_lang_error('theme_install_invalid_dir', false); |
|
| 275 | + if (empty($context['to_install']['theme_dir']) || basename($context['to_install']['theme_dir']) == 'Themes') { |
|
| 276 | + fatal_lang_error('theme_install_invalid_dir', false); |
|
| 277 | + } |
|
| 271 | 278 | |
| 272 | 279 | // OK, is this a newer version of an already installed theme? |
| 273 | 280 | if (!empty($context['to_install']['version'])) |
@@ -292,8 +299,8 @@ discard block |
||
| 292 | 299 | $smcFunc['db_free_result']($request); |
| 293 | 300 | |
| 294 | 301 | // Got something, lets figure it out what to do next. |
| 295 | - if (!empty($to_update) && !empty($to_update['version'])) |
|
| 296 | - switch (compareVersions($context['to_install']['version'], $to_update['version'])) |
|
| 302 | + if (!empty($to_update) && !empty($to_update['version'])) { |
|
| 303 | + switch (compareVersions($context['to_install']['version'], $to_update['version'])) |
|
| 297 | 304 | { |
| 298 | 305 | case 1: // Got a newer version, update the old entry. |
| 299 | 306 | $smcFunc['db_query']('', ' |
@@ -307,6 +314,7 @@ discard block |
||
| 307 | 314 | 'id_theme' => $to_update['id_theme'], |
| 308 | 315 | ) |
| 309 | 316 | ); |
| 317 | + } |
|
| 310 | 318 | |
| 311 | 319 | // Done with the update, tell the user about it. |
| 312 | 320 | $context['to_install']['updated'] = true; |
@@ -372,13 +380,15 @@ discard block |
||
| 372 | 380 | $context['to_install']['base_theme_url'] = $temp['theme_url']; |
| 373 | 381 | $context['to_install']['base_theme_dir'] = $temp['theme_dir']; |
| 374 | 382 | |
| 375 | - if (empty($explicit_images) && !empty($context['to_install']['base_theme_url'])) |
|
| 376 | - $context['to_install']['theme_url'] = $context['to_install']['base_theme_url']; |
|
| 383 | + if (empty($explicit_images) && !empty($context['to_install']['base_theme_url'])) { |
|
| 384 | + $context['to_install']['theme_url'] = $context['to_install']['base_theme_url']; |
|
| 385 | + } |
|
| 377 | 386 | } |
| 378 | 387 | |
| 379 | 388 | // Nope, sorry, couldn't find any theme already installed. |
| 380 | - else |
|
| 381 | - fatal_lang_error('package_get_error_theme_no_based_on_found', false, $context['to_install']['based_on']); |
|
| 389 | + else { |
|
| 390 | + fatal_lang_error('package_get_error_theme_no_based_on_found', false, $context['to_install']['based_on']); |
|
| 391 | + } |
|
| 382 | 392 | } |
| 383 | 393 | |
| 384 | 394 | unset($context['to_install']['based_on']); |
@@ -401,16 +411,18 @@ discard block |
||
| 401 | 411 | call_integration_hook('integrate_theme_install', array(&$context['to_install'], $id_theme)); |
| 402 | 412 | |
| 403 | 413 | $inserts = array(); |
| 404 | - foreach ($context['to_install'] as $var => $val) |
|
| 405 | - $inserts[] = array($id_theme, $var, $val); |
|
| 414 | + foreach ($context['to_install'] as $var => $val) { |
|
| 415 | + $inserts[] = array($id_theme, $var, $val); |
|
| 416 | + } |
|
| 406 | 417 | |
| 407 | - if (!empty($inserts)) |
|
| 408 | - $smcFunc['db_insert']('insert', |
|
| 418 | + if (!empty($inserts)) { |
|
| 419 | + $smcFunc['db_insert']('insert', |
|
| 409 | 420 | '{db_prefix}themes', |
| 410 | 421 | array('id_theme' => 'int', 'variable' => 'string-255', 'value' => 'string-65534'), |
| 411 | 422 | $inserts, |
| 412 | 423 | array('id_theme', 'variable') |
| 413 | 424 | ); |
| 425 | + } |
|
| 414 | 426 | |
| 415 | 427 | // Update the known and enable Theme's settings. |
| 416 | 428 | $known = strtr($modSettings['knownThemes'] . ',' . $id_theme, array(',,' => ',')); |
@@ -429,21 +441,24 @@ discard block |
||
| 429 | 441 | */ |
| 430 | 442 | function remove_dir($path) |
| 431 | 443 | { |
| 432 | - if (empty($path)) |
|
| 433 | - return false; |
|
| 444 | + if (empty($path)) { |
|
| 445 | + return false; |
|
| 446 | + } |
|
| 434 | 447 | |
| 435 | 448 | if (is_dir($path)) |
| 436 | 449 | { |
| 437 | 450 | $objects = scandir($path); |
| 438 | 451 | |
| 439 | - foreach ($objects as $object) |
|
| 440 | - if ($object != '.' && $object != '..') |
|
| 452 | + foreach ($objects as $object) { |
|
| 453 | + if ($object != '.' && $object != '..') |
|
| 441 | 454 | { |
| 442 | 455 | if (filetype($path . '/' . $object) == 'dir') |
| 443 | 456 | remove_dir($path . '/' . $object); |
| 457 | + } |
|
| 444 | 458 | |
| 445 | - else |
|
| 446 | - unlink($path . '/' . $object); |
|
| 459 | + else { |
|
| 460 | + unlink($path . '/' . $object); |
|
| 461 | + } |
|
| 447 | 462 | } |
| 448 | 463 | } |
| 449 | 464 | |
@@ -462,8 +477,9 @@ discard block |
||
| 462 | 477 | global $smcFunc, $modSettings; |
| 463 | 478 | |
| 464 | 479 | // Can't delete the default theme, sorry! |
| 465 | - if (empty($themeID) || $themeID == 1) |
|
| 466 | - return false; |
|
| 480 | + if (empty($themeID) || $themeID == 1) { |
|
| 481 | + return false; |
|
| 482 | + } |
|
| 467 | 483 | |
| 468 | 484 | $known = explode(',', $modSettings['knownThemes']); |
| 469 | 485 | $enable = explode(',', $modSettings['enableThemes']); |
@@ -513,8 +529,9 @@ discard block |
||
| 513 | 529 | updateSettings(array('enableThemes' => $enable, 'knownThemes' => $known)); |
| 514 | 530 | |
| 515 | 531 | // Fix it if the theme was the overall default theme. |
| 516 | - if ($modSettings['theme_guests'] == $themeID) |
|
| 517 | - updateSettings(array('theme_guests' => '1')); |
|
| 532 | + if ($modSettings['theme_guests'] == $themeID) { |
|
| 533 | + updateSettings(array('theme_guests' => '1')); |
|
| 534 | + } |
|
| 518 | 535 | |
| 519 | 536 | return true; |
| 520 | 537 | } |
@@ -531,13 +548,15 @@ discard block |
||
| 531 | 548 | global $scripturl, $txt, $context; |
| 532 | 549 | |
| 533 | 550 | // Is it even a directory? |
| 534 | - if (!is_dir($path)) |
|
| 535 | - fatal_lang_error('error_invalid_dir', 'critical'); |
|
| 551 | + if (!is_dir($path)) { |
|
| 552 | + fatal_lang_error('error_invalid_dir', 'critical'); |
|
| 553 | + } |
|
| 536 | 554 | |
| 537 | 555 | $dir = dir($path); |
| 538 | 556 | $entries = array(); |
| 539 | - while ($entry = $dir->read()) |
|
| 540 | - $entries[] = $entry; |
|
| 557 | + while ($entry = $dir->read()) { |
|
| 558 | + $entries[] = $entry; |
|
| 559 | + } |
|
| 541 | 560 | $dir->close(); |
| 542 | 561 | |
| 543 | 562 | natcasesort($entries); |
@@ -548,11 +567,12 @@ discard block |
||
| 548 | 567 | foreach ($entries as $entry) |
| 549 | 568 | { |
| 550 | 569 | // Skip all dot files, including .htaccess. |
| 551 | - if (substr($entry, 0, 1) == '.' || $entry == 'CVS') |
|
| 552 | - continue; |
|
| 570 | + if (substr($entry, 0, 1) == '.' || $entry == 'CVS') { |
|
| 571 | + continue; |
|
| 572 | + } |
|
| 553 | 573 | |
| 554 | - if (is_dir($path . '/' . $entry)) |
|
| 555 | - $listing1[] = array( |
|
| 574 | + if (is_dir($path . '/' . $entry)) { |
|
| 575 | + $listing1[] = array( |
|
| 556 | 576 | 'filename' => $entry, |
| 557 | 577 | 'is_writable' => is_writable($path . '/' . $entry), |
| 558 | 578 | 'is_directory' => true, |
@@ -562,13 +582,14 @@ discard block |
||
| 562 | 582 | 'href' => $scripturl . '?action=admin;area=theme;th=' . $_GET['th'] . ';' . $context['session_var'] . '=' . $context['session_id'] . ';sa=edit;directory=' . $relative . $entry, |
| 563 | 583 | 'size' => '', |
| 564 | 584 | ); |
| 565 | - else |
|
| 585 | + } else |
|
| 566 | 586 | { |
| 567 | 587 | $size = filesize($path . '/' . $entry); |
| 568 | - if ($size > 2048 || $size == 1024) |
|
| 569 | - $size = comma_format($size / 1024) . ' ' . $txt['themeadmin_edit_kilobytes']; |
|
| 570 | - else |
|
| 571 | - $size = comma_format($size) . ' ' . $txt['themeadmin_edit_bytes']; |
|
| 588 | + if ($size > 2048 || $size == 1024) { |
|
| 589 | + $size = comma_format($size / 1024) . ' ' . $txt['themeadmin_edit_kilobytes']; |
|
| 590 | + } else { |
|
| 591 | + $size = comma_format($size) . ' ' . $txt['themeadmin_edit_bytes']; |
|
| 592 | + } |
|
| 572 | 593 | |
| 573 | 594 | $listing2[] = array( |
| 574 | 595 | 'filename' => $entry, |
@@ -14,8 +14,9 @@ discard block |
||
| 14 | 14 | * @version 2.1 Beta 3 |
| 15 | 15 | */ |
| 16 | 16 | |
| 17 | -if (!defined('SMF')) |
|
| 17 | +if (!defined('SMF')) { |
|
| 18 | 18 | die('No direct access...'); |
| 19 | +} |
|
| 19 | 20 | |
| 20 | 21 | /** |
| 21 | 22 | * Clean the request variables - add html entities to GET and slashes if magic_quotes_gpc is Off. |
@@ -44,22 +45,26 @@ discard block |
||
| 44 | 45 | unset($GLOBALS['HTTP_POST_FILES'], $GLOBALS['HTTP_POST_FILES']); |
| 45 | 46 | |
| 46 | 47 | // These keys shouldn't be set...ever. |
| 47 | - if (isset($_REQUEST['GLOBALS']) || isset($_COOKIE['GLOBALS'])) |
|
| 48 | - die('Invalid request variable.'); |
|
| 48 | + if (isset($_REQUEST['GLOBALS']) || isset($_COOKIE['GLOBALS'])) { |
|
| 49 | + die('Invalid request variable.'); |
|
| 50 | + } |
|
| 49 | 51 | |
| 50 | 52 | // Same goes for numeric keys. |
| 51 | - foreach (array_merge(array_keys($_POST), array_keys($_GET), array_keys($_FILES)) as $key) |
|
| 52 | - if (is_numeric($key)) |
|
| 53 | + foreach (array_merge(array_keys($_POST), array_keys($_GET), array_keys($_FILES)) as $key) { |
|
| 54 | + if (is_numeric($key)) |
|
| 53 | 55 | die('Numeric request keys are invalid.'); |
| 56 | + } |
|
| 54 | 57 | |
| 55 | 58 | // Numeric keys in cookies are less of a problem. Just unset those. |
| 56 | - foreach ($_COOKIE as $key => $value) |
|
| 57 | - if (is_numeric($key)) |
|
| 59 | + foreach ($_COOKIE as $key => $value) { |
|
| 60 | + if (is_numeric($key)) |
|
| 58 | 61 | unset($_COOKIE[$key]); |
| 62 | + } |
|
| 59 | 63 | |
| 60 | 64 | // Get the correct query string. It may be in an environment variable... |
| 61 | - if (!isset($_SERVER['QUERY_STRING'])) |
|
| 62 | - $_SERVER['QUERY_STRING'] = getenv('QUERY_STRING'); |
|
| 65 | + if (!isset($_SERVER['QUERY_STRING'])) { |
|
| 66 | + $_SERVER['QUERY_STRING'] = getenv('QUERY_STRING'); |
|
| 67 | + } |
|
| 63 | 68 | |
| 64 | 69 | // It seems that sticking a URL after the query string is mighty common, well, it's evil - don't. |
| 65 | 70 | if (strpos($_SERVER['QUERY_STRING'], 'http') === 0) |
@@ -83,13 +88,14 @@ discard block |
||
| 83 | 88 | parse_str(preg_replace('/&(\w+)(?=&|$)/', '&$1=', strtr($_SERVER['QUERY_STRING'], array(';?' => '&', ';' => '&', '%00' => '', "\0" => ''))), $_GET); |
| 84 | 89 | |
| 85 | 90 | // Magic quotes still applies with parse_str - so clean it up. |
| 86 | - if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) |
|
| 87 | - $_GET = $removeMagicQuoteFunction($_GET); |
|
| 88 | - } |
|
| 89 | - elseif (strpos(ini_get('arg_separator.input'), ';') !== false) |
|
| 91 | + if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) { |
|
| 92 | + $_GET = $removeMagicQuoteFunction($_GET); |
|
| 93 | + } |
|
| 94 | + } elseif (strpos(ini_get('arg_separator.input'), ';') !== false) |
|
| 90 | 95 | { |
| 91 | - if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) |
|
| 92 | - $_GET = $removeMagicQuoteFunction($_GET); |
|
| 96 | + if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) { |
|
| 97 | + $_GET = $removeMagicQuoteFunction($_GET); |
|
| 98 | + } |
|
| 93 | 99 | |
| 94 | 100 | // Search engines will send action=profile%3Bu=1, which confuses PHP. |
| 95 | 101 | foreach ($_GET as $k => $v) |
@@ -102,8 +108,9 @@ discard block |
||
| 102 | 108 | for ($i = 1, $n = count($temp); $i < $n; $i++) |
| 103 | 109 | { |
| 104 | 110 | @list ($key, $val) = @explode('=', $temp[$i], 2); |
| 105 | - if (!isset($_GET[$key])) |
|
| 106 | - $_GET[$key] = $val; |
|
| 111 | + if (!isset($_GET[$key])) { |
|
| 112 | + $_GET[$key] = $val; |
|
| 113 | + } |
|
| 107 | 114 | } |
| 108 | 115 | } |
| 109 | 116 | |
@@ -120,18 +127,20 @@ discard block |
||
| 120 | 127 | if (!empty($_SERVER['REQUEST_URI'])) |
| 121 | 128 | { |
| 122 | 129 | // Remove the .html, assuming there is one. |
| 123 | - if (substr($_SERVER['REQUEST_URI'], strrpos($_SERVER['REQUEST_URI'], '.'), 4) == '.htm') |
|
| 124 | - $request = substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '.')); |
|
| 125 | - else |
|
| 126 | - $request = $_SERVER['REQUEST_URI']; |
|
| 130 | + if (substr($_SERVER['REQUEST_URI'], strrpos($_SERVER['REQUEST_URI'], '.'), 4) == '.htm') { |
|
| 131 | + $request = substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '.')); |
|
| 132 | + } else { |
|
| 133 | + $request = $_SERVER['REQUEST_URI']; |
|
| 134 | + } |
|
| 127 | 135 | |
| 128 | 136 | // @todo smflib. |
| 129 | 137 | // Replace 'index.php/a,b,c/d/e,f' with 'a=b,c&d=&e=f' and parse it into $_GET. |
| 130 | 138 | if (strpos($request, basename($scripturl) . '/') !== false) |
| 131 | 139 | { |
| 132 | 140 | parse_str(substr(preg_replace('/&(\w+)(?=&|$)/', '&$1=', strtr(preg_replace('~/([^,/]+),~', '/$1=', substr($request, strpos($request, basename($scripturl)) + strlen(basename($scripturl)))), '/', '&')), 1), $temp); |
| 133 | - if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) |
|
| 134 | - $temp = $removeMagicQuoteFunction($temp); |
|
| 141 | + if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() != 0 && empty($modSettings['integrate_magic_quotes'])) { |
|
| 142 | + $temp = $removeMagicQuoteFunction($temp); |
|
| 143 | + } |
|
| 135 | 144 | $_GET += $temp; |
| 136 | 145 | } |
| 137 | 146 | } |
@@ -142,9 +151,10 @@ discard block |
||
| 142 | 151 | $_ENV = $removeMagicQuoteFunction($_ENV); |
| 143 | 152 | $_POST = $removeMagicQuoteFunction($_POST); |
| 144 | 153 | $_COOKIE = $removeMagicQuoteFunction($_COOKIE); |
| 145 | - foreach ($_FILES as $k => $dummy) |
|
| 146 | - if (isset($_FILES[$k]['name'])) |
|
| 154 | + foreach ($_FILES as $k => $dummy) { |
|
| 155 | + if (isset($_FILES[$k]['name'])) |
|
| 147 | 156 | $_FILES[$k]['name'] = $removeMagicQuoteFunction($_FILES[$k]['name']); |
| 157 | + } |
|
| 148 | 158 | } |
| 149 | 159 | |
| 150 | 160 | // Add entities to GET. This is kinda like the slashes on everything else. |
@@ -160,11 +170,13 @@ discard block |
||
| 160 | 170 | $_REQUEST['board'] = (string) $_REQUEST['board']; |
| 161 | 171 | |
| 162 | 172 | // If there's a slash in it, we've got a start value! (old, compatible links.) |
| 163 | - if (strpos($_REQUEST['board'], '/') !== false) |
|
| 164 | - list ($_REQUEST['board'], $_REQUEST['start']) = explode('/', $_REQUEST['board']); |
|
| 173 | + if (strpos($_REQUEST['board'], '/') !== false) { |
|
| 174 | + list ($_REQUEST['board'], $_REQUEST['start']) = explode('/', $_REQUEST['board']); |
|
| 175 | + } |
|
| 165 | 176 | // Same idea, but dots. This is the currently used format - ?board=1.0... |
| 166 | - elseif (strpos($_REQUEST['board'], '.') !== false) |
|
| 167 | - list ($_REQUEST['board'], $_REQUEST['start']) = explode('.', $_REQUEST['board']); |
|
| 177 | + elseif (strpos($_REQUEST['board'], '.') !== false) { |
|
| 178 | + list ($_REQUEST['board'], $_REQUEST['start']) = explode('.', $_REQUEST['board']); |
|
| 179 | + } |
|
| 168 | 180 | // Now make absolutely sure it's a number. |
| 169 | 181 | $board = (int) $_REQUEST['board']; |
| 170 | 182 | $_REQUEST['start'] = isset($_REQUEST['start']) ? (int) $_REQUEST['start'] : 0; |
@@ -173,12 +185,14 @@ discard block |
||
| 173 | 185 | $_GET['board'] = $board; |
| 174 | 186 | } |
| 175 | 187 | // Well, $board is going to be a number no matter what. |
| 176 | - else |
|
| 177 | - $board = 0; |
|
| 188 | + else { |
|
| 189 | + $board = 0; |
|
| 190 | + } |
|
| 178 | 191 | |
| 179 | 192 | // If there's a threadid, it's probably an old YaBB SE link. Flow with it. |
| 180 | - if (isset($_REQUEST['threadid']) && !isset($_REQUEST['topic'])) |
|
| 181 | - $_REQUEST['topic'] = $_REQUEST['threadid']; |
|
| 193 | + if (isset($_REQUEST['threadid']) && !isset($_REQUEST['topic'])) { |
|
| 194 | + $_REQUEST['topic'] = $_REQUEST['threadid']; |
|
| 195 | + } |
|
| 182 | 196 | |
| 183 | 197 | // We've got topic! |
| 184 | 198 | if (isset($_REQUEST['topic'])) |
@@ -187,29 +201,34 @@ discard block |
||
| 187 | 201 | $_REQUEST['topic'] = (string) $_REQUEST['topic']; |
| 188 | 202 | |
| 189 | 203 | // Slash means old, beta style, formatting. That's okay though, the link should still work. |
| 190 | - if (strpos($_REQUEST['topic'], '/') !== false) |
|
| 191 | - list ($_REQUEST['topic'], $_REQUEST['start']) = explode('/', $_REQUEST['topic']); |
|
| 204 | + if (strpos($_REQUEST['topic'], '/') !== false) { |
|
| 205 | + list ($_REQUEST['topic'], $_REQUEST['start']) = explode('/', $_REQUEST['topic']); |
|
| 206 | + } |
|
| 192 | 207 | // Dots are useful and fun ;). This is ?topic=1.15. |
| 193 | - elseif (strpos($_REQUEST['topic'], '.') !== false) |
|
| 194 | - list ($_REQUEST['topic'], $_REQUEST['start']) = explode('.', $_REQUEST['topic']); |
|
| 208 | + elseif (strpos($_REQUEST['topic'], '.') !== false) { |
|
| 209 | + list ($_REQUEST['topic'], $_REQUEST['start']) = explode('.', $_REQUEST['topic']); |
|
| 210 | + } |
|
| 195 | 211 | |
| 196 | 212 | $topic = (int) $_REQUEST['topic']; |
| 197 | 213 | |
| 198 | 214 | // Now make sure the online log gets the right number. |
| 199 | 215 | $_GET['topic'] = $topic; |
| 216 | + } else { |
|
| 217 | + $topic = 0; |
|
| 200 | 218 | } |
| 201 | - else |
|
| 202 | - $topic = 0; |
|
| 203 | 219 | |
| 204 | 220 | // There should be a $_REQUEST['start'], some at least. If you need to default to other than 0, use $_GET['start']. |
| 205 | - if (empty($_REQUEST['start']) || $_REQUEST['start'] < 0 || (int) $_REQUEST['start'] > 2147473647) |
|
| 206 | - $_REQUEST['start'] = 0; |
|
| 221 | + if (empty($_REQUEST['start']) || $_REQUEST['start'] < 0 || (int) $_REQUEST['start'] > 2147473647) { |
|
| 222 | + $_REQUEST['start'] = 0; |
|
| 223 | + } |
|
| 207 | 224 | |
| 208 | 225 | // The action needs to be a string and not an array or anything else |
| 209 | - if (isset($_REQUEST['action'])) |
|
| 210 | - $_REQUEST['action'] = (string) $_REQUEST['action']; |
|
| 211 | - if (isset($_GET['action'])) |
|
| 212 | - $_GET['action'] = (string) $_GET['action']; |
|
| 226 | + if (isset($_REQUEST['action'])) { |
|
| 227 | + $_REQUEST['action'] = (string) $_REQUEST['action']; |
|
| 228 | + } |
|
| 229 | + if (isset($_GET['action'])) { |
|
| 230 | + $_GET['action'] = (string) $_GET['action']; |
|
| 231 | + } |
|
| 213 | 232 | |
| 214 | 233 | // Some mail providers like to encode semicolons in activation URLs... |
| 215 | 234 | if (!empty($_REQUEST['action']) && substr($_SERVER['QUERY_STRING'], 0, 18) == 'action=activate%3b') |
@@ -235,29 +254,33 @@ discard block |
||
| 235 | 254 | $_SERVER['BAN_CHECK_IP'] = $_SERVER['REMOTE_ADDR']; |
| 236 | 255 | |
| 237 | 256 | // If we haven't specified how to handle Reverse Proxy IP headers, lets do what we always used to do. |
| 238 | - if (!isset($modSettings['proxy_ip_header'])) |
|
| 239 | - $modSettings['proxy_ip_header'] = 'autodetect'; |
|
| 257 | + if (!isset($modSettings['proxy_ip_header'])) { |
|
| 258 | + $modSettings['proxy_ip_header'] = 'autodetect'; |
|
| 259 | + } |
|
| 240 | 260 | |
| 241 | 261 | // Which headers are we going to check for Reverse Proxy IP headers? |
| 242 | - if ($modSettings['proxy_ip_header'] == 'disabled') |
|
| 243 | - $reverseIPheaders = array(); |
|
| 244 | - elseif ($modSettings['proxy_ip_header'] == 'autodetect') |
|
| 245 | - $reverseIPheaders = array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP'); |
|
| 246 | - else |
|
| 247 | - $reverseIPheaders = array($modSettings['proxy_ip_header']); |
|
| 262 | + if ($modSettings['proxy_ip_header'] == 'disabled') { |
|
| 263 | + $reverseIPheaders = array(); |
|
| 264 | + } elseif ($modSettings['proxy_ip_header'] == 'autodetect') { |
|
| 265 | + $reverseIPheaders = array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP'); |
|
| 266 | + } else { |
|
| 267 | + $reverseIPheaders = array($modSettings['proxy_ip_header']); |
|
| 268 | + } |
|
| 248 | 269 | |
| 249 | 270 | // Find the user's IP address. (but don't let it give you 'unknown'!) |
| 250 | 271 | foreach ($reverseIPheaders as $proxyIPheader) |
| 251 | 272 | { |
| 252 | 273 | // Ignore if this is not set. |
| 253 | - if (!isset($_SERVER[$proxyIPheader])) |
|
| 254 | - continue; |
|
| 274 | + if (!isset($_SERVER[$proxyIPheader])) { |
|
| 275 | + continue; |
|
| 276 | + } |
|
| 255 | 277 | |
| 256 | 278 | if (!empty($modSettings['proxy_ip_servers'])) |
| 257 | 279 | { |
| 258 | - foreach (explode(',', $modSettings['proxy_ip_servers']) as $proxy) |
|
| 259 | - if ($proxy == $_SERVER['REMOTE_ADDR'] || matchIPtoCIDR($_SERVER['REMOTE_ADDR'], $proxy)) |
|
| 280 | + foreach (explode(',', $modSettings['proxy_ip_servers']) as $proxy) { |
|
| 281 | + if ($proxy == $_SERVER['REMOTE_ADDR'] || matchIPtoCIDR($_SERVER['REMOTE_ADDR'], $proxy)) |
|
| 260 | 282 | continue; |
| 283 | + } |
|
| 261 | 284 | } |
| 262 | 285 | |
| 263 | 286 | // If there are commas, get the last one.. probably. |
@@ -277,8 +300,9 @@ discard block |
||
| 277 | 300 | |
| 278 | 301 | // Just incase we have a legacy IPv4 address. |
| 279 | 302 | // @ TODO: Convert to IPv6. |
| 280 | - if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~', $_SERVER[$proxyIPheader]) === 0) |
|
| 281 | - continue; |
|
| 303 | + if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~', $_SERVER[$proxyIPheader]) === 0) { |
|
| 304 | + continue; |
|
| 305 | + } |
|
| 282 | 306 | } |
| 283 | 307 | |
| 284 | 308 | continue; |
@@ -290,36 +314,40 @@ discard block |
||
| 290 | 314 | } |
| 291 | 315 | } |
| 292 | 316 | // Otherwise just use the only one. |
| 293 | - elseif (preg_match('~^((0|10|172\.(1[6-9]|2[0-9]|3[01])|192\.168|255|127)\.|unknown|::1|fe80::|fc00::)~', $_SERVER[$proxyIPheader]) == 0 || preg_match('~^((0|10|172\.(1[6-9]|2[0-9]|3[01])|192\.168|255|127)\.|unknown|::1|fe80::|fc00::)~', $_SERVER['REMOTE_ADDR']) != 0) |
|
| 294 | - $_SERVER['BAN_CHECK_IP'] = $_SERVER[$proxyIPheader]; |
|
| 295 | - elseif (!isValidIPv6($_SERVER[$proxyIPheader]) || preg_match('~::ffff:\d+\.\d+\.\d+\.\d+~', $_SERVER[$proxyIPheader]) !== 0) |
|
| 317 | + elseif (preg_match('~^((0|10|172\.(1[6-9]|2[0-9]|3[01])|192\.168|255|127)\.|unknown|::1|fe80::|fc00::)~', $_SERVER[$proxyIPheader]) == 0 || preg_match('~^((0|10|172\.(1[6-9]|2[0-9]|3[01])|192\.168|255|127)\.|unknown|::1|fe80::|fc00::)~', $_SERVER['REMOTE_ADDR']) != 0) { |
|
| 318 | + $_SERVER['BAN_CHECK_IP'] = $_SERVER[$proxyIPheader]; |
|
| 319 | + } elseif (!isValidIPv6($_SERVER[$proxyIPheader]) || preg_match('~::ffff:\d+\.\d+\.\d+\.\d+~', $_SERVER[$proxyIPheader]) !== 0) |
|
| 296 | 320 | { |
| 297 | 321 | $_SERVER[$proxyIPheader] = preg_replace('~^::ffff:(\d+\.\d+\.\d+\.\d+)~', '\1', $_SERVER[$proxyIPheader]); |
| 298 | 322 | |
| 299 | 323 | // Just incase we have a legacy IPv4 address. |
| 300 | 324 | // @ TODO: Convert to IPv6. |
| 301 | - if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~', $_SERVER[$proxyIPheader]) === 0) |
|
| 302 | - continue; |
|
| 325 | + if (preg_match('~^((([1]?\d)?\d|2[0-4]\d|25[0-5])\.){3}(([1]?\d)?\d|2[0-4]\d|25[0-5])$~', $_SERVER[$proxyIPheader]) === 0) { |
|
| 326 | + continue; |
|
| 327 | + } |
|
| 303 | 328 | } |
| 304 | 329 | } |
| 305 | 330 | |
| 306 | 331 | // Make sure we know the URL of the current request. |
| 307 | - if (empty($_SERVER['REQUEST_URI'])) |
|
| 308 | - $_SERVER['REQUEST_URL'] = $scripturl . (!empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''); |
|
| 309 | - elseif (preg_match('~^([^/]+//[^/]+)~', $scripturl, $match) == 1) |
|
| 310 | - $_SERVER['REQUEST_URL'] = $match[1] . $_SERVER['REQUEST_URI']; |
|
| 311 | - else |
|
| 312 | - $_SERVER['REQUEST_URL'] = $_SERVER['REQUEST_URI']; |
|
| 332 | + if (empty($_SERVER['REQUEST_URI'])) { |
|
| 333 | + $_SERVER['REQUEST_URL'] = $scripturl . (!empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''); |
|
| 334 | + } elseif (preg_match('~^([^/]+//[^/]+)~', $scripturl, $match) == 1) { |
|
| 335 | + $_SERVER['REQUEST_URL'] = $match[1] . $_SERVER['REQUEST_URI']; |
|
| 336 | + } else { |
|
| 337 | + $_SERVER['REQUEST_URL'] = $_SERVER['REQUEST_URI']; |
|
| 338 | + } |
|
| 313 | 339 | |
| 314 | 340 | // And make sure HTTP_USER_AGENT is set. |
| 315 | 341 | $_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) ? (isset($smcFunc['htmlspecialchars']) ? $smcFunc['htmlspecialchars']($smcFunc['db_unescape_string']($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES) : htmlspecialchars($smcFunc['db_unescape_string']($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES)) : ''; |
| 316 | 342 | |
| 317 | 343 | // Some final checking. |
| 318 | - if (!isValidIP($_SERVER['BAN_CHECK_IP'])) |
|
| 319 | - $_SERVER['BAN_CHECK_IP'] = ''; |
|
| 320 | - if ($_SERVER['REMOTE_ADDR'] == 'unknown') |
|
| 321 | - $_SERVER['REMOTE_ADDR'] = ''; |
|
| 322 | -} |
|
| 344 | + if (!isValidIP($_SERVER['BAN_CHECK_IP'])) { |
|
| 345 | + $_SERVER['BAN_CHECK_IP'] = ''; |
|
| 346 | + } |
|
| 347 | + if ($_SERVER['REMOTE_ADDR'] == 'unknown') { |
|
| 348 | + $_SERVER['REMOTE_ADDR'] = ''; |
|
| 349 | + } |
|
| 350 | + } |
|
| 323 | 351 | |
| 324 | 352 | /** |
| 325 | 353 | * Validates a IPv6 address. returns true if it is ipv6. |
@@ -330,8 +358,9 @@ discard block |
||
| 330 | 358 | function isValidIPv6($ip) |
| 331 | 359 | { |
| 332 | 360 | //looking for : |
| 333 | - if (strpos($ip, ':') === false) |
|
| 334 | - return false; |
|
| 361 | + if (strpos($ip, ':') === false) { |
|
| 362 | + return false; |
|
| 363 | + } |
|
| 335 | 364 | |
| 336 | 365 | //check valid address |
| 337 | 366 | return inet_pton($ip); |
@@ -348,15 +377,17 @@ discard block |
||
| 348 | 377 | static $expanded = array(); |
| 349 | 378 | |
| 350 | 379 | // Check if we have done this already. |
| 351 | - if (isset($expanded[$ip])) |
|
| 352 | - return $expanded[$ip]; |
|
| 380 | + if (isset($expanded[$ip])) { |
|
| 381 | + return $expanded[$ip]; |
|
| 382 | + } |
|
| 353 | 383 | |
| 354 | 384 | // Expand the IP out. |
| 355 | 385 | $expanded_ip = explode(':', expandIPv6($ip)); |
| 356 | 386 | |
| 357 | 387 | $new_ip = array(); |
| 358 | - foreach ($expanded_ip as $int) |
|
| 359 | - $new_ip[] = hexdec($int); |
|
| 388 | + foreach ($expanded_ip as $int) { |
|
| 389 | + $new_ip[] = hexdec($int); |
|
| 390 | + } |
|
| 360 | 391 | |
| 361 | 392 | // Save this incase of repeated use. |
| 362 | 393 | $expanded[$ip] = $new_ip; |
@@ -376,8 +407,9 @@ discard block |
||
| 376 | 407 | static $converted = array(); |
| 377 | 408 | |
| 378 | 409 | // Check if we have done this already. |
| 379 | - if (isset($converted[$addr])) |
|
| 380 | - return $converted[$addr]; |
|
| 410 | + if (isset($converted[$addr])) { |
|
| 411 | + return $converted[$addr]; |
|
| 412 | + } |
|
| 381 | 413 | |
| 382 | 414 | // Check if there are segments missing, insert if necessary. |
| 383 | 415 | if (strpos($addr, '::') !== false) |
@@ -387,18 +419,20 @@ discard block |
||
| 387 | 419 | $part[1] = explode(':', $part[1]); |
| 388 | 420 | $missing = array(); |
| 389 | 421 | |
| 390 | - for ($i = 0; $i < (8 - (count($part[0]) + count($part[1]))); $i++) |
|
| 391 | - array_push($missing, '0000'); |
|
| 422 | + for ($i = 0; $i < (8 - (count($part[0]) + count($part[1]))); $i++) { |
|
| 423 | + array_push($missing, '0000'); |
|
| 424 | + } |
|
| 392 | 425 | |
| 393 | 426 | $part = array_merge($part[0], $missing, $part[1]); |
| 427 | + } else { |
|
| 428 | + $part = explode(':', $addr); |
|
| 394 | 429 | } |
| 395 | - else |
|
| 396 | - $part = explode(':', $addr); |
|
| 397 | 430 | |
| 398 | 431 | // Pad each segment until it has 4 digits. |
| 399 | - foreach ($part as &$p) |
|
| 400 | - while (strlen($p) < 4) |
|
| 432 | + foreach ($part as &$p) { |
|
| 433 | + while (strlen($p) < 4) |
|
| 401 | 434 | $p = '0' . $p; |
| 435 | + } |
|
| 402 | 436 | |
| 403 | 437 | unset($p); |
| 404 | 438 | |
@@ -409,11 +443,12 @@ discard block |
||
| 409 | 443 | $converted[$addr] = $result; |
| 410 | 444 | |
| 411 | 445 | // Quick check to make sure the length is as expected. |
| 412 | - if (!$strict_check || strlen($result) == 39) |
|
| 413 | - return $result; |
|
| 414 | - else |
|
| 415 | - return false; |
|
| 416 | -} |
|
| 446 | + if (!$strict_check || strlen($result) == 39) { |
|
| 447 | + return $result; |
|
| 448 | + } else { |
|
| 449 | + return false; |
|
| 450 | + } |
|
| 451 | + } |
|
| 417 | 452 | |
| 418 | 453 | |
| 419 | 454 | /** |
@@ -444,15 +479,17 @@ discard block |
||
| 444 | 479 | { |
| 445 | 480 | global $smcFunc; |
| 446 | 481 | |
| 447 | - if (!is_array($var)) |
|
| 448 | - return $smcFunc['db_escape_string']($var); |
|
| 482 | + if (!is_array($var)) { |
|
| 483 | + return $smcFunc['db_escape_string']($var); |
|
| 484 | + } |
|
| 449 | 485 | |
| 450 | 486 | // Reindex the array with slashes. |
| 451 | 487 | $new_var = array(); |
| 452 | 488 | |
| 453 | 489 | // Add slashes to every element, even the indexes! |
| 454 | - foreach ($var as $k => $v) |
|
| 455 | - $new_var[$smcFunc['db_escape_string']($k)] = escapestring__recursive($v); |
|
| 490 | + foreach ($var as $k => $v) { |
|
| 491 | + $new_var[$smcFunc['db_escape_string']($k)] = escapestring__recursive($v); |
|
| 492 | + } |
|
| 456 | 493 | |
| 457 | 494 | return $new_var; |
| 458 | 495 | } |
@@ -472,12 +509,14 @@ discard block |
||
| 472 | 509 | { |
| 473 | 510 | global $smcFunc; |
| 474 | 511 | |
| 475 | - if (!is_array($var)) |
|
| 476 | - return isset($smcFunc['htmlspecialchars']) ? $smcFunc['htmlspecialchars']($var, ENT_QUOTES) : htmlspecialchars($var, ENT_QUOTES); |
|
| 512 | + if (!is_array($var)) { |
|
| 513 | + return isset($smcFunc['htmlspecialchars']) ? $smcFunc['htmlspecialchars']($var, ENT_QUOTES) : htmlspecialchars($var, ENT_QUOTES); |
|
| 514 | + } |
|
| 477 | 515 | |
| 478 | 516 | // Add the htmlspecialchars to every element. |
| 479 | - foreach ($var as $k => $v) |
|
| 480 | - $var[$k] = $level > 25 ? null : htmlspecialchars__recursive($v, $level + 1); |
|
| 517 | + foreach ($var as $k => $v) { |
|
| 518 | + $var[$k] = $level > 25 ? null : htmlspecialchars__recursive($v, $level + 1); |
|
| 519 | + } |
|
| 481 | 520 | |
| 482 | 521 | return $var; |
| 483 | 522 | } |
@@ -495,15 +534,17 @@ discard block |
||
| 495 | 534 | */ |
| 496 | 535 | function urldecode__recursive($var, $level = 0) |
| 497 | 536 | { |
| 498 | - if (!is_array($var)) |
|
| 499 | - return urldecode($var); |
|
| 537 | + if (!is_array($var)) { |
|
| 538 | + return urldecode($var); |
|
| 539 | + } |
|
| 500 | 540 | |
| 501 | 541 | // Reindex the array... |
| 502 | 542 | $new_var = array(); |
| 503 | 543 | |
| 504 | 544 | // Add the htmlspecialchars to every element. |
| 505 | - foreach ($var as $k => $v) |
|
| 506 | - $new_var[urldecode($k)] = $level > 25 ? null : urldecode__recursive($v, $level + 1); |
|
| 545 | + foreach ($var as $k => $v) { |
|
| 546 | + $new_var[urldecode($k)] = $level > 25 ? null : urldecode__recursive($v, $level + 1); |
|
| 547 | + } |
|
| 507 | 548 | |
| 508 | 549 | return $new_var; |
| 509 | 550 | } |
@@ -521,15 +562,17 @@ discard block |
||
| 521 | 562 | { |
| 522 | 563 | global $smcFunc; |
| 523 | 564 | |
| 524 | - if (!is_array($var)) |
|
| 525 | - return $smcFunc['db_unescape_string']($var); |
|
| 565 | + if (!is_array($var)) { |
|
| 566 | + return $smcFunc['db_unescape_string']($var); |
|
| 567 | + } |
|
| 526 | 568 | |
| 527 | 569 | // Reindex the array without slashes, this time. |
| 528 | 570 | $new_var = array(); |
| 529 | 571 | |
| 530 | 572 | // Strip the slashes from every element. |
| 531 | - foreach ($var as $k => $v) |
|
| 532 | - $new_var[$smcFunc['db_unescape_string']($k)] = unescapestring__recursive($v); |
|
| 573 | + foreach ($var as $k => $v) { |
|
| 574 | + $new_var[$smcFunc['db_unescape_string']($k)] = unescapestring__recursive($v); |
|
| 575 | + } |
|
| 533 | 576 | |
| 534 | 577 | return $new_var; |
| 535 | 578 | } |
@@ -547,15 +590,17 @@ discard block |
||
| 547 | 590 | */ |
| 548 | 591 | function stripslashes__recursive($var, $level = 0) |
| 549 | 592 | { |
| 550 | - if (!is_array($var)) |
|
| 551 | - return stripslashes($var); |
|
| 593 | + if (!is_array($var)) { |
|
| 594 | + return stripslashes($var); |
|
| 595 | + } |
|
| 552 | 596 | |
| 553 | 597 | // Reindex the array without slashes, this time. |
| 554 | 598 | $new_var = array(); |
| 555 | 599 | |
| 556 | 600 | // Strip the slashes from every element. |
| 557 | - foreach ($var as $k => $v) |
|
| 558 | - $new_var[stripslashes($k)] = $level > 25 ? null : stripslashes__recursive($v, $level + 1); |
|
| 601 | + foreach ($var as $k => $v) { |
|
| 602 | + $new_var[stripslashes($k)] = $level > 25 ? null : stripslashes__recursive($v, $level + 1); |
|
| 603 | + } |
|
| 559 | 604 | |
| 560 | 605 | return $new_var; |
| 561 | 606 | } |
@@ -576,12 +621,14 @@ discard block |
||
| 576 | 621 | global $smcFunc; |
| 577 | 622 | |
| 578 | 623 | // Remove spaces (32), tabs (9), returns (13, 10, and 11), nulls (0), and hard spaces. (160) |
| 579 | - if (!is_array($var)) |
|
| 580 | - return isset($smcFunc) ? $smcFunc['htmltrim']($var) : trim($var, ' ' . "\t\n\r\x0B" . '\0' . "\xA0"); |
|
| 624 | + if (!is_array($var)) { |
|
| 625 | + return isset($smcFunc) ? $smcFunc['htmltrim']($var) : trim($var, ' ' . "\t\n\r\x0B" . '\0' . "\xA0"); |
|
| 626 | + } |
|
| 581 | 627 | |
| 582 | 628 | // Go through all the elements and remove the whitespace. |
| 583 | - foreach ($var as $k => $v) |
|
| 584 | - $var[$k] = $level > 25 ? null : htmltrim__recursive($v, $level + 1); |
|
| 629 | + foreach ($var as $k => $v) { |
|
| 630 | + $var[$k] = $level > 25 ? null : htmltrim__recursive($v, $level + 1); |
|
| 631 | + } |
|
| 585 | 632 | |
| 586 | 633 | return $var; |
| 587 | 634 | } |
@@ -646,30 +693,37 @@ discard block |
||
| 646 | 693 | global $scripturl, $modSettings, $context; |
| 647 | 694 | |
| 648 | 695 | // If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit. |
| 649 | - if ($scripturl == '' || !defined('SID')) |
|
| 650 | - return $buffer; |
|
| 696 | + if ($scripturl == '' || !defined('SID')) { |
|
| 697 | + return $buffer; |
|
| 698 | + } |
|
| 651 | 699 | |
| 652 | 700 | // Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit(). This doesn't work below PHP 4.3.0, because it makes the output buffer bigger. |
| 653 | 701 | // @todo smflib |
| 654 | - if (empty($_COOKIE) && SID != '' && !isBrowser('possibly_robot')) |
|
| 655 | - $buffer = preg_replace('/(?<!<link rel="canonical" href=)"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')\\??/', '"' . $scripturl . '?' . SID . '&', $buffer); |
|
| 702 | + if (empty($_COOKIE) && SID != '' && !isBrowser('possibly_robot')) { |
|
| 703 | + $buffer = preg_replace('/(?<!<link rel="canonical" href=)"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')\\??/', '"' . $scripturl . '?' . SID . '&', $buffer); |
|
| 704 | + } |
|
| 656 | 705 | // Debugging templates, are we? |
| 657 | - elseif (isset($_GET['debug'])) |
|
| 658 | - $buffer = preg_replace('/(?<!<link rel="canonical" href=)"' . preg_quote($scripturl, '/') . '\\??/', '"' . $scripturl . '?debug;', $buffer); |
|
| 706 | + elseif (isset($_GET['debug'])) { |
|
| 707 | + $buffer = preg_replace('/(?<!<link rel="canonical" href=)"' . preg_quote($scripturl, '/') . '\\??/', '"' . $scripturl . '?debug;', $buffer); |
|
| 708 | + } |
|
| 659 | 709 | |
| 660 | 710 | // This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo. |
| 661 | 711 | if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || ini_get('cgi.fix_pathinfo') == 1 || @get_cfg_var('cgi.fix_pathinfo') == 1) && ($context['server']['is_apache'] || $context['server']['is_lighttpd'] || $context['server']['is_litespeed'])) |
| 662 | 712 | { |
| 663 | 713 | // Let's do something special for session ids! |
| 664 | - if (defined('SID') && SID != '') |
|
| 665 | - $buffer = preg_replace_callback('~"' . preg_quote($scripturl, '/') . '\?(?:' . SID . '(?:;|&|&))((?:board|topic)=[^#"]+?)(#[^"]*?)?"~', function($m) |
|
| 714 | + if (defined('SID') && SID != '') { |
|
| 715 | + $buffer = preg_replace_callback('~"' . preg_quote($scripturl, '/') . '\?(?:' . SID . '(?:;|&|&))((?:board|topic)=[^#"]+?)(#[^"]*?)?"~', function($m) |
|
| 666 | 716 | { |
| 667 | - global $scripturl; return '"' . $scripturl . "/" . strtr("$m[1]", '&;=', '//,') . ".html?" . SID . (isset($m[2]) ? $m[2] : "") . '"'; |
|
| 717 | + global $scripturl; |
|
| 718 | + } |
|
| 719 | + return '"' . $scripturl . "/" . strtr("$m[1]", '&;=', '//,') . ".html?" . SID . (isset($m[2]) ? $m[2] : "") . '"'; |
|
| 668 | 720 | }, $buffer); |
| 669 | - else |
|
| 670 | - $buffer = preg_replace_callback('~"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"~', function($m) |
|
| 721 | + else { |
|
| 722 | + $buffer = preg_replace_callback('~"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"~', function($m) |
|
| 671 | 723 | { |
| 672 | - global $scripturl; return '"' . $scripturl . '/' . strtr("$m[1]", '&;=', '//,') . '.html' . (isset($m[2]) ? $m[2] : "") . '"'; |
|
| 724 | + global $scripturl; |
|
| 725 | + } |
|
| 726 | + return '"' . $scripturl . '/' . strtr("$m[1]", '&;=', '//,') . '.html' . (isset($m[2]) ? $m[2] : "") . '"'; |
|
| 673 | 727 | }, $buffer); |
| 674 | 728 | } |
| 675 | 729 | |