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

<channel>
	<title>Bandos&#039; Arcade &#187; PHP</title>
	<atom:link href="http://www.nuwanbando.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nuwanbando.com</link>
	<description>&#34;It&#039;s not about how it is, but how I see it &#34; - Stranger Than Fiction</description>
	<lastBuildDate>Thu, 02 Feb 2012 08:52:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Few productive days in a dreamy vacation</title>
		<link>http://www.nuwanbando.com/2008/07/few-productive-days-in-a-dreamy-vacation/</link>
		<comments>http://www.nuwanbando.com/2008/07/few-productive-days-in-a-dreamy-vacation/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 14:14:40 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[About Me]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Designing & Development]]></category>

		<guid isPermaLink="false">http://www.nuwanbando.com/?p=86</guid>
		<description><![CDATA[Well, not hoping to write about my dreamy vacation, so will just tip off the few productive days. Yeah so i was doing some work for Archmage last few days, gave life to a dead project, played with joomla, wordpress and osCommerce. After much research and hacking me and few of my friends at Archmage [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F07%2Ffew-productive-days-in-a-dreamy-vacation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F07%2Ffew-productive-days-in-a-dreamy-vacation%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, not hoping to write about my dreamy vacation, so will just tip off the few productive days. <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Yeah so i was doing some work for <a href="http://www.archmage.lk" target="_blank">Archmage</a> last few days, gave life to a <a href="http://www.successlands.com">dead project</a>, played with <a href="http://www.joomla.org/" target="_blank">joomla</a>, <a href="http://wordpress.org" target="_blank">wordpress</a> and <a href="http://www.oscommerce.com/" target="_blank">osCommerce</a>.</p>
<p>After much research and hacking me and few of my friends at Archmage thought of using Joomla and WordPress as core CMSes for our web development tasks, to make the work more rapid and easy. So yeah am hacking and looking for plugins and modules that i can use on joomla. Since last two weeks i was working on a real estate project and an e-commerce one. i was looking for resources on them. so yeah if you are looking for something similar try <a href="http://www.eaimproved.eu/" target="_blank">Estate Agent Improved</a> for real estate and <a href="http://virtuemart.net/" target="_blank">Virtuemart</a> for E-Commerce. both are nicely made, Joomla plugins. With a little bit of customization they can be used like a charm.</p>
<p>OH and yeah today i gave a new look to my blog. <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  last night i updated to <span style="text-decoration: line-through;">WordPress 2.5.1 ( yeah I know FINALLY!! <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</span> <strong>Edit</strong>:<em> I updated it again today (16th June) to WP 2.6 <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em> .  Many thanks goes to <a href="http://blog.andrastudio.com/" target="_blank"><span class="headline-desc">Andrayogi</span></a> for a pretty neat template. Added some plugins, had some problems with the DIGG IT icon. My firebug started giving a javascript error &#8220;unterminated string literal&#8221; and finally found a fix.. well its simple just edit the plugin and add</p>
<p><code>digg_bodytext = '&lt;?php echo trim(preg_replace('/\s/', ' ', get_the_excerpt())); ?&gt;';</code></p>
<p>instead of</p>
<p><code>digg_bodytext = '&lt;?php get_the_excerpt(); ?&gt;';</code></p>
<p>That will fix the error. yeah so the site looks pretty neat. am sure many over the net uses this theme. even tried some different colors and combinations but thought this is the best combination so kept it in original.</p>
<p>Soo yeah will write some thing with more value soon.</p>
<p>cheers !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/07/few-productive-days-in-a-dreamy-vacation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Single Sign-On between Joomla (PHP) and a custom JSF / JSP login (JAVA)</title>
		<link>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/</link>
		<comments>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 15:08:15 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[TCP/UDP]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=72</guid>
		<description><![CDATA[Single sign-on (SSO) is a method of access control, that enables a user to authenticate once, and gain access to the resources of multiple software systems. Well in my case, the task i have given is to authenticate a user in a PHP and a JAVA (Web) system simultaneously. My PHP web application is the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fsingle-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2008%2F01%2Fsingle-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><strong>Single sign-on</strong> (SSO) is a method of access control, that enables a user to authenticate once, and gain access to the resources of multiple software systems. Well in my case, the task i have given is to authenticate a user in a PHP and a JAVA (Web) system simultaneously.</p>
<p>My PHP web application is the well known Joomla CMS, and my JAVA web application is based on JSF and custom built. After some thinking and research I found several resources which are worth reading (<a href="http://www.josso.org/" title="JOSSO" id="kv-6">JOSSO</a>, <a href="http://www.imprivata.com/onesign_sso" title="One Sign" id="vwpy">OneSign</a> ), but i couldn&#8217;t take any help from them, mostly those SSO frameworks are complex ( yeah <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I couldn&#8217;t understand ) and aimed on a general pourpose and most of them are not for free.</p>
<p>So yeah I thought of doing some Hack to joomla and also make some changes in my Java web app&#8217;s authentication method. After talking with some of my geeky Friends (<a href="http://www.sandaru1.com/" title="Sandaruwan" id="who9">Sandaruwan</a> and Anjana). I came up with two approaches. both are involved in handling the cookies manually up to certain extent.</p>
<p>The 1st approach is (Which i didn&#8217;t try and had to give up due to the reason that I am using JSF as the web application framework) to log-in to the Joomla site and after loged in to Joomla create a random named temp file in the server  (possibly in /home/secrets with 777) with the user-name  (if a valid log in) and set a cookie using set_cookie(&#8220;name&#8221;,$filename) and direct to a jsp page to do the java side authentication.</p>
<p>in this JSP, page read the secret file name from the cookie and read the file from the http server in-order to take the username of the loged-in user. By passing this to the authentication method of the java web app, the java side also can be authenticated.</p>
<p>yup it is pretty simple, but i had to give it up mainly because I use JSF. if I do the user authentication in the above way in the java side. I cannot add the user object to the FacesContext which will be used by my other java side components. so even though i log in. later on in other jsf pages my loged user cannot be found. (Shortly my java login process is not happening according to the JSF implementation procedures.) and secondly i had to give up this method because my Project manger didn&#8217;t like the idea of saving temp files in the server. <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So the Second and the method which i have implemented is, automating the Joomla log-in process by making an http request to the http server from my JSF backing bean. and set the PHP cookie manually via Http Servlet response.</p>
<p>before i explain this method more broadly i have to mention about two nice tools which helped me to monitor the http requests and response.<br />
<a href="http://ws.apache.org/commons/tcpmon/" title="Apache TCP Monitor" id="belg">Apache TCP Monitor</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/3829" title="Live Http headers (FireFox ad-on)" id="vem7">Live Http headers (FireFox ad-on)</a></p>
<p><strong><u>Architecture</u></strong></p>
<p><img src="http://docs.google.com/File?id=ddv87v2p_21dpsn2kwh" style="width: 365px; height: 245px" /></p>
<p><span style="font-weight: bold">Implementation</span></p>
<p>There are two different scenarios.<br />
1. User can visit teh home page of the joomla site 1st and the PHP Cookie is already set.<br />
2. User visit the Java site PHP Cookie is not available.</p>
<p><span id="more-72"></span><span style="font-weight: bold"></span></p>
<p>Since anyhow we are using the java login form for the username and password in put. the Signing in for both sites will be done from the java side. (If its the PHP side same problem with the JSF session)</p>
<p>I created a link in the joomla home to the JSF login form. and made the joomla login form invisible to the user.</p>
<pre id="line123">&lt;<span class="start-tag">form</span><span class="attribute-name"> action</span>=<span class="attribute-value">"/joomla/index.php" </span><span class="attribute-name">method</span>=<span class="attribute-value">"post" </span><span class="attribute-name">name</span>=<span class="attribute-value">"login" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">					id</span>=<span class="attribute-value">"form-login" </span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"option" </span><span class="attribute-name">value</span>=<span class="attribute-value">"com_user" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"task" </span><span class="attribute-name">value</span>=<span class="attribute-value">"login" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"return" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">		value</span>=<span class="attribute-value">"aHR0cDovL2xvY2FsaG9zdC9qb29tbGEvaW5kZXgucGhw" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
    &lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name"></span></pre>
<pre id="line123"><span class="attribute-name">		name</span>=<span class="attribute-value">"4c8b847e06d9cfc211c7c0547d8b0e82" </span><span class="attribute-name">value</span>=<span class="attribute-value">"1" </span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;/<span class="end-tag">form</span>&gt;</pre>
<p>I removed the input text fields for username and password but kept the four hidden fields as shown above. it is very important to keep these hidden fields hence, when login, joomla is checking for these randomly generated (generated in the server and dynamically added to the form) values. to remove the visible input text fields you have to hack in to thejoomla template.<br />
Now there is no login form in the Joomla home (not invisible). Once you click the Login Link the user will be forward to a java (JSF) login form and asked to insert the username and password. these values are taken in to the Backing bean (Normal JSF procedure). and make the JAVA side authentication.</p>
<p>If the user is authenticated, what you have to do is make two UrlConnection to the HTTP server in order to authenticate Joomla. the 1st UrlConnection is to read the main page (or the page where joomla has its dynamically generated Login form)</p>
<p>you have to read four hidden fields in the form and take them to variables and create a request string, and make the 2nd request to the same page (Due to Joomla&#8217;s design pattern). you should not forget to send the cookie that you received with the 1st request. Once you did this you are authenticated in thephp side too. The next step is adding the cookie to the HttpServletResponce. (Make sure u set the path of the cookie.. I had to debug for hours forgetting that part <img src='http://www.nuwanbando.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>The above mentioned is the 1st scenario if there are no cookies in the client side (if the user haven&#8217;t requested the home page ofjoomla). the 2nd scenario is if the user has a cookie, then when ur making the request u have to get the cookies from the HttpServletRequest and append it to the request header. Simply what you have to do is get all the cookies and append them. the rest of it is same.</p>
<p>So that&#8217;s it.. you&#8217;re authenticated in both web apps. With the post i will attach the Java Source code i used to do this task.</p>
<p><a href="http://nuwanbando.com/wp-content/uploads/2008/01/authjoomla.zip" title="Joomla Auth Source Code">Joomla Auth Source Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2008/01/single-sign-on-between-joomla-php-and-a-custom-jsf-jsp-login-java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JEvents Hack &#8211; Integrating JEvents with Google calender</title>
		<link>http://www.nuwanbando.com/2007/10/jevents-hack-integrating-jevents-with-google-calender/</link>
		<comments>http://www.nuwanbando.com/2007/10/jevents-hack-integrating-jevents-with-google-calender/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 09:12:49 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Designing & Development]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=64</guid>
		<description><![CDATA[As i promised today I got some time to write about some PHP programming i did few weeks ago. I had to integrate Google calender with the Sensoria web site, so that the events published in the sensoria site will be automatically published in Sensoria&#8217;s public Google calender. Sensoria Site is created using a famous [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2007%2F10%2Fjevents-hack-integrating-jevents-with-google-calender%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2007%2F10%2Fjevents-hack-integrating-jevents-with-google-calender%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As i promised today I got some time to write about some PHP programming i did few weeks ago. I had to integrate Google calender with the <a href="http://www.sensoria-ist.eu/">Sensoria</a> web site, so that the events published in the sensoria site will be automatically published in Sensoria&#8217;s public Google calender.</p>
<p>Sensoria Site is created using a famous CMS called <a href="http://www.mamboserver.com/">Mamb</a><a href="http://www.mamboserver.com/">o</a>, in Mambo one can install plug-ins for many usage for the customized site they are creating. In this case Sensoria was using Mambo Events Component or now available to download as JEvents in Joomla CMS.</p>
<p>What I did was a small code hack in the eventmanager.php file in com_eventmanager folder in the components directory of Mambo. Its was a pretty easy task, but i had problems while testing. I was behind a proxy and the Zend framework gave a huge trouble when connecting to Google Via an HTTPS connection. After some descutions on <a href="http://groups.google.com/group/google-calendar-help-dataapi/browse_thread/thread/725f73252e76851c">Google calender forums</a>.. I found out that it is a bug in the Zend Farmework (Which i could not find a solution and didn&#8217;t bother or had time to spend on fixing it). So i had to test it in a live server.</p>
<p>Any how now its all working.. I will publish the code out here.. so anyone who wants to do the same.. please feel free to use it..</p>
<p><a href="http://nuwanbando.com/wp-content/uploads/2007/10/eventmanager.zip" title="eventmanager.php">eventmanager.php</a></p>
<p>cheers !!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2007/10/jevents-hack-integrating-jevents-with-google-calender/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umbrello &#8211; UML Modeller for Linux</title>
		<link>http://www.nuwanbando.com/2007/02/umbrello-uml-modeller-for-linux/</link>
		<comments>http://www.nuwanbando.com/2007/02/umbrello-uml-modeller-for-linux/#comments</comments>
		<pubDate>Thu, 15 Feb 2007 16:53:55 +0000</pubDate>
		<dc:creator>Nuwan Bandara</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://nuwanbando.com/?p=15</guid>
		<description><![CDATA[Since I haven&#8217;t used or haven&#8217;t heard that &#8220;Rational rose&#8221; working on LINUX (on WINE) and of cause for modeling purposes I had to switch to Windows making a headache, I was searching a solution or more likely an alternative within Linux. I was just peeping in the add/remove menu and under the programming category, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.nuwanbando.com%2F2007%2F02%2Fumbrello-uml-modeller-for-linux%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.nuwanbando.com%2F2007%2F02%2Fumbrello-uml-modeller-for-linux%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<style type="text/css">-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } 	--> 	</style>
<p align="justify">Since I haven&#8217;t used or haven&#8217;t heard that <em>&#8220;Rational rose&#8221; </em>working on LINUX <em>(on WINE) </em>and of cause for modeling purposes I had to switch to Windows making a headache, I was searching a solution or more likely an alternative within Linux. I was just peeping in the <em>add/remove</em> menu and under the programming category, I found two modeling softwares for Linux. one which failed to install (<em>Gaphor</em>) and the one which i installed (Umbrello 1.5.5).</p>
<p align="justify" style="margin-bottom: 0in">What made me surprised is that this software almost had all the functionality that was there in &#8220;<em>Rational rose</em>&#8221; sometimes even more. the software is very much easy to use. simple and well featured.</p>
<p align="justify" style="margin-bottom: 0in">The software supports forward Engineering as well as Reverse Engineering, meaning when the Model is designed the code structure can be created and vice versa (supporting 12 different programming languages).</p>
<p align="justify" style="margin-bottom: 0in">Anyhow I would like to say that Umbrello brings an easy approach for UML modelling.</p>
<p align="justify" style="margin-bottom: 0in">
]]></content:encoded>
			<wfw:commentRss>http://www.nuwanbando.com/2007/02/umbrello-uml-modeller-for-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

