Migrating WordPress Plugins to Drupal Modules - Earth Hour

Submitted by mgifford on

It was Friday afternoon and went over to search for terms on Twitter that I like to keep an eye on when I ran into a post from @haggaret. It was a call to convert an Earth Hour WordPress Plugin over to Drupal.  Now I'm very aware of environmental issues, but there are 8765 (or so) other hours in the year to worry about, so what's the big deal about this one.  I'm still not sure, but in solidarity I decided to check it out and see when it was, unfortunately it was 8 days later on the last Saturday of March. 

But really, how hard could it be?  A bit of CSS, tad of javascript, and heck, most of the logic had already been figured out for WordPress.  It was a bit more difficult than it seemed at first, but never-the-less, by the time there was one week remaining until the Earth Hour countdown of 8:30-9:30pm on March 28th, 2009, I had a working module for Drupal. 

Was interesting to see how this spread through the Twitosphere, getting a few folks trying out the code within a few hours of providing a download able version.  I had a less functional version the previous evening that I posted to pastbin, but didn't get any feedback on.  I had thought it would be neat to get some spontaneous collaboration around improving this module if the right people were watching.

I don't have any prior experience with WordPress conversions, but it was interesting to get a look at the code and compare.  WordPress uses the Snoopy library and I couldn't find an easy equivalent in Drupal, so just pulled off a parsing tool from php.net.  There must be an equivalent library to pull from in Drupal, but didn't find it.

So much of these systems is learning the shortcuts that have been implemented.  I'm still not sure what '__' is supposed to mean in code like:

echo __( "Visit the Earth Hour Website", "earth-hour" ); 

It's interesting too also understand how when you are emulating someone else's work that it is easy to just adopt their assumptions. I'm still not sure why the WordPress Plugin sent site names over to the server in md5(). Certainly there are places where you would want that security, but if you are making a public statement, not sure it's a useful security measure.

Having dug into this over the weekend, I'm much more likely to attempt to migrate some other good WordPress Plugins.  There is certainly a lot to be learned from this type of review.

I will be extending the module and looking to generalize this type of module for other campaigns.  Since I was a bit late to get working on it (and there are only 5 days left before Earth Hour), I put in some code to ensure that I was able to pull up the right day every year:

<?php
$year 
date('Y');
$last_day_of_march date('D'strtotime(date("$year-3-31"))); 
$days_array = array('Mon' => -2'Tue' => -3'Wed' => -4'Thu' => -5'Fri' => -6'Sat' => 0'Sun' => -1);
$last_sat_of_march = (31 $days_array[$last_day_of_march]);
$earth_hour_start_time  gmmktime(203003$last_sat_of_march$year);
?>

In anycase, if you've got ideas for campaign modules like this, please let me know. It's all about raising awareness and changing behaviours after all. And if you've got a Drupal site, please consider installing the Earth Hour Module.

Section: 

Code: 

Comments

Earth Hour

Thanks for thsi. We're looking to support Earth Hour in bigger and better way and this will help us with our environmental aims that we have on and off line. Thanks once more.

Help

Nice! but is there a way to get a tut how to migrate wordpress plugin to drupal module?? specificly Yslider?

WordPress to Drupal

I don't know of any easy way to migrate WordPress plugins to Drupal modules.  I took a quick look at Yslider though and there are already modules that do very similar things in Drupal 7. It's usually a matter of looking at the functions & pulling out what is unique from the codebase you want to migrate.  Only a small portion of the PHP will be re-usable, but the ideas, CSS & javascript will be more transferable. 

Mike

Add new comment