============================================================================================================================
Modification Title: Member UID Reset Tool

Version: 1.3

Author: Adam Clarke (http://www.xmbservices.com)

Description:
This modification will provide a new tool in admin panel to reset all member UIDs if they appear skewed from deleted accounts.
This modification will update all uid dependent mods (Currently: Referrals, Custom Themes, Shop, Auction, lottery, & Improved Polls).

Author: Adam Clarke (http://www.xmbservices.com)

Note: This modification is based on the original reset member uid tool by John Briggs.
          I have re-coded it to support all current UID dependant mods.

Compatibility: XMB 1.9.5 SP1

History: V1.0 (20/11/2005 @ 22:10) - Initial Release.
             V1.1 (27/11/2005 @ 21:40) - Fixed a few major issues which messed up UID based mods.
             V1.2 (26/01/2006 @ 09:30) - Fixed a major issues which prevents the UID of the lottery tables being updated.
             V1.3 (04/07/2006 @ 17:27) - Added support for the Improved Polls mod and updated for 1.9.5.

License Note: This modification is released under the GPL License v3. A copy is provided with this software package.

Author Note:
This modification is developed and released for use with XMB 1.9.5 SP1 which is provided by XMBGarage.com

Note: Backup all affected files, templates & database's.

Affected Files (3): tools.php, admin.user.inc.php, English.lang.php

Affected Templates (0): NONE
=======================================================================================================================================
=======
Step 1:
=======
===========================
Edit File: include/admin.user.inc.php
===========================
==========
Find Code:
==========

    &raquo;&nbsp;<a href="tools.php?action=repairtables"><?php echo $lang['repair']?></a><br />

===============
Add Code Below:
===============

    <!-- Member UID Reset Tool Mod Begin -->
    &raquo;&nbsp;<a href="tools.php?action=resetuids"><?php echo $lang['resetuidstool']?></a><br />
    <!-- Member UID Reset Tool Mod End -->

============================================================================================================================
=======
Step 2:
=======
===============
Edit File: tools.php
===============
==========
Find Code:
==========

    case 'fixorphanedattachments':
        if (!isset($_POST['orphattachsubmit'])) {
            echo '<tr bgcolor="'.$altbg2.'" class="ctrtablerow"><td>';
            echo '<form action="tools.php?action=fixorphanedattachments" method="post">';
            echo '<input type="submit" name="orphattachsubmit" value="'.$lang['o_attach_submit'].'" />';
            echo '</form>';
        } else {
            $i = 0;
            $q = $db->query("SELECT aid, pid FROM $table_attachments");
            while ($a = $db->fetch_array($q)) {
                $result = $db->query("SELECT pid FROM $table_posts WHERE pid='$a[pid]'");
                if ($db->num_rows($result) == 0) {
                    $db->query("DELETE FROM $table_attachments WHERE aid='$a[aid]'");
                    $i++;
                }
            }
            echo '<tr bgcolor="'.$altbg2.'" class="ctrtablerow"><td>';
            echo $i . $lang['o_attachments_found'];
        }
        break;

===============
Add Code Below:
===============

    // Member UID Reset Tool Mod Begin
    case 'resetuids':
        if (!isset($_POST['resetsubmit'])) {
            echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>".$lang['resetuids_confirm']."<br /><form action=\"tools.php?action=resetuids\" method=\"post\"><input type=\"submit\" name=\"resetsubmit\" value=\"".$lang['textyes']."\" /> - <input type=\"submit\" name=\"resetsubmit\" value=\"".$lang['textno']."\" /></form></td></tr>";
        } elseif ($_POST['resetsubmit'] == $lang['textyes']) {
            $db->query("ALTER TABLE `$table_members` ADD `olduid` int(12) NOT NULL AFTER `uid`");
            $db->query("UPDATE `$table_members` SET `olduid` = `uid`");
            $db->query("ALTER TABLE `$table_members` ORDER BY `regdate`");
            $db->query("ALTER TABLE `$table_members` DROP `uid`");
            $db->query("ALTER TABLE `$table_members` ADD `uid` int(12) NOT NULL auto_increment PRIMARY KEY FIRST");
            $query = $db->query("SELECT `uid`, `olduid` FROM `$table_members` ORDER BY `uid`");
            while($result = $db->fetch_array($query)) {
                if (isset($self['referredby'])) {
                    $db->query("UPDATE `$table_members` SET `referredby`='$result[uid]' WHERE `referredby`='$result[olduid]'");
                }
                $query2 = $db->query("SELECT tid FROM `$table_threads` WHERE `pollopts`='open'");
                if ($db->num_rows($query2) >= 1) {
                    $query3 = $db->query("SELECT * FROM ".$tablepre."polls WHERE voters LIKE '%|#|".$result['olduid']."|#|%'");
                    while ($result3 = $db->fetch_array($query3)) {
                        $newvoters = str_replace('|#|'.$result['olduid'].'|#|', '|#|'.$result['uid'].'|#|', $result3['voters']);
                        $db->query("UPDATE `".$tablepre."polls` SET `voters`='$newvoters' WHERE `pod`='$result3[pod]'");
                    }
                }
                if (isset($table_auction_history)) {
                    $db->query("UPDATE `$table_auction_history` SET `biduid`='$result[uid]' WHERE `biduid`='$result[olduid]'");
                }
                if (isset($table_auctions)) {
                    $db->query("UPDATE `$table_auctions` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                    $db->query("UPDATE `$table_auctions` SET `biduid`='$result[uid]' WHERE `biduid`='$result[olduid]'");
                }
                if (isset($table_lottery_history)) {
                    $db->query("UPDATE `$table_lottery_history` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                }
                if (isset($table_lottery_tickets)) {
                    $db->query("UPDATE `$table_lottery_tickets` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                }
                if (isset($table_member_items)) {
                    $db->query("UPDATE `$table_member_items` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                }
                if (isset($table_members_themes)) {
                    $db->query("UPDATE `$table_members_themes` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                }
                if (isset($table_shop_bank)) {
                    $db->query("UPDATE `$table_shop_bank` SET `fromuid`='$result[uid]' WHERE `fromuid`='$result[olduid]'");
                    $db->query("UPDATE `$table_shop_bank` SET `touid`='$result[uid]' WHERE `touid`='$result[olduid]'");
                }
                if (isset($table_shop_cats)) {
                    $db->query("UPDATE `$table_shop_cats` SET `owner`='$result[uid]' WHERE `owner`='$result[olduid]'");
                }
                if (isset($table_shop_items)) {
                    $db->query("UPDATE `$table_shop_items` SET `owner`='$result[uid]' WHERE `owner`='$result[olduid]'");
                }
                if (isset($table_shop_votes)) {
                    $db->query("UPDATE `$table_shop_votes` SET `uid`='$result[uid]' WHERE `uid`='$result[olduid]'");
                }
                if (isset($table_membergroups)) {
                    $db->query("UPDATE `$table_membergroups` SET `username`='$result[uid]' WHERE `username`='$result[olduid]'");
                }
                if (isset($table_membergroups_logs)) {
                    $db->query("UPDATE `$table_membergroups_logs` SET `userlist`='$result[uid]' WHERE `userlist`='$result[olduid]'");
                }
            }

            $db->query("ALTER TABLE `$table_members` DROP `olduid`");
            nav($lang['tools']);
            echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>$lang[tool_completed] - $lang[tool_resetuids]</td></tr></table></table>";
            end_time();
            eval("echo (\"".template('footer')."\");");
            exit();
        } else {
            redirect('./cp.php', 0);
        }
        break;
       // Member UID Reset Tool Mod End

============================================================================================================================
=======
Step 3:
=======
=======================
Edit File: lang/English.lang.php
=======================
============================
Add Code To End Of File Above  ?>
============================

// Member UID Reset Tool Mod Begin
$lang['resetuids_confirm'] = "Are you sure you want to reset member UIDs?";
$lang['tool_resetuids'] = "All member UIDs are reset and updated.";
$lang['resetuidstool'] = "Reset Member UIDs";
// Member UID Reset Tool Mod End

============================================================================================================================
Enjoy!