Community Documentation

Converting 4.1.x modules to 4.2.x

Last updated February 20, 2008. Created by ax on February 23, 2003.
Edited by webchick, sepeck, moshe weitzman. Log in to edit this page.

Some points posted by Axel on drupal-devel on migrating 4.1.0 modules to CVS [updated and added to by ax]:

  • the big "clean URL" patch: Over the weekend, [dries] bit the bullet and converted every single URL in Drupal's code. meaning we'll [can] have clean URLs like http://foo.com/archive/2003/01/06, http://foo.com/user/42, http://foo.com/blog, and so on.. meaning, for the code:
    • drupal_url(array("mod" => "search", "op" => "bla"), "module"[, $anchor = ""])
        became
      url("search/bla"),
        with the first url part being the module, the second (typically) being the operation ($op); more arguments are handled differently per module convention.
    • l("view node", array("op" => "view", "id" => $nid), "node"[, $anchor = "", $attributes = array()])
        became
      l("view node", "node/view/$nid"[,$attributes = array(), $query = NULL])
    •   similar,
      lm(), which meant "module link" and used to be module.php?mod=bla&op=blub..., is now l("title", "bla/blub/..."); and
      la(), which meant "admin link" and used to be admin.php?mod=bla&op=blub..., is now l("title", "admin/bla/blub/..."
    • After fixing those functions, you'll need to edit your _page() function and possibly others so that they get their arguments using the arg() function (see includes/common.inc. These arguments used to be globals called "mod", "op", "id" etc. now these same arguments must be accessed as arg(1), arg(3), for example.
  • $theme->function() became theme("function"). see [drupal-devel] renaming 2 functions, [drupal-devel] theme("function") vs $theme->function() and [drupal-devel] [CVS] theme()
  • <module>_conf_options() became <module>_settings() - see [drupal-devel] renaming 2 functions. note that doesn't get an extra menu entry, but
    is accessed via "site configuration > modules > modules settings"
  • the administration pages got changed quite a lot to use a "database driven link system" and become more logical/intuitive - see [drupal-devel] X-mas commit: administration pages. this first try resulted in poor performance and a not-so-good api, so it got refactored - see [PATCH] menus. this, as of time ax is writing this, isn't really satisfying, neither (you cannot build arbitrary menu-trees, some forms don't work (taxonomy > add term), ...), so it probably will change again. and i won't write more about this here.

    well, this: you use menu() to add entries to the admin menu. menu("admin/node/nodes/0", "new or updated posts", "node_admin", "help", 0); adds a menu entry "new or updated posts" 1 level below "post overview" (admin/node/nodes) and 2 level below "node management" (admin/node) (ie. at the 3. level), with a weight of 0 in the 3. level, with a line "help" below the main heading. for the callback ("node_admin") ... ask dries or zbynek

    one more note, though: you do not add <module>_settings() to the menu (they automatically go to "site configuration > modules > module settings" - you only add <module>_admin...() ... things.

  • [from comment_is_new function lost]
    -  comment_is_new($comment)
    +  node_is_new($comment->nid, $comment->timestamp)

please add / update / correct!

Archive

Drupal’s online documentation is © 2000-2013 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License. Comments on documentation pages are used to improve content and then deleted.
nobody click here