{ Don't Repeat Yourself ! }

Has your facebook LIKE button suddenly disappeared from your website, even though you didn’t make any code changes?

It surely disappeared on my page over night and after a quick look at the javascript error log, I found this error in the script: e.root is undefined

After a bit of googling I found a solution:

just before the div that contains the facebook javascript add another div with the id “fb-root” like so:

<div id=”fb-root”></div>
 <div class=”facebook-button” >
 <script src=”″></script>
 <fb:like show_faces=”false” width=”200″ font=””></fb:like>

and … working again !

This component is now finally available for Joomla 2.5 and Joomla 3.

I have gotten a bit frustrated with the Joomla reset password functions.
In Joomla 1.5 there was a horrendous invalid token bug. And in Joomla 3.2 the reset password function is broken altogether.

Besides that, I never really liked that users had to copy and paste the token manually.

Out of  this frustration I created a new component that handles the reset password process. There is also a plugin that needs to be activated.

When the plugin is activated, it attempts to replace the Joomla default forgot password link with a link to this component.

This was mainly written for my own Joomla websites but I decided to provide it as a free download in the hope that it might be useful for others as well.

Available languages files:

Polish by Piotr Gąsiorowski
German by Urs Brülhart
Finnish by Anne Mattila
Greek by Christopher Valmas
Spanish by Manuel Gonzalez
Italian by Marco Maiella
French and Dutch Translation by Irina Malinovskaia
Portuguese by Fernando Andrade


Joomla 2.5 and 3

Download Package

Joomla 1.5

Download Component
Download Plugin

If you find the component useful, please consider making a donation to support the development and maintenance. Thanks

The development of this component started out of the need to consolidate different RSS Sources into one feed that is ordered by publishing date.

This comes in handy if you have different components on your site with each of them generating its own RSS Feed and you want to provide a “global” feed to keep your users in the loop.

The source feeds are not limited to feeds on your site  - you can wire up and mix feeds from any site you like.
You could then run this feed through feedburner and let users subscribe per email for example.

Feeds are processed with the simplepie library that is included in Joomla.

Download the component:  RSSConsolidation for Joomla

I’ve been using the Kunena Forum on a few of my websites and the greatest problem is spam. Once the site is well established spammers will come and make your life miserable.
So usually that means switching to an moderated forum or risking having spam on your site until you had time to review each post.
If you decide for a moderated forum you might loose users because it might take some time until you had a chance to approve posts.

The solution:
One pretty much simple rule is that after a legitimate user successfully posted the first post his following posts will most likely not be spam either.
So all really needed is to approve the very first message a user posts to a forum and then have an automated process that will
approve all following messages of this user.

This Kunena Auto Moderation Plugin will handle this simple task. After a new message was posted it will check if the user has any previous approved messages and if yes it will automatically approve the new message and send an email notification to the forum moderators.

This is the first release and I might add more features to control spam in the next version.

Download the plugin: Kunena Auto Moderation Plugin

amfphp 1.9 annoyance

No comments

I love amfphp but here is one thing that has been annoying me for almost a year now since the release of amfphp 1.9 final.
Whenever I download amfphp for a new project and import it into PHP Eclipse I have to fix this little error first.

Obviously the current amfphp developers aren’t using eclipse.

Since Joomla 1.5.19 mootools 1.2 is included but no enabled by default.
To include and use mootools 1.2 instead of 1.1 with this code:  JHTML::_(‘behavior.mootools’) ,
mootools need to be enabled in the plugin manager first.

I recently had to install a piece of new software on an older debian etch system.
Debian removed the distribution from its main update servers and aptitude or apt-get wouldn’t work anymore.

I could have upgraded the system to the latest debian stable version through an dist-upgrade.
But following the rule to never touch a running system I decided not to. It could have taken quite some time and possibly resulted in a crashed server.

Fortunately it is possible to still access old debian distribution files through the debian archive.

All that is required is to change the apt-sources file and replace lines like this one:

deb etch main contrib


deb etch main contrib

now the package manager will work again and you can safe yourself a dist upgrade for some quieter time.

When using Apache-SSL Certificates you typically have to create a password when initially setting up the certificates on your server.
Unfortunately after configuring apache to use the certificate it will promt you for the password each time it starts.
This means your webserver will not run if the system reboots automatically without you having to log in and start it with the password manually.

Luckily there is an easy way to remove the password from a ssl key.

Just find your key and use this command to create a new key without password:

sudo openssl rsa -in mysslkey.key -out mysslkeynopassword.key

Then change your apache configuration to use mysslkeynopassword.key instead of the one with password and apache will start automatically again.

Obviously there is a security risk involved. So make sure no evil gets access to your new mysslkeynopassword.key file.

Lets say you want to call a remote function with Flex’s RemoteObject and in the Response Handler you wish to access some of the variables you used in your calling function. You could use class variables so that they are available in your Response Handler. But thats not always the preferred way.

Another option that I like to use is to define the response handler in your calling Method as a closure. That way you will have access to all variables that are in the scope of the calling method in your handler function.

Here is an example on how to achieve this:

public function callRemoteMethod( myvar:String ):void {

myRemoteObject.myRemoteFunction( myvar ).addResponder(

new ItemResponder(

function(re:ResultEvent, a:AsyncToken ):void {

//the resonder has access to myar

trace(myvar ) ; trace(re.result) ;


function(f:FaultEvent, a:AsyncToken):void {‘An Error occurred’) ;



) ;


In case you’re trying to make the hand cursor appear when hovering over a link and you had no success using cursor: hand, try this rule instead:

a { cursor: pointer ; }
This should work in all browsers.

Get Adobe Flash player