<?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>Professional PHP &#187; wordpress</title>
	<atom:link href="http://www.procata.com/blog/archives/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.procata.com/blog</link>
	<description>PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.</description>
	<lastBuildDate>Fri, 10 Dec 2010 17:23:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Problem with Markup Languages</title>
		<link>http://www.procata.com/blog/archives/2007/03/14/the-problem-with-markup-languages/</link>
		<comments>http://www.procata.com/blog/archives/2007/03/14/the-problem-with-markup-languages/#comments</comments>
		<pubDate>Wed, 14 Mar 2007 17:30:14 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[html-markup]]></category>
		<category><![CDATA[input-filtering]]></category>
		<category><![CDATA[markup-languages]]></category>
		<category><![CDATA[regular-expressions]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wiki-syntax]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2007/03/14/the-problem-with-markup-languages/</guid>
		<description><![CDATA[Chris Shiflett has a post today, Allowing HTML and Preventing XSS.  The problem is how to allow users to format their contributed content without introducing security vulnerabilities.  The answer is usually some sort of markup language or filtering and sanitization of HTML.
BBCODE was designed for this purpose.  There is no actual standard, [...]]]></description>
			<content:encoded><![CDATA[<p>Chris Shiflett has a post today, <a href="http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss">Allowing HTML and Preventing XSS</a>.  The problem is how to allow users to format their contributed content without introducing security vulnerabilities.  The answer is usually some sort of markup language or filtering and sanitization of HTML.</p>
<p>BBCODE was designed for this purpose.  There is no actual standard, but the core syntax seems fairly uniform.  It&#8217;s good for those used to forums, where it seems to norm.</p>
<p>HTML markup is nice because it is a standard, even if varying subsets are supported.  Learning a little HTML isn&#8217;t going to hurt anyone, at least for the next 20 years or so.  The problem is that HTML was never intended to be hand edited.  The syntax is not the most inviting, and different HTML-like markup languages handle whitespace differently than the HTML standard.</p>
<p>Wiki markup syntaxes were designed to be human friendly. The main problem I have with wiki syntax is that there is no standard.  It seems like every wiki has a different way to formulate a link, for example.  I guess there is some progress with <a href="http://www.wikicreole.org/">Wiki Creole</a>, but I still have a bad taste in my mouth.</p>
<p>The other problem I have with wiki markup is that I find it to be non-deterministic.  When I edit any given wiki and try to use more than basic formatting, I never know what I am going to get.  Most of the markup processing engines for these wikis are impenetrable morasses of regular expressions.  It can be hard to gauge interactions.  Are you really sure they are secure?</p>
<p>Speaking of impenetrable morasses of regular expressions, have you ever looked at WordPress&#8217;s input path?  I&#8217;m sure every one with a WordPress blog who likes to blog about PHP code knows that it is a code eater.  I&#8217;ve been particularly disappointed with WordPress in this area.  Most the &#8220;code formatting&#8221; plugins still have problems protecting code from WordPress&#8217; heavy hand.</p>
<p>But the WordPress preg_replace gauntlet doesn&#8217;t just mangle code.  I have a post which has been sitting in draft mode for several weeks because I can&#8217;t figure out how to give it the proper markup.  WordPress is somehow taking my perfectly balanced input markup and producing &#8220;unbalanced&#8221; output markup.  I haven&#8217;t yet tracked down the problem to either submit a fix or to do a good bug report.  Frankly, I&#8217;m not looking forward to trudging through all those regular expressions.</p>
<p>In Chris&#8217; post, he takes the regular expression approach.  Folks in the comments have pointed out a few problems with his approach, including the problem of interleaved tags.  If you can&#8217;t tell by now, I am not a fan of the regular expression gauntlet approach to markup languages.  I prefer a defined syntax and a traditional computer science style parser (which may use regular expressions).</p>
<p>The other must-have is a preview option.  With so much variation in markup languages, not having a preview leaves the user to play Russian roulette with their submitted content.  I&#8217;ve talked about that before in the <a href="http://www.procata.com/blog/archives/2005/03/31/the-usability-of-input-filtering/">usability of input filtering</a>.  This is another area where WordPress leaves the user high and dry.  </p>
<p>The complex input path in WordPress combined with its reliance on global variables seems to leave it unable to do an in-page preview.  The admin area preview is an IFRAME so that it launches a separate request.  The various live preview plugins are JavaScript based and don&#8217;t work when it is disabled.  They also don&#8217;t pass the input through the same input path that WordPress uses, so they are not a true preview.</p>
<p>I don&#8217;t mean for this to be a WordPress rant, on the whole, I like WordPress.  Rather, I just wanted to point out how hard it can be to do good input filtering, that is safe, reliable, deterministic, and usable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2007/03/14/the-problem-with-markup-languages/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Harry Fuecks, PHP Patterns and Dynamically Typed</title>
		<link>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/</link>
		<comments>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/#comments</comments>
		<pubDate>Fri, 04 Nov 2005 07:54:32 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[php-patterns]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=153</guid>
		<description><![CDATA[I was reading this post over at Dynamically Typed and I was thinking to myself, this looks like something that Harry Fuecks would write.  A glance at the top of the page confirmed my suspicions.  Harry has been writing a few new blog posts over there.  That and the resurrection of the [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading <a href="http://www.sitepoint.com/blogs/2005/11/03/web-bugs-for-job-scheduling-hack-or-solution/">this post</a> over at <a href="http://www.sitepoint.com/blog-view.php?blogid=9">Dynamically Typed</a> and I was thinking to myself, this looks like something that Harry Fuecks would write.  A glance at the top of the page confirmed my suspicions.  Harry has been writing a few new blog posts over there.  That and the resurrection of the <a href="http://www.phppatterns.com/">PHP Patterns</a> site has probably been keeping him busy.  All I&#8217;m gonna say about the new site design for PHP Patterns is <a href="http://www.ficml.org/jemimap/style/color/wheel.html">color wheel</a>, <a href="http://www.meyerweb.com/eric/tools/color-blend/">color blender</a>, <a href="http://www.colorschemer.com/online.html">color scheme</a>, <a href="http://pixelfever.com/tools/colormatch/">color match</a>, and <a href="http://www.colorcoordinator.com/colorCoordinator.php">color coordinator</a>.  <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Welcome Back Harry.</p>
<p>Also, unless I&#8217;m mistaken, it looks like SitePoint is using WordPress for their blogs now.  Or has this always been the case and I&#8217;m just now noticing it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/11/04/harry-fuecks-php-patterns-and-dynamically-typed/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A WordPress bug fix</title>
		<link>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/</link>
		<comments>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/#comments</comments>
		<pubDate>Wed, 28 Sep 2005 04:33:55 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=139</guid>
		<description><![CDATA[I upgraded WordPress to 1.5.2 this weekend.  This version fixed some bugs that made it necessary to edit WordPress itself in order to get my BBCode plugin to work.  That editing is one reason I put off upgrading for so long.  I am grateful that my plugin can now exist on its [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded WordPress to 1.5.2 this weekend.  This version fixed some bugs that made it necessary to edit WordPress itself in order to get my <a href="http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/">BBCode plugin</a> to work.  That editing is one reason I put off upgrading for so long.  I am grateful that my plugin can now exist on its own.   (I&#8217;ll release a new version in a few days.)</p>
<p>Unfortunately, this version of WordPress introduced one bug that really annoys me.  Pingbacks and Trackbacks aren&#8217;t using the permalinks, but instead using ugly query string links.</p>
<p>A little greping suggests that this is caused by a cache that becomes stale after a post is updated.  So, I think the solution is to insert this line:</p>
<p><pre class="php">&nbsp;
<a href="http://www.php.net/unset"><span style="color: #000066;">unset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$post_cache</span><span style="color: #66cc66;">&#91;</span><span style="color: #0000ff;">$post_ID</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></p>
<p>on line 382 of wp-admin/post.php.</p>
<p>Since this post contains a link to another blog post, which should get a pingback, it will be my public test of the theory.  </p>
<p><strong>UPDATE:</strong> Bug fixed. <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/09/27/a-wordpress-bug-fix/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Changes to my blog (and feeds)</title>
		<link>http://www.procata.com/blog/archives/2005/09/26/changes-to-my-blog-and-feeds/</link>
		<comments>http://www.procata.com/blog/archives/2005/09/26/changes-to-my-blog-and-feeds/#comments</comments>
		<pubDate>Mon, 26 Sep 2005 19:34:17 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/?p=137</guid>
		<description><![CDATA[I&#8217;ve made some changes to my blog.
When i started blogging, I didn&#8217;t know quite what to expect.  Over time, two main topics emerged: PHP and Politics.  I&#8217;ve decided that the two topics should really be two separate blogs.  This blog will continue to focus on PHP, software design, web design, agile methods [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve made some changes to my blog.</p>
<p>When i started blogging, I didn&#8217;t know quite what to expect.  Over time, two main topics emerged: PHP and Politics.  I&#8217;ve decided that the two topics should really be two separate blogs.  This blog will continue to focus on PHP, software design, web design, agile methods and open source.  To reflect the tighter focus, I&#8217;ve renamed this blog from Jeff Moore&#8217;s Blog to <strong>Professional PHP</strong>.  (Getting rid of the bad-software revealing apostrophe in the name was a major goal.)</p>
<p>All other previous posts have been redirected to my new blog, <a href="http://www.livelydebate.com/">Lively Debate</a>.  That blog will cover politics, economics, education, entertainment and food.  <a href="http://www.livelydebate.com/archives/2005/09/26/welcome-to-lively-debate/">Check it out</a>.</p>
<p>The old posts on these topics remain on this blog, but are redirected to Lively Debate.  There will be no new &#8220;non-professional&#8221; content here.</p>
<p>As part of the process of bifurcating blogs, I&#8217;ve changed the category structure here as well.  Some categories have been moved.  The software development category has been deprecated.  All the posts except this one have been removed from that category.  </p>
<p>Some people subscribed to the software development category in order to avoid the political content.  If you have done so, I would encourage you to subscribe to the <a href="http://www.procata.com/blog/feed/">main site feed</a> now.  In a couple weeks, I will delete the software development category and redirect the feed to the main site feed.  (Once the political content slides off the bottom of the feed.)</p>
<p>My summer posting hiatus should be over (my blades broke and frost will soon drive me from the garden).  I have a backlog of draft posts to clear out.  I&#8217;ve been waiting to post until after making these changes and am anxious to start again.</p>
<p>I apologize for any technical inconvenience of the switchover (new blog, new name, new theme, new categories and new hosting).</p>
<p>I want to say thanks to those who actually read my ramblings.</p>
<p>Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/09/26/changes-to-my-blog-and-feeds/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress Search Engine Spam</title>
		<link>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/</link>
		<comments>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/#comments</comments>
		<pubDate>Thu, 31 Mar 2005 16:46:38 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/</guid>
		<description><![CDATA[In light of the reports of WordPress search engine spamming, I have removed my link to the WordPress web site.  The default WordPress theme has a &#8220;is proudly powered by WordPress&#8221; tag line with a link.  I thought proudly was overkill in the first place and certainly not true now, so I have [...]]]></description>
			<content:encoded><![CDATA[<p>In light of the <a href="http://www.waxy.org/archive/2005/03/30/wordpres.shtml">reports</a> of WordPress search engine spamming, I have removed my link to the WordPress web site.  The default WordPress theme has a &#8220;is proudly powered by WordPress&#8221; tag line with a link.  I thought proudly was overkill in the first place and certainly not true now, so I have removed both the tag line and the link.  While I certainly don&#8217;t begrudge open source authors the ability to make money from their efforts, I think this was a disappointing choice of methods.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/03/31/wordpress-search-engine-spam/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 1.5</title>
		<link>http://www.procata.com/blog/archives/2005/02/19/upgraded-to-wordpress-15/</link>
		<comments>http://www.procata.com/blog/archives/2005/02/19/upgraded-to-wordpress-15/#comments</comments>
		<pubDate>Sat, 19 Feb 2005 08:33:14 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2005/02/19/upgraded-to-wordpress-15/</guid>
		<description><![CDATA[Well, I upgraded to WordPress 1.5 today.  Everything seems to have gone well.  The upgrade from 1.2 to 1.5 was much less error prone than the upgrade from 1.02 to 1.2.  The upgrade process is very well done.  My BBCode plugin seems to work without modification (so far).
The new features in [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I upgraded to WordPress 1.5 today.  Everything seems to have gone well.  The upgrade from 1.2 to 1.5 was much less error prone than the upgrade <a href="http://www.procata.com/blog/archives/2004/05/26/upgraded-to-wordpress-12/">from 1.02 to 1.2</a>.  The upgrade process is very well done.  My <a href="http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/">BBCode plugin</a> seems to work without modification (so far).</p>
<p>The new features in 1.5 are nice.  I notice a few little navigation extras in the templates.  The admin area seems like an improvement.  I like the dashboard.</p>
<p>The comment moderation process has improved from miserable to annoying.  I think it may now be easier to dispatch spam within WordPress instead of phpMyAdmin, which I was using with 1.2.   The &#8216;Check Past Comments against moderation list&#8217; is a great idea, except it doesn&#8217;t pay attention to comments that have already been manually approved.    Now if only there were a &#8216;Check Past Comments against Blacklist&#8217; option.   An &#8216;Add This Url to Black List&#8217; command would be useful on the comment moderation page.  It would also be helpful to have a note on why a particular comment ended up in the moderation list for debugging false positives.  Oh well, there are probably plugins for all of these things.</p>
<p>I started to play around with a custom theme.  The theme system is very nice.  I think the CSS in the default theme for 1.5 is easier to understand that the CSS in 1.2.    If you visited the site this afternoon, you might have caught a glimpse of various themes, including my custom theme.  Unfortunately, I found that many of the downloadable themes don&#8217;t display correctly on Safari, my default browser.  This is not uncommon to run across small blogs that don&#8217;t layout correctly in Safari.  My problem is the opposite.  My CSS never works right in IE/Win.  I hate that CSS is so finicky and requires so much manual testing.</p>
<p>Still no built in preview capability for comments.</p>
<p>I&#8217;ve been waiting for the official 1.5 release for a while and overall, 1.5 is very much worth the wait.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2005/02/19/upgraded-to-wordpress-15/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress BBCode Plugin</title>
		<link>http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/</link>
		<comments>http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/#comments</comments>
		<pubDate>Thu, 27 May 2004 06:40:21 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/</guid>
		<description><![CDATA[I made a download page for my WordPress BBCode Plugin.  Please post any bug reports or comments on the plugin as comments or trackbacks to this post.
]]></description>
			<content:encoded><![CDATA[<p>I made a download page for my <a href="http://www.procata.com/software/wordpress-bbcode/">WordPress BBCode Plugin</a>.  Please post any bug reports or comments on the plugin as comments or trackbacks to this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2004/05/26/wordpress-bbcode-plugin/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 1.2</title>
		<link>http://www.procata.com/blog/archives/2004/05/26/upgraded-to-wordpress-12/</link>
		<comments>http://www.procata.com/blog/archives/2004/05/26/upgraded-to-wordpress-12/#comments</comments>
		<pubDate>Thu, 27 May 2004 06:29:59 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.procata.com/blog/archives/2004/05/26/upgraded-to-wordpress-12/</guid>
		<description><![CDATA[Well, I upgraded to WordPress 1.2 today.  Things did not go without a hitch.  The cookie format changed, so I had to remove my cookies before I could log back in to the admin section.  My feeds were down for part of the day until I realized I had to update my [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I upgraded to WordPress 1.2 today.  Things did not go without a hitch.  The cookie format changed, so I had to remove my cookies before I could log back in to the admin section.  My feeds were down for part of the day until I realized I had to update my <code>.htaccess</code> file.  Looking at the WordPress support forums, these look like common problems.  That and a magic_quotes problem.  These were minor issues.</p>
<p>The biggest problem for me by far, though was that WordPress 1.0.2 supported BBCode, which I used for my posts.  WordPress 1.2 does not.  So after my upgrade, it looked like I had three options: restore my backup, edit my all my posts, or add BBCode support to WordPress.</p>
<p>Of course I added BBCode support to WordPress because that only took 10 times as long as editing all of my posts to use one of the other markup styles provided.  <img src='http://www.procata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I started with <a href="http://pear.php.net/package/HTML_BBCodeParser">PEAR:: HTML_BBCodeParser</a>.  Unfortunately some of its markup processing is brittle and the design could be better.  I fixed its case sensitivity and changed some of the markup generated to pass the XSS filter that WordPress uses.  I also de-PEAR-ified it, making it easier to distribute as a plug in.</p>
<p>I also had a problem with the WordPress plugin protocol failing to call one of my hooks at the right time, causing my BBCode not to be processed in my feeds.  It took me a while to find and fix this problem.  Sadly, there was nothing I could do in the plugin.  The fix required modifying WordPress.  But, hey, plugins are a new feature of 1.2.  Unfortunately, my embarrassing broken feed was  <a href="http://www.artima.com/forums/flat.jsp?forum=124&#038;thread=51606">captured forever at artima</a>.</p>
<p>When I first installed this software, I told myself that I wouldn&#8217;t even look at the code, I would just use it like Joe User would.  That didn&#8217;t last.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.procata.com/blog/archives/2004/05/26/upgraded-to-wordpress-12/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

