aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/develop')
-rw-r--r--phpBB/develop/bbcode_conversion.php205
-rw-r--r--phpBB/develop/benchmark.php300
2 files changed, 505 insertions, 0 deletions
diff --git a/phpBB/develop/bbcode_conversion.php b/phpBB/develop/bbcode_conversion.php
new file mode 100644
index 0000000000..a4d62a0325
--- /dev/null
+++ b/phpBB/develop/bbcode_conversion.php
@@ -0,0 +1,205 @@
+<?php
+/***************************************************************************
+ * config.php
+ * -------------------
+ * begin : Tuesday, March 20, 2001
+ * copyright : (C) 2001 The phpBB Group
+ * email : support@phpbb.com
+ *
+ * $Id:
+ *
+ *
+ ***************************************************************************/
+
+
+/***************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ *
+ ***************************************************************************/
+
+include('extension.inc');
+include('config.'.$phpEx);
+include('includes/constants.'.$phpEx);
+include('functions/functions.'.$phpEx);
+include('includes/db.'.$phpEx);
+include('functions/bbcode.'.$phpEx);
+
+set_time_limit(60*60); // Increase maximum execution time to 60 minutes.
+
+
+
+$backup_name = "backup_post_text";
+$table_name = POSTS_TEXT_TABLE;
+$sql = "CREATE TABLE $backup_name (
+ post_id int(10) DEFAULT '0' NOT NULL,
+ post_text text,
+ PRIMARY KEY (post_id)
+);";
+
+echo "<p>Creating backup table.. </p>\n";
+flush();
+
+$result = $db->sql_query($sql);
+if (!$result)
+{
+ $db_error = $db->sql_error();
+ die("Error doing DB backup table creation. Reason: " . $db_error["message"]);
+}
+
+$sql = "insert into $backup_name select * from $table_name";
+
+echo "<p>Populating backup table.. </p>\n";
+flush();
+
+$result = $db->sql_query($sql);
+if (!$result)
+{
+ $db_error = $db->sql_error();
+ die("Error doing DB backup table data moving. Reason: " . $db_error["message"]);
+}
+
+
+$sql = "SELECT p.post_id, t.post_text FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " t WHERE (p.post_id = t.post_id)";
+if(!$result = $db->sql_query($sql))
+{
+ die("error getting posts to work on");
+}
+if(!$total_rows = $db->sql_numrows($result))
+{
+ die("error getting rowcount");
+}
+
+echo "<p><b>Found $total_rows total rows to work on. </b></p>\n";
+flush();
+
+$row = $db->sql_fetchrowset($result);
+
+for($i = 0; $i < $total_rows; $i++)
+{
+ $post_id = $row[$i]['post_id'];
+ $text = $row[$i]['post_text'];
+
+ // undo 1.2.x encoding..
+ $text = bbdecode($text);
+ $text = undo_make_clickable($text);
+ $text = str_replace("<BR>", "\n", $text);
+
+ // make a uid
+ $uid = make_bbcode_uid();
+
+ // do 2.x first-pass encoding..
+ $text = bbencode_first_pass($text, $uid);
+
+ $text = addslashes($text);
+
+ // put the uid in the database.
+ $sql = "UPDATE " . POSTS_TABLE . " SET bbcode_uid='" . $uid . "' WHERE (post_id = $post_id)";
+ $result = $db->sql_query($sql);
+ if (!$result)
+ {
+ $db_error = $db->sql_error();
+ die("Error doing DB update in posts table. Reason: " . $db_error["message"] . " sql: $sql");
+ }
+ // Put the post text back in the database.
+ $sql = "UPDATE " . POSTS_TEXT_TABLE . " SET post_text='" . $text . "' WHERE (post_id = $post_id)";
+ $result = $db->sql_query($sql);
+ if (!$result)
+ {
+ $db_error = $db->sql_error();
+ die("Error doing DB update in post text table. Reason: " . $db_error["message"] . " sql: $sql");
+ }
+
+ if (($i % 100) == 0)
+ {
+ echo "Done post: <b> $i </b><br>\n";
+ flush();
+ }
+
+
+}
+
+
+
+echo "<p><b>Done.</b></p>\n";
+
+
+
+// -------------------------------------------------------------------------------
+// Everything below here is 1.x BBCode functions.
+// -------------------------------------------------------------------------------
+
+
+function bbdecode($message) {
+
+ // Undo [code]
+ $code_start_html = "<!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE>";
+ $code_end_html = "</PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End -->";
+ $message = str_replace($code_start_html, "[code]", $message);
+ $message = str_replace($code_end_html, "[/code]", $message);
+
+ // Undo [quote]
+ $quote_start_html = "<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>";
+ $quote_end_html = "</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->";
+ $message = str_replace($quote_start_html, "[quote]", $message);
+ $message = str_replace($quote_end_html, "[/quote]", $message);
+
+ // Undo [b] and [i]
+ $message = preg_replace("#<!-- BBCode Start --><B>(.*?)</B><!-- BBCode End -->#s", "[b]\\1[/b]", $message);
+ $message = preg_replace("#<!-- BBCode Start --><I>(.*?)</I><!-- BBCode End -->#s", "[i]\\1[/i]", $message);
+
+ // Undo [url] (long form)
+ $message = preg_replace("#<!-- BBCode u2 Start --><A HREF=\"([a-z]+?://)(.*?)\" TARGET=\"_blank\">(.*?)</A><!-- BBCode u2 End -->#s", "[url=\\1\\2]\\3[/url]", $message);
+
+ // Undo [url] (short form)
+ $message = preg_replace("#<!-- BBCode u1 Start --><A HREF=\"([a-z]+?://)(.*?)\" TARGET=\"_blank\">(.*?)</A><!-- BBCode u1 End -->#s", "[url]\\3[/url]", $message);
+
+ // Undo [email]
+ $message = preg_replace("#<!-- BBCode Start --><A HREF=\"mailto:(.*?)\">(.*?)</A><!-- BBCode End -->#s", "[email]\\1[/email]", $message);
+
+ // Undo [img]
+ $message = preg_replace("#<!-- BBCode Start --><IMG SRC=\"(.*?)\" BORDER=\"0\"><!-- BBCode End -->#s", "[img]\\1[/img]", $message);
+
+ // Undo lists (unordered/ordered)
+
+ // <li> tags:
+ $message = str_replace("<!-- BBCode --><LI>", "[*]", $message);
+
+ // [list] tags:
+ $message = str_replace("<!-- BBCode ulist Start --><UL>", "[list]", $message);
+
+ // [list=x] tags:
+ $message = preg_replace("#<!-- BBCode olist Start --><OL TYPE=([A1])>#si", "[list=\\1]", $message);
+
+ // [/list] tags:
+ $message = str_replace("</UL><!-- BBCode ulist End -->", "[/list]", $message);
+ $message = str_replace("</OL><!-- BBCode olist End -->", "[/list]", $message);
+
+ return($message);
+}
+
+
+/**
+ * Nathan Codding - Feb 6, 2001
+ * Reverses the effects of make_clickable(), for use in editpost.
+ * - Does not distinguish between "www.xxxx.yyyy" and "http://aaaa.bbbb" type URLs.
+ *
+ */
+
+function undo_make_clickable($text) {
+
+ $text = preg_replace("#<!-- BBCode auto-link start --><a href=\"(.*?)\" target=\"_blank\">.*?</a><!-- BBCode auto-link end -->#i", "\\1", $text);
+ $text = preg_replace("#<!-- BBcode auto-mailto start --><a href=\"mailto:(.*?)\">.*?</a><!-- BBCode auto-mailto end -->#i", "\\1", $text);
+
+ return $text;
+
+}
+
+
+
+
+?> \ No newline at end of file
diff --git a/phpBB/develop/benchmark.php b/phpBB/develop/benchmark.php
new file mode 100644
index 0000000000..5dfb7212af
--- /dev/null
+++ b/phpBB/develop/benchmark.php
@@ -0,0 +1,300 @@
+<?
+include('extension.inc');
+include('config.'.$phpEx);
+include('includes/constants.'.$phpEx);
+include('functions/functions.'.$phpEx);
+include('includes/db.'.$phpEx);
+
+srand ((double) microtime() * 1000000);
+set_time_limit(20*60);
+
+// The script expects the ID's in the tables to sequential (1,2,3,4,5),
+// so no holes please (1,4,5,8)...
+$nr_of_users = nrof(USERS_TABLE);
+$nr_of_cats = nrof(CATEGORIES_TABLE);
+$nr_of_forums = nrof(FORUMS_TABLE);
+$nr_of_posts = nrof(POSTS_TABLE);
+$nr_of_topics = nrof(TOPICS_TABLE); // create_topic() will keep this up to date
+
+$u = $users;
+
+$starttime = microtime();
+
+while($users > 0){
+
+ $name = "testuser_" . ($nr_of_users+10);
+ createuser($name);
+ $users--;
+}
+if ($forums > 0){
+ create_forums($forums);
+}
+if ($posts > 0){
+ filldb($posts);
+}
+
+$endtime = microtime();
+
+if ($submit="" || !isset($submit)){
+ ?>
+Hello, welcome to this little phpBB Benchmarking script :)<p>
+
+At the moment there are:<br>
+<table>
+<tr><td align="right"><?=$nr_of_users?></td><td>Users</td></tr>
+<tr><td align="right"><?=$nr_of_topics?></td><td>Topics</td></tr>
+<tr><td align="right"><?=$nr_of_forums?></td><td>Forums</td></tr>
+<tr><td align="right"><?=$nr_of_posts?></td><td>Posts</td></tr>
+</table>
+<p>
+What do you want to create?<p>
+
+<form method="get" action="<?=$PHP_SELF?>">
+<input type="text" name="users" size="3"> Users<br>
+<input type="text" name="forums" size="3"> Forums/categories<br>
+<input type="text" name="posts" size="3"> Posts/topics (optional: post size in <input type="text" name="size" size="3"> bytes)<br>
+<input type="submit" name="submit">
+</form>
+
+ <?
+} else {
+
+
+ list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
+ list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
+ $timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
+ print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
+
+ $starttime = microtime();
+
+ $result = $db->sql_query("SELECT * FROM users LIMIT 5,200");
+ $rowresult = $db->sql_fetchrowset($result);
+
+ $endtime = microtime();
+
+ for($i=0;$i<count($rowresult);$i++){
+ print $rowresult[$i]['user_id']." : ".$rowresult[$i]['username']."<BR>";
+ }
+
+// while($row = $db->sql_fetchrow()){
+// print $row['user_id']."<BR>";
+// }
+
+ list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
+ list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
+ $timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
+ print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
+
+ print "<p>\n<a href=\"$PHP_SELF\">Back to the overview page</a>\n";
+}
+
+function filldb($newposts){
+ global $nr_of_topics;
+ global $nr_of_forums;
+ global $nr_of_users;
+ for($i=0 ; $i<=$newposts; $i++){
+ $userid = rand(1,$nr_of_users);
+ $forum = rand(1,$nr_of_forums);
+ if (rand(0,20) < 1 || $nr_of_topics == 0){
+ // create a new topic 1 in 20 times (or when there are none);
+ $topic = create_topic($userid, "This is test topic nr. $i", $forum);
+ } else {
+ // Otherwise create a reply(posting) somewhere.
+ $topic = rand(1,$nr_of_topics);
+ }
+ create_posting($userid, $topic, $forum);
+ }
+}
+
+
+function create_topic($userid, $subject, $forum){
+ global $db;
+ global $nr_of_topics;
+ $userdata = get_userdata($username, $db);
+ $time = time();
+ $sql = "INSERT INTO ".TOPICS_TABLE." (topic_title, topic_poster, forum_id, topic_time, topic_notify) VALUES ('$subject', '$userid', '$forum', '$time', 0)";
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create Topic $subject in DB!<br>\n";
+ print "This is the sql statement:<br>\n$sql\n<br>\n";
+ die;
+ } else {
+ print "<br>Topic '$subject' created!<br>\n";
+ $nr_of_topics++;
+ flush();
+ return mysql_insert_id($db->db_connect_id);
+ }
+}
+
+function create_posting($userid, $topic_id, $forum){
+ global $db;
+ $message = generatepost(650);
+ $time = time();
+ $poster_ip = "234234232";
+
+ $sql = "INSERT INTO ".POSTS_TABLE." (forum_id, topic_id, poster_id, post_time, poster_ip) VALUES ('$forum', '$topic_id', '$userid', '$time', '$poster_ip')";
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create post in $forum!<br>\n";
+ print "This is the sql statement:<br>\n$sql\n<br>\n";
+ die;
+ } else {
+
+ $post_id = mysql_insert_id($db->db_connect_id);
+ $sql = "INSERT INTO ".POSTS_TEXT_TABLE." (post_id, post_text) VALUES ('$post_id', '$message')";
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create post text in $forum!<br>\n";
+ print "This is the sql statement:<br>\n$sql\n<br>\n";
+ die;
+ }
+ print "$forum ";
+ return 0;
+ }
+}
+
+function create_forums($totalforums){
+ global $db;
+ global $nr_of_cats;
+ $j=0;
+ for($i=0 ; $i<$totalforums; $i++){
+ if (rand(0,5) <= 2 || $nr_of_cats == 0){
+ // create a new cat at random times or when there are no cats yet.
+ $j++;
+ $catid = create_cat("Category $j");
+ } else {
+ // Otherwise create a forum in one of the cats.
+ $catid = rand(0,$nr_of_cats);
+ }
+ $forum = "Test forum number $i";
+ create_forum($catid, $forum);
+ }
+}
+
+function create_cat($category){
+ global $db;
+ global $nr_of_cats;
+ // At the moment cat_order is always one, oh well..
+ echo $sql = "INSERT INTO ".CATEGORIES_TABLE." (cat_title, cat_order) VALUES ('$category', '1')";
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create category \"$category\"!<br>\n";
+ die;
+ } else {
+ print "Category \"$category\" created!<br>\n";
+ $nr_of_cats++;
+ return mysql_insert_id($db->db_connect_id);
+ }
+}
+
+function create_forum($catid, $forum){
+ global $db;
+ global $nr_of_forums;
+
+ $sql = "INSERT INTO ".FORUMS_TABLE." (forum_name, forum_desc, forum_access, cat_id, forum_type) VALUES ('$forum', 'This is a forum created for the benchmark', '2', '$catid', '0')";
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create forum \"$forum\"!<br>\n";
+ die;
+ } else {
+ print "Forum \"$forum\" created!<br>\n";
+ $nr_of_forums++;
+ $forum_id = mysql_insert_id($db->db_connect_id);
+ // Sorry, no error checking. We just assume that if the forum can be
+ // created the moderator can be assigned too :)
+ $sql = "INSERT INTO ".FORUM_MODS_TABLE." (forum_id, user_id) VALUES ('$forum_id', '1')";
+ $result = $db->sql_query($sql);
+ return $forum_id;
+ }
+}
+
+
+function generatepost($size=850){
+ // Returns a string with a length between $size and $size*0.2
+ $size = rand(0.2*$size, $size);
+ $text = "Step 1: Untar the soure into the directory phpBB will run from. Seeing as you
+are reading this file you have probably gotten that far. (Or if you are on a
+different machine then your webserver FTP the resulting phpBB dir over to where
+it will run from on the server. ie /www/yourdomain.com/phpBB)
+
+Step 2: Edit config.php and change the following values:
+
+The url fields my work for you if you're running phpBB from a domain
+like this: http://www.phpbb.com/phpBB
+
+However if you access phpBB like this: http://www.domain.com/~you/phpBB you
+will have to change these values.
+
+Also, config.php MUST be writeable by the webserver or the install will fail.
+To set this on UNIX systems you can use chmod
+ie: chmod 777 config.php (after the install if finsished set it back to 755
+via chmod 755 config.php so it can't be written by anyone again.)";
+ $textsize = strlen($text);
+ $currentsize = 0;
+ // Add whole $text multiple times
+ while($currentsize < $size && $size-$currentsize <= $textsize){
+ $message .= $text;
+ $currentsize += $textsize;
+ }
+ // Add the remainder number of chars and return it.
+ $message .= substr($text, 0, $size-$currentsize);
+
+ // WARNING!! THIS IS NOT GOOD, THESE FUNCTIONS WILL ADD CHARACTERS!!!
+ return (nl2br(addslashes($message)));
+}
+
+
+function nrof($table){
+ global $db;
+ $sql = "SELECT count(*) AS counted FROM $table";
+ $result = $db->sql_query($sql);
+ $topics = $db->sql_fetchrow($result);
+ return $topics[counted];
+}
+
+
+function createuser($name){
+ global $db;
+ global $nr_of_users;
+ $username = $name;
+ $regdate = time();
+ $email = $username . "@phpbb.com";
+ $icq = "29317129";
+ $passwd = md5("test");
+ $occ = "";
+ $intrest = "";
+ $from = "";
+ $website = "http://www.phpBB.com/";
+ $sig = "To Bla, or Not to Bla";
+ $aim = "";
+ $sqlviewemail = "1";
+ $yim = "";
+ $msnm = "";
+
+ $userdata = get_userdata($username, $db);
+ if($userdata["username"]) {
+ print "Username '$username' has been already used...<br>\n";
+ return 1;
+ }
+
+ $sql = "INSERT INTO ".USERS_TABLE." (username, user_regdate, user_email, user_icq, user_password, user_occ, user_intrest, user_from, user_website, user_sig, user_aim, user_viewemail, user_yim, user_msnm) VALUES ('$username', '$regdate', '$email', '$icq', '$passwd', '$occ', '$intrest', '$from', '$website', '$sig', '$aim', '$sqlviewemail', '$yim', '$msnm')";
+
+ if (!$result = $db->sql_query($sql)) {
+ print "Couldn't create user $username in DB!<br>\n";
+ print "This is the sql statement:<br>\n$sql\n<br>\n";
+ return 1;
+ } else {
+// print "User $username created!<br>\n";
+ $nr_of_users++;
+ // flush();
+ return 0;
+ }
+}
+
+function get_userdata($username, $db) {
+ $sql = "SELECT * FROM ".USERS_TABLE." WHERE username = '$username' AND user_level != -1";
+ if(!$result = $db->sql_query($sql))
+ $userdata = array("error" => "1");
+ if(!$myrow = $db->sql_fetchrow($result))
+ $userdata = array("error" => "1");
+
+ return($myrow);
+}
+
+
+?> \ No newline at end of file