⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upgrade5.php

📁 Discuz功能源码(开源)
💻 PHP
📖 第 1 页 / 共 3 页
字号:
			$fields .= $fieldids ? ', field_'.implode(', field_', $fieldids) : '';

			$query = $db->query("SELECT $fields FROM {$tablepre}members LIMIT $start, 3000");
			while($member = $db->fetch_array($query)) {
				$member = daddslashes($member);

				$fieldadd = '';
				foreach($fieldids as $fieldid) {
					$fieldadd .= ", '".$member['field_'.$fieldid]."'";
				}

				$db->query("INSERT INTO {$tablepre}memberfields ($fields, sightml)
					VALUES('$member[uid]', '$member[site]', '$member[icq]', '$member[oicq]', '$member[yahoo]', '$member[msn]', '$member[location]', '$member[bio]', '$member[signature]', '$member[avatar]', '$member[avatarwidth]', '$member[avatarheight]', '$member[customstatus]', '$member[ignorepm]' $fieldadd, '$member[signature]')");
			}

			if($db->num_rows($query)) {
				echo "正在进行第 3 步升级 起始列数: $start<br><br>";
				redirect("?action=upgrade&step=3&start=".($start+3000));
			} else {
				echo "第 3 步升级成功<br><br>";
				redirect("?action=upgrade&step=4");
			}

		}

	} elseif($step == 4) {

		runquery(intval(mysql_get_server_info()) == 3 ? $upgrade4_3 : $upgrade4_4);

		echo "第 4 步升级成功<br><br>";
		redirect("?action=upgrade&step=5");

	} elseif($step == 5) {

		runquery(intval(mysql_get_server_info()) == 3 ? $upgrade5_3 : $upgrade5_4);

		loginit('ratelog');
		loginit('illegallog');
		loginit('modslog');
		loginit('cplog');
		loginit('errorlog');
		loginit('banlog');

		echo "第 5 步升级成功<br><br>";
		redirect("?action=upgrade&step=6");

	} elseif($step == 6) {

		runquery(intval(mysql_get_server_info()) == 3 ? $upgrade6_3 : $upgrade6_4);

		echo "第 6 步升级成功<br><br>";
		redirect("?action=upgrade&step=7");

	} elseif($step == 7) {

		$str_fields = '';
		$query = $db->query("SELECT fieldid, size FROM {$tablepre}profilefields");
		while($field = $db->fetch_array($query)) {
			$str_fields .= ", DROP field_$field[fieldid]";
		}

		$query = $db->query("SELECT * FROM {$tablepre}forums");
		while($forum = $db->fetch_array($query)) {
			$forum['moderator'] = addslashes(str_replace(' ', '', $forum['moderator']));
			$query1 = $db->query("SELECT uid FROM {$tablepre}members WHERE username IN ('".str_replace(',', '\',\'', $forum['moderator'])."')");
			while($member = $db->fetch_array($query1)) {
				$db->query("REPLACE INTO {$tablepre}moderators (fid, uid) VALUES
					('$forum[fid]', '$member[uid]')");
			}
			$db->query("REPLACE INTO {$tablepre}forumfields (fid, icon, moderators, password, viewperm, postperm, replyperm, getattachperm)
				VALUES ('$forum[fid]', '".addslashes($forum['icon'])."', '".str_replace(',', "\t", addslashes($forum['moderator']))."', '".addslashes($forum['password'])."', '$forum[viewperm]', '$forum[postperm]', '$forum[replyperm]', '$forum[getattachperm]')");
		}

		eval("\$upgrade7 = \"$upgrade7\";");
		runquery($upgrade7);

		$query = $db->query("SELECT s.styleid, sv.substitute FROM {$tablepre}styles s
			LEFT JOIN {$tablepre}stylevars sv ON s.styleid=sv.styleid AND sv.variable='fontsize'");
		while($style = $db->fetch_array($query)) {
			$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
				VALUES ('$style[styleid]', 'innerborderwidth', '1')");
			$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
				VALUES ('$style[styleid]', 'innerbordercolor', '#D6E0EF')");
			$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
				VALUES ('$style[styleid]', 'msgfontsize', '$style[substitute]')");
		}

		echo "第 7 步升级成功<br><br>";
		redirect("?action=upgrade&step=8");

	} elseif($step == 8) {

		runquery($upgrade8);

		$q = $db->query("SELECT fid FROM {$tablepre}forums");
		while($f = $db->fetch_array($q)) {
			$fid = $f['fid'];
			$query = $db->query("SELECT COUNT(*) AS threadcount, SUM(t.replies)+COUNT(*) AS replycount
				FROM {$tablepre}threads t, {$tablepre}forums f
				WHERE f.fid='$fid' AND t.fid=f.fid AND t.displayorder>='0'");

			extract($db->fetch_array($query));

			$query = $db->query("SELECT tid, subject, lastpost, lastposter FROM {$tablepre}threads
				WHERE fid='$fid' AND displayorder>='0' ORDER BY lastpost DESC LIMIT 1");

			$thread = $db->fetch_array($query);
			$thread['subject'] = addslashes($thread['subject']);
			$thread['lastposter'] = addslashes($thread['lastposter']);

			$db->query("UPDATE {$tablepre}forums SET posts='$replycount', threads='$threadcount', lastpost='$thread[tid]\t$thread[subject]\t$thread[lastpost]\t$thread[lastposter]' WHERE fid='$fid'", 'UNBUFFERED');
		}

		echo "第 8 步升级成功<br><br>";
		redirect("?action=upgrade&step=9");

	} elseif($step == 9) {

		runquery($upgrade9);
		$db->query("ALTER TABLE {$tablepre}pms DROP INDEX folder", 'SILENT');
		$db->query("ALTER TABLE {$tablepre}styles DROP INDEX themename", 'SILENT');
		
		$query = $db->query("SELECT fid, description, postcredits, replycredits FROM {$tablepre}forums");
		while($forum = $db->fetch_array($query)) {
			$postcredits = $forum['postcredits'] == -1 ? '' : addslashes(serialize(array(1 => $forum['postcredits'])));
			$replycredits = $forum['replycredits'] == -1 ? '' : addslashes(serialize(array(1 => $forum['replycredits'])));
			$db->query("UPDATE {$tablepre}forumfields SET description='".addslashes($forum['description'])."', postcredits='$postcredits', replycredits='$replycredits' WHERE fid='$forum[fid]'");
		}
		$db->query("ALTER TABLE {$tablepre}forums DROP description, DROP postcredits, DROP replycredits");

		echo "第 9 步升级成功<br><br>";
		redirect("?action=upgrade&step=10");

	} elseif($step == 10) {

		//这里可能需要分步骤操作
		$query = $db->query("SELECT pid, dateline FROM {$tablepre}posts WHERE attachment>0");
		while($post = $db->fetch_array($query)) {
			$db->query("UPDATE {$tablepre}attachments SET dateline='$post[dateline]' WHERE pid='$post[pid]'");
		}

		echo "第 10 步升级成功<br><br>";
		redirect("?action=upgrade&step=11");

	} elseif($step == 11) {

		$num = 10000; // parameter
		$start = intval($start);

		$pids = 0;
		$query = $db->query("SELECT pid FROM {$tablepre}threads t, {$tablepre}posts p
			WHERE p.tid=t.tid AND p.dateline=t.dateline AND p.authorid=t.authorid
			LIMIT $start, $num");
		while($post = $db->fetch_array($query)) {
			$pids .= ','.$post['pid'];
		}

		$db->query("UPDATE {$tablepre}posts SET first='1' WHERE pid IN ($pids)");

		if($db->num_rows($query)) {
			echo "正在进行第 11 步升级 起始列数: $start<br><br>";
			redirect("?action=upgrade&step=11&start=".($start+$num));
		} else {
			echo "第 11 步升级成功<br><br>";
			redirect("?action=upgrade&step=12");
		}

	} elseif($step == 12) {

		$query = $db->query("SELECT uid, buddyid, count(*) AS count FROM {$tablepre}buddys GROUP BY uid, buddyid HAVING count>1");
		while($buddy = $db->fetch_array($query)) {
			$db->query("DELETE FROM {$tablepre}buddys WHERE uid='$buddy[uid]' AND buddyid='$buddy[buddyid]' LIMIT ".($buddy['count'] - 1));
		}

		$credits = array();
		$query = $db->query("SELECT * FROM {$tablepre}settings WHERE variable LIKE '%credits%'");
		while($c = $db->fetch_array($query)) {
			$credits[$c['variable']] = $c['value'];
		}

		$extcredits = Array
		(
		1 => Array
			(
			'title' => '威望',
			'showinthread' => '',
			'available' => 1
			),
		2 => Array
			(
			'title' => '金钱',
			'showinthread' => '',
			'available' => 1
			)
		);
		$creditspolicy = Array
		(
		'post' => Array
			(
			1 => $credits['postcredits']
			),
		'reply' => Array
			(
			1 => $credits['replycredits']
			),
		'digest' => Array
			(
			1 => $credits['digestcredits']
			),
		'postattach' => Array
			(
			),
		'getattach' => Array
			(

			),
		'pm' => Array
			(
			),
		'search' => Array
			(
			)
		);

		$db->query("REPLACE INTO {$tablepre}settings (variable, value)
				VALUES ('creditspolicy', '".addslashes(serialize($creditspolicy))."')");

		$db->query("REPLACE INTO {$tablepre}settings (variable, value)
				VALUES ('extcredits', '".addslashes(serialize($extcredits))."')");

		$db->query("DELETE FROM {$tablepre}settings WHERE variable IN ('deletedcredits', 'digestcredits', 'postcredits', 'replycredits')");

		$query = $db->query("SELECT m.uid, m.groupid, m.groupexpiry, mf.origgroup FROM {$tablepre}members m, {$tablepre}memberfields mf WHERE mf.origgroup<>'' AND m.uid=mf.uid AND m.groupexpiry>0");
		while($member = $db->fetch_array($query)) {
			$member['origgroup'] = explode("\t", $member['origgroup']);
			if($member['origgroup'][0] || $member['origgroup'][1]) {
				$array = array('main' => array('time' => $member['groupexpiry'], 'groupid' => $member['origgroup'][1], 'adminid' => $member['origgroup'][0]), 'ext' => array($member['groupid'] => $member['groupexpiry']));
				$db->query("UPDATE {$tablepre}memberfields SET groupterms='".addslashes(serialize($array))."' WHERE uid='$member[uid]'");
			}
		}

		$db->query("ALTER TABLE {$tablepre}memberfields DROP origgroup");

		@unlink('./forumdata/cache/cache_settings.php');
		echo "恭喜您升级成功,请务必删除本程序. 进行以下操作后才能最后完成:<br>";

	}
}

function dir_clear($dir) {
	$directory = dir($dir);
	while($entry = $directory->read()) {
		$filename = $dir.'/'.$entry;
		if(is_file($filename)) {
			@unlink($filename);
		}
	}
	$directory->close();
}

function daddslashes($string) {
	if(is_array($string)) {
		foreach($string as $key => $val) {
			$string[$key] = daddslashes($val, $force);
		}
	} else {
		$string = addslashes($string);
	}
	return $string;
}

function loginit($log) {
	global $lang;

	$fp = @fopen('./forumdata/'.$log.'.php');
	@fwrite($fp, "<?PHP exit(\"Access Denied\"); ?>\n");
	@fclose($fp);
}

function checkbbcodes($message, $bbcodeoff) {
	return !$bbcodeoff && !preg_match("/\[.+\].*\[\/.+\]/s", $message) ? -1 : $bbcodeoff;
}

function checksmilies($message, $smileyoff) {
	global $smilies;
	return !$smileyoff && !preg_match('/'.implode('|', $smilies).'/', $message) ? -1 : $smileyoff;
}

function runquery($query) {
	global $db, $tablepre;
	$expquery = explode(";", $query);
	foreach($expquery as $sql) {
		$sql = trim($sql);
		if($sql != "" && $sql[0] != "#") {
			$db->query(str_replace("cdb_", $tablepre, $sql));
		}
	}
}

function redirect($url) {

	echo"<script>";
	echo"function redirect() {window.location.replace('$url');}\n";
	echo"setTimeout('redirect();', 500);\n";
	echo"</script>";
	echo"<br><br><a href=\"$url\">浏览器会自动跳转页面,无需人工干预。<br>除非当您的浏览器没有自动跳转时,请点击这里</a>";

}

function random($length) {
	$hash = '';
	$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
	$max = strlen($chars) - 1;
	mt_srand((double)microtime() * 1000000);
	for($i = 0; $i < $length; $i++) {
		$hash .= $chars[mt_rand(0, $max)];
	}
	return $hash;
}

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -