Update to SMF 1.0.2 - Installation Instructions for 1.0.1

Update to SMF 1.0.2

File Edits ALT + Click to collapse all the operations

./changelog.txt

Find: Select
Changes go downward, months go upward. Please scroll to the bottom for a legend.
Changelog started January 1, 2004; Currently at $Revision: 1.1040.2.284 $.
Replace With: Select
Changes go downward, months go upward. Please scroll to the bottom for a legend.
Changelog started January 1, 2004; Currently at $Revision: 1.1040.2.310 $.

SMF 1.0.2 February 14, 2005
================================================================================
February 2005:
--------------------------------------------------------------------------------
! Don't use id for login checks, use member. (LogInOut.php)
! Properly censor the first post's subject and show it in the main link, not the matched subject. (Search.php)
! In Invision, usernames should already have entities. (invision_to_smf.php, invision2_to_smf.php)
! Fixed a typo that was causing permission problems for non-administrators. (Profile.php)
! If someone's data isn't loaded yet, they have no permissions; return false instead of generating errors. (Security.php)
! Make the personal messages load faster. (InstantMessage.php)
! You couldn't set the strength for glow to more than 2 without using zeros. (Subs.php)
! Make the "I don't like people to see my full path which can easily be seen in other ways anyway" people happy. (SSI.php, ssi_examples.php)
! Change [quote=...] to [quote="..."] in the vBulletin converters. (vbulletin_to_smf.php, vbulletin3_to_smf.php)
! Fixed missing member ID on login after registration. (Register.php)


January 2005:
--------------------------------------------------------------------------------
! Fixed a minor notice when searching without create temporary. (Search.php)
! Pagination was still a bit wrong in unread topics, etc. (Recent.php)
! Fix handling of slashes in search form filling. (Search.php)
! Upgrader didn't show the error message properly for when agreement.txt was not writable. (upgrade.php)
! phpBB converter now handles code sections and some other bbcode better. (phpbb2_to_smf.php)
! CGI server check for logins, etc. wasn't working with FastCGI. (Load.php)
! Fix "never expire" not being properly checked bug. (LogInOut.php)
! Fixed missing ID_FIRST_MSG when searching without temporary tables. (Search.php)
! Multiple members wouldn't show in the "newest members" rss feed. (News.php)
! If anything goes wrong extracting a file, fail more silently. (Subs-Package.php)
! Recount all forum totals was not properly affecting the last messages on boards. (Admin.php)
! Attachments with "&" and " " characters in them weren't converted properly. (phpbb2_to_smf.php)
! Keep tabs in PHP code blocks properly under PHP 5. (Subs.php)
! Make upgrade.php accept an older language file for minor releases. (upgrade.php)
! Resetting all theme options didn't always set the default registration options right. (Themes.php)
& A few links were using _new instead of _blank. (Errors language files, Help language files, Subs.php, news_readme.html)
! A database error could occur if you tried to create a smiley with a single quote in its name. (ManageSmileys.php)
! Package manager wasn't properly skipping missing files. (Subs-Package.php)
! Minor unimportant but still dumb typo in all converters. (all converters)
! Fixed a notice that could occur when a guest posts. (Post.php)
* Work around dumb server security settings. (Subs.php, ManageMembers.php, ManageMembers template)
! Fix some issues in the YaBB and YaBB SE converters. (yabb_to_smf.php, yabbse_to_smf.php)

./index.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select

$forum_version = 'SMF 1.0.1';
Replace With: Select

$forum_version = 'SMF 1.0.2';

./news_readme.html

Find: Select
Copyright (C) 2002-2005 Lewis Media. All Rights Reserved.<br />
Web: <a href="http://www.simplemachines.org/" target="_new">http://www.simplemachines.org/</a><br />
<br />
Replace With: Select
Copyright (C) 2002-2005 Lewis Media. All Rights Reserved.<br />
Web: <a href="http://www.simplemachines.org/" target="_blank">http://www.simplemachines.org/</a><br />
<br />

./Sources/InstantMessage.php

Find: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2004 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Replace With: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2005 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Find: Select
$request = db_query("
SELECT pm.ID_PM, pm.ID_MEMBER_FROM
FROM {$db_prefix}instant_messages AS pm" . ($context['folder'] == 'outbox' && $context['sort_by'] != 'name' ? '' : "
LEFT JOIN {$db_prefix}im_recipients AS pmr ON (pm.ID_PM = pmr.ID_PM)") . ($context['sort_by'] == 'name' ? ("
LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = " . ($context['folder'] == 'outbox' ? 'pmr.ID_MEMBER' : 'pm.ID_MEMBER_FROM') . ")") : '') . "
WHERE " . ($context['folder'] == 'outbox' ? "pm.ID_MEMBER_FROM = $ID_MEMBER
AND pm.deletedBySender = 0" : "pmr.ID_MEMBER = $ID_MEMBER
AND pmr.deleted = 0") . "
ORDER BY $_GET[sort] " . ($descending ? ' DESC' : ' ASC') . "
LIMIT $_GET[start], $modSettings[defaultMaxMessages]", __FILE__, __LINE__);
Replace With: Select
$request = db_query("
SELECT pm.ID_PM, pm.ID_MEMBER_FROM
FROM {$db_prefix}instant_messages AS pm" . ($context['folder'] == 'outbox' ? ($context['sort_by'] == 'name' ? "
LEFT JOIN {$db_prefix}im_recipients AS pmr ON (pmr.ID_PM = pm.ID_PM)" : '') : ", {$db_prefix}im_recipients AS pmr") . ($context['sort_by'] == 'name' ? ("
LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = " . ($context['folder'] == 'outbox' ? 'pmr.ID_MEMBER' : 'pm.ID_MEMBER_FROM') . ")") : '') . "
WHERE " . ($context['folder'] == 'outbox' ? "pm.ID_MEMBER_FROM = $ID_MEMBER
AND pm.deletedBySender = 0" : "pm.ID_PM = pmr.ID_PM
AND pmr.ID_MEMBER = $ID_MEMBER
AND pmr.deleted = 0") . "
ORDER BY " . ($_GET['sort'] == 'pm.ID_PM' && $context['folder'] != 'outbox' ? 'pmr.ID_PM' : $_GET['sort']) . ($descending ? ' DESC' : ' ASC') . "
LIMIT $_GET[start], $modSettings[defaultMaxMessages]", __FILE__, __LINE__);

