Exemplo n.º 1
0
function upgrade_bans_table()
{
    $dbi = new ThornDBI();
    // First verify if the table is already upgraded.
    $result = $dbi->myquery("SHOW COLUMNS FROM `" . THbans_table . "` LIKE 'ip_octet3'");
    if (mysql_num_rows($result) > 0) {
        die("Database has already been modified!");
    }
    // Get all of the old bans from the DB
    $bans = $dbi->mymultiarray("SELECT * FROM `" . THbans_table . "` WHERE 1");
    // This could take a while.
    // Store them in a temp file
    file_put_contents(THpath . "upgrade_install_temp.php", var_export($bans, true), FILE_TEXT) or die("Could not open upgrade_install_temp.php for writing.");
    // Convert to a new type
    $bans_new = array();
    // This will hold the converted ones.
    $octets = array();
    // Used to hold IP octets
    $single_ban = array();
    // Used to hold a converted ban
    foreach ($bans as $old_ban) {
        // Convert the IP (in long integer format) from the old ban,
        // and segment it into the new octet fields
        $octets = explode(".", long2ip($old_ban['ip']), 4);
        $single_ban['ip_octet1'] = intval($octets[0]);
        $single_ban['ip_octet2'] = intval($octets[1]);
        $single_ban['ip_octet3'] = intval($octets[2]);
        // If subnet in the old ban is true, set the
        // new ban's 4th octet to be the wildcard value of -1,
        // otherwise proceed as normal
        if ($old_ban['subnet'] != 0) {
            $single_ban['ip_octet4'] = -1;
        } else {
            $single_ban['ip_octet4'] = intval($octets[3]);
        }
        // Everything else is a straight copyover
        $single_ban['publicreason'] = $old_ban['publicreason'];
        $single_ban['privatereason'] = $old_ban['privatereason'];
        $single_ban['adminreason'] = $old_ban['adminreason'];
        $single_ban['postdata'] = $old_ban['postdata'];
        $single_ban['duration'] = $old_ban['duration'];
        $single_ban['bantime'] = $old_ban['bantime'];
        $single_ban['bannedby'] = $old_ban['bannedby'];
        $bans_new[] = $single_ban;
        // Add it into the array
    }
    $bans = null;
    // Clean up
    // Drop old bans table
    $result = $dbi->myquery("DROP TABLE `" . THbans_table . "`");
    if ($result === null) {
        die("DROP Error " . mysql_errno($dbi->cxn) . ": " . mysql_error($dbi->cxn) . "\n");
    }
    // Insert new bans table
    $query = "CREATE TABLE `" . THbans_table . "` \r\n\t\t( \r\n\t\t`id` int unsigned NOT NULL auto_increment, \r\n\t\t`ip_octet1` int NOT NULL, \r\n\t\t`ip_octet2` int NOT NULL, \r\n\t\t`ip_octet3` int NOT NULL, \r\n\t\t`ip_octet4` int NOT NULL, \r\n\t\t`publicreason` text  NOT NULL, \r\n\t\t`privatereason` text  NOT NULL, \r\n\t\t`adminreason` text  NOT NULL, \r\n\t\t`postdata` longtext  NOT NULL, \r\n\t\t`duration` int(11) NOT NULL default '-1', \r\n\t\t`bantime` int(11) unsigned NOT NULL, \r\n\t\t`bannedby` varchar(100)  NOT NULL, \r\n\t\tPRIMARY KEY  (`id`) \r\n\t\t) ENGINE=MyISAM character set utf8 collate utf8_unicode_ci;";
    $result = $dbi->myquery($query);
    if ($result === null) {
        die("CREATE Error " . mysql_errno($dbi->cxn) . ": " . mysql_error($dbi->cxn) . "\n");
    }
    // Insert converted bans
    $successful = 1;
    // set to 0 when one of these insert queries fails
    foreach ($bans_new as $insert) {
        $banquery = "insert into `" . THbans_table . "` \r\n\t\t\tset ip_octet1=" . $insert['ip_octet1'] . ",\r\n\t\t\tip_octet2=" . $insert['ip_octet2'] . ",\r\n\t\t\tip_octet3=" . $insert['ip_octet3'] . ",\r\n\t\t\tip_octet4=" . $insert['ip_octet4'] . ",\r\n\t\t\tprivatereason='" . $dbi->clean($insert['privatereason']) . "', \r\n\t\t\tpublicreason='" . $dbi->clean($insert['publicreason']) . "', \r\n\t\t\tadminreason='" . $dbi->clean($insert['adminreason']) . "', \r\n\t\t\tpostdata='" . $dbi->clean($insert['postdata']) . "', \r\n\t\t\tduration=" . $insert['duration'] . ", \r\n\t\t\tbantime=" . $insert['bantime'] . ", \r\n\t\t\tbannedby='" . $dbi->clean($insert['bannedby']) . "'";
        $result = $dbi->myquery($banquery);
        if ($result === null) {
            printf("Insert Error for %d.%d.%d.%s: #%d: %s<br />\n", $insert['ip_octet1'], $insert['ip_octet2'], $insert['ip_octet3'], $insert['ip_octet4'] == -1 ? "*" : $insert['ip_octet4'], mysql_errno($dbi->cxn), mysql_error($dbi->cxn));
            $successful = 0;
            // One bad insert ruins the lot.
        }
    }
    // Did it work?
    if ($successful == 1) {
        echo "Success!";
        unlink("upgrade_install_temp.php");
    }
}
Exemplo n.º 2
0
 //how many on each page
 if (isset($_GET['offset'])) {
     $offset = intval($_GET['offset']);
     if ($offset < 0) {
         $offset = 0;
     }
 }
 $beginning = $count - $orpha - $offset;
 if ($beginning < 0) {
     $beginning = 0;
 }
 //Beginning should never be greater than $count, for the reason that $offset is always >= 0
 $imagequery = "SELECT * FROM " . THimages_table . " ORDER BY id ASC LIMIT {$beginning} , {$orpha}";
 echo "{$imagequery}<br />";
 $imgs = array();
 $queryresult = $db->myquery($imagequery);
 if ($queryresult != 0) {
     while ($img = mysql_fetch_assoc($queryresult)) {
         $imgs[] = $img;
     }
     foreach ($imgs as $key => $row) {
         $id[$key] = $row['id'];
     }
     //if our other catch doesn't work (which half the time it doesnt) then let's catch it here.  sloppy :[  ~tyam
     @array_multisort($id, SORT_DESC, $imgs) or $bail = 1;
     $row = 0;
     $column = 0;
     $nomoreimages = 0;
 } else {
     $bail = 1;
     //this gives us a "no records found" message in the right place if it catches