<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Welcome to the phpBB Doctor Blog &#187; phpBB3</title>
	<atom:link href="http://www.phpbbdoctor.com/blog/category/phpbb/phpbb3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpbbdoctor.com/blog</link>
	<description>Your premium source for custom modification services for phpBB</description>
	<lastBuildDate>Fri, 30 Apr 2010 02:58:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Optimizing Random Users Via Last Visit Time</title>
		<link>http://www.phpbbdoctor.com/blog/2009/09/27/optimizing-random-users-via-last-visit-time/</link>
		<comments>http://www.phpbbdoctor.com/blog/2009/09/27/optimizing-random-users-via-last-visit-time/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 16:33:39 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[MOD Writing]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=336</guid>
		<description><![CDATA[While I have not started in-depth MODding on phpBB3 yet, I do read the phpBB3 MODders forum from time to time just to start to get the flavor of how things have changed. The other day a database (query) question came up and I suggested an answer that I originally thought was only slightly different [...]]]></description>
			<content:encoded><![CDATA[<p>While I have not started in-depth MODding on phpBB3 yet, I do read the phpBB3 MODders forum from time to time just to start to get the flavor of how things have changed. The other day a database (query) question came up and I suggested an answer that I originally thought was only slightly different from what had already been proposed. However, after being asked which of the two solutions would be the least CPU intensive I did a bit more investigating.</p>
<p>I discovered that one solution was clearly better than the other, but only if the proper index was created. </p>
<p><em>Disclaimer: I tested on phpBB2. The index that I created does not exist in a standard phpBB2, nor does it exist in a standard phpBB3 install, so I suspect this post applies to both.</em> <span id="more-336"></span></p>
<h3>Defining the Problem</h3>
<p>Here is a partial quote of the <a href="http://www.phpbb.com/community/viewtopic.php?f=71&#038;t=1793305">original question in the phpBB3 MOD forum</a>:</p>
<blockquote><p>I want to select 5 random memebers from last 30 active users.</p></blockquote>
<p>Simple enough, yes? First, get the last 30 members that have visited the board, then randomly select 5 of those. This could easily be done procedurally via php code, but it can also be done directly in the database with the correct SQL code.</p>
<h3>Order By Random</h3>
<p>The first suggestion given was this:</p>
<pre>$start = 0;
$number = 30;
$sql = 'SELECT *
    FROM ' . USERS_TABLE . '
    ORDER BY user_lastvisit  DESC, RAND()'  ;
    $result = $db->sql_query_limit($sql, $number, $start);</pre>
<p>With apologies to evil&lt;3 who posted this <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  there are a couple of things that I suggested changing. First is to avoid using the * to select every column in the table unless it&#8217;s absolutely needed. In this case, I made the assumption that the original poster was looking for a way to display a random five &#8220;recent visitors&#8221; somewhere on a page on the site. To do this doesn&#8217;t require every single bit of information about the user, just certain columns. If you select * then the entire row is returned. There are 73 columns in a standard phpBB3 users table, several of them varchar(255), and in my test installation all of the fields are mandatory. That means every single column has a value, even if it is just a space or other placeholder value. By setting up a specific list of columns to request in the query the amount of I/O is reduced. Less I/O should mean if all other things are equal the query will run faster because there are fewer bits and bytes to move around.</p>
<p>The other issue with the query as provided is that it&#8217;s not very efficient. It has two order by columns, one of which cannot possibly be indexed. (You can&#8217;t index something that doesn&#8217;t exist until the runtime of the query, so the rand() function result is impossible to tune.) Here is an abbreviated display for the explain plan for this query:</p>
<pre>+-------------+------+---------------+------+---------+------+-------+---------------------------------+
| select_type | type | possible_keys | key  | key_len | ref  | rows  | Extra                           |
+-------------+------+---------------+------+---------+------+-------+---------------------------------+
| SIMPLE      | ALL  | NULL          | NULL | NULL    | NULL | 43367 | Using temporary; Using filesort |
+-------------+------+---------------+------+---------+------+-------+---------------------------------+</pre>
<p>This shows that no indexes will be used for this query at all, which is not good. I ran this query five times in a row on my large user table and got execution times of 0.12, 0.12, 0.12, 0.13, and 0.12 seconds. </p>
<h3>Select Last 30 Then Random 5</h3>
<p>As you can see from the explain data above, I have 43,367 rows in my users table right now, which is fairly large. Instead of scanning the entire table, it would be much more efficient to get the last 30 visitors in one pass and then pick five members randomly from that list. I suggested this SQL to do that:</p>
<pre>SELECT  u.user_id
,       u.username
FROM    phpbb_users u
,       (SELECT user_id
         FROM   phpbb_users v
         ORDER BY user_lastvisit desc limit 30) v
WHERE   u.user_id = v.user_id
ORDER BY rand() limit 5;</pre>
<p>This is an interesting technique called &#8220;inline tables&#8221; as I am creating a new table on the fly by writing SQL code inside the FROM clause. Every database I have worked with supports this technique, so it should be portable. (I do not count Microsoft Access as a real database. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) What this SQL code will do is run the inline table to return a list of 30 users, then join that virtual table to the real table by <code>user_id</code> (which is a unique key) and randomly select five users from the joined result set.</p>
<p>Is it more efficient?</p>
<p>I ran this query five times (as I did with the other one) and got run times of 0.10, 0.12, 0.10, 0.10, and 0.11 seconds. It seems that it&#8217;s not really that much more effective, so is there really a clear winner?</p>
<h3>Index Key Columns</h3>
<p>I ran this query:</p>
<p><code>show indexes from phpbb_users</code></p>
<p><em>Side Note: I run my SQL directly on the database using the MySQL command line, rather than phpMyAdmin. If you use the GUI interface, then you can check for keys by looking at the appropriate screen instead of doing as I documented here.</em></p>
<p>The results of the query did not show an index on <code>user_lastvisit</code> which is crucial to this solution. Here is the explain plan for my query without the index:</p>
<pre>+-------------+--------+---------------+---------+-----------+-------+---------------------------------+
| select_type | type   | possible_keys | key     | ref       | rows  | Extra                           |
+-------------+--------+---------------+---------+-----------+-------+---------------------------------+
| PRIMARY     | ALL    | NULL          | NULL    | NULL      |    30 | Using temporary; Using filesort |
| PRIMARY     | eq_ref | PRIMARY       | PRIMARY | v.user_id |     1 |                                 |
| DERIVED     | ALL    | NULL          | NULL    | NULL      | 43367 | Using filesort                  |
+-------------+--------+---------------+---------+-----------+-------+---------------------------------+</pre>
<p>Notice that is also scans all 43,367 user rows. That&#8217;s okay. What isn&#8217;t okay is that it does so without the benefit of an index and it also has to do some additional work since more than one table is involved. It would seem that the first query should be more efficient since it only has one explain step and the second one has three.</p>
<p>However, the magic of a database indexing can fix this. The driver for this entire question is the <code>user_lastvisit</code> column. After creating an index on this field (which is not indexed by default in either phpBB2 or phpBB3) here is the new explain plan.</p>
<pre>+-------------+--------+---------------+----------------+-----------+-------+---------------------------------+
| select_type | type   | possible_keys | key            | ref       | rows  | Extra                           |
+-------------+--------+---------------+----------------+-----------+-------+---------------------------------+
| PRIMARY     | ALL    | NULL          | NULL           | NULL      |    30 | Using temporary; Using filesort |
| PRIMARY     | eq_ref | PRIMARY       | PRIMARY        | v.user_id |     1 |                                 |
| DERIVED     | index  | NULL          | user_lastvisit | NULL      | 43367 |                                 |
+-------------+--------+---------------+----------------+-----------+-------+---------------------------------+</pre>
<p>Yup, still have to look at (or so the database optimizer thinks) all 43,367 users. But this time we do so with the benefit of an index. What is the impact?</p>
<p>The query without an index, remember, ran in 0.10, 0.12, 0.10, 0.10, and 0.11 seconds. After creating the index I ran the same query five times and got 0.00 seconds of execution time on every trial. </p>
<p>Does the index help the first query? Interestingly enough, it does not. The explain plan is identical with or without the index, and the query execution times do not improve either. </p>
<p>However, it gets worse. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  It doesn&#8217;t perform as required. My query gets the last 30 users that have logged in and then randomly selects five of those. The ORDER BY clause happens after all of the select and join process is complete, so I am ordering by RAND() on at most 30 rows. <strong>The other suggestion will pick the same five users nearly every single time</strong>. Why? The secondary sort column (the &#8220;random factor&#8221;) will only come into play if two users have exactly the same last visit time (down to the second). When you have two columns in the ORDER BY clause, the first column is the primary sort and every row returned will first be sorted by that column. If there are ties in the first column then and only then will the second column be sorted.</p>
<p>So the first solution suggested is the worst of both worlds: not only is it slower, it is also incorrect. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>There may be other solutions to this. I don&#8217;t mean to present this post as the ultimate answer to this question. What I hoped to accomplish with this post was to show how two solutions that look the same are not always equivalent. Subtle differences can have a huge impact on functionality. </p>
<p>The second lesson is that if you&#8217;re going to be asking the same question from your database over and over you should carefully consider indexing the columns used in the WHERE or ORDER BY clauses. I did some work for someone a while back (their board is one of the top ten phpBB boards on the &#8220;big boards&#8221; site). They wanted to display the top ten posters on their index. The code as written was taking over ten seconds just to run the query <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_eek.gif' alt=':shock:' class='wp-smiley' />  and then the php code / template process still had to complete. I rewrote the code and added an index on the <code>user_posts</code> column and the code ran in less than a hundredth of a second.</p>
<p>On the other hand, too many indexes can also be a problem, so don&#8217;t go out and create an index for every single column in your database. Just the ones that truly matter. In this case, it makes a substantial difference. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2009/09/27/optimizing-random-users-via-last-visit-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smackdown Round VII &#8211; Final Requirements</title>
		<link>http://www.phpbbdoctor.com/blog/2008/10/01/smackdown-round-vii-final-requirements/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/10/01/smackdown-round-vii-final-requirements/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 12:19:55 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=270</guid>
		<description><![CDATA[I had a series of six posts where I compared phpBB3 with what I called &#8220;phpBB-Dave&#8221; which is my custom implementation of phpBB2. I have stated more than once that I don&#8217;t plan to upgrade, at least not right away. My timetable for upgrading was probably a year out at the earliest. The general idea [...]]]></description>
			<content:encoded><![CDATA[<p>I had a series of six posts where I compared phpBB3 with what I called &#8220;phpBB-Dave&#8221; which is my custom implementation of phpBB2. I have stated more than once that I don&#8217;t plan to upgrade, at least not right away. My timetable for upgrading was probably a year out at the earliest. The general idea behind the posts was to step back and take a more generic look at the features provided by phpBB3. By going through a feature list line-by-line I hoped to be a bit more objective about the potential urgency of my upgrade.</p>
<p>The net result was that after reviewing the feature list provided by phpbb.com I felt like there were more reasons to stay with what I am using today (four) than there were compelling reasons to upgrade (one). To be very clear: this comparison was a feature comparison only. I recognize that there are clear advantages that the phpBB3 codebase provides as far as efficiency and coding style and standards. That didn&#8217;t come into play. Why not? Because my board users don&#8217;t see coding standards, they only see features. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  As far as efficiency goes&#8230; I have spent several years tweaking the code for phpBB-Dave and it&#8217;s certainly as efficient as I need it to be right now. I am able to support a full load of users without my server breaking a sweat.</p>
<p>Is that the end of the story? </p>
<p><span id="more-270"></span><br />
<h3>Feature Requirements</h3>
<p>It turns out that there&#8217;s more to the decision than simply deciding if phpBB3 offers features that are better than what I already have. I also have to consider which features exist in phpBB-Dave that don&#8217;t exist in phpBB3.</p>
<p><strong>Banner Management System</strong><br />
I spent many hours writing my banner management system for phpBB2. It includes complete admin control panel control, email subscriptions for banner advertisers, and an almost completed paypal interface so existing advertisers can extend their account without any interaction with me. I am not using this system on the phpBB Doctor board, but I am using it on my largest board. It would definitely have to be converted to phpBB3 before I could upgrade. The design is sound, so I don&#8217;t need to recreate it from scratch. I just need to rework it so that it fits into phpBB3.</p>
<p>There are also a number of cron jobs that are php code using the phpBB2 DBAL and other features. All of this would need to be converted before I can switch.</p>
<p><strong>Amazon Shop</strong><br />
I&#8217;ve also written code that allows me to post Amazon.com links on a &#8220;shop&#8221; page. The links include my referral code. I don&#8217;t make a lot of money from this feature, but it&#8217;s something I would not want to leave behind. There are admin pages that allow me to add authors, categories, book information, and anything else related to listing items. This does not have to be ready prior to a conversion but it would be nice.</p>
<p><strong>Contact Form</strong><br />
I have written a Contact form that integrates with phpBB2. The contact message is stored as a post in a hidden forum. It features flood controls, IP address tracking, and other features as well. This page would have to be updated to work with phpBB3.</p>
<p><strong>Canned Messages</strong><br />
Canned Messages &#8211; I wrote a MOD that allows my board moderators to select from a drop-down list of canned messages which can be automatically inserted into a post. We use these when closing posts for being cross posted, advertising, or other moderator tasks. We also have a standard &#8220;welcome&#8221; message that can be used. This feature is not a requirement, but it would be missed if it were not available after an upgrade.</p>
<h3>Other Dave MODs &#8211; Pros and Cons</h3>
<p>There are several MODs that I install now on any phpBB2 board that I launch. These include the Page Permissions MOD, the Checkbox Challenge MOD, Post Notes, Topic Prefixes&#8230; none of these features are currently in phpBB3 (and some were already mentioned in the &#8220;smackdown&#8221; topics) and all are important to the way I manage my boards now. Some others (User Medals, Country Flags, Board Announcements) are more cosmetic and I could update without them if I wanted to.</p>
<p>I have a profile change log, but I think that&#8217;s in phpBB3 as well. My profile change log allows me to make a selection from a list of fields from the phpbb_users table (even new ones that are added) and mark which ones I want to track. Those that are marked get logged anytime a user changes them. If this is not in phpBB3 then it&#8217;s another update I have to write. It doesn&#8217;t have to use the same interface, but it has to provide the same functionality.</p>
<p>My sub-forums MOD frankly stinks, and I would be glad to get away from it. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  My Rebuild Search MOD isn&#8217;t required since phpBB3 offers this as a built-in feature.</p>
<h3>Conclusion</h3>
<p>This is a two-part conclusion. First, I have decided that I won&#8217;t be upgrading to phpBB3. Notice that I didn&#8217;t include a time frame, as in, &#8220;I won&#8217;t be upgrading for &#8230; weeks || months || years&#8221; or anything like that. At this point I believe that I have decided that I won&#8217;t be upgrading to phpBB3. Ever.</p>
<p>What I will do instead is plan on getting comfortable with phpBB3 so I know how to write code for it, but at this point I expect that I will skip this release and go to phpBB3.2 when it comes out. I realize that&#8217;s a long time off (insert &#8220;It will be done when it&#8217;s done&#8221; here) but that&#8217;s okay. In fact, it&#8217;s more than okay, it&#8217;s perfect, at least for me. I have finally marked another large client project off of my list (only one left, yay!) and can spend some time upgrading my server so that I am more current on php and MySQL. Those activities have been on the list for quite some time.</p>
<p>Then, finally, I will start looking at phpBB3 and see what I need to learn before 3.2 is released. Hopefully they will give me a few years for that. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/10/01/smackdown-round-vii-final-requirements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smackdown Round VI &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/09/27/smackdown-round-vi-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/09/27/smackdown-round-vi-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 19:25:30 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=269</guid>
		<description><![CDATA[In the first five posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 4-1 in my favor, based primarily on my [...]]]></description>
			<content:encoded><![CDATA[<p>In the first five posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 4-1 in my favor, based primarily on my needs and use of the code. This is the sixth and final post in the series and I will cover the Administration Control Panel, Styles, Permissions, Notifications, and Localization.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-269"></span><br />
<h3>Administrator Control Panel</h3>
<p>As I mentioned in the last post I clearly realize that the UCP / MCP / ACP of phpBB3 are very far ahead of phpBB2 as far as interface, layout, and usability. However I am focusing on specific features. To be honest, once things are set up and running how often do you need to visit your admin panel? I know I spend very little time on that screen, so the new interface is not a clear and compelling reason to upgrade. That being said, here is the comparison matrix.</p>
<table class="blogtable">
<tr>
<th colspan="4">Administrator Control Panel</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Founder Status/Board Creator:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Load Settings:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Prune Inactive Users:</td>
<td>No</td>
<td>Yes</td>
<td>Yes via cron job</td>
</tr>
<tr>
<td>Manage Ranks:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Manage Groups:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Manage Group Memberships:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Manage Attachments and Settings:</td>
<td>No</td>
<td>Yes</td>
<td>Yes via Attachment MOD</td>
</tr>
<tr>
<td>Manage User Attachments:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>User Editing:</td>
<td>Yes</td>
<td>Yes User EditingAdvanced Interface &#8212; Complete User Administration: Overview, profile, preferences, permissions, groups, avatar, signature, and settings</td>
<td>Yes</td>
</tr>
<tr>
<td>List Groups on Index:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Topic Icons:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Mass e-mail:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Manage report/denial Reasons:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, via custom MOD</td>
</tr>
<tr>
<td>Module Management:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Custom BBCodes:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Custom Profile Fields:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, via custom MOD</td>
</tr>
<tr class="alt">
<td>Custom Profile Fields Placement Options:</td>
<td>No</td>
<td>Yes Custom Profile Fields Placement OptionsRequired fields, Optional but fields shown on registration, Field shown in Profile, Field shown in Memberlist, Field shown in Topics, Moderator/Admin Profile Field (hidden from user)</td>
<td>N/A</td>
</tr>
<tr>
<td>Custom Profile Fields Data Types:</td>
<td>No</td>
<td>Yes Custom Profile Fields Data TypesDates, Integers, Text Fields, Textareas, Menu lists, Toggle (on/off, yes/no), Radio Buttons</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>Manage Bans:</td>
<td>Yes</td>
<td>Yes Manage BansManage Suspensions (Temporary Bans), Permanent Bans, plus reason for ban[?]</td>
<td>As phpBB2</td>
</tr>
<tr>
<td>Banning by Username:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Banning by E-mail Address:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Banning by IP Address:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</table>
<p>One of the more useful (and very often requested in phpBB2) is the ability to prune users. I have two solutions already in place for this. First, I have a perl script running as a weekly cron job that removes any user that registered 30 or more days ago that has never registered. The same script is also designed to remove any user that registered and activated but has never logged in over the past 90 days. What this means is you get 30 days to activate your account and another 60 days to log in and use the board at least once or your account is removed. The best part of this solution is that everything is automated via cron jobs so I don&#8217;t have to remember to do anything myself.</p>
<p>As already mentioned I have been using the Attachment MOD from Acyd Burn for many years so I already have an attachment feature for my board. Granted it&#8217;s not as integrated as the option in phpBB3 but it&#8217;s certainly functional.</p>
<p>I don&#8217;t have topic icons but don&#8217;t see a need for them. I don&#8217;t have the ability to list groups on the index and again don&#8217;t see the need to do so. I have written my own &#8220;report a post&#8221; MOD and it includes the ability to configure and report on report reasons via the ACP.</p>
<p>I think the custom profile fields MOD is a great feature for people that don&#8217;t know how to edit code, as it lets them set up special fields for their board (like shoe size, eye color, favorite sports team, and so on) without altering the core code. In my case I simply add the field to the database table and alter the profile screen with the new field. I&#8217;ve added tons of new profile fields in this way and it works fine. It&#8217;s not something I change every day, so having an admin interface is not really that useful for me.</p>
<p>And finally, I&#8217;ve talked about the banning process in several prior posts in this series, so I&#8217;ll skip it here.</p>
<p>Since I&#8217;m not really missing anything, there isn&#8217;t a compelling reason to upgrade. On the other hand, I haven&#8217;t added any features that are not present in phpBB3 either. Thus, this category ends in a tie.</p>
<h3>Styles</h3>
<p>I&#8217;m basically going to skip this entire section, because I don&#8217;t do styles management via the ACP. I can&#8217;t imagine why anyone would want to offer more than one theme / style for their site&#8230; something I had <a href="http://www.phpbbdoctor.com/blog/2007/02/09/using-more-than-one-style-why/">posted about before</a>. I also recently posted about <a href="http://www.phpbbdoctor.com/blog/2008/08/08/i-need-a-mobile-style-for-phpbb2/">getting a mobile style</a> for phpBB2, but in that case I would use a separate URL, which is not really the same as having two styles on the same board. </p>
<p>At one point I wrote my own MOD to allow users to use custom image sets. After several years of use less than one percent of users on my board had made use of the feature so I dropped it.</p>
<p>I&#8217;m not going to offer a score in this category because I don&#8217;t really use it, and won&#8217;t use it in phpBB3 either once I upgrade.</p>
<h3>Permissions</h3>
<p>This is another category where I have not done anything to MOD how phpBB2 works. I guess I could say that the Page Permissions MOD was related to permissions, but it doesn&#8217;t alter how permissions are assigned, managed, and processed. It simply extends the permissions checking to pages rather than forums or groups. As a result, I won&#8217;t bother posting the grid for this category either as everything for phpBB-Dave is identical to phpBB2. What are the enhancements that I&#8217;m missing? </p>
<p>phpBB3 introduced the concept of Roles for security. This is a concept that I&#8217;m certainly familiar with as having security roles mapped to user groups is a very common structure. phpBB2 has some group-type security but it&#8217;s clearly not the same at all. However, I have extremely basic security needs for most (if not all) of my boards and have been currently able to do everything that I need with the current security model. Thus, no points for this category.</p>
<h3>Notifications</h3>
<table class="blogtable">
<tr>
<th colspan="4">Notifications</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>E-mail:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Instant Messaging:</td>
<td>No</td>
<td>Yes Instant Messaging Jabber Support</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Bookmarks:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</table>
<p>phpBB3 introduced the concept of being notified of topic replies via IM. I&#8217;ve never used it at any of the phpBB3 boards that I go to, and it&#8217;s never been requested as a feature on one of the boards that I own or manage. I do offer bookmarks via a custom MOD, but I already talked about that in a prior post. It seems that there are quite a few features that pop up more than once in the comparison grid as published on phpbb.com. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Localization</h3>
<table class="blogtable">
<tr>
<th colspan="4">Localization</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Support for Multiple Language Packs:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, but not used</td>
</tr>
<tr>
<td>Languages:</td>
<td>50+</td>
<td>61+</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>Right to Left Support:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Language Pack Web-Editor:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
</table>
<p>My board is an english language board. I don&#8217;t envision that changing. I have not installed any language packs for phpBB2 and would not for phpBB3. Therefore improvements in this area are not really useful to me.</p>
<h3>Conclusion</h3>
<p>The score was 4-1 coming into this post, implying five feature categories had a clear winner and the all of the others had inconsequential differences. For reference, here are the five categories where I declared a &#8220;winner&#8221; in comparion phpBB3 with phpBB-Dave:</p>
<ul>
<li>Basic Features &#8211; This category includes the &#8220;Unread Posts&#8221; feature, and that is probably the most important feature that I&#8217;m lacking in phpBB2. I know it&#8217;s available as a MOD, and I could probably come up with something myself. I also recognize that this feature would be extremely popular if I could make it available. Of all of the things offered in phpBB3 this is one of the most compelling reasons to upgrade right away. Thus the first point awarded in this comparision went to phpBB3.</li>
<li>Spam Fighting Features &#8211; I have made a number of tweaks over the years to fight spam on phpBB2 and I think I have a very good set of options to use. I have code in the Prevention area (Checkbox Challenge), Detection (Report-a-Post), and Elimination (Spammer Hammer). I am quite happy with where my board stands in this category, and in fact believe that some of my options are superior to what is in phpBB3. As a result, I awarded phpBB-Dave a point in this category.</li>
<li>Post Handling &#8211; With the MODs I have added to the posting process I decided that this category shows one reason I would want to stay with phpBB2 for the time being. These new features include bump warning, reply to post, topic prefixes, and a number of other smaller tweaks. I could include my own Report-a-Post feature here too, I guess, as I do prefer it to the one found in phpBB3.</li>
<li>Page Permissions MOD &#8211; I can&#8217;t imagine running a board without it, and won&#8217;t be upgrading until I get a chance to rewrite this for phpBB3. This impacts security on both the profile and memberlist pages but can be extended to any php page that references the phpBB session.</li>
<li>Search System &#8211; I have spent a lot of time playing with and tweaking the phpBB2 search system. I have optimized stopwords handling, decoded the regex used to split off words, added code to tweak the search terms to help prevent server loads&#8230; I have also added a &#8220;Search this Forum&#8221; and &#8220;Search this Topic&#8221; feature that are provided in phpBB3. I am very comfortable with the search system that I have in place today. I think instead of spending time reviewing the process to upgrade to phpBB3 I think I will figure out how to integrate sphinx search into phpBB2 first.</li>
</ul>
<p>The net score after reviewing the appropriate categories was 4-1. Is that the end of the comparison, or are there other features that phpBB-Dave offers that would be required before I upgrade? What would it take to turn this score around and swing the balance over to phpBB3 instead? </p>
<p>I am going to save that for the next post in this series. I will list out additional MODs that I have written that are not covered under the phpBB2 to phpBB3 comparision list, mainly because neither version has these features. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/09/27/smackdown-round-vi-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smackdown Round V &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/09/22/smackdown-round-v-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/09/22/smackdown-round-v-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 12:19:30 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=268</guid>
		<description><![CDATA[In the first four posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 4-1 in my favor, based primarily on my [...]]]></description>
			<content:encoded><![CDATA[<p>In the first four posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 4-1 in my favor, based primarily on my needs and use of the code. This is the fifth post in that series and I will cover the User Control Panel, Usergroups, and the Moderator Control Panel categories.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-268"></span><br />
<h3>User Control Panel</h3>
<table class="blogtable">
<tr>
<th colspan="4">User Control Panel</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>User Signatures:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>User Avatars:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>User Ranks:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Users Online List:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>User Preferences:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, extended</td>
</tr>
<tr>
<td>User Profile Settings:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, extended</td>
</tr>
<tr class="alt">
<td>Manage Saved PM/Post Drafts:</td>
<td>No</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr>
<td>Manage Bookmarks:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Manage Attachments:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Manage Subscribed Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Custom Profile Fields:</td>
<td>No</td>
<td>Yes</td>
<td>See Notes</td>
</tr>
<tr>
<td>Friends/Foe List:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
</table>
<p>At face value the feature list seems quite similar between phpBB2 and phpBB3 in this area. Of course the interface is completely different. The tabbed interface of phpBB3 makes much better use of screen space and presents profile options in a concise and organized fashion. The screen used by users to update their preferences in phpBB2 simply displays everything in a table that stretches down the screen. But this isn&#8217;t about interface as much as it is about features. </p>
<p>My users have the ability to set up signatures. I only allow moderators to select avatars (custom code). I have created an extended preferences screen that lets users pick whether they want to view signatures, view avatars, view images, or even what format they want to use to view smilies. They can opt for the graphical display like this <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  or they can view all smilies as their text equivalent like this : &#8211; ). That, believe it or not, was one of the first requests that I got when I opened the board. Most of my members will be working in a corporate environment, and having the smilies dancing around was either listed as a distraction or as an indication that something &#8220;fun&#8221; rather than work was going on. I can understand that. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I have had code for years that allows users to create &#8220;favorite&#8221; topics which work the same way as bookmarks in phpBB3. I have even created a nice interface using the search screen that allows users to do mass updates to bookmarked topics (mass removal is really the only option that makes sense). In fact, I have three different classifications that users can assign topics. They can identify a topic to watch (standard phpBB2 feature), a topic as a favorite (a bookmark), or a topic as being particularly useful (assigning a topic point). All of these features can be added individually and removed individually or in bulk. </p>
<p>I also have a number of custom profile fields, but I don&#8217;t have a custom profile field feature. I simply create each new field as an entry in the phpbb_users table and add it to the proper forms. I don&#8217;t need an interface to manage custom profile fields because I know how to modify the code. And frankly it&#8217;s probably more efficient to have it done that way.</p>
<p>I don&#8217;t have a friends / foes list feature, and nobody has asked for it. One boards with a different subject matter I can see where it would be useful. I don&#8217;t need it right now, so I won&#8217;t deduct a point here.</p>
<p>I am going to call this a tie because I have all of the features I need, and I&#8217;m quite happy with them. Remember that a point means that there is a compelling reason to use one version over another, and I don&#8217;t think that&#8217;s the case here. I have what I need, and phpBB3 doesn&#8217;t provide a significant advantage to upgrading.</p>
<h3>Private Messaging</h3>
<p>This feature has been completely removed from my board, so it&#8217;s rather pointless to review. I&#8217;m going to skip it and move on to the next category. I should point out, however, that this is one area where phpBB3 far outshines phpBB2 with the ability to send to multiple recipients, the ability to use the &#8220;bcc&#8221; feature, use forwarding, sending to groups&#8230; they have basically created a private email system for phpBB3. It&#8217;s nice, but I don&#8217;t use it. Why not? That&#8217;s a subject for another blog post. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>User Groups</h3>
<p>Here&#8217;s the summary for this category:</p>
<table class="blogtable">
<tr>
<th colspan="4">User Groups</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Group Types:</td>
<td>Yes: Hidden, Closed, Open</td>
<td>Yes: Hidden, Closed, Open, Request</td>
<td>As phpBB2</td>
</tr>
<tr>
<td>UCP Group Management:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>UCP Manage Group Memberships:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Multiple Group Leaders:</td>
<td>No Multiple Group LeadersSingle Group Leader/Moderator only</td>
<td>Yes Multiple Group LeadersMultiple Group Leaders</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Custom Group Colours:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Group Ranks:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Group Avatars:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Group-based Memberlist Display:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
</table>
<p>I don&#8217;t have any of the new features from phpBB3, but as with some other areas, I don&#8217;t need them. Remember I am looking for compelling reasons to upgrade. I don&#8217;t see one here, so no point will be awarded.</p>
<h3>Moderator Control Panel</h3>
<table class="blogtable">
<tr>
<th colspan="4">Moderator Control Panel</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Global Moderators:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Forum Moderators:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Topics/Posts Moderation Queue:</td>
<td>No</td>
<td>Yes</td>
<td>See Notes</td>
</tr>
<tr>
<td>Manage Reported Topics/Posts:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Topic History:</td>
<td>No</td>
<td>Yes</td>
<td></td>
</tr>
<tr>
<td>Forum/Topic Logs:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Localised Moderator Logs:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Post Editing:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Post Locking:</td>
<td>No</td>
<td>Yes Post Locking prevents user from editing post</td>
<td>No</td>
</tr>
<tr>
<td>Post Details:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Change Post Author:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Quick-Mod Tools:</td>
<td>Yes</td>
<td>Yes Quick-Mod Tools Expanded</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Moving Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Move Multiple Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Merging Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Merging Posts:</td>
<td>No</td>
<td>Yes</td>
<td>In Development</td>
</tr>
<tr class="alt">
<td>Merging Multiple Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Split Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Locking Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Deleting Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Copying Topics:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Global Topics:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Announcement Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Sticky Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Manage Bans:</td>
<td>No</td>
<td>Yes Manage Bans Manage Suspensions (Temporary Bans), Permanent Bans, plus reason for ban</td>
<td>No</td>
</tr>
<tr>
<td>Manage User Warnings:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Banning by Username:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Banning by E-mail Address:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Banning by IP Address:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>User Notes:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
</table>
<p>This is a very long category, so I will only comment on those areas where phpBB3 and phpBB-Dave are different.</p>
<p>I don&#8217;t have a global moderator role. I simply have one group of moderators that has power over the entire board. The function is there, it just doesn&#8217;t have a fancy name. I really have two types of moderators on my board. The &#8220;global&#8221; moderators are members of the Forum Moderators group and they have moderator abilities everywhere. Then there are &#8220;Group Moderators&#8221; who have moderator powers in only one forum where regional user group topics are discussed. The reason they have moderator status is so they can add their topic / event to the board calendar.</p>
<p>On my largest board I do not have a topic moderation queue, but I have written a MOD for that and use it on a smaller board. I could install it on my larger board if I needed to, but after I figured out how to block the spammers from registering I haven&#8217;t needed it.</p>
<p>I have written my own report-a-post feature which, frankly, I like better than what&#8217;s in phpBB3. At Londonvasion the developer team asked the moderator team to provide feedback or suggestions on how to improve anything related to the MCP, and I have provided some input based on how I wrote my own code. That might sound conceited, and I don&#8217;t mean it to be. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I wrote my code based on input from my own moderator team as well as from my own experiences as a board moderator, and I think it&#8217;s quite useful. It&#8217;s not perfect; there are certainly things that could be improved.</p>
<p>My report-a-post code logs all actions to a database table. The same table is also used to log moderator actions like splitting, moving, and merging topics. Essentially everything done to a topic (or post) is logged in the same place. I don&#8217;t really offer a fully local moderator log, but I don&#8217;t need it because I don&#8217;t really have local moderators. All of my moderators (as already stated) are global.</p>
<p>I don&#8217;t have a post-locking feature. I have never needed it, and it would be simple to write if I did. The lack of this feature doesn&#8217;t make a compelling reason to upgrade.</p>
<p>Change post author? I think I&#8217;ve needed to do that twice in six years. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  I just update the database rather than wasting time writing code to do this. For some folks this might be important, but not for me.</p>
<p>I&#8217;ve already written a merge topic feature that I really like. In fact I have <a href="http://www.phpbbdoctor.com/blog/2008/05/12/building-a-better-merge-part-i-interface-ideas/">posted on this blog</a> about it. I don&#8217;t have a merge post feature, but I can see how it would be useful and have started developing it.</p>
<p>I don&#8217;t have a copy topic feature, and have never even noticed that it&#8217;s available in my role as a moderator on phpbb.com. Why would you want to do this?</p>
<p>I don&#8217;t have global topics. What I have instead is an admin panel interface that lets me enter board announcements, and they are displayed at the top of every page in a special box. They&#8217;re not topics at all, but a specific data structure just for announcements.</p>
<p>The banning features of phpBB3 are nice. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I like the ability to do temporary bans and let people cool off before they come back and post again. But I have already posted that &#8211; other than spammers &#8211; I have only used the ban feature once in over six years of managing my board. At phpbb.com this feature is awesome, but it&#8217;s not something that I truly need to continue running my own boards. I don&#8217;t have warnings either, but that feature falls into the same situation as banning.</p>
<p>I like the user notes feature. I have already written a post notes feature, and am in development for a user notes feature for phpBB2. I suspect that if it ever got completed <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  it would include temporary bans and warnings too in order to make a complete package. But for now, I don&#8217;t need it.</p>
<p>Basically after all of that I can honestly say that the moderator control panel is nicer looking and has more features for phpBB3, but I&#8217;m not missing any features that are critical to my boards success. At the same time while I have added some of my own MODs, they are things that could be converted to existing phpBB3 features after an upgrade. So there is no compelling reason to stay either. Thus, no points awarded in this category.</p>
<h3>Conclusion</h3>
<p>So far I have covered fifteen (and ignored one) of the categories from the feature comparison list at phpbb.com. The score was 4-1 coming into this post, implying five feature categories had a clear winner and the ten others had inconsequential differences. Where do I think I stand now?</p>
<p>The same. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Some of the features in this post have major interface differences, but from a feature-to-feature standpoint they&#8217;re not that different. The UCP and MCP are displayed using a substantially improved interface. User groups are a fairly basic feature as far as how I use it, and I don&#8217;t need to display people in different colors. The score remains 4-1 with 11 category comparisons resulting in no points awarded. As a reminder, the main reason for the point advantage to phpBB-Dave are the Page Permissions MOD and the search changes that I&#8217;ve made. The other points are for </p>
<p>Next time I will cover all of the remaining categories which include Administration Control Panel, Styles, Permissions, Notifications, and Localization.</p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/09/22/smackdown-round-v-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smackdown Round IV &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/25/smackdown-round-iv-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/25/smackdown-round-iv-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 19:21:27 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=233</guid>
		<description><![CDATA[In the first three posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 2-1 in my favor, based primarily on my [...]]]></description>
			<content:encoded><![CDATA[<p>In the first three posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 2-1 in my favor, based primarily on my needs and use of the code. This is the fourth post in that series and I will cover the Profiles/Memberlist, Search, and Forums categories.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-233"></span><br />
<h3>Profiles / Memberlist</h3>
<table class="blogtable">
<tr>
<th colspan="4">Profiles / Memberlist</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Custom Profile Fields:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>User Posting Stats:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>User Instant Messengers:</td>
<td>Yes</td>
<td>Yes</td>
<td>No change</td>
</tr>
<tr>
<td>User Profile details:</td>
<td>Yes</td>
<td>Yes</td>
<td>No change</td>
</tr>
<tr class="alt">
<td>Memberlist Searching:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Disallow Non-Registered User Memberlist Viewing:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, via Page Permissions MOD</td>
</tr>
</table>
<p>The handling of how to protect user profiles and the memberlist is something that I&#8217;ve been playing with for years. One of my first MODs was a way to avoid showing inactive accounts on the member list. It&#8217;s really simple, and I think there are a half-dozen different MODs to do this released at phpbb.com. phpBB2 was really bad at protecting these files so it&#8217;s probably not a surprise that there were so many. But where do I stand today?</p>
<p>My Page Permissions MOD was developed in part to protect the viewing of profiles and the memberlist without actually touching the code for those files. It was, of course, extended well beyond that simple requirement, but it started out small. I believe with this MOD installed (and I do install it on <strong>every</strong> phpBB2 board I run) I have even more flexibility than what is offered by a standard phpBB3 installation. For example, I can limit the memberlist to users that belong to a specific group. Or to people with a certain post count. It (Page Permissions) is a very powerful and flexible MOD and one that has spawned the most &#8220;fan mail&#8221; via PM at phpbb.com. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
<p>I also have a MOD that offers users the ability to search the memberlist by a variety of different fields. It is simple, but it gets the job done. </p>
<p>I have added a number of custom profile fields over the years as well. In my case the fields are functional and not just cosmetic&#8230; what I mean by this is with the custom profile option in phpBB3 you can add the fields to the profile, but they don&#8217;t do anything. My custom profile fields include the ability for a user to view or hide signatures, view or hide avatars, even determine which format to use to display smilies. I&#8217;ll probably talk more about this when I get to the User Control Panel later on.</p>
<p>So after reviewing the options, I am going to award myself a point in this category. phpBB3 does a lot to help control access to various pages now, but I&#8217;ve already got something that&#8217;s even better in place. I don&#8217;t see any reason to upgrade, and in fact I would not want to upgrade without first converting my Page Permissions MOD over to phpBB3. Thus, a point to Gryffindor, erm, me. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </p>
<h3>Search</h3>
<p>Ah, searching. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I have a <a href="http://www.phpbbdoctor.com/blog/category/phpbb/search/">few posts on this subject</a>, so I imagine most readers are going to assume that I am automatically going to award myself a point in this category. Here&#8217;s the table of comparison features, as always, notes to follow.</p>
<table class="blogtable">
<tr>
<th colspan="4">Search System</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Fulltext Native:</td>
<td>Yes</td>
<td>Yes Fulltext Native Using fulltext native Search Plug-in</td>
<td>I like the phpBB2 search feature and have spent a lot of time tweaking and tuning it</td>
</tr>
<tr>
<td>Customised Topic Search:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Customised Forum Search:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>MySQL fulltext:</td>
<td>No</td>
<td>Yes MySQL fulltext Using included MySQL fulltext Search Plug-in</td>
<td>Not needed</td>
</tr>
<tr class="alt">
<td>Author Search:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr>
<td>Advanced Search:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>View unanswered posts:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Active/New Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Users have the option to show &#8220;recent topics&#8221; on the top or bottom of the index page (location is a profile options). Recent topics are also shown on a page external to the board.</td>
</tr>
<tr class="alt">
<td>Posts Since Last Visit:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Topics I started</td>
<td>No</td>
<td>No</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Topics Since Last Visit</td>
<td>No</td>
<td>No</td>
<td>Yes, custom Searchbox MOD</td>
</tr>
<tr>
<td>My Watched Topics</td>
<td>No</td>
<td>No</td>
<td>Yes, custom Searchbox MOD</td>
</tr>
<tr class="alt">
<td>My Point Topics</td>
<td>No</td>
<td>No</td>
<td>Yes, custom Searchbox MOD</td>
</tr>
<tr>
<td>My Favorite Topics</td>
<td>No</td>
<td>No</td>
<td>Yes, custom Searchbox MOD</td>
</tr>
<tr class="alt">
<td>Search Flood Control:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
</table>
<p>My big board will likely have over 450,000 posts by year-end. That&#8217;s a lot of words, and a lot of text. Without going back over the details of the phpBB2 search system since I have covered it in great detail all ready, let me just summarize by saying that I like the standard phpBB2 system. (I have not yet had time to really read and understand the Sphinx search project, but I do have good expectations based on conversations with some of the phpBB3 developers.) But I digress, so back to the comparison table.</p>
<p>I don&#8217;t think fulltext support is important. In fact I have seen reports that on large boards such as mine it is less efficient than the keyword to post mapping system. So having fulltext support is not a big seller for me.</p>
<p>I have already written a &#8220;Search this Topic&#8221; MOD so no points awarded there. I also have a &#8220;Search this Forum&#8221; feature. Basically all of the search improvements offered in phpBB3 as compared to a vanilla phpBB2 are already available to me, thus there is no incentive to upgrade to gain new search features. In fact, I would lose some search features. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A vanilla phpBB2 board offers several pre-built searches such as &#8220;Unanswered Posts&#8221; and &#8220;Posts since last visit&#8221; and so on. phpBB3 offers a new option called &#8220;Active topics&#8221; that is nice, but I already have it. I also have the following:</p>
<ul>
<li>New Topics Since Last Visit: This search will find topics that have started since I last logged in. It&#8217;s a subset of &#8220;posts since last visit&#8221; since it will only show brand new topics. It&#8217;s a quick way to see what is truly new on the board, rather than reviewing just new activity on older topics.</li>
<li>Topics I started: This search will show only topics where I was the initial poster. This is a great way for me to follow-up on all of my topics without the bother of watching the topics and getting an email. This is a very popular search on my board.</li>
<li>My Watched Topics: This search will provide a list showing every topic that I have marked to watch, along with a checkbox that I can mark to bulk &#8220;unwatch&#8221; the topics. This feature is provided in the UCP in phpBB3.</li>
<li>My Favorite Topics: This equates to the Bookmarked topics in phpBB3, and has the same interface as the Watched topics option listed above.</li>
<li>My Point Topics: A favorite topic is one that I want to save for future reference. A watched topic is one where I want to get notified of a reply. A point topic (this list item) is one that I have marked as being particularly helpful. It is very similar to the favorites option, but it also adds a point to the topic which is a visible indicator to other users that I felt it was worthy of their attention. The search results can be weighted (sorted) using this feature so that topics with more points show up before topics with fewer (or zero) points.</li>
</ul>
<p>I present all of these canned searches in a MOD I call my Search Box. Instead of presenting text links for each canned search, there is a drop-down box just like the forum jumpbox, thus the name Search Box. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I have also tweaked the search output so you can restart your search from the results page. The results page shows which keywords were used, which were ignored, and other options.</p>
<p>I&#8217;ve added sub-forums (my own implementation which, frankly, nearly sucks <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  ) and with searching you can multi-select forums, select parent forums and automatically include sub-forums, or select just sub-forums.</p>
<p>I have &#8230;. okay, enough of the notes here. Suffice it to say that I feel I have spent a lot of time researching, tweaking, tuning, and adding features to the phpBB2 search system. Based on the new features and special options I have created, I am definitely going to award myself a point in this area. And nobody saw that coming, right? <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Forums</h3>
<table class="blogtable">
<tr>
<th colspan="4">Forums</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Categories:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Password Protected Forums:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr class="alt">
<td>Forum Specific Styles:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr>
<td>URL Link Redirect Forums:</td>
<td>No</td>
<td>Yes URL Link Redirect Forums Toggle on/off Redirect Count</td>
<td>Not needed</td>
</tr>
<tr class="alt">
<td>Forum Rules:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr>
<td>Subforums:</td>
<td>No</td>
<td>Yes Subforums Unlimited Nested Levels</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Last Post:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr>
<td>Forum Pruning:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr class="alt">
<td>Display Active Topics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Subscribe to Forums:</td>
<td>No</td>
<td>Yes Subscribe to Forums E-mail, Jabber/XMPP Notifications</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Subscribe to Topics:</td>
<td>Yes</td>
<td>Yes Subscribe to Topics E-mail, Jabber/XMPP Notifications</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Bookmark Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Topic Sorting:</td>
<td>No</td>
<td>Yes Topic Sorting Sort by Author, Selectable Post Time, Replies, Subject and Views in descending or ascending order</td>
<td>Not yet, but I have plans to do so</td>
</tr>
<tr>
<td>Post Sorting:</td>
<td>No</td>
<td>Yes Post Sorting Sort by Author, Selectable Post Time, and Subject in descending or ascending order</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Topic Participation Tracking:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Print Topics:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>E-mail Topics:</td>
<td>No</td>
<td>Yes E-mail Topics E-mail Topic to friend with Language choice</td>
<td>Yes, custom</td>
</tr>
</table>
<p>The big advance from phpBB2 to phpBB3 in this area was probably the implementation of sub-forums of infinite depth. I&#8217;ve created a sub-forums MOD that is potentially infinite but is only used for one level. It&#8217;s sufficient for my needs and doesn&#8217;t have the complexity of the left / right tree structure used in phpBB3. I have never needed to password protect a forum or create a forum as a link. With my daily digest I do offer a way to subscribe to a forum; in fact I deliver a single email for all subscribed forums at one time. I don&#8217;t offer a way to get forum notifications via any method other than email at this time, but it&#8217;s never been requested either. I have bookmarks (discussed in the prior section on searching) and post sorting set in a user profile. I have a &#8220;tell-a-friend&#8221; MOD that allows users to send a topic link via email.</p>
<p>Basically I have everything I need for this area, but can&#8217;t really say I&#8217;ve gone beyond what is offered in phpBB3. Remember that this review is not an unbiased process. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am weighting factors based on my needs. So even though phpBB3 does offer substantially more power and flexibility with their forum hierarchy structure, I don&#8217;t need it, and thus the value (and the incentive to upgrade) is lower. So I will call this one a tie.</p>
<h3>Conclusion</h3>
<p>So far I have covered twelve of the categories from the feature comparison list at phpbb.com. The score was 2-1 coming into this post, implying three feature categories had a clear winner and the six others had inconsequential differences. Where do I think I stand now?</p>
<p>I added a point for profiles and memberlist handling based on the power and flexibility of the Page Permissions MOD. That&#8217;s +1 for me, making 3-1 the running tally. I added a point for the search system because of the fact that I provide everything found in phpBB3 but go well beyond those new features. +1 for me, 4-1 as a running tally.</p>
<p>Forum handling was a tie. So that makes the score 4-1 at this point in my favor as I score it, with 7 categories with no clear winner. As I type this, it has occurred to me that even the categories without a clear winner are somewhat of a win for phpBB-Dave since that means it is reasonably equivalent to phpBB3 in those areas. Yay me. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Next time I will the cover User Control Panel, Usergroups, and the Moderator Control Panel. I am skipping the Private Messaging category because I don&#8217;t use it at all, so any comparision would be rather pointless.</p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/25/smackdown-round-iv-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>phpBB3 Caching Strategies for 3.0</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/21/phpbb3-caching-strategies-for-30/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/21/phpbb3-caching-strategies-for-30/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 11:20:13 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=252</guid>
		<description><![CDATA[Through some sort of technical glitch most of this post was missing. I&#8217;ve updated it with the rest of the content. My apologies.
A few days ago I posted Part III in my ongoing series where I am comparing phpBB3 to phpBB-Dave (my customized phpBB2-based board) from a feature perspective. I hopefully have made it clear [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Through some sort of technical glitch most of this post was missing. I&#8217;ve updated it with the rest of the content. My apologies.</strong></p>
<p>A few days ago I posted <a href="http://www.phpbbdoctor.com/blog/2008/08/18/smackdown-round-iii-phpbb3-versus-phpbb-dave/">Part III in my ongoing series</a> where I am comparing phpBB3 to phpBB-Dave (my customized phpBB2-based board) from a feature perspective. I hopefully have made it clear that I am not claiming that my board is technically superior, as I am quite sure that it is not. The experimentation I did with the template engines several months back proved that, at the very least.  </p>
<p>Part III included a review of the caching process for each board. A vanilla phpBB2 board does not offer any caching (outside of an early form of template caching). My version is caching quite a bit of information, as does phpBB3. I&#8217;ve reproduced that specific table here, as it will help clarify the points made later in this post.</p>
<p>One interesting result of Londonvasion for me was that I found out that there are team members that stop by and read my blog (at least occasionally) that don&#8217;t leave comments. DavidMJ, one of the current members of the phpBB3 development team, is apparently one of those folks. He caught me on IRC a few nights ago and offered to help explain the caching routines from phpBB3 and I was quick to take him up on his offer. Here is an excerpt from our conversation; I found it extremely enlightening. </p>
<p><span id="more-252"></span></p>
<blockquote><p>[22:03] DavidMJ: drathbun: hey<br />
[22:03] drathbun: greetings<br />
[22:04] DavidMJ: I happened to catch your blog, was wondering if you wanted to know what we mean by &#8220;arbitrary&#8221; data wrt caching<br />
[22:04] drathbun: at some point, yes, would love to<br />
[22:04] drathbun: I hadn&#8217;t had time to investigate yet, but if you&#8217;re inclined to share, I&#8217;m listening <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
[22:04] DavidMJ: sure<br />
[22:04] DavidMJ: we make a distinction between caching queries and everything else<br />
[22:05] DavidMJ: so if we want to cache a query, all we have to do is make it so that we specify a TTL, the rest of the code is unchanged<br />
[22:06] DavidMJ: everything else falls under &#8220;arbitrary&#8221;, we provide a nice mechanism for saying &#8220;take this array/string/object and cache it for some amount of time, I will remember because I have given it a name&#8221;<br />
[22:06] drathbun: like smilies?<br />
[22:06] DavidMJ: yep<br />
[22:06] DavidMJ: so caching a query is totally unnamed while data is completely named<br />
[22:06] drathbun: aha<br />
[22:06] DavidMJ: it allows us to also make sure that we only cache old things wrt queries<br />
[22:07] drathbun: so as a stupid noobish question, what exactly is cached when you say query cache? the sql or the results?<br />
[22:07] DavidMJ: as we only will cache, and recall, something we have seen before<br />
[22:07] DavidMJ: technically, both<br />
[22:07] drathbun: ok<br />
[22:07] DavidMJ: we hash the sql to be able to know that _exact_ query<br />
[22:07] drathbun: so by caching the sql, you avoid the sql build step<br />
[22:07] DavidMJ: we store the entire results very efficiently in 3.2<br />
[22:07] DavidMJ: we store them quite well for 3.0<br />
[22:09] drathbun: I do some what you might consider fairly primitive caching now&#8230;<br />
[22:09] DavidMJ: drathbun: what do you do now?<br />
[22:11] drathbun: what I call my &#8220;primitive&#8221; cache is just a dump to a file of a series of assignment statements<br />
[22:11] drathbun: so things that are static, or nearly so, are included as needed rather than running queries on every page<br />
[22:11] drathbun: I figure I&#8217;ve eliminated somewhere on the order of 500,000 queries a day from my server<br />
[22:12] DavidMJ: drathbun: effective, but not as robust as the 3.0 mechanism <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
[22:12] drathbun: I&#8217;m sure it&#8217;s not <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
[22:12] drathbun: I have a cache-loader that checks the page being processed, and loads the cache related to those pages, also does the same for language files<br />
[22:13] DavidMJ: ah, that is a bit strange<br />
[22:13] drathbun: so I hope that the file I/O I added for the cache is offset by the reduced file I/O for unneeded language files<br />
[22:13] DavidMJ: what we do is we load up caches as needed<br />
[22:13] DavidMJ: we see if we recognize a query is in the cache, if so we load it<br />
[22:13] DavidMJ: this way, identical queries on multiple pages are cached once, loaded once<br />
[22:13] DavidMJ: given the same TTL, etc.<br />
[22:14] DavidMJ: it also totally hides the caching logic<br />
[22:14] DavidMJ: another nice trick is bypassing I/O alltogether<br />
[22:14] drathbun: there are so many customized queries that can be run because of board permissions and so on, I never really applied any thought to caching queries because I figured it would be a lot of work for little benefit<br />
[22:15] DavidMJ: 3.0 really does not need board permissions cached, it is all stored in a bitfield<br />
[22:15] DavidMJ: the bitfield is stored per forum and is always easy to get to, the lookup is quite fast&#8230;<br />
[22:16] DavidMJ: we have some issues when people do permission set up without using roles on huge boards<br />
[22:16] drathbun: but in theory, with 20 different people online, couldn&#8217;t you have 20 different permission settings?<br />
[22:16] drathbun: for the same forum?<br />
[22:16] DavidMJ: yep<br />
[22:16] DavidMJ: and it is stored with each user<br />
[22:16] drathbun: aha<br />
[22:16] DavidMJ: it is not cached anywhere, there is no need<br />
[22:16] * drathbun sees a lightbulb<br />
[22:16] DavidMJ: we grab the whole row anyway<br />
[22:17] drathbun: right<br />
[22:17] DavidMJ: so permissions are quite efficient<br />
[22:17] drathbun: so you already know the permissions when you get the user data<br />
[22:17] DavidMJ: yep<br />
[22:17] DavidMJ: 3.0 is light years ahead of 2.0 wrt organization <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
<p>So first, thanks to DavidMJ for taking the time to explain the caching routine to me. At some point I will be reading some code, but I have a much better understanding of what the phrases on the chart were intended to mean now. The way user permissions are stored sounds incredibly efficient, for one thing. The idea of being able to cache / share both the sql build output and the query results is also interesting. Clearly what is in 3.0 as far as caching is far, far above what I have implemented.</p>
<p>In case you missed it, &#8220;arbitrary data&#8221; is relatively static data like smilies. That&#8217;s what I thought they meant by database query caching. In that case, I do not do any query caching, only arbitrary data. So that means the new format for the feature comparison table is this:</p>
<h3>Caching</h3>
<table class="blogtable">
<tr>
<th colspan="4">Caching</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Database Query Caching:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Template Caching:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Arbitrary Data:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Manual Cache Refreshing:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</table>
<p>The change doesn&#8217;t alter the way I scored this category. It just helps me understand more about how the caching routines work, and I am quite happy that DavidMJ offered to educate me. </p>
<p>Oh, and my favorite quote from the conversation? DavidMJ is nothing, if not bold. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  Here was a prediction he made about 3.2 during the conversation:</p>
<blockquote><p>DavidMJ: 3.2 will have robust and reliability guarantees beyond anything I have seen in modern forum software</p></blockquote>
<p>The thing is, I believe he along with the rest of the developer team can back that statement up and deliver on that prediction. I really do. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/21/phpbb3-caching-strategies-for-30/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smackdown Round III &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/18/smackdown-round-iii-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/18/smackdown-round-iii-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:40:16 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=232</guid>
		<description><![CDATA[In the first two posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 1-1, based only on my needs and use [...]]]></description>
			<content:encoded><![CDATA[<p>In the first two posts of this series I went through the feature list comparing phpBB2 with phpBB3 from the list posted at phpbb.com. I then included notes discussing which new features for phpBB3 I had covered already by adding MODs. At this point the score is 1-1, based only on my needs and use of the code. This is the third post in that series and I will cover the Posting, Attachments, and Caching feature categories.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-232"></span><br />
<h3>Posting</h3>
<table class="blogtable">
<tr>
<th colspan="4">Posting</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Topic Display Method:</td>
<td>Flat</td>
<td>Flat</td>
<td>Flat, but with &#8220;Reply to Post&#8221; option</td>
</tr>
<tr>
<td>BBCode:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr class="alt">
<td>Custom BBCode Buttons:</td>
<td>No</td>
<td>Yes</td>
<td>No, but I never felt they were needed</td>
</tr>
<tr>
<td>HTML in posts:</td>
<td>Yes</td>
<td>No</td>
<td>Disabled at the board level so a non-issue for me</td>
</tr>
<tr class="alt">
<td>Smilies/Emoticons:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr>
<td>Quoting:</td>
<td>Yes Quoting Nested</td>
<td>Yes Quoting Nested, Configurable maximum nested depth</td>
<td>Standard works fine for me, never saw a need to fix it</td>
</tr>
<tr class="alt">
<td>Quote Multiple Posts:</td>
<td>No</td>
<td>Yes Quote Multiple Posts Multiple post quoting through Topic Review</td>
<td>The quoting from topic preview is nice. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I have not implemented it yet.</td>
</tr>
<tr>
<td>Formatting Toolbar:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr class="alt">
<td>Word Censors:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes, but I have zero words on my censor list anyway</td>
</tr>
<tr>
<td>Syntax Highlighting:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr class="alt">
<td>Attachments:</td>
<td>No</td>
<td>Yes (Multiple)</td>
<td>Yes, via Acyd Burn&#8217;s MOD</td>
</tr>
<tr>
<td>Post Drafts:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Polls:</td>
<td>Yes</td>
<td>Yes</td>
<td>Poll expiration dates are displayed</td>
</tr>
<tr>
<td>Multiple Poll Option Voting:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr class="alt">
<td>User based Poll Tracking:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Allow/Disallow Vote Change:</td>
<td>No</td>
<td>Yes</td>
<td>See above</td>
</tr>
<tr class="alt">
<td>Beaten-to-Posting Review:</td>
<td>No</td>
<td>Yes</td>
<td>Not needed</td>
</tr>
<tr>
<td>Posting Preview:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Flood Control:</td>
<td>Yes</td>
<td>yes</td>
<td>Yes, custom</td>
</tr>
</table>
<p>One of the first MODs I wrote was a &#8220;Reply to Post&#8221;. People were not used to having to scroll up or down the page to find the reply button, so I added code that made it possible to click &#8220;reply&#8221; on each post. That saved a lot of quoting. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  This did not change the display from flat to threaded, but it was a well-received feature. It&#8217;s still not in phpBB3 and is something that I would have to create before I could switch. The custom BBCode feature is nice, but we don&#8217;t really need more formatting options on my board. I do have attachments (via Acyd Burn&#8217;s MOD, see below for more comments) so that&#8217;s a toss-up as far as features go. I have customized the poll handling and include all of the features present in phpBB3 and some additional options as well. I have tweaked the flood control as mentioned in a prior post.</p>
<p>And there are new features as well that I have created. I have a MOD called the &#8220;Bump Warning&#8221; that displays a red band at the top of the posting screen if a user attempts to reply to their own post before 24 hours have elapsed or someone else has posted in between.</p>
<p>I have also implemended Topic Prefixes, which allows a user to tag a topic within a forum. Board members can then filter the forum to show only topics with that specific tag. I use this to create one large forum for user groups, and then create tags for each regional area. I also use it to allow users to tag technical support questions with the version of the software they&#8217;re using. I understand this is under development for 3.2, but it&#8217;s not there yet, so I win. For now. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bottom line here is that while there are some new options for phpBB3 there is nothing compelling, and I do have the &#8220;reply to post&#8221; feature which is now a requirement for my board. Based on this and the other new posting features I have added I think I clearly win this category.</p>
<h3>Attachments</h3>
<table class="blogtable">
<tr>
<th colspan="4">Attachments</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Automatic Image Thumbnails:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, via Acyd Burn&#8217;s MOD as noted previously</td>
</tr>
<tr>
<td>Attachment Types:</td>
<td>No</td>
<td>Yes Attachment Types Images, Documents, Audio Streams, Video Streams, Archives</td>
<td>See above</td>
</tr>
<tr class="alt">
<td>Multiple Attachments:</td>
<td>No</td>
<td>Yes</td>
<td>See above</td>
</tr>
<tr>
<td>Attachment Placement:</td>
<td>No</td>
<td>Yes Attachment Placement Inline and/or standard</td>
<td>Don&#8217;t have this as it&#8217;s part of phpBB3 rather than the MOD, and I do like it, but it&#8217;s not a compelling feature</td>
</tr>
</table>
<p>I installed the Attachment MOD from Acyd Burn some years ago. It has worked very well for our needs. From the outside looking in the only real upgrade provided in phpBB3 is the option to do inline attachments, It&#8217;s nice, but not a compelling reason to upgrade. </p>
<h3>Caching</h3>
<table class="blogtable">
<tr>
<th colspan="4">Caching</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Database Query Caching:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>Template Caching:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="alt">
<td>Arbitrary Data:</td>
<td>No</td>
<td>Yes</td>
<td>Not sure what this means</td>
</tr>
<tr>
<td>Manual Cache Refreshing:</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</table>
<p>I started working on a caching routine during the development of the Page Permissions MOD. It&#8217;s probably primitive compared to what is in phpBB3 but it&#8217;s functional. I have tweaked it over the years so that now I am caching all sorts of different parts of my board. And to save time, cached files (and language files too) are only read from disk when they are required. At one point my lang_main.php file was HUGE beyond belief. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  Now it has been put on a diet, and there is code inside lang_main.php that only loads additional language files based on the calling page. It&#8217;s much faster, but I don&#8217;t think that I can assign a point either way for this category.</p>
<h3>Conclusion</h3>
<p>So far I have covered nine of the categories from the feature comparison list at phpbb.com. The score was 1-1 coming into this post, where do I think I stand now?</p>
<p>As mentioned above, I get a point for posting improvements that I have made. There are a few things missing (multi-quote from topic preview as one example) that I like, but others (poll vote tracking / changing, poll expiration date display, reply to post option) that make up for that. With the &#8220;bump warning&#8221; and the topic prefixes added to the mix, and the fact that the &#8220;reply to post&#8221; option is missing from phpBB3, I will award myself a point for the posting category. The score is now 2-1 in my favor.</p>
<p>Attachments is essentially a tie, primarily since I&#8217;ve added Acyd Burn&#8217;s Attachment MOD to my board. We have included this feature for several years now and it has worked very well. I like the inline placement from phpBB3 but it&#8217;s not a compelling reason to upgrade. Score remains 2-1.</p>
<p>As stated above, I am giving not going to give myself a point for my caching system only because it is reasonably equivalent to what is in phpBB3. Since we both have it, there&#8217;s no clear winner.</p>
<p>So that makes the score 2-1 at this point in my favor as I score it. I decided that the added features for posting in phpBB3 were counter balanced by my own customizations. The other two features are a toss-up, so no points were awarded. It&#8217;s probably not surprising that my points are pulling ahead since I have written the things that I want, and made them work the way I want them to work, for my own purposes. phpBB3 has to be all things to all people. I only have to please myself.</p>
<p>Next time I will cover Profiles/Memberlist, Search, and Forums.</p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/18/smackdown-round-iii-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Smackdown Round II &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/11/smackdown-round-ii-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/11/smackdown-round-ii-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 12:07:42 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=231</guid>
		<description><![CDATA[In the previous post of this series I went through the first three categories of the feature list comparing phpBB2 with phpBB3. I added my own notes comparing that comparison (if you follow what I mean   ) with the features I have in my own highly-customized implementation of phpBB2. This is the next [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post of this series I went through the first three categories of the feature list comparing phpBB2 with phpBB3. I added my own notes comparing that comparison (if you follow what I mean <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) with the features I have in my own highly-customized implementation of phpBB2. This is the next post in that series and I will cover the Anti-Spam, Data Management, and Registration feature categories.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-231"></span><br />
<h3>Anti-Spam</h3>
<table class="blogtable">
<tr>
<th colspan="4">Anti-Spam</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>CAPTCHA Visual Confirmation:</td>
<td>Yes</td>
<td>Yes CAPTCHA Visual Confirmation Customise Difficulty and CAPTCHA Noise</td>
<td>Meh. I don&#8217;t like CAPTCHA features anyway so the improvements here are of no benefit to me</td>
</tr>
<tr>
<td>Flood Control:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Groups:</td>
<td>Yes</td>
<td>Yes</td>
<td>No change</td>
</tr>
<tr>
<td>ACLs:</td>
<td>Yes</td>
<td>Yes</td>
<td>No change</td>
</tr>
<tr class="alt">
<td>Blacklist:</td>
<td>Yes</td>
<td>Yes</td>
<td>No change</td>
</tr>
<tr>
<td>Banning:</td>
<td>Yes</td>
<td>Yes</td>
<td>Already discussed previously</td>
</tr>
<tr class="alt">
<td>Suspensions:</td>
<td>No</td>
<td>Yes</td>
<td>Already discussed previously</td>
</tr>
<tr>
<td>Warnings:</td>
<td>No</td>
<td>Yes</td>
<td>Already discussed previously</td>
</tr>
<tr class="alt">
<td>User Logging:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>User Post IP Logging:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Report Posts:</td>
<td>No</td>
<td>Yes</td>
<td>I wrote my own feature here that integrates with Post Notes and a number of other enhancements</td>
</tr>
<tr>
<td>Post Moderation:</td>
<td>Yes</td>
<td>Yes</td>
<td>I have added a feature that removes the &#8220;edited by&#8221; message for admin posts, and I have added an entirely new sub-system called Post Notes that would fit into this area. More details below.</td>
</tr>
</table>
<p>This is one area that will come as no surprise to regular readers of my blog. I have done quite a bit to combat spam on my various boards. I have an <a href="http://www.phpbbdoctor.com/blog/category/phpbb/anti-spam/">entire category of blog posts</a> related to this subject. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  So as expected, I will have quite a bit of detail to provide here.</p>
<p><strong>CAPTCHA</strong><br />
The phpBB2 CAPTCHA is worthless, and I think everyone knows that. To be honest, I don&#8217;t even like this concept. I think the work done for phpBB3 is admirable, but there are already reports that the basic version has been cracked. From what I can tell the developers anticipated that this would happen and have given board owners quite a few options to tweak the graphic, but I as I said already I don&#8217;t like this feature and would not use it. My Checkbox Challenge MOD has so far been quite successful at combatting spam and is not nearly as difficult to use.</p>
<p><strong>Flood Control</strong><br />
At some point phpBB2 introduced the idea of a search flood control. I understand why they did it, but I also did not agree with the way it worked. So I wrote a MOD to make it work the way I wanted. I have not blogged about this MOD before but it boils down to this: keyword searches can hurt the server and should have flood control. Canned searches like &#8220;posts since last visit&#8221; do not hurt the server nearly as much, and should not have flood control. My MOD allows board owners to tweak the various search settings and activate / deactivate flood control for specific searches rather than treating all searches as having the same weight.</p>
<p>Posting flood controls remain in place except for moderators and administrators. They are immune from the posting flood control. I have also made a <a href="http://www.phpbbdoctor.com/blog/2007/08/30/yet-another-search-tweak/">simple but important change</a> to the post edit process which reduces the impact of editing large posts on the server.</p>
<p><strong>Banning</strong><br />
I talked about banning in the <a href="http://www.phpbbdoctor.com/blog/2008/08/04/phpbb2-versus-phpbb3-versus-phpbb-dave-part-i/">first post in this series</a>. I don&#8217;t have warnings or user notes at this time, and so far have not needed the feature. It would be easy to add to my current configuration if I decided I needed it.</p>
<p><strong>User Logging</strong><br />
I&#8217;ve written and implemented a completely customizable user audit feature. It is one of the MODs I hope to release for other phpBB2 board owners at some point. There is an admin page that shows the structure of the phpbb_users table and lets me check which attributes I want to monitor. From that point forward, anytime a user changes one of the monitored attributes the &#8220;before&#8221; and &#8220;after&#8221; values are logged. This lets me confirm when someone has changed their email address, their web site, their username, and so on. I like the way it works quite a bit, and it&#8217;s very simple to install.</p>
<p>I also (via my Checkbox Challenge MOD) log IP addresses and other information during registration, which is something that phpBB3 does as well. I also record registration attempts (not just successful registrations) for further analysis.</p>
<p><strong>Reported Posts</strong><br />
I reviewed the features provided by several existing MODs for phpBB2 for reporting posts, but I ended up writing my own because it integrated with my moderator action log and the post notes feature that I had put in place. Based on my experience with this feature in my role as a moderator on phpbb.com I will say that I prefer my own solution. In the standard feature I have to either close or delete a post report. In my version I accept or reject the report, take action accordingly, and close it. Nothing is ever deleted. This means that I can go back and remove the post report ability from any user who abuses the feature since I have a log of all of their rejected reports.</p>
<p><strong>Post Moderation</strong><br />
Moderator actions also use the Post Notes feature (see below). Basically anything that touches a topic or a post is logged, which is not standard phpBB2 but was included in phpBB2-Dave since my last release.</p>
<p>I have a few blog posts with more details about my Post Notes MOD <a href="http://www.phpbbdoctor.com/blog/2008/03/23/any-more-phpbb2-mods/">here</a> and <a href="http://www.phpbbdoctor.com/blog/2008/03/25/post-notes-design-part-i/">here</a>.</p>
<p>At this point based on the number of extra features that I have written for myself and the fact that the more complex CAPTCHA is not something I would use, I am scoring this category as a solid win (+1 point) for phpBB-Dave. I prefer my report-a-post over that found in phpBB3, and my Post Notes MOD has added a new dimension to the way my board works.</p>
<h3>Data Management</h3>
<p>Whew! <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  After that lengthy list it&#8217;s nice to see something short. This list is quite simple and therefore there won&#8217;t be many notes.</p>
<table class="blogtable">
<tr>
<th colspan="4">Data Management</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>MySQL:</td>
<td>Yes</td>
<td>Yes MySQLMySQL 3.23+, MySQLi</td>
<td>I use MySQL</td>
</tr>
<tr>
<td>MSSQL Server:</td>
<td>Yes</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>MSSQL ODBC:</td>
<td>Yes</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr>
<td>PostgreSQL:</td>
<td>Yes</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>MS Access:</td>
<td>Yes</td>
<td>No</td>
<td>N/A</td>
</tr>
<tr>
<td>Oracle:</td>
<td>No</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>Firebird:</td>
<td>No</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr>
<td>SQLite:</td>
<td>No</td>
<td>Yes</td>
<td>N/A</td>
</tr>
<tr class="alt">
<td>Database (DBMS) Backups:</td>
<td>Yes (MySQL Only)</td>
<td>Yes</td>
<td>I use mysqldump and cron to manage my backups</td>
</tr>
<tr>
<td>Database (DBMS) Restore:</td>
<td>Yes (MySQL Only)</td>
<td>Yes</td>
<td>I use mysqldump and cron to manage my backups</td>
</tr>
<tr class="alt">
<td>Post/Topic Pruning:</td>
<td>Yes</td>
<td>Yes</td>
<td>No changes</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p><strong>Backup and Restore</strong><br />
The main thing here is that I have removed the phpBB2 database utilities code and template files from my board altogether. There are too many issues with the way it was implemented. It doesn&#8217;t handle custom tables very well, nor does it work well with large backup files. And since the board owner has to initiate the backup process it&#8217;s not likely to get done very often. I use mysqldump and a cron job to manage my database backups, and everything is automatic.</p>
<p>At 1am I run a backup script that extracts the data to a text file and then gzips the resulting output. At 2am a cron job on my home server kicks in and it connects via ftp to the production server and downloads all of the backup files. The files are stamped with the date and time and moved off to a RAID storage array. I probably have a better backup strategy than many data centers. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </p>
<p>Suffice it to say that nothing in phpBB3 is going to improve on that process. I won&#8217;t really call this a &#8220;win&#8221; for phpBB-Dave however, as the feature is external to the code. It&#8217;s a process I put in place rather than a code modification.</p>
<h3>Registration</h3>
<table class="blogtable">
<tr>
<th colspan="4">Registration</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>COPPA Registrations:</td>
<td>Yes</td>
<td>Yes COPPA Registrations Toggle On/Off</td>
<td>I don&#8217;t allow board members under 13 so this is moot</td>
</tr>
<tr>
<td>Limit Registration Attempts:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Set min/max Username Length:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Set min/max Password Length:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr class="alt">
<td>Limit username Chars:</td>
<td>No</td>
<td>Yes</td>
<td>Yes, custom</td>
</tr>
<tr>
<td>Set Password Complexity Requirements:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="alt">
<td>Force Password Change:</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Allow/Disallow e-mail Address Re-usage:</td>
<td>No Allow/Disallow e-mail Address Re-usage Duplicate E-mails are always disallowed</td>
<td>Yes Allow/Disallow e-mail Address Re-usage Allow or Disallow Duplicate E-Mail Addresses</td>
<td>Works as phpBB2, no changes applied</td>
</tr>
</table>
<p>My Checkbox Challenge MOD logs user registration attemps and temporarily blocks further attempts after a configurable number of failures. The time of the temporary ban is also a configurable options. I have code in place (hard-coded) to enforce a min / max username length and have it this for years. I don&#8217;t agree with the option to reuse an email address, so I have no interest in that feature or plans to add it to my board.</p>
<p>A basic summary is that I think I have the most important features already in place, and the information logged by my Checkbox Challenge MOD is very useful. I&#8217;m perfectly happy with where I am with regard to this category.</p>
<h3>Conclusion</h3>
<p>So far I have covered six of the categories from the feature comparison list at phpbb.com. From the last post: the General category was a toss-up so the score is 0-0. Basic Features was a win for phpBB3 based on the strength of the Unread Message tracking feature. With security also being a tie the first three feature categories end up with phpBB3 leading 1-0.</p>
<p>From this post: I feel like I win the anti-spam category as not only have I addressed features that are present in phpBB3 (and missing from phpBB2) but I have extended them in some cases and in others I have created something completely new. I&#8217;m going to score this as a point for me, bringing the score to 1-1. For Data Management I am going to award no points if only because I have created a true backup / restore process that is in no way impacted by whatever version of phpBB I run. Finally, the Registration category is also a tie since there is no real advantage to any version and I have already counted a point for Checkbox Challenge and won&#8217;t count it twice.</p>
<p>So that makes the score 1-1 (with four zero-point categories) after reviewing six categories. Next time I will cover Posting, Attachments, and Caching.</p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/11/smackdown-round-ii-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Smackdown Round I &#8211; phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/04/smackdown-round-phpbb3-versus-phpbb-dave-part-i/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/04/smackdown-round-phpbb3-versus-phpbb-dave-part-i/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:53:39 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=230</guid>
		<description><![CDATA[As a brief recap from the introduction post for this series&#8230; the goal for this series of posts will be to sit back and try to take an objective look at the feature comparison list posted at phpbb.com and determine the following:

Do I have that feature already as a MOD?
If so, does it meet or [...]]]></description>
			<content:encoded><![CDATA[<p>As a brief recap from the <a href="http://www.phpbbdoctor.com/blog/2008/08/01/featured-smackdown-phpbb3-versus-phpbb-dave/">introduction post for this series</a>&#8230; the goal for this series of posts will be to sit back and try to take an objective look at the <a href="http://www.phpbb.com/about/features/">feature comparison list posted at phpbb.com</a> and determine the following:</p>
<ul>
<li>Do I have that feature already as a MOD?</li>
<li>If so, does it meet or exceed what is provided by phpBB3?</li>
<li>If not, do I have a compelling need for this feature, enough that I would either consider writing it as a MOD or upgrading?</li>
</ul>
<p>I plan to go through the feature chart section by section, and at the end of each section I will assign a point value of +1, 0, or -1 based on where I think I am. By the end of the analysis I expect to have a much better idea of where I stand with my own code, or just how important the things are that I am missing.</p>
<p><em>As a disclaimer: this post is not intended to be a criticism of phpBB3 in any way. It is simply a way for me to formally review the features provided by the latest version as compared to what I am currently using, and help evaluate whether I should prioritize an upgrade or remain happy with what I have.</em></p>
<p><span id="more-230"></span><br />
<h3>General</h3>
<p>The first category is titled &#8220;General&#8221; and really holds no surprises.</p>
<table class="blogtable">
<tr>
<th colspan="4">General</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>License:</td>
<td>GPL</td>
<td>GPL</td>
<td>GPL</td>
</tr>
<tr>
<td>License Price:</td>
<td>Free</td>
<td>Free</td>
<td>Not offered for distribution</td>
</tr>
<tr class="alt">
<td>Programming Language:</td>
<td>PHP</td>
<td>PHP</td>
<td>PHP</td>
</tr>
<tr>
<td>Latest Version:</td>
<td>2.0.23</td>
<td>3.0.2</td>
<td>2.0.Dave <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </td>
</tr>
<tr class="alt">
<td>Release Date:</td>
<td>17 Feb, 2008</td>
<td>10 Jul, 2008</td>
<td>30 Mar, 2008</td>
</tr>
</table>
<p>Nothing much to talk about here so I&#8217;ll move on to the next category.</p>
<h3>Basic Features</h3>
<table class="blogtable">
<tr>
<th colspan="4">Basic Features</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>UTF-8 Support:</td>
<td>No</td>
<td>Yes</td>
<td>No, but I don&#8217;t need it as my board is only English.</td>
</tr>
<tr>
<td>User Preferences:</td>
<td>Yes User PreferencesPage: Preferences, Avatar, and Signature</td>
<td>Yes User Preferences Complete Modularised Control Panel</td>
<td>I didn&#8217;t create a user control panel, but I have added many custom profile fields</td>
</tr>
<tr class="alt">
<td>Moderation:</td>
<td>Yes Moderation Simple Moderator Controls</td>
<td>Yes Moderation Complete Modularised Control Panel</td>
<td>No control panel, but I have added quite a few custom features that will be detailed later</td>
</tr>
<tr>
<td>Administration:</td>
<td>Yes Administration Frameset-style Control Panel</td>
<td>Yes Administration Complete Modularised Control Panel</td>
<td>Didn&#8217;t do much, as I&#8217;m okay with the way the panel works</td>
</tr>
<tr class="alt">
<td>Search Engine spider Handling:</td>
<td>No</td>
<td>Yes Search Engine spider Handling Editable Spider/Crawler/Bot List and Management</td>
<td>I have removed the &#8220;Who&#8217;s Online&#8221; list anyway for performance reasons, so this is a non-issue</td>
</tr>
<tr>
<td>Unread message tracking:</td>
<td>Yes Unread message tracking Session based read/unread tracking</td>
<td>Yes Unread message tracking Full Persistent read/unread tracking &#8212; Not limited by per-visit sessions</td>
<td>I have partially added this, based on a code snipped posted by Acyd Burn a while back. It does unread tracking while you&#8217;re online, but drops the information when you log out.</td>
</tr>
<tr class="alt">
<td>Private Message System:</td>
<td>Yes</td>
<td>Yes</td>
<td>I&#8217;ve removed this so it&#8217;s not an issue. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </td>
</tr>
<tr>
<td>Statistics:</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes, I have added extensive statistics to my board.</td>
</tr>
</table>
<p><strong>UTF-8 Support</strong><br />
I can understand why UTF-8 support is important for phpBB3 to have as they&#8217;re one of the widest used bulletin board packages on the planet. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  But since my board is specifically English I am not sure what else I might be missing by not having this.</p>
<p><strong>Search Engine Spider Handling</strong><br />
I removed the queries that show who&#8217;s online for the index as well as for viewforum for performance reasons. In my opinion there is little or no value in knowing this information, and if someone really wants to see who is online they can click the &#8220;Who&#8217;s Online&#8221; page instead.</p>
<p>I have also had a &#8220;guest&#8221; profile that removes many of the links and other distractions for quite some time now. Google has done a good job with indexing the content of my board and ignoring the extra stuff like user profiles and the memberlist and so on. I&#8217;m quite happy with where I am from a search engine handling department.</p>
<p><strong>Unread Messages</strong><br />
Ah, read tracking&#8230; yes, that&#8217;s a nice feature. It&#8217;s my favorite feature, actually, and it was often requested in the early days of the board. For some reason, it&#8217;s not requested so much anymore and I&#8217;m not sure why. What I did do was fix one annoying issue based on a code segment Acyd Burn (the current developer team lead) posted a long time ago. It changes the behavior of the &#8220;Newest Post&#8221; link so that it works the way it should. Suppose there is a topic with 10 new posts since I last logged in. If I read those 10 posts, they&#8217;re marked. Then if a new post is made (number 11) while I am still logged in the &#8220;newest post&#8221; indicator is shown once again. Under a standard phpBB2 install if I clicked that icon I would be taking to the first new post since I logged in, not the first new post since I read the topic. Acyd&#8217;s code changes that behavior, and I like it. Full read tracking for my board will either have to wait until I upgrade, or until I decide how to write it for phpBB2.</p>
<p>After reviewing the Basic Features list I score this as a win (+1) for phpBB3 based on my lack of a full read tracking feature. I have quite a few additional features, but so does phpBB3, and the read tracking tips the scales.</p>
<h3>Security</h3>
<table class="blogtable">
<tr>
<th colspan="4">Basic Features</th>
</tr>
<tr>
<td>Feature</td>
<td>phpBB2</td>
<td>phpBB3</td>
<td>phpBB-Dave</td>
</tr>
<tr class="alt">
<td>Permanent Bans:</td>
<td>Yes</td>
<td>Yes Permanent Bans Including reason shown to user and Moderator comment</td>
<td>See below for notes</td>
</tr>
<tr>
<td>Temporary Bans (Suspension):</td>
<td>No</td>
<td>Yes Temporary Bans (Suspension) Including Reason shown to user and Moderator comment</td>
<td>See below for notes</td>
</tr>
<tr class="alt">
<td>Permissions:</td>
<td>Yes</td>
<td>Yes Permissions Advanced and Customisable Permissions System</td>
<td>I&#8217;ve never needed anything more complicated than what phpBB2 offered</td>
</tr>
<tr>
<td>Paid Security Code Audit:</td>
<td>No</td>
<td>Yes</td>
<td>Erm, no. I have not paid anyone to audit my code. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </td>
</tr>
<tr class="alt">
<td>Form Handling:</td>
<td>Yes Form Handling Session based forms</td>
<td>Yes Form Handling User based forms</td>
<td>Nothing to see here, move along</td>
</tr>
<tr>
<td>Type Aware Parameter Handling:</td>
<td>No</td>
<td>Yes</td>
<td>Partial, see below for notes</td>
</tr>
<tr class="alt">
<td>Type Aware Database Layer:</td>
<td>No</td>
<td>Yes</td>
<td>Partial, see below for notes</td>
</tr>
<tr>
<td>Password Hashing:</td>
<td>Yes Password Hashing Method: MD5</td>
<td>Yes Password Hashing Method: Multiple Runs, Salted, and/or MD5</td>
<td>I have not changed the password handling for phpBB2</td>
</tr>
</table>
<p><strong>Banning</strong><br />
In six+ years of running this board the only bans I have ever put in place have been permanent bans for spammers and two specific users. The first user tried to register using an alias and stir up trouble during the initial stages of the Iraq situation. The second user registered with an alias (but forgot to change his IP address <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) and started calling out the moderator team. In both cases the accounts were banned on a permanent basis. I have never needed temporary bans because of the type of person using this board. I can see the benefit (and have used this feature in my role as moderator at phpbb.com) but I can&#8217;t say that this would be a compelling reason for me to upgrade. Besides, if I needed it, this is a really simple MOD to write.</p>
<p><strong>request_var()</strong><br />
As I mentioned above, I have created my own version of this function and have been using it in all of my new code. As I edit existing files I am also retrofitting it back into the core phpBB2 code. So while I don&#8217;t have everything fixed yet, I am working my way through the code.</p>
<p>I am also very thorough at typing and any inputs used in sql queries. Again, I have written a function call to do this so that all of the work is centralized and therefore easy to manage. I call my function secure_input_string() and it takes a string and does all of the stuff to clear out nasty-bad-things from form variables or URL parameters.</p>
<h3>Conclusion</h3>
<p>So far I have covered three of the categories from the feature comparison list at phpbb.com. Next time I will cover Anti-Spam, Data Management, and Registration. At this point the primary gap is the Unread Message Tracking and phpBB3 is a clear winner in that area. For everything else I believe it&#8217;s a toss-up, or in some cases based on extra features I have added, a slight advantage to my current configuration. So after day one the scrore is 1 &#8211; 0 in favor of phpBB3.</p>
<p><strong>Related Links</strong></p>
<ul>
<li><a href="http://www.phpbb.com/about/features/">phpBB2 to phpBB3 Feature Comparison</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/04/smackdown-round-phpbb3-versus-phpbb-dave-part-i/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Featured Smackdown: phpBB3 versus phpBB-Dave</title>
		<link>http://www.phpbbdoctor.com/blog/2008/08/01/featured-smackdown-phpbb3-versus-phpbb-dave/</link>
		<comments>http://www.phpbbdoctor.com/blog/2008/08/01/featured-smackdown-phpbb3-versus-phpbb-dave/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 06:15:13 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[phpBB]]></category>
		<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://www.phpbbdoctor.com/blog/?p=236</guid>
		<description><![CDATA[I sometimes take a lot of grief for still using phpBB2. To be honest, most of my boards are quite far from a &#8220;vanilla&#8221; board, so it can hardly be said that I use phpBB2. I&#8217;ve been saying for a while that I didn&#8217;t see a need to upgrade since I had all of the [...]]]></description>
			<content:encoded><![CDATA[<p>I sometimes take a lot of grief for still using phpBB2. To be honest, most of my boards are quite far from a &#8220;vanilla&#8221; board, so it can hardly be said that I use phpBB2. I&#8217;ve been saying for a while that I didn&#8217;t see a need to upgrade since I had all of the features that I thought that I needed.</p>
<p>Then the other day something occurred to me&#8230; what if I didn&#8217;t? What if I really did need to upgrade to phpBB3 because the number (or usefullness) of features that I am missing is more than the number of features that I have? How closely had I recreated phpBB3 on my phpBB2 core using my own MODs? I thought it was an interesting concept, so I decided I should see how I could compare the two.</p>
<p><span id="more-236"></span>Before I get flamed too badly, I certainly realize that there are many more improvements in the code behind the scenes as far as tuning and optimization. I&#8217;ve made many similar changes myself. For example, as soon as I saw someone post the function name &#8220;request_var&#8221; in an IRC conversation one day I knew <strong>immediately</strong> what it was for, and what the advantages were. So I wrote my own version, and have been using it ever since. It&#8217;s not used throughout the entire code base (yet) but I do have it. I have tuned queries by denormalizing where appropriate, splitting some, combining others, and caching whenever I could. And I have added features that aren&#8217;t even in phpBB2 or phpBB3, at least not yet. It seems that topic prefixes (a subject I <a href="http://www.phpbbdoctor.com/blog/2008/05/17/do-you-really-need-subforums/">posted about implementing a while ago</a>) are on the &#8220;to do&#8221; list for 3.2, and I already have them. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>So the goal for this series of posts will be to sit back and try to take an objective look at the <a href="http://www.phpbb.com/about/features/">feature comparison list posted at phpbb.com</a> and determine the following:</p>
<ul>
<li>Do I have that feature already as a MOD?</li>
<li>If so, does it meet or exceed what is provided by phpBB3?</li>
<li>If not, do I have a compelling need for this feature, enough that I would either consider writing it as a MOD or upgrading?</li>
</ul>
<p>I plan to go through the feature chart section by section, and at the end of each section I will assign a point value of +1, 0, or -1 based on where I think I am. By the end of the analysis I expect to have a much better idea of where I stand with my own code, or just how important the things are that I am missing. There are 21 categories in all, including:</p>
<ol>
<li>General</li>
<li>Basic Features</li>
<li>Security</li>
<li>Anti-Spam</li>
<li>Data Management</li>
<li>Registration</li>
<li>Posting</li>
<li>Attachments</li>
<li>Caching</li>
<li>Profiles / Memberlist</li>
<li>Search System</li>
<li>Forums</li>
<li>User Control Panel (UCP)</li>
<li>Private Messages</li>
<li>Usergroups</li>
<li>Moderator Control Panel (MCP)</li>
<li>Administrator Control Panel (ACP)</li>
<li>Styles</li>
<li>Permissions</li>
<li>Notifications</li>
<li>Localisation</li>
</ol>
<p>I think it will be interesting. Maybe it will only be interesting to me, but I&#8217;m going to post it anyway. <img src='http://www.phpbbdoctor.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpbbdoctor.com/blog/2008/08/01/featured-smackdown-phpbb3-versus-phpbb-dave/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