./Sources/Admin.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
<div style="margin-top: 1ex;"><b>Developers:</b> Unknown W. &quot;[Unknown]&quot; Brackets, Hendrik Jan &quot;Compuart&quot; Visser, Matt &quot;Grudge&quot; Wolf, and Philip &quot;Meriadoc&quot; Renich</div>
<div style="margin-top: 1ex;"><b>Support Specialists:</b>Andrea Hubacher, Alexandre &quot;Ap2&quot; Patenaude, A.M.A, Ben Scott, [darksteel], Douglas &quot;The Bear&quot; Hazard, Horseman, Killer Possum, Mediman, Methonis, Michael &quot;Oldiesmann&quot; Eshom, Omar Bazavilvazo, Osku &quot;Owdy&quot; Uusitupa, Pitti, and Tomer &quot;Lamper&quot; Dean.</div>
<div style="margin-top: 1ex;"><b>Mod Developers:</b> Jack.R.Abbit, Aliencowfarm, Big P., Chris Cromer, Cristi&aacute;n &quot;Anguz&quot; L&aacute;vaque, Daniel Diehl, groundup, James &quot;Cheschire&quot; Yarbro, Jesse &quot;Gobalopper&quot; Reid, Spaceman-Spiff.</div>
Replace With: Select
<div style="margin-top: 1ex;"><b>Developers:</b> Unknown W. &quot;[Unknown]&quot; Brackets, Hendrik Jan &quot;Compuart&quot; Visser, Matt &quot;Grudge&quot; Wolf, and Philip &quot;Meriadoc&quot; Renich</div>
<div style="margin-top: 1ex;"><b>Support Specialists:</b> Andrea Hubacher, Alexandre &quot;Ap2&quot; Patenaude, A.M.A, Ben Scott, [darksteel], Douglas &quot;The Bear&quot; Hazard, Horseman, Killer Possum, Mediman, Methonis, Michael &quot;Oldiesmann&quot; Eshom, Omar Bazavilvazo, Osku &quot;Owdy&quot; Uusitupa, Pitti, and Tomer &quot;Lamper&quot; Dean.</div>
<div style="margin-top: 1ex;"><b>Mod Developers:</b> Jack.R.Abbit, Aliencowfarm, Big P., Chris Cromer, Cristi&aacute;n &quot;Anguz&quot; L&aacute;vaque, Daniel Diehl, groundup, James &quot;Cheschire&quot; Yarbro, Jesse &quot;Gobalopper&quot; Reid, Spaceman-Spiff.</div>
Find: Select
while ($row = mysql_fetch_assoc($request))
$resort_me[$row['childLevel']] = $row;
mysql_free_result($request);
Replace With: Select
while ($row = mysql_fetch_assoc($request))
$resort_me[$row['childLevel']][] = $row;
mysql_free_result($request);
Find: Select
$lastMsg = array();
foreach ($resort_me as $row)
{
// The latest message is the latest of the current board and its children.
if (isset($lastMsg[$row['ID_BOARD']]))
$curLastMsg = max($row['localLastMsg'], $lastMsg[$row['ID_BOARD']]);
else
$curLastMsg = $row['localLastMsg'];

// If what is and what should be the latest message differ, an update is necessary.
if ($curLastMsg != $row['ID_LAST_MSG'])
db_query("
UPDATE {$db_prefix}boards
SET ID_LAST_MSG = $curLastMsg
WHERE ID_BOARD = $row[ID_BOARD]
LIMIT 1", __FILE__, __LINE__);

// Parent boards inherit the latest message of their children.
if (isset($lastMsg[$row['ID_PARENT']]))
$lastMsg[$row['ID_PARENT']] = max($row['localLastMsg'], $lastMsg[$row['ID_PARENT']]);
else
$lastMsg[$row['ID_PARENT']] = $row['localLastMsg'];
}
Replace With: Select
$lastMsg = array();
foreach ($resort_me as $rows)
foreach ($rows as $row)
{
// The latest message is the latest of the current board and its children.
if (isset($lastMsg[$row['ID_BOARD']]))
$curLastMsg = max($row['localLastMsg'], $lastMsg[$row['ID_BOARD']]);
else
$curLastMsg = $row['localLastMsg'];

// If what is and what should be the latest message differ, an update is necessary.
if ($curLastMsg != $row['ID_LAST_MSG'])
db_query("
UPDATE {$db_prefix}boards
SET ID_LAST_MSG = $curLastMsg
WHERE ID_BOARD = $row[ID_BOARD]
LIMIT 1", __FILE__, __LINE__);

// Parent boards inherit the latest message of their children.
if (isset($lastMsg[$row['ID_PARENT']]))
$lastMsg[$row['ID_PARENT']] = max($row['localLastMsg'], $lastMsg[$row['ID_PARENT']]);
else
$lastMsg[$row['ID_PARENT']] = $row['localLastMsg'];
}

./Sources/Errors.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
$message = log_error($error_level . ': ' . $error_string, $file, $line);
Replace With: Select
$message = log_error($error_level . ': ' . $error_string, $file, $line);

// Dying on these errors only causes MORE problems (blank pages!)
if ($file == 'Unknown')
return;

./Sources/Load.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
'is_apache' => strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false,
'is_cgi' => php_sapi_name() == 'cgi'
);
Replace With: Select
'is_apache' => strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false,
'is_cgi' => strpos(php_sapi_name(), 'cgi') !== false,
);

