Drupal community also grown by leaps and bounds (many excellent modules)</li></li></ul><li>WHY DRUPAL 6?<br /><ul><li>Any Drupal version would have required a lot of work
Upgrade path in D4.7, D5, and D6 were equally large so to narrow down which to use…</li></ul>D4.7 - was older (security issues, better, and custom modules were needed)<br />D5 - had gained a lot of support from the community<br />D6 - number of enhancements:<br /><ul><li>Memory management
Theme registry (use theme devel module to figure out override theme calls/templates which was very useful)
Views and CCK (moreso CCK) were not necessary for our site at that time (Views would be helpful but main modules would still require lots of work)
Finally, we wanted to get ourselves familiar with D6 so the site upgrade was a good opportunity to see what it can do!</li></li></ul><li>BIG Q!<br />HOW DID WE UPGRADE THE SITE?<br />
UPGRADING SITE CONT’D<br />Strip Down:<br /><ul><li>Contributed modules and themes that is…
The old code was not going to work so you don’t want something enabled that might cause some funny behaviour
See how much change is necessary in the database from D4.6 to D6</li></ul>Upgrade the database<br /><ul><li>Upgrade from 4.6 to 4.7, then from 4.7 to 5, and finally from 5 to 6
Safest way to ensure core data is safely upgraded and accounted for</li></ul>Steps 1 & 2 took approximately 2 weeks to iron out other steps in process <br />
UPGRADING SITE CONT’D<br />Development:<br /><ul><li>Once data upgrades were completed gracefully (the ungraceful parts will be mentioned near the end)
See which modules can be used from d.o, what contributed modules needed to be upgraded, and which ones would be custom modules
Ongoing process as more modules were actively upgraded by rest of community
Started by upgrading / creating the smaller sets of modules
Modules that didn’t rely on the movie saving / creation.
Quick to create functionality that didn’t yet rely on look / feel.</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Old site:</li></ul>-about -abuse -bad words<br />-block -blog -cache exclusion<br />-extras -favourites -filter<br />-flexiblock -help -legal<br />-locale -menu -movie<br />-node -page -path<br />-rating -search -send to friend<br />-site stats -sponsor -statistics<br />-story -subscription -system<br />-telepicks -user -watchdog<br />-watchlist -taxonomy -phplist<br /><ul><li>Fairly small list but keep in mind D4.6 was unsupported & most of these weren’t available on Drupal.org
We had to customize, develop and maintain these ourselves</li></li></ul><li>UPGRADING SITE CONT’D<br />Converting smaller custom modules:<br /><ul><li>sendtoafriend
sponsor</li></li></ul><li>UPGRADING SITE CONT’D<br />Notable Improvements:<br /><ul><li>very easy for theme developer to override series of my un-designed templates
Easy to override core modules (override user module)
Adding AJAX (AHAH) functionality was simple (abuse module uses jquery and ahah for moderating content on site)
Use drupal_system_listing(directory_path) and drupal_parse_info_file($file) to create your own set of custom drupal files to parse for specific settings!</li></li></ul><li>UPGRADING SITE CONT’D<br />Contributed modules<br /><ul><li>Google analytics
Simplenews</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Influence of Drupal conference:
Midway through development timeline, attended Boston Drupal conference.
Attended a seminar on messaging and notification frameworks
Goal was to create module and api to get rid of the 100+ modules that provided bits and pieces of such functionality
Opted to use framework over building own large module to perform same functionality
Created module (comment_notifications) to email user when comment added to their node.
We were able to get back email news letter functionality through a module called simplenewsand ‘pretty’ emails via small modifications to the mimemail module (which has now been properly upgraded by the maintainer – need to upgrade our module)</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Using Form Alter Hook – userpoints_badges:
Userpoints has api and hooks to create additional rules on when to award points
Userbadges can award badges either to roles or to single user (though single user addition has to be either manually or through rules
Created a bridge module that alters user badges form
Contains extra field where you can specify minimum number of points to get badge (leave blank or 0 to discard check)</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Using form alter hook – node_css:
Needed functionality to provide extra css info for a particular node (so our ‘credits’ page could take on extra css rules)
Felt providing an ID for a given node was the easiest way to go.
Module allowed you to create a specific id for a given node (altered node form to add a css id)
With this could create additional design particular to one type of page or a series of pages with that particular id</li></li></ul><li>UPGRADING SITE CONT’D<br />Custom modules<br /><ul><li>Movie userpoints voting module:
Votingapi hook implements check to give movie a ‘crowd-pleaser’ status if it meets requirements in total ratings and average rating.
Awards extra userpoints to users on positive change in movie status
Vote as many times as a user wants during the contest (free-for-all)
View current tally of votes (or black out for regular users)
Refresh page with random set of contestants after vote (using ahah functionality)
Can choose if contest should be based around users or nodes and admins enter the uid/nid of the content they want as part of contest.
Module wasn’t around at time (currently versus and another module named contest have been contributed – came out around same time we finished work on this module)</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Modules for D6X:</li></ul>-abuse -watchlist -blog<br />-comment -contact -help<br />-locale -menu -path<br />-php filter -search -statistics<br />-taxonomy-update status -upload<br />-block -filter -node_css<br />-system -user -mime mail<br />-simplenews-simple mail -comment notification<br />-notifications -cache exclude -comments spam control<br />-googleanalytics -legal -login destination<br />-login toboggan -token-userpoints<br />-user points basic -user points-userpoints badges<br />-fivestar -voting API -contest<br />-favourite_node -movie -moviepicks<br />-movie pics voting user points -movie search -node css<br />-send to a friend -site statistics -sponsor<br />-messaging -user badges<br />
Don’t call contributed module functions from a theme (or atleast don’t call them unless you check the the particular module is enabled).</li></li></ul><li>UPGRADING SITE CONT’D<br /><ul><li>Things as they are now