<?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>The Gippy Pages &#187; PHP Scripting</title>
	<atom:link href="http://top-frog.com/category/php-scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://top-frog.com</link>
	<description>Polluting the internet since 2004</description>
	<lastBuildDate>Fri, 27 Jan 2012 05:23:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>WordPress TextMate bundle updated for WordPress 3.2</title>
		<link>http://top-frog.com/2011/07/11/wordpress-textmate-bundle-updated-for-wordpress-3-2/</link>
		<comments>http://top-frog.com/2011/07/11/wordpress-textmate-bundle-updated-for-wordpress-3-2/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 06:56:20 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[doxygen]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scrape]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[tmbundle]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=2005</guid>
		<description><![CDATA[So, WordPress 3.2 has been out for a little while now and I&#8217;ve just gotten around to updating the bundle. My apologies, I&#8217;ve just been super swamped with a new job in a new city. But that&#8217;s some whining for another post. After much fiddling, the updated WordPress TextMate Bundle is here and it has [...]]]></description>
			<content:encoded><![CDATA[<p>So, WordPress 3.2 has been out for a little while now and I&#8217;ve just gotten around to updating the bundle. My apologies, I&#8217;ve just been super swamped with a new job in a new city. But that&#8217;s some whining for another post.</p>
<p>After much fiddling, the updated <a href="http://top-frog.com/projects/wordpress-textmate-bundle/">WordPress TextMate Bundle</a> is here and it has been updated with a much better function definition display. I&#8217;ve ditched the old function scraper that was an abomination of grep &#038; regex matches and replaced it with <a href="http://www.stack.nl/~dimitri/doxygen/">doxygen</a> and some ruby abomination to provide much more information about the function or method being inspected.</p>
<p><a class="thickbox" href="http://www.flickr.com/photos/tehgipster/5925516548/" title="Screen shot 2011-07-10 at 11.40.10 PM by tehgipster, on Flickr"><img src="http://farm7.static.flickr.com/6121/5925516548_a3b11afb9f.jpg" width="453" height="500" alt="New and Improved Function Definitions" rel="http://farm7.static.flickr.com/6121/5925516548_a3b11afb9f_b.jpg"></a></p>
<p>I&#8217;m pretty sure there&#8217;s a lingering issue with the parsing and display of special characters in the doxygen output (which I blame squarely on strange handling by doxygen) that I haven&#8217;t handled yet. There may be HTML Entities missing from the documentation here and there.</p>
<p>Also improved is that the function definition search is contextually sensitive. It&#8217;ll only look for methods when in object scope (ie: <code>$object->method();</code>) and only look for functions when in regular php scope (ie: <code>function();</code>). There&#8217;s also a prompt to select the method that you&#8217;re actually after when multiple matches are found.</p>
<p>So, as always there&#8217;s something that can be improved upon with the bundle, but its moving forward and getting better with each revision. I guess that&#8217;s something, right? RIGHT?</p>
<p>So, fire up <a href="http://onethingwell.org/post/1344303536/getbundles">GetBundles</a> or head on over to the <a href="https://github.com/Gipetto/wordpress.tmbundle">WordPress TextMate Bundle&#8217;s Github Page</a> to update your bundle!</p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2011/07/11/wordpress-textmate-bundle-updated-for-wordpress-3-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress TextMate Bundle Updated</title>
		<link>http://top-frog.com/2010/12/27/wordpress-textmate-bundle-updated-wp-31-rc1/</link>
		<comments>http://top-frog.com/2010/12/27/wordpress-textmate-bundle-updated-wp-31-rc1/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 04:20:20 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[3.1]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[candidate]]></category>
		<category><![CDATA[rc]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=1827</guid>
		<description><![CDATA[WordPress 3.1 RC is here, so I figure its time enough to issue an update my [recently neglected, sorry 'bout that, its been busy] WordPress TextMate Bundle. All function definitions have been updated to the 3.1 RC code base. There is a tag for the 3.0 branch as it sat this afternoon. No new features [...]]]></description>
			<content:encoded><![CDATA[<p><a class="floatright" href="http://top-frog.com/wp-content/uploads/2009/12/wp-logo-cropped.png"><img src="http://top-frog.com/wp-content/uploads/2009/12/wp-logo-cropped.png" alt="" title="wp-logo-cropped" width="166" height="124" class="alignright size-full wp-image-1177" /></a><a href="http://wordpress.org/news/2010/12/wordpress-3-1-release-candidate/">WordPress 3.1 RC is here</a>, so I figure its time enough to issue an update my [recently neglected, sorry 'bout that, its been busy] <a href="http://top-frog.com/projects/wordpress-textmate-bundle/">WordPress TextMate Bundle</a>. All function definitions have been updated to the 3.1 RC code base. There is a tag for the 3.0 branch as it sat this afternoon. </p>
<p>No new features have been added yet, but this will at least jump you to the right place in the code base when needing to inspect an internal function.  Suggestions for feature additions are always welcome, so lemme know how you use the bundle and how any improvements can help you use it better and I&#8217;ll see what I can do. As it always has been, the project&#8217;s source is freely available so you&#8217;re welcome to contribute as well if you wanna dive in to a little bit of Ruby code.</p>
<p>I know I&#8217;ll regret saying this, but one of my goals to hit during the 3.1 lifespan is a better code scrape of the WordPress core. I&#8217;ve been playing with a couple of different code scrapers/documentation engines to replace the janky regex that I&#8217;ve got going on, so hopefully I can find the time to put in to this as I think getting as much of the built in documentation to the surface as possible would be a boon to my sanity. Maybe once I&#8217;m caught up on my hackers list reading (I think I&#8217;m about 3 months behind) I might have a couple of ideas for adding to the bundle <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2010/12/27/wordpress-textmate-bundle-updated-wp-31-rc1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quickly unserialize PHP array data in TextMate</title>
		<link>http://top-frog.com/2009/08/28/quickly-unserialize-data-in-textmate/</link>
		<comments>http://top-frog.com/2009/08/28/quickly-unserialize-data-in-textmate/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 04:51:14 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serialize]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[unserialize]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=927</guid>
		<description><![CDATA[Every once in a while I need to see what&#8217;s hiding in a serialized array in a database field and finally just wrote a little TextMate command to do the job for me. If I&#8217;m already working in that area of code its easier to just dump it someone in the page output to read [...]]]></description>
			<content:encoded><![CDATA[<p>Every once in a while I need to see what&#8217;s hiding in a serialized array in a database field and finally just wrote a little TextMate command to do the job for me. If I&#8217;m already working in that area of code its easier to just dump it someone in the page output to read it, or maybe dump it to the error_log, but often enough I just need to see the data. It turned out to be much different than I thought it&#8217;d be. I figured I&#8217;d write a line of Ruby to call PHP via the command line but then I found that PHP can be used directly in TextMate commands.</p>
<p><span id="more-927"></span></p>
<p>Okay, that helps.</p>
<p>So, add a new command to your bundle (I keep a bundle just for adding miscellaneous things to so that I don&#8217;t pollute other bundles and/or lose my additions when those bundles are upgraded). Make a new command whose <i>Input</i> is <i>&#8220;Entire Document&#8221;</i> and <i>Output</i> is <i>&#8220;Replace Document&#8221;</i>. Give it a key binding if you want.</p>
<p>Then put this code in as the script:</p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-code">#!/usr/bin/env php</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-inlinetags">&lt;?php</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">print_r</span><span class="hl-brackets">(</span><span class="hl-identifier">unserialize</span><span class="hl-brackets">(</span><span class="hl-identifier">file_get_contents</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">php://stdin</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-inlinetags">?&gt;</span></li></ol></div></div></p>
<p>There is no save button for bundle items. Simply switch to another item, any item in the bundle to save this one.</p>
<p>Voila. Copy and paste some serialized array data in to a new document, run the command and it&#8217;ll be replaced with a nicely formatted output of the array data and structure. Haven&#8217;t tried it with objects yet, but they probably won&#8217;t work anyway unless they&#8217;re generic objects that don&#8217;t need to have their class definition loaded to properly unserialize.</p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/08/28/quickly-unserialize-data-in-textmate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MacPorts, php5-mysql &amp; mysqlnd</title>
		<link>http://top-frog.com/2009/08/26/macports-php5-mysql-mysqlnd/</link>
		<comments>http://top-frog.com/2009/08/26/macports-php5-mysql-mysqlnd/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 17:59:02 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql native driver]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php5-mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=917</guid>
		<description><![CDATA[If you don&#8217;t know what that title says, don&#8217;t bother reading on A little useless history: MacPorts decided to use the recent release of PHP 5.3 to change the way they handle PHP5 Extensions. They used to be applied by the MacPorts variants system but have been changed (and appear to still be in transition) [...]]]></description>
			<content:encoded><![CDATA[<p>If you don&#8217;t know what that title says, don&#8217;t bother reading on <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>A little useless history: MacPorts decided to use the recent release of PHP 5.3 to change the way they handle PHP5 Extensions. They used to be applied by the MacPorts variants system but have been changed (and appear to still be in transition) to each be their own package. This doesn&#8217;t bother me as it brings MacPorts to be more in line with how other package managers manage PHP extensions.</p>
<p>What I didn&#8217;t notice in my most recent upgrade was that the php5-mysql extension defaults to using a new extension from MySQL called <a href="http://dev.mysql.com/downloads/connector/php-mysqlnd/">MySQL Native Driver</a>. Its benefits sure look nice and I can understand why they&#8217;d want to unify everything.</p>
<p>It would be nice if it worked in MacPorts&#8230; &#8217;cause it doesn&#8217;t. And the error messages are stupidly cryptic. For example, I got these error messages when trying to load a project:</p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-code">PHP Warning:  mysqli::real_escape_string() [mysqli.real-escape-string]: \</span></li>
<li><span class="hl-code">&nbsp;Couldn't fetch mysqli in /path/to/file.php on line 72, \</span></li>
<li><span class="hl-code">&nbsp;referer: http://localhost/dir/test.php</span></li></ol></div></div></p>
<p>Pretty darned informative, eh? And on top of that PHPMyAdmin continued to function normally and without incident. WordPress wouldn&#8217;t connect either.</p>
<p><span style="text-decoration: line-through;">I still have no idea what this means or why it was happening, I just know that I found a workaround. Re-install php5-mysql with the mysql5 variant. ie:</span></p>
<p><code style="text-decoration: line-through">$ sudo port deactivate php5-mysql<br />
$ sudo port install php5-mysql +mysql5</code></p>
<p><span style="text-decoration: line-through;">This tells PHP to use the old-style MySQL install specific libraries. In my case (and I suspect in just about every case I&#8217;ll ever run in to) this will be fine. WordPress is now back up and all my other projects are still functional as well. All is right with the world again&#8230; well, sort of. <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></p>
<p><span style="text-decoration: line-through;">The only drawback is that I&#8217;ll probably never notice when the MySQL Native Driver actually starts working as I&#8217;ll forget this in a few months and never think to check it again&#8230;</span></p>
<p><b>Update:</b> It turns out that I&#8217;m a doofus on this one. When upgrading PHP I didn&#8217;t notice one of the install messages left during the build process. It reads:</p>
<p><code  class="bash">To use mysqlnd with a local MySQL server, edit /opt/local/etc/php5/php.ini and set mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket to /opt/local/var/run/mysql5/mysqld.sock</code></p>
<p>So, with that change, I&#8217;m up and running using the default mysqlnd variant of php5-mysql.</p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/08/26/macports-php5-mysql-mysqlnd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Use array_merge to reorder arrays</title>
		<link>http://top-frog.com/2009/08/21/use-array_merge-to-reorder-arrays/</link>
		<comments>http://top-frog.com/2009/08/21/use-array_merge-to-reorder-arrays/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 13:56:42 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[array_merge]]></category>
		<category><![CDATA[order]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sort]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=906</guid>
		<description><![CDATA[This one is pretty fun. Well, at least I think it is. I was working with jQuery UI Sortables the other day and getting the reordered elements from jQuery back in to PHP for reordering via Ajax I ended up with an array whose elements matched the array keys of the array that I needed [...]]]></description>
			<content:encoded><![CDATA[<p>This one is pretty fun. Well, at least I think it is. </p>
<p>I was working with jQuery UI Sortables the other day and getting the reordered elements from jQuery back in to PHP for reordering via Ajax I ended up with an array whose elements matched the array keys of the array that I needed to order. Pretty standard fare. But I knew that there had to be a keen way to tackle the reordering process without going through some convoluted code. I was right. The way was the merge the two arrays.</p>
<p><span id="more-906"></span></p>
<p>The way <a href="http://php.net/array_merge">array_merge</a> works is if your array keys are non-numeric and that if the second given array has the same keys as the first given array the data from the second given array replaces the data in the first given array without reordering the first given array. </p>
<p>This was perfect since the two arrays will match perfectly in length and keys since they were built off  the same data. This meany that all I had to do was take the new order data from jQuery Sortable, apply <a href="http://php.net/array_flip">array_flip</a> and merge the old ordered array in to the new order. Like so:</p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-inlinetags">&lt;?php</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">//</span><span class="hl-comment"> my &quot;original&quot; array of data</span><span class="hl-comment"></span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-var">$array</span><span class="hl-code"> = </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">a135</span><span class="hl-quotes">'</span><span class="hl-code"> =&gt; </span><span class="hl-quotes">'</span><span class="hl-string">one</span><span class="hl-quotes">'</span><span class="hl-code">,</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">1b84</span><span class="hl-quotes">'</span><span class="hl-code"> =&gt; </span><span class="hl-quotes">'</span><span class="hl-string">two</span><span class="hl-quotes">'</span><span class="hl-code">,</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">d934</span><span class="hl-quotes">'</span><span class="hl-code"> =&gt; </span><span class="hl-quotes">'</span><span class="hl-string">three</span><span class="hl-quotes">'</span><span class="hl-code">,</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">)</span><span class="hl-code">;    </span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">//</span><span class="hl-comment"> the &quot;new order&quot; passed back to us from an outside source</span><span class="hl-comment"></span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-var">$array2</span><span class="hl-code"> = </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">d934</span><span class="hl-quotes">'</span><span class="hl-code">,</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">1b84</span><span class="hl-quotes">'</span><span class="hl-code">,</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-quotes">'</span><span class="hl-string">a135</span><span class="hl-quotes">'</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">//</span><span class="hl-comment"> flip the keys and values of $array2</span><span class="hl-comment"></span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-var">$array2f</span><span class="hl-code"> = </span><span class="hl-identifier">array_flip</span><span class="hl-brackets">(</span><span class="hl-var">$array2</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">//</span><span class="hl-comment"> merge the arrays and output</span><span class="hl-comment"></span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-var">$r</span><span class="hl-code"> = </span><span class="hl-identifier">array_merge</span><span class="hl-brackets">(</span><span class="hl-var">$array2f</span><span class="hl-code">,</span><span class="hl-var">$array</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">print_r</span><span class="hl-brackets">(</span><span class="hl-var">$r</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-inlinetags">?&gt;</span></li></ol></div></div></p>
<p>This code outputs:</p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-code">Array</span></li>
<li><span class="hl-code">&nbsp;(</span></li>
<li><span class="hl-code">&nbsp;    [d934] =&gt; three</span></li>
<li><span class="hl-code">&nbsp;    [1b84] =&gt; two</span></li>
<li><span class="hl-code">&nbsp;    [a135] =&gt; one</span></li>
<li><span class="hl-code">&nbsp;)</span></li></ol></div></div></p>
<p>So, the array is reordered without any hubbub. Nothing groundbreaking, just another way to reduce a few lines of code and not have to try and re-invent the wheel.</p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/08/21/use-array_merge-to-reorder-arrays/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sort arrays by key revisited</title>
		<link>http://top-frog.com/2009/07/29/sort-arrays-by-key-revisited/</link>
		<comments>http://top-frog.com/2009/07/29/sort-arrays-by-key-revisited/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 06:15:19 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[multisort]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sort_by_key]]></category>
		<category><![CDATA[uasort]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=867</guid>
		<description><![CDATA[I don&#8217;t know why but I have an infatuation with little utility functions. Its pretty stupid, but it keeps me entertained and provides me with a cheap blog post That and I&#8217;ve noticed it trending A LOT in my search keywords lately, so I figure I should post some updated and easier to use code. [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know why but I have an infatuation with little utility functions. Its pretty stupid, but it keeps me entertained and provides me with a cheap blog post <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  That and I&#8217;ve noticed it trending <i>A LOT</i> in my search keywords lately, so I figure I should post some updated and easier to use code.</p>
<p>A few years ago I posted on <a href="http://top-frog.com/2006/11/08/php_sort_multidimensional_arrays_by_key/">Sorting Multidimensional Arrays by Key</a>. The solution had php4 and php5 version and they were class based. Kind of awkward to use. They were originally dumped in a framework and accessed statically. After much tweaking and moving it from project to project it is down to a single function that also sorts arrays of objects my member variables.</p>
<p><span id="more-867"></span></p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-inlinetags">&lt;?php</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">/*</span><span class="hl-comment">*</span></li>
<li><span class="hl-comment">&nbsp; * Sort an array by a key within the array_items</span></li>
<li><span class="hl-comment">&nbsp; * Items can be arrays or objects, but must all be the same type</span></li>
<li><span class="hl-comment">&nbsp; *</span></li>
<li><span class="hl-comment">&nbsp; *</span><span class="hl-inlinedoc"> @example</span></li>
<li><span class="hl-inlinedoc">&nbsp;</span><span class="hl-comment"> *         $array = array(</span></li>
<li><span class="hl-comment">&nbsp; *                    'mary' =&gt; array('age' =&gt; 21),</span></li>
<li><span class="hl-comment">&nbsp; *                     'bob' =&gt; array('age' =&gt; 5),</span></li>
<li><span class="hl-comment">&nbsp; *                    'justin' =&gt; array('age' =&gt; 15)</span></li>
<li><span class="hl-comment">&nbsp; *                    );</span></li>
<li><span class="hl-comment">&nbsp; *        $array = cf_sort_by_key($array,'age');</span></li>
<li><span class="hl-comment">&nbsp; *        # array is now: bob,justin,mary</span></li>
<li><span class="hl-comment">&nbsp; *</span></li>
<li><span class="hl-comment">&nbsp; *</span><span class="hl-inlinedoc"> @param </span><span class="hl-comment">$data - the array of items to work on</span></li>
<li><span class="hl-comment">&nbsp; *</span><span class="hl-inlinedoc"> @param </span><span class="hl-comment">$sort_key - an array key or object member to use as the sort key</span></li>
<li><span class="hl-comment">&nbsp; *</span><span class="hl-inlinedoc"> @param </span><span class="hl-comment">$ascending - wether to sort in reverse/descending order</span></li>
<li><span class="hl-comment">&nbsp; *</span><span class="hl-inlinedoc"> @return </span><span class="hl-comment">array - sorted array</span></li>
<li><span class="hl-comment">&nbsp; </span><span class="hl-comment">*/</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">array_sort_by_key</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-code">,</span><span class="hl-var">$sort_key</span><span class="hl-code">,</span><span class="hl-var">$ascending</span><span class="hl-code">=</span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-var">$order</span><span class="hl-code"> = </span><span class="hl-var">$ascending</span><span class="hl-code"> ? </span><span class="hl-quotes">'</span><span class="hl-string">$a,$b</span><span class="hl-quotes">'</span><span class="hl-code"> : </span><span class="hl-quotes">'</span><span class="hl-string">$b,$a</span><span class="hl-quotes">'</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">is_object</span><span class="hl-brackets">(</span><span class="hl-identifier">current</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"> </span><span class="hl-var">$callback</span><span class="hl-code"> = </span><span class="hl-identifier">create_function</span><span class="hl-brackets">(</span><span class="hl-var">$order</span><span class="hl-code">,</span><span class="hl-quotes">'</span><span class="hl-string">return strnatcasecmp($a-&gt;</span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$sort_key</span><span class="hl-code">.</span><span class="hl-quotes">'</span><span class="hl-string">,$b-&gt;</span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$sort_key</span><span class="hl-code">.</span><span class="hl-quotes">'</span><span class="hl-string">);</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"> </span><span class="hl-var">$callback</span><span class="hl-code"> = </span><span class="hl-identifier">create_function</span><span class="hl-brackets">(</span><span class="hl-var">$order</span><span class="hl-code">,</span><span class="hl-quotes">'</span><span class="hl-string">return strnatcasecmp($a[&quot;</span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$sort_key</span><span class="hl-code">.</span><span class="hl-quotes">'</span><span class="hl-string">&quot;],$b[&quot;</span><span class="hl-quotes">'</span><span class="hl-code">.</span><span class="hl-var">$sort_key</span><span class="hl-code">.</span><span class="hl-quotes">'</span><span class="hl-string">&quot;]);</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-identifier">uasort</span><span class="hl-brackets">(</span><span class="hl-var">$data</span><span class="hl-code">,</span><span class="hl-var">$callback</span><span class="hl-brackets">)</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-var">$data</span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-inlinetags">?&gt;</span></li></ol></div></div></p>
<p>Less code. Easier to use. Single code base for php4 and php5. And once php 5.3 becomes more ubiquitous I can rewrite it again to use lambda functions <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/07/29/sort-arrays-by-key-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Clippings Bundle for BBEdit</title>
		<link>http://top-frog.com/2009/07/24/wordpress-clippings-bundle-for-bbedit/</link>
		<comments>http://top-frog.com/2009/07/24/wordpress-clippings-bundle-for-bbedit/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 06:21:43 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[Web Design & Development]]></category>
		<category><![CDATA[bbedit]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[clipping]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=861</guid>
		<description><![CDATA[I was having one of those never ending text editor comparison conversations at work the other day and learned that BBEdit has some pretty easy to format Clipping functionality. Since I had pretty much built a generic function parser for yanking the information that I needed out of the WordPress source files for the WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>I was having one of those never ending text editor comparison conversations at work the other day and learned that BBEdit has some pretty easy to format Clipping functionality. Since I had pretty much built a generic function parser for yanking the information that I needed out of the WordPress source files for the <a href="http://top-frog.com/projects/wordpress-textmate-bundle/">WordPress TextMate Bundle</a> I figured it shouldn&#8217;t be too hard to create a set of Clippings for BBEdit.</p>
<p><a href="http://top-frog.com/projects/wordpress-clippings-for-bbedit/">Turns out I was right</a>.  They&#8217;re not as glamorous as the TextMate bundle, but they&#8217;re better than what was there before.</p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/07/24/wordpress-clippings-bundle-for-bbedit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Announcing the SP Source Code Highlighter plugin for WordPress</title>
		<link>http://top-frog.com/2009/07/07/announcing-the-sp-source-code-highlighter-plugin-for-wordpress/</link>
		<comments>http://top-frog.com/2009/07/07/announcing-the-sp-source-code-highlighter-plugin-for-wordpress/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 06:55:04 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=779</guid>
		<description><![CDATA[Maybe you noticed already, maybe you didn&#8217;t (I&#8217;ll wager on the latter ) that recently this site got new source code highlighting in posts. Or, should I say, that it GOT source code highlighting in posts. I had made a simple Script Source viewer a while back. Something simple and straight forward that I could [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe you noticed already, maybe you didn&#8217;t (I&#8217;ll wager on the latter <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) that recently this site got new source code highlighting in posts. Or, should I say, that it GOT source code highlighting in posts.</p>
<p>I had made a simple <a href="http://top-frog.com/script_src/source.phps">Script Source</a> viewer a while back. Something simple and straight forward that I could use to display full source code files in an easy to read and copy format (since the source is an ordered list the line numbers don&#8217;t copy). I was so happy with the way the source highlighting along with the line numbers turned out that I really wanted to put that in my posts. But I guess not wanted bad enough to do right away.</p>
<p>So, now I finally got around to putting this together for use inline in my posts and decided to package it together for public consumption. The highlighting is pretty durned nice and fully CSS configurable. It supports a decent number of languages and if it doesn&#8217;t support your language of choice, chances are there&#8217;s something in there that&#8217;s close enough.</p>
<p>The only drawback, and this may be a show stopper for some folks on shared hosting, is that it has a dependency on the Pear Text_Highlighter package. Since this plugin was primarily for me and I have control over my servers this isn&#8217;t a big deal here, but may keep some from being able to use it at all. If you like it enough then contact your host. You never know, they might be accommodating. There&#8217;s more about this on the project page. It basically boils down to: if you don&#8217;t know, it doesn&#8217;t hurt to ask.</p>
<p>So, enough already, head on over to the <a href="http://top-frog.com/projects/sp-highlight-source/">SP Source Code Highlighter Plugin&#8217;s Project page</a> and see how it looks and works. </p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/07/07/announcing-the-sp-source-code-highlighter-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quickly validate PHP files</title>
		<link>http://top-frog.com/2009/06/26/quickly-validate-php-files/</link>
		<comments>http://top-frog.com/2009/06/26/quickly-validate-php-files/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 21:13:54 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[validate]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=709</guid>
		<description><![CDATA[Ever needed to quickly scan a directory full of PHP files for syntax errors? You can do this quickly on a *nix command line with: &#160;find . -type f -name \*.php -exec php -l {} \;]]></description>
			<content:encoded><![CDATA[<p>Ever needed to quickly scan a directory full of PHP files for syntax errors? You can do this quickly on a *nix command line with:</p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-identifier">find</span><span class="hl-code"> . -</span><span class="hl-var">type</span><span class="hl-code"> </span><span class="hl-identifier">f</span><span class="hl-code"> -</span><span class="hl-var">name</span><span class="hl-code"> \*.</span><span class="hl-identifier">php</span><span class="hl-code"> -</span><span class="hl-reserved">exec</span><span class="hl-code"> </span><span class="hl-identifier">php</span><span class="hl-code"> -</span><span class="hl-identifier">l</span><span class="hl-code"> {} \;</span></li></ol></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/06/26/quickly-validate-php-files/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordCamp Denver, 2009. My humble experience.</title>
		<link>http://top-frog.com/2009/03/02/wordcamp_denver_2009-my_humble_experience/</link>
		<comments>http://top-frog.com/2009/03/02/wordcamp_denver_2009-my_humble_experience/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 16:37:00 +0000</pubDate>
		<dc:creator>Shawn</dc:creator>
				<category><![CDATA[PHP Scripting]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[denver]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://top-frog.com/?p=255</guid>
		<description><![CDATA[Amazingly enough I had the opportunity to speak at WordCamp Denver. As nervous as I was before hand (I very well could have puked) I came out pumped. Hopefully a few others did as well. Say what? My talk was about the basics of WordPress plugin development: actions and filters. The amount of ground I [...]]]></description>
			<content:encoded><![CDATA[<p>Amazingly enough I had the opportunity to speak at WordCamp Denver. As nervous as I was before hand (I very well could have puked) I came out pumped. Hopefully a few others did as well.</p>
<p><span id="more-255"></span></p>
<h2>Say what?</h2>
<p>My talk was about the basics of WordPress plugin development: actions and filters. The amount of ground I had to cover was akin to having 10lbs. of shit in a 5lb. bag. In retrospect I could have cut one part of the plugin short to leave myself time to cover the other bases at a bit more of a leisurely pace, but in reality what I needed was about 2 more hours to have time to discuss what I was doing and why. Hopefully, though, the amount of ground covered in a short amount of time was a decent illustration of just how quickly one can develop for WordPress. While its not the optimal system (don&#8217;t take that the wrong way, nothing is optimal in the blogging space right now) WordPress makes changing the system very straight forward. </p>
<p>The responses vary from <i>WTF?</i> all the way around <i>Thank You!</i> I&#8217;m not too worried about the variances in responses because at events like this there will be the advanced programmers who view an introductory presentation and then blog about how basic it was and then there will be those that didn&#8217;t understand anything and feel the need to say it was way too complex. Fortunately most of the responses I&#8217;ve dealt with have been in the middle. I even had a long talk with one of the attendees immediately following my presentation about everything from OOP &amp; MVC programming approaches, why WordPress can&#8217;t do that right now, and even a little bit about operating system choices to another attendee who stopped in on the conversation. </p>
<p>All in all: <b>I want to do it again. And I hope I have the chance to.</b></p>
<h2>The demo plugin</h2>
<p>The demo plugin I chose to build was a Featured Post plugin. The goal was simple: create a plugin that adds a meta box to the post-edit admin screen so that I could record the post&#8217;s status as being featured and then differentiate the post on the wordpress front end. I also wanted to show a list of featured posts in the sidebar as well as at the bottom of each post. And to do it all without touching the WordPress core or a theme file.</p>
<p>For those that are interested, <a href="/script_src/my-featured-posts.php">the plugin source can be viewed here</a>. That source is heavily commented to help anyone learn from the file. If there&#8217;s anything I left out I&#8217;d be glad to add more information, and if there&#8217;s demand I could write up a post here that details the creation of the plugin even more. Just let me know. That script can also be downloaded along with my presentation slides (in PDF format) by <a href="/dl/wordcamp">going here</a> (that is the same page linked to from the WordCamp schedule page).</p>
<p>For anyone who wants to go for the full effect, here is the image I used as a badge and the CSS used to place it:</p>
<p><img src="/images/articles/starburst-omg-white.png" alt="image" /></p>
<p><div class="hl-wrapper"><div class="hl-main"><ol class="hl-main"><li>&nbsp;<span class="hl-comment">/*</span><span class="hl-comment"> BASIC STYLING </span><span class="hl-comment">*/</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">span</span><span class="hl-identifier">.mfp-featured</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">display:</span><span class="hl-code"> </span><span class="hl-string">none</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">.post</span><span class="hl-code"> </span><span class="hl-identifier">span</span><span class="hl-identifier">.mfp-featured</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">display:</span><span class="hl-code"> </span><span class="hl-string">inline</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">#mfp-featured-posts-list-inline</span><span class="hl-code"> </span><span class="hl-identifier">li</span><span class="hl-code"> </span><span class="hl-identifier">span</span><span class="hl-identifier">.mfp-featured</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">display:</span><span class="hl-code"> </span><span class="hl-string">none</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-comment">/*</span><span class="hl-comment"> BADGE STYLING </span><span class="hl-comment">*/</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">span</span><span class="hl-identifier">.mfp-featured</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">display:</span><span class="hl-code"> </span><span class="hl-string">none</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">.post</span><span class="hl-code"> </span><span class="hl-identifier">span</span><span class="hl-identifier">.mfp-featured</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">display:</span><span class="hl-code"> </span><span class="hl-string">block</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">width:</span><span class="hl-code"> </span><span class="hl-number">75</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">height:</span><span class="hl-code"> </span><span class="hl-number">75</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">background:</span><span class="hl-code"> </span><span class="hl-string">transparent</span><span class="hl-code"> </span><span class="hl-code">url</span><span class="hl-code">('</span><span class="hl-code">images</span><span class="hl-code">/</span><span class="hl-code">starburst-omg-white</span><span class="hl-code">.</span><span class="hl-code">png</span><span class="hl-code">') </span><span class="hl-number">0</span><span class="hl-code"> </span><span class="hl-number">0</span><span class="hl-code"> </span><span class="hl-string">no-repeat</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">text-indent:</span><span class="hl-code"> -</span><span class="hl-number">9999</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">position:</span><span class="hl-code"> </span><span class="hl-string">absolute</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">left:</span><span class="hl-code"> -</span><span class="hl-number">80</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">top:</span><span class="hl-code"> -</span><span class="hl-number">20</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">#mfp-featured-posts-list-inline</span><span class="hl-code"> </span><span class="hl-identifier">li</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">margin-bottom:</span><span class="hl-code"> </span><span class="hl-number">2</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">margin-left:</span><span class="hl-code"> </span><span class="hl-number">20</span><span class="hl-string">px</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-identifier">.post</span><span class="hl-code"> </span><span class="hl-identifier">h2</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"></span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">position:</span><span class="hl-code"> </span><span class="hl-string">relative</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;    </span><span class="hl-reserved">text-align:</span><span class="hl-code"> </span><span class="hl-string">left</span><span class="hl-reserved"></span><span class="hl-code">;</span></li>
<li><span class="hl-code">&nbsp;</span><span class="hl-brackets">}</span></li></ol></div></div></p>
<h2>Extras</h2>
<p>To compliment the talk I&#8217;ve put together <a href="/htc">a Tag Cloud of the WordPress actions and filters from WordPress 1.5 to present</a>. It is a first revision and has just some basic styling and functionality, but covers all the bases. I can see this turning in to a larger deconstruction of the WordPress core so we&#8217;ll just have to see what kind of time I have to put in to it. This all by itself is pretty durned handy and I know I&#8217;ll be referencing it quite a bit. I just like mousing around and watching the pop-ups too <img src='http://top-frog.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  It has been tested in Firefox and Safari. <i>I haven&#8217;t even gandered at it in IE and probably never will</i>. </p>
<p>There is one filter in there that&#8217;s not completely right. If anyone can point it out before I fix it I&#8217;ll buy ya cup of coffee.</p>
<h2>Not yet extra</h2>
<p>There was another document that I brought up on screen that was requested by someone in the audience. I haven&#8217;t had time to make sure that its at least 95% accurate so I&#8217;m holding on to that one until I have the chance to properly edit it and I&#8217;d also like to do it for WordPress 2.7. The one I brought up was done for WordPress 2.6.</p>
<h2>Fin</h2>
<p>So, thanks if you&#8217;ve gotten through this far and I hope to be throwing more WordPress knowledge out soon. Maybe first, though, I should actually get this heap on to WordPress so that I can use it as a functional example as well. This back end code, though light and efficient, doesn&#8217;t have any built in conveniences. </p>
]]></content:encoded>
			<wfw:commentRss>http://top-frog.com/2009/03/02/wordcamp_denver_2009-my_humble_experience/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: top-frog.com @ 2012-02-04 19:44:47 by W3 Total Cache -->
