<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>mysiteonline™ - PHP</title>
    <link>http://life.mysiteonline.org/</link>
    <description>Brendon Kozlowski's Home on the Web.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4 - http://www.s9y.org/</generator>
    <pubDate>Tue, 02 Mar 2010 16:35:01 GMT</pubDate>

    <image>
        <url>http://life.mysiteonline.org/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: mysiteonline™ - PHP - Brendon Kozlowski's Home on the Web.</title>
        <link>http://life.mysiteonline.org/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Website Render Time with PHP &gt;= 5.1</title>
    <link>http://life.mysiteonline.org/archives/190-Website-Render-Time-with-PHP-5.1.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/190-Website-Render-Time-with-PHP-5.1.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=190</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    In CakePHP v1.3.x, there will no longer be an automatic dump of tons of information (probably because the DebugKit plugin can handle all of that information for us) when in debug mode. However, in my non-CakePHP websites, and even in my Cake websites, I have become accustomed to viewing the source to see a full render time for the page in an HTML comment.  Thanks to the help of &quot;jnay&quot; over at &lt;a href=&quot;http://cakeqs.org/eng/questions/view/what_do_i_set_in_the_controller_to_send_total_render_time_to_the_view&quot;&gt;CakeQs.org&lt;/a&gt;, I&#039;ve found out about a new (as of PHP 5.1) $_SERVER variable argument called &quot;REQUEST_TIME&quot;.  It holds the UNIX timestamp of the initiation of the call.&lt;br /&gt;