./Sources/LogInOut.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
// Strike! You're outta there!
if ($_GET['id'] != $ID_MEMBER)
fatal_lang_error('login_cookie_error', false);
Replace With: Select
// Strike! You're outta there!
if ($_GET['member'] != $ID_MEMBER)
fatal_lang_error('login_cookie_error', false);
Find: Select
$context['default_password'] = '';
$context['never_expire'] = $modSettings['cookieTime'] == 525600;
$context['login_error'] = &$txt[106];
Replace With: Select
$context['default_password'] = '';
$context['never_expire'] = $modSettings['cookieTime'] == 525600 || $modSettings['cookieTime'] == 3153600;
$context['login_error'] = &$txt[106];
Find: Select
if (empty($maintenance) || allowedTo('admin_forum'))
redirectexit('action=login2;sa=check;id=' . $ID_MEMBER, true, $context['server']['needs_login_fix']);
else
Replace With: Select
if (empty($maintenance) || allowedTo('admin_forum'))
redirectexit('action=login2;sa=check;member=' . $ID_MEMBER, true, $context['server']['needs_login_fix']);
else

./Sources/ManageMembers.php

Find: Select
* SMF: Simple Machines Forum *
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2004 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
* This program is free software; you may redistribute it and/or modify it *
Replace With: Select
* SMF: Simple Machines Forum *
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2005 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
* This program is free software; you may redistribute it and/or modify it *
Find: Select
WHERE groupName = '$_POST[group_name]'
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($request) != 0)
redirectexit('action=membergroups');
mysql_free_result($request);

$request = db_query("
Replace With: Select
WHERE groupName = '$_POST[group_name]'
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($request) != 0)
redirectexit('action=membergroups;');
mysql_free_result($request);

$request = db_query("
Find: Select

// If they have no special access requirements then skip the rest of this.
if (count($boards) == 0)
redirectexit('action=membergroups');

// Now it's the time to sort out which boards this new group has access to.
$result = db_query("
Replace With: Select

// If they have no special access requirements then skip the rest of this.
if (count($boards) == 0)
redirectexit('action=membergroups;');

// Now it's the time to sort out which boards this new group has access to.
$result = db_query("
Find: Select
}
mysql_free_result($result);

redirectexit('action=membergroups');
}

function DeleteMembergroup()
Replace With: Select
}
mysql_free_result($result);

redirectexit('action=membergroups;');
}

function DeleteMembergroup()
Find: Select
$_REQUEST['id'] = (int) $_REQUEST['id'];

if ($_REQUEST['id'] <= 4)
redirectexit('action=membergroups');

db_query("
DELETE FROM {$db_prefix}membergroups
Replace With: Select
$_REQUEST['id'] = (int) $_REQUEST['id'];

if ($_REQUEST['id'] <= 4)
redirectexit('action=membergroups;');

db_query("
DELETE FROM {$db_prefix}membergroups
Find: Select
// Recalculate the post groups, as they likely changed.
updateStats('postgroups');

redirectexit('action=membergroups');
}

function EditMembergroup()
Replace With: Select
// Recalculate the post groups, as they likely changed.
updateStats('postgroups');

redirectexit('action=membergroups;');
}

function EditMembergroup()
Find: Select
// There might have been some post group changes.
updateStats('postgroups');

redirectexit('action=membergroups');
}

$result = db_query("
Replace With: Select
// There might have been some post group changes.
updateStats('postgroups');

redirectexit('action=membergroups;');
}

$result = db_query("

./Sources/ManageSmileys.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png')))
$smileys[strtolower($entry)] = $entry;
}
Replace With: Select
if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png')))
$smileys[strtolower($entry)] = addslashes($entry);
}
Find: Select
if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png')))
$smileys[strtolower($entry)] = $entry;
}
Replace With: Select
if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png')))
$smileys[strtolower($entry)] = addslashes($entry);
}

./Sources/Post.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
// If user is a guest, make sure the chosen name isn't taken.
if (isReservedName($_POST['guestname']) && $_POST['guestname'] != $row['posterName'])
$post_errors[] = 'bad_name';
Replace With: Select
// If user is a guest, make sure the chosen name isn't taken.
if (isReservedName($_POST['guestname']) && (!isset($row['posterName']) || $_POST['guestname'] != $row['posterName']))
$post_errors[] = 'bad_name';
Find: Select
$request = db_query("
SELECT COUNT(ID_ATTACH), SUM(size)
FROM {$db_prefix}attachments
WHERE ID_MSG = $_REQUEST[msg]", __FILE__, __LINE__);
list ($quantity, $total_size) = mysql_fetch_row($request);
Replace With: Select
$request = db_query("
SELECT COUNT(ID_ATTACH), SUM(size)
FROM {$db_prefix}attachments
WHERE ID_MSG = $_REQUEST[msg]", __FILE__, __LINE__);
list ($quantity, $total_size) = mysql_fetch_row($request);

./Sources/Profile.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
'account' => array(array('manage_membergroups', 'profile_identity_any', 'profile_identity_own'), array('manage_membergroups', 'profile_identity_any')),
'forumProfile' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any')),
'theme' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any')),
'notification' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any')),
'pmprefs' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any')),
'deleteAccount' => array(array('profile_remove_any', 'profile_remove_own'), array('profile_remove_any')),
Replace With: Select
'account' => array(array('manage_membergroups', 'profile_identity_any', 'profile_identity_own'), array('manage_membergroups', 'profile_identity_any')),
'forumProfile' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any')),
'theme' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any')),
'notification' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any')),
'pmprefs' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any')),
'deleteAccount' => array(array('profile_remove_any', 'profile_remove_own'), array('profile_remove_any')),
Find: Select
'account' => array(array('manage_membergroups', 'profile_identity_any', 'profile_identity_own'), array('manage_membergroups', 'profile_identity_any'), 'post', true),
'forumProfile' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'theme' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'notification' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'pmprefs' => array(array('profile_exta_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'deleteAccount' => array(array('profile_remove_any', 'profile_remove_own'), array('profile_remove_any'), 'post', true),
Replace With: Select
'account' => array(array('manage_membergroups', 'profile_identity_any', 'profile_identity_own'), array('manage_membergroups', 'profile_identity_any'), 'post', true),
'forumProfile' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'theme' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'notification' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'pmprefs' => array(array('profile_extra_any', 'profile_extra_own'), array('profile_extra_any'), 'post'),
'deleteAccount' => array(array('profile_remove_any', 'profile_remove_own'), array('profile_remove_any'), 'post', true),

./Sources/Recent.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
// Make sure the starting place makes sense and construct the page index.
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'] . ($context['showing_all_topics'] ? ';all' : '') . (empty($board) ? '' : ';board=' . $board . '.0'), $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics']);
$context['current_page'] = (int) $_REQUEST['start'] / $modSettings['defaultMaxTopics'];
Replace With: Select
// Make sure the starting place makes sense and construct the page index.
if (empty($board))
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'] . ($context['showing_all_topics'] ? ';all' : ''), $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics']);
else
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'] . ($context['showing_all_topics'] ? ';all' : '') . ';board=' . $board, $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics'], true);
$context['current_page'] = (int) $_REQUEST['start'] / $modSettings['defaultMaxTopics'];
Find: Select
// Make sure the starting place makes sense and construct the page index.
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'] . (empty($board) ? '' : ';board=' . $board . '.0'), $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics']);
$context['current_page'] = (int) $_REQUEST['start'] / $modSettings['defaultMaxTopics'];
Replace With: Select
// Make sure the starting place makes sense and construct the page index.
if (empty($board))
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'], $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics']);
else
$context['page_index'] = constructPageIndex($scripturl . '?action=' . $_REQUEST['action'] . ';board=' . $board, $_REQUEST['start'], $num_topics, $modSettings['defaultMaxTopics'], true);
$context['current_page'] = (int) $_REQUEST['start'] / $modSettings['defaultMaxTopics'];

