<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dented Reality &#187; php</title>
	<atom:link href="http://dentedreality.com.au/tags/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://dentedreality.com.au</link>
	<description>Beau Lebens throws down his opinion on all sorts of things he doesn&#039;t know too much about.</description>
	<lastBuildDate>Tue, 15 May 2012 07:24:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta4-20800</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>BackPress, Your New Best Friend</title>
		<link>http://dentedreality.com.au/2009/12/backpress-your-new-best-friend/</link>
		<comments>http://dentedreality.com.au/2009/12/backpress-your-new-best-friend/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 16:23:44 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[backpress]]></category>
		<category><![CDATA[bbpress]]></category>
		<category><![CDATA[glotpress]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=4454</guid>
		<description><![CDATA[If you&#8217;ve spent some time poking around in the code for either WordPress or bbPress, you may have come across comments that mention &#8220;BackPress&#8221;. You may have wondered what this BackPress thing was, well, wonder no more. In the last few days, I&#8217;ve put together a quick site to try to help introduce people to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve spent some time poking around in the code for either <a href="http://wordpress.org/">WordPress</a> or <a href="http://bbpress.org/">bbPress</a>, you may have come across comments that mention &#8220;BackPress&#8221;. You may have wondered what this BackPress thing was, well, wonder no more.</p>
<p>In the last few days, I&#8217;ve put together a quick site to try to help introduce people to <a href="http://backpress.org/">the BackPress project</a>. From the site:</p>
<blockquote><p><strong>BackPress is a PHP library of core functionality for web applications. It grew out of the immensely popular <a href="http://wordpress.org/">WordPress</a> project, and is also the core of the <a href="http://bbpress.org/">bbPress</a> and <a href="http://glotpress.org/">GlotPress</a> sister-projects.</strong></p></blockquote>
<p>So effectively, BackPress takes all of the best core functionality (on a code level) from WordPress and bbPress, and makes it available to you and your next PHP-based web application/project. By using BackPress in your projects, you are then able to use most of the code you&#8217;ve come to rely on while working on WordPress-based projects, such as <code>$wpdb</code>, <code>trailingslashit()</code>, <code>make_clickable()</code>, <code>__()</code>, <code>wp_remote_fopen()</code> and more. The site includes some <a href="http://backpress.org/download/">details on how to use BackPress</a> in your project, and has the beginnings of a <a href="http://backpress.org/documentation/">collection of documentation</a> covering the main parts of the code library.</p>
<p>I&#8217;m personally really excited about this because I think BackPress has huge potential as a library for other folks and other projects. It allows them to benefit from the lessons learned through years (and thousands of &#8220;man-hours&#8221; worth of development) on the WordPress and bbPress projects. I&#8217;m using it as the core of my <a title="WebApp: Hyper Text File System" rel="nofollow" href="http://dentedreality.com.au/projects/htfs/">HTFS</a> project (not released yet), and I know that some other projects are starting to use it as well. As a developer who has spent a lot of time in &#8220;WordPress land&#8221;, it makes life so much easier to be able to continue using a lot of the design patterns and techniques that I&#8217;ve become accustomed to.</p>
<p>Check it out, and please let me know what else we could get on the site, what needs more documentation etc!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/12/backpress-your-new-best-friend/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
	</item>
		<item>
		<title>LDAP (very) Basics</title>
		<link>http://dentedreality.com.au/2009/11/ldap-very-basics/</link>
		<comments>http://dentedreality.com.au/2009/11/ldap-very-basics/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 04:11:40 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[basics]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=1077</guid>
		<description><![CDATA[Getting started with LDAP can be quite daunting. In the space of a weekend, I took myself on a bit of a crash course to learn about LDAP so that I could work on a project that needed LDAP to access an address book. Here are some of the things I learned along the way: [...]]]></description>
			<content:encoded><![CDATA[<p>Getting started with LDAP can be quite daunting. In the space of a weekend, I took myself on a bit of a crash course to learn about LDAP so that I could work on a project that needed LDAP to access an address book. Here are some of the things I learned along the way:</p>
<p><span id="more-1077"></span></p>
<h3>Some LDAP Terminology</h3>
<ul>
<li>LDAP &#8211; Lightweight Directory Access Protocol. It&#8217;s a system for accessing a &#8220;directory&#8221; of information in a structured way</li>
<li>DN &#8211; Distinguished Name. It identifies a specific entry by either a series of RDNs, or a search string, to locate that particular entry.</li>
<li>RDN &#8211; Relative Distinguished Name. Basically a portion of a DN.</li>
<li>CN &#8211; Common Name. This is the general purpose &#8220;name&#8221; of an entry, and is usually used as part of the DN for an entry.</li>
<li>DC &#8211; Domain Component. This is also part of a DN/RDN, and is often used to define the name of your service/directory/top-level-domain.</li>
<li>directory &#8211; your collection of entries that you want to access via LDAP (it&#8217;s the D in LDAP!)</li>
<li>schema &#8211; the &#8220;design&#8221; of your directory. Refers to the hierarchy of entries within your directory.</li>
<li>top &#8211; the &#8220;root&#8221; level entry of your schema.</li>
<li>objectClass &#8211; a group of attributes, commonly used to describe a particular type of information. For example the inetOrgPerson objectClass contains a group of attributes for describing a person, with common internet-based communication methods.</li>
<li>attribute &#8211; a single piece of information belonging to an entry in your directory</li>
<li>LDIF &#8211; LDAP Data Interchange Format. This is a simple, text-based format used to read/write LDAP entries. It is in &#8220;attributeName: value&#8221; format, with one entry per line, so it&#8217;s very easy to read/handle on the command line or via code.</li>
</ul>
<h3>Setting Up an LDAP Server</h3>
<ul>
<li><a href="http://www.openldap.org/">OpenLDAP</a> is easy to install/configure, and is available via package managers for most common *NIX OSes.</li>
<li>You need to set up your DC correctly in the slapd configuration files so that you have something to connect to.</li>
<li>Run slapd in debug mode so that you can get some useful information and see what is and isn&#8217;t working while you&#8217;re figuring things out.</li>
</ul>
<h3>Custom objectClass Creation</h3>
<p>In our case, we needed some attributes that weren&#8217;t available in any of the objectClasses that were being loaded by OpenLDAP, so we decided to create our own. OpenLDAP was loading the config files for a lot of attributes, but until they&#8217;re included in an objectClass, and that objectClass is referenced in your entry, you can&#8217;t use those attributes. Here&#8217;s what we came up with:</p>
<pre>objectclass ( 1.1.1.1.1.1.1.1.1.1.1.1.1 NAME 'vCardPerson' SUP inetOrgPerson STRUCTURAL
 MAY ( additionalName $ personalTitle $ honorificSuffix $ bday $ tz $ sourceURI ) )</pre>
<p>Basically we just created an objectClass called &#8220;vCardPerson&#8221; which inherited everything (SUP) from inetOrgPerson, then added a few optional (MAY) attributes. The 1.1.1&#8230;.. is a garbage number that we made up. You&#8217;re supposed to register and get a unique number to identify every objectClass from IANA, but, well, we were working on an experimental project so we didn&#8217;t bother <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Working with LDAP via PHP</h3>
<ul>
<li>If you get an error message: &#8220;Object Class violation&#8221;, then you&#8217;re probably trying to set an attribute which isn&#8217;t available. You might need to include another objectClass (or define your own) so that you have access to that attribute.</li>
<li>Connecting and Binding to an LDAP server is pretty easy once you have things set up. You will probably use something similar to this:
<pre>$ldap = ldap_connect( 'ldap://ldaphostname.com/' );
if ( $ldap ) {
 $bind = ldap_bind( $ldap, 'cn=admin,dc=nodomain', 'password' );
 if ( !$bind ) {
 echo 'Failed to connect to LDAP server!';
 exit;
 }
}</pre>
</li>
<li>A DN should probably include a unique identifier to make life easier, ours ended up looking something like this (where uid changed for each entry):
<pre>uid=123,dc=1234,dc=nodomain</pre>
</li>
<li>Creating an entry (and saving it in LDAP) is as easy as creating an array and then calling a PHP function. Each of the array elements matches up to an LDAP attribute, and you just need to be sure to include an objectClass entry to define which attributes you&#8217;re using. Here&#8217;s an example (assuming you&#8217;re connected to an LDAP server via $ldap and have defined a new, unique DN via $dn):
<pre>$entry = array();
$entry['objectClass']     = array( 'top', 'person', 'organizationalPerson', 'inetOrgPerson', 'hCard' );
$entry['cn']              = array( 'Billy Bob' ); // Common Name
$entry['sn']              = array( 'Bob' ); // Surname/Family Name
$entry['gn']              = array( 'Billy' ); // Given Name
$entry['displayName']     = array( 'BillyBob' ); // Nickname
$entry['mail']            = array( 'billy@bob.com' ); // Email
$entry['labeledURI']      = array( 'http://billybob.com' );
$entry['mobile']          = array( '+12345678912' ); // Mobile number

if ( !ldap_add( $ldap, $dn, $entry ) ) {
 echo ldap_error( $ldap );
} else {
 echo 'Successfully added entry';
}</pre>
</li>
</ul>
<p>Hopefully I&#8217;ll be able to add to this over time as I learn some more bits and pieces with LDAP. Do you have any good pointers or explanations for how LDAP works? Please add them in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/11/ldap-very-basics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
	</item>
		<item>
		<title>New Project: ListML</title>
		<link>http://dentedreality.com.au/2009/11/new-project-listml/</link>
		<comments>http://dentedreality.com.au/2009/11/new-project-listml/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 22:12:12 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[listml]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[text editor]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=1198</guid>
		<description><![CDATA[If you&#8217;re anything like me, you write a lot of lists. I use lists for pretty much everything &#8212; note taking, planning my day, managing projects, shopping, organization, etc etc etc. I have lists of lists. It&#8217;s a bit out of control. Over the years, I&#8217;ve coalesced on a simple, basic format, where I write [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re anything like me, you write a lot of lists. I use lists for pretty much everything &#8212; note taking, planning my day, managing projects, shopping, organization, etc etc etc. I have lists of lists. It&#8217;s a bit out of control. Over the years, I&#8217;ve coalesced on a simple, basic format, where I write things using indented (tabbed) lists of plain text (in TextMate). I kept finding myself converting some of these lists to HTML, so I&#8217;ve written something up that will take a plain text list and reformat it as HTML, given a simple set of formatting rules.</p>
<p>That project is available for download now, under the name <a href="http://dentedreality.com.au/projects/listml/">ListML</a>. Check it out, I use it all the time, so will probably continue developing it. At the moment it&#8217;s just a simple script that you drop into a directory, then drop other TXT files in there to view them as HTML. We&#8217;ll see where it ends up. If you&#8217;ve got any suggestions or find any bugs, feel free to post them as a comment here and I&#8217;ll fix things up. I already have some ideas on new features:</p>
<ul>
<li>Ability to load external files (from URL)</li>
<li>List files in the current directory if none specified</li>
<li>Cut out the parsing engine properly to make it more portable</li>
<li>Make the HTML view (optionally) into a lightweight editor as well</li>
<li>Quick UI for grabbing the HTML snippet of just the list (sans CSS/extras)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/11/new-project-listml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
	</item>
		<item>
		<title>Slinky, a PHP class for URL shortening/lengthening</title>
		<link>http://dentedreality.com.au/2009/08/php-class-url-shortener-slinky/</link>
		<comments>http://dentedreality.com.au/2009/08/php-class-url-shortener-slinky/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 04:11:48 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[bitly]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[isgd]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[slinky]]></category>
		<category><![CDATA[tinyurl]]></category>
		<category><![CDATA[trim]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=1112</guid>
		<description><![CDATA[A few weeks ago, I tweeted that I was writing a PHP library for shortening/lengthening URLs using some of the common/popular services. I said it was going to be called Slinky, and that it&#8217;d support a bunch of different services. Well, it&#8217;s now available for download and I think it&#8217;s pretty cool, even if I [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I tweeted that I was <a href="http://twitter.com/beaulebens/status/2636875528">writing a PHP library</a> for shortening/lengthening URLs using some of the common/popular services. I said it was going to be called Slinky, and that it&#8217;d support a bunch of different services. Well, it&#8217;s now <a href="http://dentedreality.com.au/projects/slinky/">available for download</a> and I think it&#8217;s pretty cool, even if I do say so myself <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Please grab a copy, try it out and let me know what you think. It hasn&#8217;t actually been used for anything useful yet, so I&#8217;m also interested to hear what you&#8217;re using it for!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/08/php-class-url-shortener-slinky/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
	</item>
		<item>
		<title>Quick PHP Tip</title>
		<link>http://dentedreality.com.au/2009/07/quick-php-tip/</link>
		<comments>http://dentedreality.com.au/2009/07/quick-php-tip/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:56:45 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[empty]]></category>
		<category><![CDATA[isset]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[strlen]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=1083</guid>
		<description><![CDATA[If you&#8217;re coding in PHP and checking variables to see if they have a strlen() == 0, or isset() or a variety of other possibilities, you might consider using empty() instead. It&#8217;s quite versatile and is nice because it doesn&#8217;t trigger any warnings or notices if you use it on a variable which hasn&#8217;t been [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re coding in PHP and checking variables to see if they have a strlen() == 0, or isset() or a variety of other possibilities, you might consider using empty() instead. It&#8217;s quite versatile and is nice because it doesn&#8217;t trigger any warnings or notices if you use it on a variable which hasn&#8217;t been set yet. Here are some examples to show you what it will match against:</p>
<pre>&lt;?php

$zero_string  = '0';
$zero_int     = 0;
$false        = false;
$empty_string = '';
$array        = array();
$obj          = new stdClass();

echo empty( $zero_string ) ? "'0' = empty\n" : '';
echo empty( $zero_int ) ? "0 = empty\n" : '';
echo empty( $false ) ? "false = empty\n" : '';
echo empty( $empty_string ) ? "'' = empty\n" : '';
echo empty( $array ) ? "array() = empty\n" : '';
echo empty( $obj ) ? "stdClass() = empty\n" : '';
echo empty( $foo ) ? "foo is empty (and the variable was never set)\n" : '';</pre>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/07/quick-php-tip/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
	</item>
		<item>
		<title>The All-New LiveJournal Importer for WordPress</title>
		<link>http://dentedreality.com.au/2009/02/livejournal-importer-for-wordpress/</link>
		<comments>http://dentedreality.com.au/2009/02/livejournal-importer-for-wordpress/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 23:30:59 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Clients]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[automattic]]></category>
		<category><![CDATA[guav]]></category>
		<category><![CDATA[importer]]></category>
		<category><![CDATA[livejournal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=907</guid>
		<description><![CDATA[Over the past few weeks, I have been working on a new importer for people who use LiveJournal, but would like to switch over to WordPress. With LiveJournal laying off a bunch of employees, it seemed like some people might prefer to move to a platform where they had a bit more control over their [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few weeks, I have been working on a new importer for people who use <a href="http://livejournal.com/">LiveJournal</a>, but would like to switch over to <a href="http://wordpress.org/">WordPress</a>. With LiveJournal <a href="http://www.adotas.com/2009/01/livejournal-layoffs/">laying off a bunch of employees</a>, it seemed like some people might prefer to move to a platform where they had a bit more control over their own content, rather than relying on another company to handle it for them. I decided that my measure of success would be that it needed to be capable of importing <a href="http://throwingstardna.livejournal.com/">Guav&#8217;s entire journal</a> &#8212; comments and all, without error.</p>
<p>As it turns out, it&#8217;s been quite a project. <a href="http://www.livejournal.com/doc/server/ljp.csp.protocol.html">LiveJournal&#8217;s API</a> is, shall we say, &#8220;challenging&#8221; to work with, and the sheer size of Guav&#8217;s journal (over 3,700 posts and nearly 200,000 comments) meant that I kept running into time, memory and database limits that would crash the importer. After a lot of back and forth with Guav though, I&#8217;m happy to present the new importer (find it under Tools &gt; Import &gt; LiveJournal), sporting the following features:</p>
<ul>
<li>Just enter your LiveJournal username and password and you&#8217;re ready to go</li>
<li>Via the API, it connects directly to LiveJournal and imports all of your posts,
<ul>
<li>Posts marked as &#8220;Friends Only&#8221; are assigned a password within WordPress,</li>
<li>Posts marked as &#8220;Private (you only)&#8221; are marked as Private within WordPress, which means that only authors on your new blog can read them,</li>
<li>lj-cut tags are converted to the WordPress equivalent, the &lt;! &#8212; more &#8212; &gt; tag,</li>
<li>lj-user tags are converted to normal links, and have class=&#8221;lj-user&#8221; attached to them to make it easier to style them if you like,</li>
<li>Tags are imported properly,</li>
<li>If you closed the comments on a post in LiveJournal, then they&#8217;ll be closed in WordPress as well,</li>
<li>Lots of the &#8220;meta&#8221; information related to posts is also imported using WordPress&#8217; Custom Fields feature. You could then use these values to reproduce some of LiveJournal&#8217;s functionality within your new theme if you like. The fields imported are:
<ul>
<li>If your post contains adult content (lj_adult_content),</li>
<li>Your current co-ordinates and location (lj_current_coords and lj_current_location),</li>
<li>Your current mood (lj_current_mood),</li>
<li>Current music (lj_current_music),</li>
<li>Your userpic keyword (lj_picture_keyword)</li>
</ul>
</li>
</ul>
</li>
<li>Next up, all of your comments are also imported,
<ul>
<li>Threading is preserved, so replies to other comments show up successfully (provided you enable that feature in WordPress),</li>
<li>The &#8220;subject&#8221; of each comment is included as the first line of the comment itself, because WordPress doesn&#8217;t have a comment title/subject value,</li>
<li>LiveJournal users get links back to their LiveJournals,</li>
<li>Your own comments are linked to your WordPress account, and are linked back to your new WordPress blog,</li>
<li>Anonymous users are labeled as &#8220;Anonymous&#8221;,</li>
<li>&#8220;Screened&#8221; comments on LiveJournal are imported as &#8220;Unapproved&#8221; within WordPress, so you can decide what to do with them</li>
</ul>
</li>
</ul>
<p>So there you have it, a brand new, shiny LiveJournal importer. This should be bundled with the 2.8 release of WordPress (it&#8217;s available right now on <a href="http://wordpress.com/">WordPress.com</a>), and will be available for everyone. As I mentioned, it&#8217;s been tested with one single, very large blog (and a few smaller test ones), but if you find anything wrong with it, please <a href="http://trac.wordpress.org/">file a bug on the WordPress Trac</a>!</p>
<p>Huge thanks again to <a href="http://throwingstardna.livejournal.com/">Guav</a> for helping with the testing of this thing (maybe now he can migrate over to WordPress as well)!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/02/livejournal-importer-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
	</item>
		<item>
		<title>FeedGrowler &#8211; get Growl notifications from your feeds</title>
		<link>http://dentedreality.com.au/2009/01/feedgrowler-growl-notifications-for-your-rss-feeds/</link>
		<comments>http://dentedreality.com.au/2009/01/feedgrowler-growl-notifications-for-your-rss-feeds/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 21:29:11 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[feedgrowler]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[growlnotify]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://dentedreality.com.au/?p=944</guid>
		<description><![CDATA[On a whim, I whipped up this quick project today. Basically it just gives you a Growl notification when a feed you&#8217;re monitoring gets a new post (or technically, when the most recent post in the feed changes content). Check out FeedGrowler&#8217;s project page »]]></description>
			<content:encoded><![CDATA[<p>On a whim, I whipped up this quick project today. Basically it just gives you a <a href="http://growl.info/">Growl</a> notification when a feed you&#8217;re monitoring gets a new post (or technically, when the most recent post in the feed changes content).</p>
<p><a href="http://dentedreality.com.au/projects/feedgrowler-growl-notifications-for-rss-feeds/">Check out FeedGrowler&#8217;s project page »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2009/01/feedgrowler-growl-notifications-for-your-rss-feeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Ruby is the new PHP</title>
		<link>http://dentedreality.com.au/2005/12/ruby-is-the-new-php/</link>
		<comments>http://dentedreality.com.au/2005/12/ruby-is-the-new-php/#comments</comments>
		<pubDate>Wed, 14 Dec 2005 06:59:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/12/ruby-is-the-new-php/</guid>
		<description><![CDATA[Don&#8217;t know if this has dawned on anyone else yet&#8230; PHP was the new Perl, written for the web Ruby (+ Rails) is the new PHP, written for web 2.0 I guess that means I&#8217;d better get on the bandwagon and figure it out!]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t know if this has dawned on anyone else yet&#8230;</p>
<p><em>PHP was the new Perl, written for the web</em></p>
<p><em>Ruby (+ Rails) is the new PHP, written for web 2.0</em></p>
<p>I guess that means I&#8217;d better get on the bandwagon and figure it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/12/ruby-is-the-new-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>LiveJournal Atom API Support</title>
		<link>http://dentedreality.com.au/2005/10/livejournal-atom-api-support/</link>
		<comments>http://dentedreality.com.au/2005/10/livejournal-atom-api-support/#comments</comments>
		<pubDate>Mon, 24 Oct 2005 04:16:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[livejournal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pronet]]></category>
		<category><![CDATA[sixapart]]></category>
		<category><![CDATA[wsse]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/10/livejournal-atom-api-support/</guid>
		<description><![CDATA[As soon as I posted details of my new Atom API library to the SixApart ProNet mailing list, I got an email from their Manager of Platform Technology, and then another one from Anil Dash, both with hopes that I could include LiveJournal support. I&#8217;m now in touch with one of their people who&#8217;s handling [...]]]></description>
			<content:encoded><![CDATA[<p>As soon as I posted details of my new Atom API library to the <a href="http://www.sixapart.com/pronet/">SixApart ProNet</a> mailing list, I got an email from their Manager of Platform Technology, and then another one from <a href="http://www.dashes.com/anil/">Anil Dash</a>, both with hopes that I could include LiveJournal support.</p>
<p>I&#8217;m now in touch with one of their people who&#8217;s handling the actual implementation of their APIs, so hopefully I&#8217;ll be able to work out what&#8217;s going on and add LJ support to the code library soon. At the moment, my WSSE authentication is failing on the second request to their API, even though it&#8217;s working on the first one&#8230; curious.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/10/livejournal-atom-api-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>PHP Atom API Code Released</title>
		<link>http://dentedreality.com.au/2005/10/php-atom-api-code-released/</link>
		<comments>http://dentedreality.com.au/2005/10/php-atom-api-code-released/#comments</comments>
		<pubDate>Mon, 17 Oct 2005 03:05:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpatomapi]]></category>
		<category><![CDATA[webpad]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/10/php-atom-api-code-released/</guid>
		<description><![CDATA[I&#8217;ve finally packaged up and released the PHP Atom API code I wrote as part of webpad. You can download it now and go crazy.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally packaged up and released the PHP Atom API code I wrote as part of <a title="Check out webpad" href="/projects/webpad/">webpad</a>. You can <a title="Download a zip iof the PHP Atom API code now" href="/download/8/">download it now</a> and go crazy.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/10/php-atom-api-code-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
	</item>
		<item>
		<title>PHP Blogger API License Updated</title>
		<link>http://dentedreality.com.au/2005/10/php-blogger-api-license-updated/</link>
		<comments>http://dentedreality.com.au/2005/10/php-blogger-api-license-updated/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 02:49:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[blogger]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpbloggerapi]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/10/php-blogger-api-license-updated/</guid>
		<description><![CDATA[With a little prompting from someone who needed to known what license the PHP Blogger API code was available under so he could develop something based on it, I&#8217;ve finally added a license in with all 3 downloads available. With confirmation from the other 2 authors involved, all 3 packages are now available under a [...]]]></description>
			<content:encoded><![CDATA[<p>With a little prompting from someone who needed to known what license the <a href="/bloggerapi/">PHP Blogger API</a> code was available under so he could develop something based on it, I&#8217;ve finally added a license in with all 3 downloads available. With confirmation from the other 2 authors involved, all 3 packages are now available under a BSD-style license. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/10/php-blogger-api-license-updated/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
	</item>
		<item>
		<title>Nerdalicious Sub-Conscious PHP Debugging</title>
		<link>http://dentedreality.com.au/2005/04/nerdalicious-sub-conscious-php-debugging/</link>
		<comments>http://dentedreality.com.au/2005/04/nerdalicious-sub-conscious-php-debugging/#comments</comments>
		<pubDate>Tue, 19 Apr 2005 21:12:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[dreaming]]></category>
		<category><![CDATA[nerdalicious]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/04/nerdalicious-sub-conscious-php-debugging/</guid>
		<description><![CDATA[I&#8217;ve dreamed in binary before, no big deal. When I was learning it (properly) and working with it a bit at university, I got a little carried away and would write my name on things in binary, that sort of ultra-cool nerd thing. Now I&#8217;ve stepped up from binary to PHP, and things appear to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve dreamed in binary before, no big deal. When I was learning it (properly) and working with it a bit at university, I got a little carried away and would write my name on things in binary, that sort of ultra-cool nerd thing. Now I&#8217;ve stepped up from binary to PHP, and things appear to have accelerated from there;</p>
<p>Last night, I <strong>debugged</strong> the code that I was writing before I went to bed, <em>in my sleep!</em> I was working on my soon-to-be-released PHP Atom API package last night, as has been the case on many nights recently, and it got to be pretty late. I showered up, went to bed and all was well.</p>
<p>When I woke up this morning &#8211; I had memories of dreaming my way through the code that I had been working on the night before (1,500 lines, so no small feat <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), and in my dream, I had found a style of catching errors on some of my processing which wouldn&#8217;t actually catch anything, and would always evaluate as if there was no error. I got up this morning and checked it, and sure enough &#8211; I was more coherent in my dream than I was while sitting in front of my PC coding.</p>
<p>My friend <a href="http://www.stoodio.com/" title="Ray's site">Ray</a> dubbed this &#8220;nerdalicious&#8221; and I think that&#8217;s a pretty awesomely descriptive word for it, so I&#8217;m calling this &#8216;nerdalicious sub-conscious code de-bugging&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/04/nerdalicious-sub-conscious-php-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Better Random Hex</title>
		<link>http://dentedreality.com.au/2005/04/better-random-hex/</link>
		<comments>http://dentedreality.com.au/2005/04/better-random-hex/#comments</comments>
		<pubDate>Fri, 15 Apr 2005 05:54:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[eric scheid]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[random hex]]></category>
		<category><![CDATA[randomizer]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/04/better-random-hex/</guid>
		<description><![CDATA[Eric Scheid (founder of the excellent IAWiki) shot me a line with a more efficient and much sleeker version of my random hex code straight after I posted it, so here it is! function random_hex() { $color = ''; for ($c = 0; $c &#60; 6; $c++) { $i = rand(0, 15); $color .= substr("0123456789ABCDEF", [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Eric on IAWiki.net" href="http://iawiki.net/EricScheid">Eric Scheid</a> (founder of the excellent <a title="Go to iawiki.net" href="http://iawiki.net/IAwiki">IAWiki</a>) shot me a line with a more efficient and much sleeker version of my random hex code straight after I posted it, so here it is!</p>
<pre>function random_hex() {
	$color = '';
	for ($c = 0; $c &lt; 6; $c++) {
		$i = rand(0, 15);
		$color .= substr("0123456789ABCDEF", $i, 1)
	}
	$color = '#' . $color;
	return $color;
}</pre>
<p>Thanks Eric!</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/04/better-random-hex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Random Hex</title>
		<link>http://dentedreality.com.au/2005/04/random-hex/</link>
		<comments>http://dentedreality.com.au/2005/04/random-hex/#comments</comments>
		<pubDate>Mon, 11 Apr 2005 23:13:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[random hex]]></category>
		<category><![CDATA[randomizer]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2005/04/random-hex/</guid>
		<description><![CDATA[I needed some PHP code to randomly generate me a hex value for use as a color in a webpage. Here&#8217;s what I came up with (WARNING: Some colors are UGLY!) function random_hex() { $color = ''; for ($c = 0; $c &#60; 6; $c++) { $i = rand(0, 15); switch ($i) { case 10 [...]]]></description>
			<content:encoded><![CDATA[<p>I needed some PHP code to randomly generate me a hex value for use as a color in a webpage. Here&#8217;s what I came up with (WARNING: Some colors are UGLY!)</p>
<pre>function random_hex() {
	$color = '';
	for ($c = 0; $c &lt; 6; $c++) {
		$i = rand(0, 15);
		switch ($i) {
			case 10 :
				$i = 'A';
				break;
			case 11 :
				$i = 'B';
				break;
			case 12 :
				$i = 'C';
				break;
			case 13 :
				$i = 'D';
				break;
			case 14 :
				$i = 'E';
				break;
			case 15 :
				$i = 'F';
				break;
			default :
				$i = $i;
				break;
		}
		$color .= $i;
	}
	$color = '#' . $color;
	return $color;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2005/04/random-hex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>XooMLe Download Finally Available!</title>
		<link>http://dentedreality.com.au/2004/07/xoomle-download-finally-available/</link>
		<comments>http://dentedreality.com.au/2004/07/xoomle-download-finally-available/#comments</comments>
		<pubDate>Mon, 12 Jul 2004 09:07:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xoomle]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2004/07/xoomle-download-finally-available/</guid>
		<description><![CDATA[After a very long wait, a downloadable version of XooMLe is now available! This means that you can now download XooMLe and install it on your own PHP-enabled server so that you can use it locally for integrating Google search results (and cache and spelling suggestion power) into your web-based applications. In the near future, [...]]]></description>
			<content:encoded><![CDATA[<p>After a very long wait, a <a title="Download XooMLe and install it on your own server right now!" href="/download/10/">downloadable version</a> of <a title="Check out the XooMLe project page" href="/projects/xoomle/">XooMLe</a> is now available!</p>
<p>This means that you can now download XooMLe and install it on your own PHP-enabled server so that you can use it locally for integrating Google search results (and cache and spelling suggestion power) into your web-based applications.</p>
<p>In the near future, a &#8216;XooMLe In Action&#8217; page will also be added to the site, showcasing some of the ways that people are making use of XooMLe and <a title="Go to google.com" href="http://www.google.com/">Google</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2004/07/xoomle-download-finally-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>No More HTTP Authentication</title>
		<link>http://dentedreality.com.au/2004/03/no-more-http-authentication/</link>
		<comments>http://dentedreality.com.au/2004/03/no-more-http-authentication/#comments</comments>
		<pubDate>Tue, 16 Mar 2004 00:19:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[http auth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php cgi]]></category>
		<category><![CDATA[sessions]]></category>
		<category><![CDATA[webpad]]></category>
		<category><![CDATA[webpad 3.0]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2004/03/no-more-http-authentication/</guid>
		<description><![CDATA[Well, it&#8217;s official. webpad 3.0 will now use integrated, session-based authentication for users, rather than HTTP Authentication. I&#8217;ve changed to this in large part to allow me to use it in CGI mode (which, incidentally, works wonderfully), so webpad is even more portable now. In fact, if you have PHP running in CGI mode, I [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s official. webpad 3.0 will now use integrated, session-based authentication for users, rather than HTTP Authentication. I&#8217;ve changed to this in large part to allow me to use it in CGI mode (which, incidentally, works wonderfully), so webpad is even more portable now. In fact, if you have PHP running in CGI mode, I will be reccommending that you run webpad under that mode.</p>
<p>With the new integrated authentication, when you hit webpad you are presented with a log in screen, where you enter a username/password as normal, then continue to the actual application.</p>
<p>I&#8217;m also currently looking at templating (thanks to a previous hack that <a href="http://www.bradchoate.com/" title="Go to bradchoate.com">Brad Choate</a> made to webpad 2.0 which allowed it to selectively edit the contents of a file, only within certain regions (denoted by webpad tags of some sort). I will have this functionality included in the official release of webpad 3.0 Personal Edition, and it will definitely be a part of the Professional release.</p>
<p>Things may have been quiet, but they&#8217;re not completely dead! <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2004/03/no-more-http-authentication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>File Append Function</title>
		<link>http://dentedreality.com.au/2004/02/file-append-function/</link>
		<comments>http://dentedreality.com.au/2004/02/file-append-function/#comments</comments>
		<pubDate>Fri, 06 Feb 2004 01:09:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[append]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[file append]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2004/02/file-append-function/</guid>
		<description><![CDATA[Here&#8217;s a useful function that I wrote for PHP &#8211; it just opens a specified file and appends a string to it. It&#8217;s very good for logging things. &#60;?php /** * @return boolean * @param $file FileNameToWriteTo * @param $string StringToWriteToFile * @desc Writes specified string to the end of the file with a linefeed [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a useful function that I wrote for PHP &#8211; it just opens a specified file and appends a string to it. It&#8217;s very good for logging things.</p>
<pre>&lt;?php
/**
 * @return boolean
 * @param $file FileNameToWriteTo
 * @param $string StringToWriteToFile
 * @desc Writes specified string to the end of the file with a linefeed attached
 */
function file_append($file, $string) {
	if (is_file($file) &amp;&amp; is_writable($file)) {
		$fh = fopen($file, 'a');
		if ($fh) {
			fwrite($fh, $string . "\n");
			fclose($fh);
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}
?&gt;</pre>
<p>You might want to consider making the fopen() flags &#8216;ab&#8217; for binary-safe (now reccommended on <a title="Go to php.net" href="http://www.php.net/">php.net</a>) and also changing the &#8216;\n&#8217; part to the appropriate line-endings for your operating system (\n = *NIX, \r\n = Windows, \r = Mac).</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2004/02/file-append-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Blosxconfig: PHP Tool To Configure blosxom Plugins</title>
		<link>http://dentedreality.com.au/2003/11/blosxconfig-php-tool-to-configure-blosxom-plugins/</link>
		<comments>http://dentedreality.com.au/2003/11/blosxconfig-php-tool-to-configure-blosxom-plugins/#comments</comments>
		<pubDate>Mon, 17 Nov 2003 10:53:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[blosxconfig]]></category>
		<category><![CDATA[blosxom]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2003/11/blosxconfig-php-tool-to-configure-blosxom-plugins/</guid>
		<description><![CDATA[The most common complaints/questions on the blosxom developer&#8217;s mailing list all relate to difficulties with plugins, so I have been trying to think of a way to make them a little easier to work with for people. What I came up with is blosxconfig, a single PHP script which works with very basic configuration files [...]]]></description>
			<content:encoded><![CDATA[<p>The most common complaints/questions on the <a href="http://groups.yahoo.com/group/blosxom/">blosxom developer&#8217;s mailing list</a> all relate to difficulties with plugins, so I have been trying to think of a way to make them a little easier to work with for people. What I came up with is blosxconfig, a single PHP script which works with very basic configuration files to determine what variables a user should have access to and what format they should be in. It will also confirm the existence and readability of the plugin files, and write the modified variables directly into the plugin files.</p>
<p class="download"><a href="/download/11/">Download blosxconfig BETA version now!</a></p>
<p>Here&#8217;s the details that I posted to the blosxom list;</p>
<p>WARNING: Back up all you plugins before saving changes via blosxconfig!!!</p>
<p>configure.php is a PHP script (duh!) so you&#8217;ll need PHP on your server to run it. You can pass a path to it to look for a specific config file via either a GET or POST request (GET use ?conf=path-to-conf.conf on the querystring, POST use variable name &#8216;conf&#8217; with a value of a path to a config file). if you don&#8217;t pass a value, then blosxconfig will look for a file called blosxom.conf in the same directory as it, or die trying <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The config files are very basic, and look a little bit like a Windows ini file, but it&#8217;s a custom style; The first line is similar to a unix &#8216;shebang&#8217; line, and should look like this;</p>
<pre>#@/path/to/plugins</pre>
<p>where obviously the /path/to/plugins is the full path to where your plugins live &#8211; this should be the same as the $blosxom::plugin_dir variable configured in your blosxom cgi executable.</p>
<p>After that line, you have plugin sections which are defined using [plugin_name] &#8211; be careful that you use the *exact* name of the plugin, because the value is used for confirming the plugin&#8217;s existence <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Under each plugin section, you define definable variables on a line each, in this format;</p>
<pre>variable_name|type|default</pre>
<p>variable_name is the actual name of the variable (as written in the script), without the &#8216;$&#8217; or &#8216;@&#8217; (in the case of arrays)</p>
<p>type can be one of &#8216;string&#8217;, &#8216;boolean&#8217; or &#8216;code&#8217;. Arrays should be defined as &#8216;code&#8217;. Strings are enclosed automatically in quotes (&#8220;) and all types are followed by a semi colon when written to file. Booleans are presented to the user as a Yes/No select box (0/1 passed as values) and other types are presented as simple text input fields.</p>
<p>default is a value to use by default. make sure this makes sense (so for a boolean make sure it&#8217;s 0/1, for a string it&#8217;s a string etc). You don&#8217;t need to wrap it in quotes or anything, this is handled automatically.</p>
<hr />Now, assuming you have a valid config file and blosxconfig can find it, it will load the file, and present you with an interface where you should be able to modify all the values that you spcified as being editable in the config file. *hopefully* blosxconfig will also tell you at this point if plugin files are available (file exists in plugin dir) and if they are not readable or writeable. when you have made you changes &#8211; click &#8216;save&#8217; and the following will happen;</p>
<p>WARNING: Back up all you plugins before saving changes via blosxconfig!!!</p>
<ol>
<li>All plugin files which are referenced in your config file will be MODIFIED &#8211; they will technically be overwritten entirely, since the contents of the file are processed, then the lines that look like they define the variables in question are replaced with new lines, with the new values.</li>
<li>The config file will be updated with the new details that you specified and written back to file.</li>
<li>blosxconfig will load again, with all your new values in place, and messages telling you what happened.</li>
</ol>
<p>Assuming all goes well, you&#8217;ve just used an external interface to reach into your plugin files and modify certain details. The hope is that authors of plugins (or community-minded participants) can supply the simple, 1 &#8211; 10 lines worth of config required to add to this configuration file, which can then be distributed with this little application to help people configure their plugins.</p>
<p>Please be aware that I have *NOT* tested this extensively at all, it was hacked together and seemed to work for a couple of plugins that I was running (the ones in the config file included) on a Windows test box, other than that I can&#8217;t make any promises. I&#8217;d LOVE if some people could try it out on some other plugins, on other systems, and let me know (directly if<br />
you like) how it goes. I&#8217;ll fix any problems and then release it as public so that other people can use it.</p>
<p>Hope it&#8217;s useful for someone out there, and can perhaps eventually make life easier for some newbies (and pro&#8217;s alike <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Oh yeah &#8211; did I mention; BACK UP YOUR PLUGINS BEFORE YOU TRY THIS!</p>
<p>On the suggestion of Andreas Banze, I&#8217;ve removed one small section which checked to make sure that the plugin files were executable, since as he pointed out, this is not necessary, they are just included in the main operation of the blosxom script, not executed individually.</p>
<p class="download"><a href="/download/11/">Download blosxconfig BETA version now!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2003/11/blosxconfig-php-tool-to-configure-blosxom-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>If You Have A New Version of PHP&#8230;</title>
		<link>http://dentedreality.com.au/2003/05/if-you-have-a-new-version-of-php/</link>
		<comments>http://dentedreality.com.au/2003/05/if-you-have-a-new-version-of-php/#comments</comments>
		<pubDate>Sun, 04 May 2003 12:28:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webpad]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2003/05/if-you-have-a-new-version-of-php/</guid>
		<description><![CDATA[webpad was written quite a while ago now, and the new installations of PHP come by default with some settings which will mean that webpad doesn&#8217;t work straight away. The easiest way to get around this (on an Apache server) is to put an &#8220;.htaccess&#8221; file in your webpad installation directory which contains something like [...]]]></description>
			<content:encoded><![CDATA[<p>webpad was written quite a while ago now, and the new installations of PHP come by default with some settings which will mean that webpad doesn&#8217;t work straight away. The easiest way to get around this (on an Apache server) is to put an &#8220;.htaccess&#8221; file in your webpad installation directory which contains something like this;</p>
<pre>php_flag register_globals on

php_flag magic_quotes_gpc on</pre>
<p>The next version of webpad will not require this, but for now it&#8217;s the easiest way around the problem.</p>
<p>If anyone knows of any other problems and/or fixes to problems with webpad, please email them in to me using the <a href="/contact/">contact form or email here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2003/05/if-you-have-a-new-version-of-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Interest From SearchLoggers Group</title>
		<link>http://dentedreality.com.au/2003/04/interest-from-searchloggers-group/</link>
		<comments>http://dentedreality.com.au/2003/04/interest-from-searchloggers-group/#comments</comments>
		<pubDate>Mon, 21 Apr 2003 16:25:00 +0000</pubDate>
		<dc:creator>Beau Lebens</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Techn(ical|ology)]]></category>
		<category><![CDATA[controlled vocabulary]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[searchloggers]]></category>

		<guid isPermaLink="false">http://wiggin.local/dev/dentedreality.com.au/2003/04/interest-from-searchloggers-group/</guid>
		<description><![CDATA[I&#8217;ve had some initial interest from some of the other members of the searchloggers group in the work that I am doing with the search system on this site. The integration of a controlled vocabulary, best bets and a stand-aloone search engine backend appears to be of interest to others as well My hope is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had some initial interest from some of the other members of the <a href="http://groups.yahoo.com/group/searchloggers/" title="Visit the Yahoo! Group">searchloggers</a> group in the work that I am doing with the search system on this site. The integration of a controlled vocabulary, best bets and a stand-aloone search engine backend appears to be of interest to others as well <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>My hope is that this can be developed into a stand-alone product that could be wrapped around nearly any search system, simply adding to the functionality of said search system. So far things are looking good, but only really for something written in PHP. I would need to add other options for systems written in Perl, C etc.</p>
<p>In the near future, I will be posting database schemas, some notes on implementation and other bits and pieces about how I am attacking the whole process. Keep an eye on things if you are interested <img src='http://dentedreality.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dentedreality.com.au/2003/04/interest-from-searchloggers-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
	</channel>
</rss>