&lt;br /&gt;
By using this variable, along with the optional boolean argument for microtime (as of PHP 5.0.0), we can determine the HTML render time of our application with the following calculation in either our footer view/template, or controller (preferably in the last possible iteration of your project&#039;s render):&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot;&gt;&lt;?php
	echo microtime(true) - $_SERVER[&#039;REQUEST_TIME&#039;];
?&gt;&lt;/textarea&gt;&lt;br /&gt;
The echo is optional and used only as an example here; it simply depends on how you use the calculation in your script(s)/framework(s). This is much easier than starting the timer in the header and calculating the difference in the footer like I had to do in the PHP 4 days!&lt;br /&gt;
&lt;br /&gt;
Remember, this is only for trivial estimations and comparisons. If you need to thoroughly evaluate your script(s) for time efficiency you should be using something else, such as &lt;a href=&quot;http://xdebug.org/&quot;&gt;Xdebug&lt;/a&gt; and a form of CacheGrind for your choice of OS. 
    </content:encoded>

    <pubDate>Tue, 02 Mar 2010 08:35:01 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/190-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Server Load, Take 2</title>
    <link>http://life.mysiteonline.org/archives/185-Server-Load,-Take-2.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/185-Server-Load,-Take-2.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=185</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    So I worked on the CakePHP plugin for Prowl a bit more, and in doing so, I created shell-based access to the plugin.  I can now send Prowl messages from the console (i.e.: I can run PHP via cron to check on things and send myself the results, if necessary).  A shell task I created was for server load, as a followup to my &lt;a href=&quot;http://life.mysiteonline.org/archives/183-iPhone-Server-Alerting-on-High-Load.html&quot;&gt;previous post&lt;/a&gt;.  In working this out, I&#039;ve modified the output for CakePHP&#039;s Shell::out() method so that it auto-wraps and indents a bit more nicely (my ticket in the LighthouseApp is &lt;a href=&quot;http://cakephp.lighthouseapp.com/projects/42648/tickets/274-enhancement-easier-auto-formatting-for-shell-output-patch-offered-awaiting-feedback&quot;&gt;here&lt;/a&gt;).  Time for some output examples:&lt;br /&gt;
&lt;br /&gt;
Issuing the Load Alert help call: &lt;tt&gt;cake prowl load_alert help&lt;/tt&gt;&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot; &gt;---------------------------------------------------------------
CakePHP Prowl Load Alert Console Task
Usage: cake prowl load_alert &lt;params values&gt; &lt;args&gt;
Description: This task tests the current server load and issues a Prowl message (if required) to the passed parameter list of Prowl APIs indicating the server load.
---------------------------------------------------------------
Parameters:
        -silent &lt;false&gt;

Commands:
        help
                Shows this help message.

Arguments:
        apikey
                Up to 5 comma separated Prowl API keys
&lt;/textarea&gt;&lt;br /&gt;
&lt;br /&gt;
Sending a message is as simple as: &lt;tt&gt;cake prowl msg [apikey]&lt;/tt&gt; ... it can get as advanced as &lt;tt&gt;cake prowl msg [apikey] [priority] [application] [event] [description]&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
The output for running the load alert command?&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot; &gt;Checking for high server load...
Server load: 4.81 5.25 6.44
Server is running with an acceptable load.&lt;/textarea&gt;&lt;br /&gt;
If it&#039;s above my arbitrarily set values, it&#039;ll send a different warning depending on the level to my Prowl-enabled device.  By sending a &quot;-silent 1&quot; parameter to the command message, output is disabled (perfect for cron).&lt;br /&gt;
&lt;br /&gt;
Please note that I don&#039;t have any styling for shell output (something I&#039;ll have to fix) so the pasted character spacing and newlines won&#039;t work as expected in my example output. 
    </content:encoded>

    <pubDate>Fri, 29 Jan 2010 19:48:36 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/185-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Creating an array of date time values via PHP</title>
    <link>http://life.mysiteonline.org/archives/179-Creating-an-array-of-date-time-values-via-PHP.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/179-Creating-an-array-of-date-time-values-via-PHP.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=179</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=179</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    I was working on my &lt;a href=&quot;http://life.mysiteonline.org/comment.php?type=trackback&amp;amp;entry_id=173&quot;&gt;Reference Statistics Tracker&lt;/a&gt; for work, and ran in to a snag.&lt;br /&gt;
&lt;br /&gt;
I am using eZ Components&#039; ezGraph class to create image-based graphs on the fly.  It&#039;s fast, efficient, and it looks nice - it can even render in SVG (I&#039;ll be using JPG or PNG...thanks IE).  For my particular needs, I wanted the exported dataset to have a specific formatting to the keys, to represent the different values in my graphs.  For instance, let&#039;s say I have the following stats from 100 users in our company, and the Operating System they use.  This is purely fictitious:&lt;pre&gt;array(&#039;Windows&#039; =&gt; 90, &#039;OSX&#039; =&gt; 6, &#039;Other&#039; =&gt; 4);&lt;/pre&gt;That specific array is crafted perfectly in the format that works well with eZ Components&#039; Graphing class, for a simple bar chart, or a pie chart.&lt;br /&gt;
&lt;br /&gt;
So now I just had to pull the values from the database in the format I wanted.  Well my keys in this case were dates, or times (span of days, or hours in a day, or month in a year, etc...).  The values were still numeric values in this case.  So, we&#039;re looking at something like: &lt;pre&gt;array(&#039;HH:MM:SS&#039; =&gt; 10);&lt;/pre&gt;However, no matter how hard I tried, if there were no values inserted in to the database for a specific time, I could not return a value of null, or zero - even with an outer join.  My next thought was to use something like array_merge() on the resulting dataset to fix it.&lt;br /&gt;
&lt;br /&gt;
The PHP function of range() just didn&#039;t cut it.  Although I could have converted the datetime values to timestamp values (either via SQL or PHP), and used the 3rd parameter of the function to add the specific number of seconds needed, I was weary of doing that as I remember reading about issues that could cause (adding seconds to a timestamp value calculate future time).  Besides, I&#039;d still have to use array_walk() or array_map() to format my array&#039;s keys the way I wanted; that left yet another function, and a line of code for the call to array_walk/map.  (My host does not yet have PHP 5.3.x, which will allow for lambda functions in array_map.)  So, I decided to create my own little function, and figured I&#039;d post it here in case (1)someone could use it and it&#039;d help them out, or (2)someone thinks there&#039;s a more efficient way of doing this and wants to give feedback.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot;&gt;&lt;?php
//$datetime_start - expects a strtotime compatible value
//$datetime_end - expects a strtotime compatible value
//$interval - can take either a strtotime compatible modifier (i.e.: -1 day), or an integer,
//	which will be perceived as total seconds and converted to a strtotime compatible modifier
//$format - the format of the key for the array&#039;s key/value pair (see php.net/date for formatting options)
//$value - the default value to be set for the blank array which will be used in a followup array_merge call.
function datetime_range($datetime_start, $datetime_stop, $interval, $format, $value = 0){
	if(is_int($interval)){
		$interval = $interval . &#039; seconds&#039;;
	}
	$range = array();
	$datetime_start = strtotime($datetime_start);
	$datetime_stop  = strtotime($datetime_stop);
	for($curTime = $datetime_start; $curTime &lt;= $datetime_stop; $curTime = strtotime(date(&#039;r&#039;, $curTime) . &#039; + &#039;.$interval)){
		$range[date($format, $curTime)] = $value;
	}
	return $range;
}

//TIME FOR AN EXAMPLE OF USAGE:
$myArray = array(&#039;10/01&#039; =&gt;3, &#039;10/04&#039; =&gt; 7, &#039;10/05&#039; =&gt; 4);
$default = datetime_range(&#039;2009-10-01 00:00:00&#039;, &#039;2009-10-05 00:00:00&#039;, &#039;1 day&#039;, &#039;m/d&#039;);
$myArray = array_merge($default, $myArray);
print_r($myArray);

/************ this would have printed ************
Array(
	[10/01] =&gt; 3
	[10/02] =&gt; 0
	[10/03] =&gt; 0
	[10/04] =&gt; 7
	[10/05] =&gt; 4
)
********************************************/
?&gt;&lt;/textarea&gt;&lt;br /&gt;
This could be useful for similar graphing/charting code, I don&#039;t think it&#039;s specific to eZ Components&#039;.  Perhaps it could be useful for something else that I can&#039;t think of.  Have fun with it. 
    </content:encoded>

    <pubDate>Thu, 22 Oct 2009 15:29:13 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/179-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Disable the Security Component in CakePHP only for Certain Actions</title>
    <link>http://life.mysiteonline.org/archives/175-Disable-the-Security-Component-in-CakePHP-only-for-Certain-Actions.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/175-Disable-the-Security-Component-in-CakePHP-only-for-Certain-Actions.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    As I&#039;m working on a desktop application that needs to connect to the database backend, and CakePHP provides an awesome mechanism for REST or AJAX communication (as well as data validation), I decided to have my desktop application talk directly through the Cake interface to do its magic.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, I was also using CakePHP&#039;s rather secure Security component to prevent XSS/CSRF attacks.  The problem is that because the desktop application was directly accessing the method with data and bypassing CakePHP&#039;s FormHelper automatically created (and Security Component friendly) rendered HTML, it was failing (and because it wouldn&#039;t even get to the action since the Security Component was set in the AppController, I couldn&#039;t even use $this-&gt;log($this, LOG_DEBUG) to see what was happening).&lt;br /&gt;
&lt;br /&gt;
After searching for a good 30 minutes or so, I came across &lt;a href=&quot;http://n2.nabble.com/how-to-disable-security-component-for-a-single-action-td682715.html&quot;&gt;this archived Google Group post&lt;/a&gt; by franky06l:&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot;&gt;if(isset($this-&gt;Security) &amp;&amp;amp; $this-&gt;action = &#039;myaction&#039;))
     $this-&gt;Security-&gt;enabled = false;&lt;/textarea&gt;I updated this to only be used in my specific controller&#039;s action, as so:&lt;br /&gt;
&lt;textarea name=&quot;code&quot; class=&quot;php&quot;&gt;function beforeFilter(){
	parent::beforeFilter();
	if(isset($this-&gt;Security) &amp;&amp;amp; $this-&gt;RequestHandler-&gt;isAjax() &amp;&amp;amp; $this-&gt;action = &#039;add&#039;){
 		$this-&gt;Security-&gt;enabled = false; 
	}
}&lt;/textarea&gt;Voila!  It now works as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Note:&lt;/strong&gt; One will need to be extra cautious when disabling the Security Component.  The Security Component takes care of a lot of issues for us automatically, by disabling it, you&#039;re opening yourself up to some possible troubles.  Extra precaution is recommended, and I relinquish myself from any use of the above code that may cause harm - use at your own peril (or absolute need)!  &lt;img src=&quot;http://life.mysiteonline.org/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Wed, 26 Aug 2009 12:58:35 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/175-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Outlook Web Access (Exchange) with PHP and cURL</title>
    <link>http://life.mysiteonline.org/archives/165-Outlook-Web-Access-Exchange-with-PHP-and-cURL.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/165-Outlook-Web-Access-Exchange-with-PHP-and-cURL.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=165</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=165</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    I needed a way to authenticate users from our library from a server &lt;em&gt;outside&lt;/em&gt; our network, and therefore also not connected to Active Directory.  At first I was thinking LDAP would be the best way...then I did my research and learned enough about LDAP to realize just how much information it gives out - WAY too much for it to be very secure.  Even if I used SSL, created an account specifically for this access, set that account to read only...all it would take would be one person to hack our server and grab that information and all our organization&#039;s data is out there.  Although it&#039;s about as much of a chance as getting hit by lightning in the middle of the desert in a sand storm, I wouldn&#039;t want to be responsible.&lt;br /&gt;
&lt;br /&gt;
The only server with any sort of external web presence that is also touching the internet is our Exchange server&#039;s web access portal.  I thought, &quot;Ah HA! I can use cURL, or streams, or fsockopen or something to fake a login to this page to verify authentication!&quot;  After searching a bit (I&#039;m terrible every time I attempt to write something using cURL to authenticate), I came across a few things.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Exchange Server 2007 uses SOAP to provide a web service...AWESOME!  We currently use 2003 though, but we will be upgrading later this year, so this may be helpful later on. &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa579187.aspx&quot;&gt;[Link]&lt;/a&gt;&lt;ol type=&quot;a&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.howtoforge.com/talking-soap-with-exchange&quot;&gt;HowToForge article on how to use PHP with 2007&#039;s SOAP Web Service&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;I found &lt;a href=&quot;http://cadmuslabs.net/index.php?entry=entry081230-075614&quot;&gt;this PHP script&lt;/a&gt; that I tested, which successfully contacted our OWA server and authenticated.&lt;/li&gt;&lt;li&gt;I also found a PHP class on &lt;a href=&quot;http://code.google.com/p/tylerhall/source/browse/trunk/outlook-web-access/owa.php&quot;&gt;Google Code&lt;/a&gt; from Tyler Hall - it&#039;s not any particular project repository, just miscellaneous code he&#039;s hosting.  It looks like it&#039;s slightly more feature rich, allowing info from address books and a user&#039;s inbox, for example.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
I only needed to authenticate our building, so thankfully we had our own subdomain (not sure of the proper terminology) in the AD...  If your domain was example.com (DC=example,DC=com), just getting OUR office (assume &quot;Office1&quot;) was as easy as defining office1.example.com (DC=office1,DC=example,DC=com) after the @ symbol in the user&#039;s username (typically unnecessary information with OWA, but adding it explicitly was important here).  It (seemingly) worked perfectly.&lt;br /&gt;
&lt;br /&gt;
If you plan on doing something similar, just make sure that you cache (and encrypt) username/password information locally, hitting the OWA page continuously would probably make your System (or Email) Administrators a little unhappy with you. 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 10:43:40 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/165-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Automatic Post Creation with Wordpress, PHP, and XML-RPC</title>
    <link>http://life.mysiteonline.org/archives/161-Automatic-Post-Creation-with-Wordpress,-PHP,-and-XML-RPC.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/161-Automatic-Post-Creation-with-Wordpress,-PHP,-and-XML-RPC.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=161</wfw:comment>

    <slash:comments>34</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=161</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    &lt;p&gt;So, for those of you who read my last blog post, you might notice that I was having issues with a script I wrote to create a new post in Wordpress when it came time to upgrade the Wordpress code.&amp;#160; The SQL internals were modified, and I was inserting directly in to the database (yes, I know, I broke a cardinal rule).&amp;#160; I needed an alternative way to insert information in to the database that would be much more future-proof.&amp;#160; I remembered about XML-RPC.&lt;/p&gt;  &lt;p&gt;It took me some time to find answers to questions I had about XML-RPC and the Wordpress’ API.&amp;#160; Wordpress comes with the ability to use XML-RPC, and AtomPub.&amp;#160; With regards to XML-RPC, it supports a few protocols:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;MetaWeblog &lt;/li&gt;    &lt;li&gt;Movable Type &lt;/li&gt;    &lt;li&gt;Blogger &lt;/li&gt;    &lt;li&gt;Wordpress’ own methods &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Since there was little written documentation as to how to do this, I thought I’d share my findings.&amp;#160; Also, although the Blogger API was very easy to figure out and use, I’m not going to cover it here mainly because it doesn’t support the creation of a title field – something for my purposes were required.&amp;#160; (To access the blogger API, I used &lt;a href=&quot;http://dentedreality.com.au/projects/phpbloggerapi/class/&quot;&gt;this class&lt;/a&gt;.)&amp;#160; I’m also only going to cover what’s necessary to create a new post for my own means, nothing more – hopefully it’ll get you on your way to how you’d like to use it.&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://life.mysiteonline.org/archives/161-Automatic-Post-Creation-with-Wordpress,-PHP,-and-XML-RPC.html#extended&quot;&gt;Continue reading &quot;Automatic Post Creation with Wordpress, PHP, and XML-RPC&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 11 Feb 2009 10:06:51 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/161-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>I18n and L10n in PHP</title>
    <link>http://life.mysiteonline.org/archives/142-I18n-and-L10n-in-PHP.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/142-I18n-and-L10n-in-PHP.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=142</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=142</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    There was recently a nice posting from PHPDeveloper.org linking to an article by Florian Eibeck, where on his blog he discusses some solutions to these extremely fun situations.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.thinkphp.de/archives/342-Multilingual-Websites-with-PHP.html&quot;&gt;http://blog.thinkphp.de/archives/342-Multilingual-Websites-with-PHP.html&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 15 Jul 2008 10:29:06 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/142-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>CakePHP Auth Component</title>
    <link>http://life.mysiteonline.org/archives/140-CakePHP-Auth-Component.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/140-CakePHP-Auth-Component.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    Disclaimer: These are primarily notes for myself as I get accustomed to CakePHP&#039;s (v1.2) authentication and ACL.  I&#039;ve been building a website and wanted to finally make use of CakePHP before I start using it for the library&#039;s CMS.  A CMS is a large undertaking and I don&#039;t want to go into it &quot;cold-turkey&quot;, so I came up with some side-project to help me understand the framework a bit better.  All in all, it truly is an &lt;em&gt;extremely&lt;/em&gt; rapid development tool.&lt;br /&gt;
&lt;br /&gt;
I decided not to go with ExpressionEngine or Drupal simply because I&#039;d still have to take time to learn those systems and make modules or extensions within those languages - and there&#039;s no guarantee I&#039;d be able to do what I&#039;d need to do with them.  If I build it myself, it would take just about the same amount of time with Cake.  Anyway, to continue... &lt;br /&gt;&lt;a href=&quot;http://life.mysiteonline.org/archives/140-CakePHP-Auth-Component.html#extended&quot;&gt;Continue reading &quot;CakePHP Auth Component&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 09 May 2008 08:21:02 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/140-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Extending the Wordpress Visual Editor</title>
    <link>http://life.mysiteonline.org/archives/96-Extending-the-Wordpress-Visual-Editor.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/96-Extending-the-Wordpress-Visual-Editor.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=96</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    Although I personally detest Wordpress, it does have its uses and the user-interface is well-constructed, making it much easier for non-technical users to use it.  Regardless, when it doesn&#039;t do &lt;em&gt;quite&lt;/em&gt; what you want it to do, extending it can sometimes be really easy (due to the massive number of plugins), or extremely difficult.  Most of the time, in my case (recently), it&#039;s the latter and not the former.&lt;br /&gt;
&lt;br /&gt;
I was recently given the task to import an unmodified XML dataset into a web-based tool as tabular data, HTML&#039;ified, and allow for visual editing of the information, and they wanted to use Wordpress.  I thought, &quot;Okay, that should be easy enough.&quot;  Well, okay, do I create a plugin to handle the import?  I don&#039;t really want to learn Wordpress hooks and programming functionality considering I hate the thing...no, I&#039;ll just import it directly into the database.  I used a diff tool to discover that creating a new draft entry only modifies three database tables anyway, that&#039;s easy enough.  Got that working, 1-2-3, lickity-split!&lt;br /&gt;
&lt;br /&gt;
But now, we need to let staff have access to modify the tabular data. &lt;br /&gt;&lt;a href=&quot;http://life.mysiteonline.org/archives/96-Extending-the-Wordpress-Visual-Editor.html#extended&quot;&gt;Continue reading &quot;Extending the Wordpress Visual Editor&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 15 Jun 2007 14:06:49 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/96-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>php|tek</title>
    <link>http://life.mysiteonline.org/archives/87-phptek.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/87-phptek.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=87</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    I sent in a support ticket to php|arch a short while ago inquiring about something related to my purchases, and was expecting someone from sales to get back to me, instead it seems that anything regarding the specific question I had is sent to the person in charge of the training, unnecessarily so in my opinion, but still...  Regardless, I got an email back from the trainer, Paul Reinheimer (aka, the really cool PHP guy), telling me how he&#039;s currently at php|tek, apologized for the slow response (due to the &lt;a href=&quot;http://hades.phparch.com/ceres/public/tek/&quot;&gt;php|tek&lt;/a&gt; conference, sponsored by php|architect, and php|arch being pretty low on in-office staffers)...he also said I should be there.&lt;br /&gt;
&lt;br /&gt;
I somewhat agree, even if I did have presentations and meetings of my own to attend which were pretty important.  Alas, I&#039;m now jealous.  There are always blogs buzzing over how great the conference was by other PHP developers once it&#039;s over.  Dancing, eating, prizes, drinking, socializing, networking, brainstorming, and all around geekiness (save the best for last).  The trials and tribulations of being &quot;broke&quot; and just starting out in a professional career.  Oh well, I do what I love, and love what I do, so I&#039;m still rich.  I can at least read about all the cool stuff going on!  &lt;img src=&quot;http://life.mysiteonline.org/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Fri, 18 May 2007 17:28:25 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/87-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>I had 5 minutes, and CakePHP.</title>
    <link>http://life.mysiteonline.org/archives/72-I-had-5-minutes,-and-CakePHP..html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/72-I-had-5-minutes,-and-CakePHP..html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=72</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=72</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    I had five minutes to do something before I decided that I wanted to watch a movie...I&#039;m now putting that off simply to report back on what I got out of my time.&lt;br /&gt;
&lt;br /&gt;
For the background information...I just discovered that the person traditionally in charge of handling my high school&#039;s class reunions, is out of the country and could probably care less over handling everything...so we need something up quick and dirty. &lt;br /&gt;&lt;a href=&quot;http://life.mysiteonline.org/archives/72-I-had-5-minutes,-and-CakePHP..html#extended&quot;&gt;Continue reading &quot;I had 5 minutes, and CakePHP.&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 01 Apr 2007 17:40:46 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/72-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Reflections with GD in PHP</title>
    <link>http://life.mysiteonline.org/archives/65-Reflections-with-GD-in-PHP.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/65-Reflections-with-GD-in-PHP.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=65</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=65</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    There are a ton of image libraries out there that do similar things, but if you simply need something to &lt;em&gt;only&lt;/em&gt; do image reflections with a small amount of extra features, Richard Davey&#039;s &lt;a href=&quot;http://reflection.corephp.co.uk/&quot;&gt;Easy Reflections&lt;/a&gt; fits the bill!  If you think you might need it, or simply want to read over other portions of &lt;a href=&quot;http://www.corephp.co.uk&quot;&gt;his blog&lt;/a&gt;, take a gander!  He may not post often, but when he does, the content is usually an interesting read.&lt;br /&gt;
&lt;br /&gt;
Update: I had the wrong URL to Richard&#039;s tool.  I&#039;ve just fixed that.  (Thanks for pointing that out, Richard!) 
    </content:encoded>

    <pubDate>Thu, 15 Mar 2007 07:17:14 -0700</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/65-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Unidentified PHP Bug</title>
    <link>http://life.mysiteonline.org/archives/62-Unidentified-PHP-Bug.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/62-Unidentified-PHP-Bug.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=62</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=62</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    Bug is known to be small, hides in corners and although is present everywhere, only makes itself known in odd circumstances.  It flitters about in the air just above you where you don&#039;t expect it during those circumstances.  At other times, it snuggles up in a corner, but is always present, waiting for the right opportunity.  Considered to be armed and dangerous, as well as mischievous.&lt;br /&gt;
&lt;br /&gt;
For the past year or so, I&#039;ve been either trying to figure out what&#039;s wrong with a script I wrote, or whether or not I should rewrite it from scratch, or if possible, how to save the thing with odd workarounds.  I thought, &quot;there&#039;s got to be something wrong with my code&quot;.  Every day after looking at it for hour after hour, not able to figure out what the cause of the problem was, I would think, &quot;There&#039;s got to be some sort of bug in PHP!!!&quot;...but when I&#039;d think that, I&#039;d try to do a search to find any other people who&#039;ve had similar circumstances.&lt;br /&gt;
&lt;br /&gt;
Well, poor coding practice (non-cached dynamic image) alongside some tricky $_SESSION management (and requirements) caused for some odd behavior.  Session data was getting dropped on certain pages for no good reason.  It worked fine up until a certain page and/or point.  I&#039;m not entirely sure what the error is caused by, but I do know that removing the dynamically created image stops the error and the session information continues to behave as would and should be expected.  If anyone&#039;s interested in tackling the identification of this bug, I&#039;d absolutely &lt;em&gt;&lt;strong&gt;love&lt;/strong&gt;&lt;/em&gt; some help, expert or otherwise.  Unfortunately, as of right now, I&#039;d have to share full code disclosure as I can&#039;t identify any smaller problem code than the full application with those certain settings turned on or off (as I &lt;em&gt;just&lt;/em&gt; found the error); so I&#039;ve really no idea what combination of code is required to recreate this error.  I also do not have any debugging software strong enough to show what the stack trace/dump would look like during execution of the problem page.&lt;br /&gt;
&lt;br /&gt;
...but man...  1+ year of being annoyed by this thing.  For a &lt;strong&gt;long&lt;/strong&gt; time, I thought it was the server configuration.  I was damned sure of it.  My test-bed development machine never rendered the dynamic image.  &lt;img src=&quot;http://life.mysiteonline.org/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 26 Feb 2007 18:56:11 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/62-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>CakePHP Manual</title>
    <link>http://life.mysiteonline.org/archives/55-CakePHP-Manual.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/55-CakePHP-Manual.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=55</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=55</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    So I started reading the CakePHP manual (after cheating and going through the example blog creation code, which is part of the manual).  I&#039;m learning it&#039;s much more powerful than I had originally thought.  Like I said, I &lt;em&gt;started&lt;/em&gt; reading the manual...then I realized just how long it was.&lt;br /&gt;
&lt;br /&gt;
I&#039;m now printing it out.  It&#039;s used up about 1/3 of a ream of paper...and this printer has a duplexer, so it&#039;s printing on the front and back of the pages.  The only complaint I have is that originally, the manual had chapter numbers, now the chapter sections use names only...unfortunately, the manual references chapters and chapter sections by the numerical association in some places.  I&#039;d also like a single PDF version of the whole thing (and that&#039;s saying a lot considering my hatred for PDFs).  Otherwise, the manual&#039;s written very well, and in an informal writing style.  Very easy to read.  Even though it says you won&#039;t need a knowledge of MVC - not having a short background education in it might get you pretty confused.&lt;br /&gt;
&lt;br /&gt;
Either way, it&#039;s my suggested reading for those of you looking for a framework.  If you don&#039;t decide on CakePHP, it might help you understand how the other frameworks (could possibly) work. 
    </content:encoded>

    <pubDate>Sat, 03 Feb 2007 11:08:22 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/55-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>
<item>
    <title>Best PHP Framework?</title>
    <link>http://life.mysiteonline.org/archives/54-Best-PHP-Framework.html</link>
            <category>PHP</category>
    
    <comments>http://life.mysiteonline.org/archives/54-Best-PHP-Framework.html#comments</comments>
    <wfw:comment>http://life.mysiteonline.org/wfwcomment.php?cid=54</wfw:comment>

    <slash:comments>16</slash:comments>
    <wfw:commentRss>http://life.mysiteonline.org/rss.php?version=2.0&amp;type=comments&amp;cid=54</wfw:commentRss>
    

    <author>nospam@example.com (Brendon Kozlowski)</author>
    <content:encoded>
    While I&#039;m waiting for my database export/import to finish here at work, I figure I&#039;d write about something I was thinking about late last night.&lt;br /&gt;
&lt;br /&gt;
I constantly find myself rewriting old code with slight &lt;em&gt;logic&lt;/em&gt; variations and taking too much time in doing so.  I keep thinking, &quot;If I make my functions general enough for all-purpose use, this won&#039;t happen,&quot; and yet it still does.  I know I need to adopt (or create) a framework for my PHP development if I want to be decently productive.  I&#039;ve been waiting for the Zend Framework to reach the v1.0 milestone, but... &lt;br /&gt;&lt;a href=&quot;http://life.mysiteonline.org/archives/54-Best-PHP-Framework.html#extended&quot;&gt;Continue reading &quot;Best PHP Framework?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 01 Feb 2007 12:30:20 -0800</pubDate>
    <guid isPermaLink="false">http://life.mysiteonline.org/archives/54-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
</item>

</channel>
</rss>