./Sources/Search.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select

// Find all the boards this user is allowed to see.
Replace With: Select

if (isset($context['search_params']['search']))
$context['search_params']['search'] = htmlspecialchars($context['search_params']['search']);
if (isset($context['search_params']['userspec']))
$context['search_params']['userspec'] = htmlspecialchars(stripslashes($context['search_params']['userspec']));

// Find all the boards this user is allowed to see.
Find: Select
$request = db_query("
SELECT m.ID_TOPIC AS ID_TOPIC, m.ID_MSG, t.numReplies, 1 AS is_subject
FROM {$db_prefix}topics AS t, {$db_prefix}messages AS m
Replace With: Select
$request = db_query("
SELECT m.ID_TOPIC AS ID_TOPIC, t.ID_FIRST_MSG, t.numReplies, 1 AS is_subject
FROM {$db_prefix}topics AS t, {$db_prefix}messages AS m
Find: Select
$sort[$ID_MSG] = $search_params['sort'] == 'relevance' ? $relevance : ($search_params['sort'] == 'numReplies' ? $matchingTopics[$row['ID_TOPIC']]['numReplies'] : $ID_MSG);
$tmp[$ID_MSG] .= "($modSettings[search_pointer], $row[ID_TOPIC], $relevance, $ID_MSG, $row[numMsg])";
}
Replace With: Select
$sort[$ID_MSG] = $search_params['sort'] == 'relevance' ? $relevance : ($search_params['sort'] == 'numReplies' ? $matchingTopics[$row['ID_TOPIC']]['numReplies'] : $ID_MSG);
$tmp[$ID_MSG] = (isset($tmp[$ID_MSG]) ? $tmp[$ID_MSG] : '') . '(' . (int) $modSettings['search_pointer'] . ', ' . (int) $row['ID_TOPIC'] . ', ' . (int) $relevance . ', ' . (int) $ID_MSG . ', ' . (int) $row['numMsg'] . '),';
}
Find: Select
foreach ($sort as $ID_MSG => $value)
$insertRows[$ID_MSG] = $tmp[$ID_MSG];
unset($tmp);
Replace With: Select
foreach ($sort as $ID_MSG => $value)
$insertRows[$ID_MSG] = substr($tmp[$ID_MSG], 0, -1);
unset($tmp);
Find: Select
// Insert the matching topics into the cache.
db_query("
INSERT INTO {$db_prefix}log_search
(ID_SEARCH, ID_TOPIC, relevance, ID_MSG, num_matches)
VALUES " . implode(', ', $insertRows), __FILE__, __LINE__);
}
Replace With: Select
// Insert the matching topics into the cache.
if (!empty($insertRows))
db_query("
INSERT INTO {$db_prefix}log_search
(ID_SEARCH, ID_TOPIC, relevance, ID_MSG, num_matches)
VALUES " . implode(', ', $insertRows), __FILE__, __LINE__);
}
Find: Select
$message['subject'] = $message['subject'] != '' ? $message['subject'] : $txt[24];
Replace With: Select
$message['subject'] = $message['subject'] != '' ? $message['subject'] : $txt[24];
$message['first_subject'] = $message['first_subject'] != '' ? $message['first_subject'] : $txt[24];
Find: Select

// Shorten this message if necessary.
Replace With: Select

censorText($message['first_subject']);

// Shorten this message if necessary.
Find: Select
'href' => $scripturl . '?topic=' . $message['ID_TOPIC'] . '.0',
'link' => '<a href="' . $scripturl . '?topic=' . $message['ID_TOPIC'] . '.0">' . $message['subject'] . '</a>',
'icon' => $message['icon'],
Replace With: Select
'href' => $scripturl . '?topic=' . $message['ID_TOPIC'] . '.0',
'link' => '<a href="' . $scripturl . '?topic=' . $message['ID_TOPIC'] . '.0">' . $message['first_subject'] . '</a>',
'icon' => $message['icon'],

./Sources/Subs-Package.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
$crc = unpack('Vcrc32/Visize', substr($data, strlen($data) - 8, 8));
$data = gzinflate(substr($data, $offset, strlen($data) - 8 - $offset));
Replace With: Select
$crc = unpack('Vcrc32/Visize', substr($data, strlen($data) - 8, 8));
$data = @gzinflate(substr($data, $offset, strlen($data) - 8 - $offset));
Find: Select
// Skip the file if it doesn't exist.
elseif ($file->exists('@error') && trim($file->fetch('@error')) == 'skip')
continue;
Replace With: Select
// Skip the file if it doesn't exist.
elseif (!file_exists($working_file) && $file->exists('@error') && trim($file->fetch('@error')) == 'skip')
continue;

./Sources/Subs.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
// GLOWING or /shadowed/ text.
$codefromcache[] = '~\[glow=([#\w]{3,12}),([012]\d{0,2})(,[^]]+)?\](.+?)\[/glow\]~i';
$codetocache[] = isset($disabled['glow']) ? '$4' : '<table border="0" cellpadding="0" cellspacing="0" style="display: inline; vertical-align: middle; font: inherit;"><tr><td style="filter: Glow(color=$1, strength=$2); font: inherit;">$4</td></tr></table> ';
Replace With: Select
// GLOWING or /shadowed/ text.
$codefromcache[] = '~\[glow=([#\w]{3,12}),([012]\d{1,2}|\d{1,2})(,[^]]+)?\](.+?)\[/glow\]~i';
$codetocache[] = isset($disabled['glow']) ? '$4' : '<table border="0" cellpadding="0" cellspacing="0" style="display: inline; vertical-align: middle; font: inherit;"><tr><td style="filter: Glow(color=$1, strength=$2); font: inherit;">$4</td></tr></table> ';
Find: Select
if (empty($modSettings['enableEmbeddedFlash']) || isset($disabled['flash']))
$codetocache[] = isset($disabled['url']) ? '$3' : '<a href="$3" target="_new">$3</a>';
else
Replace With: Select
if (empty($modSettings['enableEmbeddedFlash']) || isset($disabled['flash']))
$codetocache[] = isset($disabled['url']) ? '$3' : '<a href="$3" target="_blank">$3</a>';
else
Find: Select
// Yes, I know this is kludging it, but this is the best way to preserve tabs from PHP :P.
$buffer = preg_replace('~SMF_TAB(</font><font color="[^"]*?">)?\(\);~', "<pre style=\"display: inline;\">\t</pre>", $buffer);
Replace With: Select
// Yes, I know this is kludging it, but this is the best way to preserve tabs from PHP :P.
$buffer = preg_replace('~SMF_TAB(</(font|span)><(font color|span style)="[^"]*?">)?\(\);~', "<pre style=\"display: inline;\">\t</pre>", $buffer);
Find: Select
if (allowedTo('manage_membergroups'))
$context['admin_areas']['members']['areas']['edit_groups'] = '<a href="' . $scripturl . '?action=membergroups">' . $txt[8] . '</a>';
Replace With: Select
if (allowedTo('manage_membergroups'))
$context['admin_areas']['members']['areas']['edit_groups'] = '<a href="' . $scripturl . '?action=membergroups;">' . $txt[8] . '</a>';
Find: Select
Template: <i>' . $context['template'] . '</i>' . (isset($context['sub_template']) ? ' (<i>' . $context['sub_template'] . '</i>)' : '') . '.<br />' : ''), '
<a href="', $scripturl, '?action=viewquery" target="_new">Queries used: ', $db_count, '</a>.<br />
<br />';
Replace With: Select
Template: <i>' . $context['template'] . '</i>' . (isset($context['sub_template']) ? ' (<i>' . $context['sub_template'] . '</i>)' : '') . '.<br />' : ''), '
<a href="', $scripturl, '?action=viewquery" target="_blank">Queries used: ', $db_count, '</a>.<br />
<br />';
Find: Select
echo '
<b>', substr(trim($qq['q']), 0, 6) == 'SELECT' ? '<a href="' . $scripturl . '?action=viewquery;qq=' . ($q + 1) . '#qq' . $q . '" target="_new">' : '', nl2br(str_replace("\t", '&nbsp;&nbsp;&nbsp;', ltrim($qq['q'], "\n\r"))) . '</a></b> in <i>' . $qq['f'] . '</i> line <i>' . $qq['l'] . '</i>, which took ' . $qq['t'] . ' seconds.<br />
<br />';
Replace With: Select
echo '
<b>', substr(trim($qq['q']), 0, 6) == 'SELECT' ? '<a href="' . $scripturl . '?action=viewquery;qq=' . ($q + 1) . '#qq' . $q . '" target="_blank">' : '', nl2br(str_replace("\t", '&nbsp;&nbsp;&nbsp;', ltrim($qq['q'], "\n\r"))) . '</a></b> in <i>' . $qq['f'] . '</i> line <i>' . $qq['l'] . '</i>, which took ' . $qq['t'] . ' seconds.<br />
<br />';

./Sources/Themes.php

Find: Select
* =========================================================================== *
* Software Version: SMF 1.0.1 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Replace With: Select
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
Find: Select
(ID_MEMBER, ID_THEME, variable, value)
VALUES (-1, $_GET[id], '$opt', '" . (is_array($val) ? implode(',', $val) : $val) . "')", __FILE__, __LINE__);
Replace With: Select
(ID_MEMBER, ID_THEME, variable, value)
VALUES (-1, 1, '$opt', '" . (is_array($val) ? implode(',', $val) : $val) . "')", __FILE__, __LINE__);

./ssi_examples.php

Find: Select
<div style="font-family: monospace;">
&lt;?php require(&quot;<?php echo addslashes(realpath($boarddir . '/SSI.php')); ?>&quot;); ?&gt;
</div>
Replace With: Select
<div style="font-family: monospace;">
&lt;?php require(&quot;<?php echo addslashes($user_info['is_admin'] ? realpath($boarddir . '/SSI.php') : 'SSI.php'); ?>&quot;); ?&gt;
</div>

./Themes/default/languages/Errors.english.php

Find: Select
$txt['package_no_file'] = 'Unable to find package file!';
$txt['packageget_unable'] = 'Unable to connect to the server. Please try using <a href="%s" target="_new">this URL</a> instead.';
$txt['not_on_simplemachines'] = 'Sorry, packages can only be downloaded like this from the simplemachines.org server.';
Replace With: Select
$txt['package_no_file'] = 'Unable to find package file!';
$txt['packageget_unable'] = 'Unable to connect to the server. Please try using <a href="%s" target="_blank">this URL</a> instead.';
$txt['not_on_simplemachines'] = 'Sorry, packages can only be downloaded like this from the simplemachines.org server.';

./Sources/Security.php

Find: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2004 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Replace With: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2005 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Find: Select
if (empty($permission))
return true;

// Administrators are supermen :P.
Replace With: Select
if (empty($permission))
return true;

// You're never allowed to do something if your data hasn't been loaded yet!
if (empty($user_info))
return false;

// Administrators are supermen :P.

./Sources/News.php

Find: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2004 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Replace With: Select
* Open-Source Project Inspired by Zef Hemel ([email protected]) *
* =========================================================================== *
* Software Version: SMF 1.0.2 *
* Software by: Simple Machines (http://www.simplemachines.org) *
* Copyright 2001-2005 by: Lewis Media (http://www.lewismedia.com) *
* Support, News, Updates at: http://www.simplemachines.org *
*******************************************************************************
Find: Select
$data['item'] = array(
Replace With: Select
$data[] = array(
Advertisement: