Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.769
diff -u -r1.769 common.inc
--- includes/common.inc	26 May 2008 17:12:54 -0000	1.769
+++ includes/common.inc	30 May 2008 04:21:32 -0000
@@ -3404,62 +3404,23 @@
  */
 function drupal_parse_info_file($filename) {
   $info = array();
-
-  if (!file_exists($filename)) {
-    return $info;
-  }
-
-  $data = file_get_contents($filename);
-  if (preg_match_all('
-    @^\s*                           # Start at the beginning of a line, ignoring leading whitespace
-    ((?:
-      [^=;\[\]]|                    # Key names cannot contain equal signs, semi-colons or square brackets,
-      \[[^\[\]]*\]                  # unless they are balanced and not nested
-    )+?)
-    \s*=\s*                         # Key/value pairs are separated by equal signs (ignoring white-space)
-    (?:
-      ("(?:[^"]|(?<=\\\\)")*")|     # Double-quoted string, which may contain slash-escaped quotes/slashes
-      (\'(?:[^\']|(?<=\\\\)\')*\')| # Single-quoted string, which may contain slash-escaped quotes/slashes
-      ([^\r\n]*?)                   # Non-quoted string
-    )\s*$                           # Stop at the next end of a line, ignoring trailing whitespace
-    @msx', $data, $matches, PREG_SET_ORDER)) {
-    foreach ($matches as $match) {
-      // Fetch the key and value string
-      $i = 0;
-      foreach (array('key', 'value1', 'value2', 'value3') as $var) {
-        $$var = isset($match[++$i]) ? $match[$i] : '';
-      }
-      $value = stripslashes(substr($value1, 1, -1)) . stripslashes(substr($value2, 1, -1)) . $value3;
-
-      // Parse array syntax
-      $keys = preg_split('/\]?\[/', rtrim($key, ']'));
-      $last = array_pop($keys);
-      $parent = &$info;
-
-      // Create nested arrays
-      foreach ($keys as $key) {
-        if ($key == '') {
-          $key = count($parent);
-        }
-        if (!isset($parent[$key]) || !is_array($parent[$key])) {
-          $parent[$key] = array();
-        }
-        $parent = &$parent[$key];
-      }
-
-      // Handle PHP constants
-      if (defined($value)) {
-        $value = constant($value);
-      }
-
-      // Insert actual value
-      if ($last == '') {
-        $last = count($parent);
-      }
-      $parent[$last] = $value;
+  if (file_exists($filename)) {
+    $old_classes = get_declared_classes();
+    require_once $filename;
+    $new_classes = get_declared_classes();
+    $diff = array_diff($new_classes, $old_classes);
+    // In the case that there is more than one class in the .info file, we should
+    // assume that the information class is the last one in the file, since other
+    // classes there would exist only for the purpose of being extended by or for
+    // being depended upon by the information class itself.
+    $name = array_pop($diff);
+    if (!empty($name)) {
+      $object = new $name();
+      $info = $object->info();
     }
   }
-
+  // Allow modules to hook into other module's or theme's information.
+  drupal_alter('info', $info, isset($info['type']) ?  $info['type'] : '', basename($filename, '.info'), isset($object) ? $object : NULL);
   return $info;
 }
 
Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.120
diff -u -r1.120 module.inc
--- includes/module.inc	13 May 2008 17:38:42 -0000	1.120
+++ includes/module.inc	30 May 2008 04:23:54 -0000
@@ -488,8 +488,95 @@
  */
 
 /**
+ * @defgroup info Info
+ * @{
+ * This is the base class for all information classes.
+ */
+abstract class DrupalInfo {
+  /**
+   * This function returns information about this module. Most modules will not
+   * need to override this function; instead, in order to alter the information
+   * they can override $this->name, $this->description, and/or $this->group. In
+   * addition, arbitrary keys can be added as well.
+   *
+   * @return
+   *   An array of all information about this module.
+   */
+  public function info() {
+    // Just convert it to an array so all visible properties are returned.
+    $return = array();
+    foreach ($this as $key => $value) {
+      $return[$key] = $value;
+    }
+    return $return;
+  }
+
+  /**
+   * We also need a function which sets specific information properties because
+   * hook_info_alter() needs a way to override variables.
+   */
+  public function set($name, $value) {
+    $this->$name = $value;
+  }
+}
+
+/**
+ * This is the base class for all module information classes.
+ */
+abstract class Module extends DrupalInfo {
+  public $type = 'module';
+}
+
+/**
+ * This is the base class for all theme information classes.
+ */
+abstract class Theme extends DrupalInfo {
+  public $type = 'theme';
+}
+
+/**
+ * This class is an extension of the base class Module that can be used for all
+ * Drupal core modules.
+ */
+abstract class CoreModule extends Module {
+  protected $version = VERSION;
+  // Core is always compaitble with itself.
+  protected $core = DRUPAL_CORE_COMPATIBILITY;
+}
+
+/**
+ * This class is an extension of the base class Theme that can be used for each
+ * Drupal core theme.
+ */
+abstract class CoreTheme extends Theme {
+  protected $version = VERSION;
+  // Core is always compaitble with itself.
+  protected $core = DRUPAL_CORE_COMPATIBILITY;
+}
+
+/**
+ * This class is an extension of the base class Module that can be used for all
+ * optional Drupal core modules.
+ */
+abstract class OptionalCoreModule extends CoreModule {
+  protected $package = 'Core - optional';
+}
+
+/**
+ * This class is an extension of the base class Module that can be used for all
+ * required Drupal core modules.
+ */
+abstract class RequiredCoreModule extends CoreModule {
+  protected $package = 'Core - required';
+}
+
+/**
+ * @} End of "defgroup info".
+ */
+
+/**
  * Array of modules required by core.
  */
 function drupal_required_modules() {
   return array('block', 'filter', 'node', 'system', 'user');
-}
+}
\ No newline at end of file
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.424
diff -u -r1.424 theme.inc
--- includes/theme.inc	26 May 2008 17:12:54 -0000	1.424
+++ includes/theme.inc	30 May 2008 04:07:34 -0000
@@ -462,8 +462,8 @@
       if (isset($theme->info['engine'])) {
         $theme->engine = $theme->info['engine'];
       }
-      if (isset($theme->info['base theme'])) {
-        $theme->base_theme = $theme->info['base theme'];
+      if (isset($theme->info['base_theme'])) {
+        $theme->base_theme = $theme->info['base_theme'];
       }
       // Status is normally retrieved from the database. Add zero values when
       // read from the installation directory to prevent notices.
Index: modules/aggregator/aggregator.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.info,v
retrieving revision 1.7
diff -u -r1.7 aggregator.info
--- modules/aggregator/aggregator.info	15 May 2008 21:27:32 -0000	1.7
+++ modules/aggregator/aggregator.info	30 May 2008 02:30:48 -0000
@@ -1,10 +1,12 @@
-; $Id: aggregator.info,v 1.7 2008/05/15 21:27:32 dries Exp $
+<?php
+// $Id$
 
-name = Aggregator
-description = "Aggregates syndicated content (RSS, RDF, and Atom feeds)."
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = aggregator.module
-files[] = aggregator.admin.inc
-files[] = aggregator.pages.inc
+class Aggregator extends OptionalCoreModule {
+  protected $name = 'Aggregator';
+  protected $description = 'Aggregates syndicated content (RSS, RDF, and Atom feeds).';
+  protected $files = array(
+    'aggregator.module',
+    'aggregator.admin.inc',
+    'aggregator.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/block/block.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.info,v
retrieving revision 1.7
diff -u -r1.7 block.info
--- modules/block/block.info	15 May 2008 21:30:02 -0000	1.7
+++ modules/block/block.info	30 May 2008 03:40:32 -0000
@@ -1,9 +1,11 @@
-; $Id: block.info,v 1.7 2008/05/15 21:30:02 dries Exp $
+<?php
+// $Id$
 
-name = Block
-description = Controls the boxes that are displayed around the main content.
-package = Core - required
-version = VERSION
-core = 7.x
-files[] = block.module
-files[] = block.admin.inc
+class Block extends RequiredCoreModule {
+  protected $name = 'Block';
+  protected $description = 'Controls the boxes that are displayed around the main content.';
+  protected $files = array(
+    'block.module',
+    'block.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/blog/blog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.info,v
retrieving revision 1.8
diff -u -r1.8 blog.info
--- modules/blog/blog.info	13 May 2008 18:15:07 -0000	1.8
+++ modules/blog/blog.info	30 May 2008 02:42:57 -0000
@@ -1,9 +1,11 @@
-; $Id: blog.info,v 1.8 2008/05/13 18:15:07 dries Exp $
+<?php
+// $Id$
 
-name = Blog
-description = Enables keeping easily and regularly updated user web pages or blogs.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = blog.module
-files[] = blog.pages.inc
+class Blog extends OptionalCoreModule {
+  protected $name = 'Blog';
+  protected $description = 'Enables keeping easily and regularly updated user web pages or blogs.';
+  protected $files = array(
+    'blog.module',
+    'blog.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/blogapi/blogapi.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.info,v
retrieving revision 1.7
diff -u -r1.7 blogapi.info
--- modules/blogapi/blogapi.info	13 May 2008 18:13:43 -0000	1.7
+++ modules/blogapi/blogapi.info	30 May 2008 02:43:57 -0000
@@ -1,8 +1,10 @@
-; $Id: blogapi.info,v 1.7 2008/05/13 18:13:43 dries Exp $
+<?php
+// $Id$
 
-name = Blog API
-description = Allows users to post content using applications that support XML-RPC blog APIs.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = blogapi.module
+class BlogApi extends OptionalCoreModule {
+  protected $name = 'Blog API';
+  protected $description = 'Allows users to post content using applications that support XML-RPC blog APIs.';
+  protected $files = array(
+    'blogapi.module',
+  );
+}
\ No newline at end of file
Index: modules/book/book.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.info,v
retrieving revision 1.8
diff -u -r1.8 book.info
--- modules/book/book.info	15 May 2008 21:19:24 -0000	1.8
+++ modules/book/book.info	30 May 2008 02:49:19 -0000
@@ -1,10 +1,12 @@
-; $Id: book.info,v 1.8 2008/05/15 21:19:24 dries Exp $
+<?php
+// $Id$
 
-name = Book
-description = Allows users to structure site pages in a hierarchy or outline.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = book.module
-files[] = book.admin.inc
-files[] = book.pages.inc
+class Book extends OptionalCoreModule {
+  protected $name = 'Book';
+  protected $description = 'Allows users to structure site pages in a hierarchy or outline.';
+  protected $files = array(
+    'book.module',
+    'book.admin.inc',
+    'book.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/color/color.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.info,v
retrieving revision 1.7
diff -u -r1.7 color.info
--- modules/color/color.info	19 May 2008 19:36:41 -0000	1.7
+++ modules/color/color.info	30 May 2008 03:05:02 -0000
@@ -1,8 +1,10 @@
-; $Id: color.info,v 1.7 2008/05/19 19:36:41 dries Exp $
+<?php
+// $Id$
 
-name = Color
-description = Allows administrators to change the color scheme of compatible themes.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = color.module
+class Color extends OptionalCoreModule {
+  protected $name = 'Color';
+  protected $description = 'Allows administrators to change the color scheme of compatible themes.';
+  protected $files = array(
+    'color.module',
+  );
+}
\ No newline at end of file
Index: modules/comment/comment.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.info,v
retrieving revision 1.7
diff -u -r1.7 comment.info
--- modules/comment/comment.info	14 May 2008 13:12:40 -0000	1.7
+++ modules/comment/comment.info	30 May 2008 03:06:41 -0000
@@ -1,10 +1,12 @@
-; $Id: comment.info,v 1.7 2008/05/14 13:12:40 dries Exp $
+<?php
+// $Id$
 
-name = Comment
-description = Allows users to comment on and discuss published content.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = comment.module
-files[] = comment.admin.inc
-files[] = comment.pages.inc
+class Comment extends OptionalCoreModule {
+  protected $name = 'Comment';
+  protected $description = 'Allows users to comment on and discuss published content.';
+  protected $files = array(
+    'comment.module',
+    'comment.admin.inc',
+    'comment.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/contact/contact.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.info,v
retrieving revision 1.6
diff -u -r1.6 contact.info
--- modules/contact/contact.info	6 May 2008 12:18:47 -0000	1.6
+++ modules/contact/contact.info	30 May 2008 03:07:14 -0000
@@ -1,9 +1,12 @@
-; $Id: contact.info,v 1.6 2008/05/06 12:18:47 dries Exp $
-name = Contact
-description = Enables the use of both personal and site-wide contact forms.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = contact.module
-files[] = contact.admin.inc
-files[] = contact.pages.inc
+<?php
+// $Id$
+
+class Contact extends OptionalCoreModule {
+  protected $name = 'Contact';
+  protected $description = 'Enables the use of both personal and site-wide contact forms.';
+  protected $files = array(
+    'contact.module',
+    'contact.admin.inc',
+    'contact.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/dblog/dblog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.info,v
retrieving revision 1.4
diff -u -r1.4 dblog.info
--- modules/dblog/dblog.info	6 May 2008 12:18:47 -0000	1.4
+++ modules/dblog/dblog.info	30 May 2008 03:10:44 -0000
@@ -1,8 +1,11 @@
-; $Id: dblog.info,v 1.4 2008/05/06 12:18:47 dries Exp $
-name = Database logging
-description = Logs and records system events to the database.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = dblog.module
-files[] = dblog.admin.inc
+<?php
+// $Id$
+
+class DBLog extends OptionalCoreModule {
+  protected $name = 'Database logging';
+  protected $description = 'Logs and records system events to the database.';
+  protected $files = array(
+    'dblog.module',
+    'dblog.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/filter/filter.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.info,v
retrieving revision 1.6
diff -u -r1.6 filter.info
--- modules/filter/filter.info	6 May 2008 12:18:47 -0000	1.6
+++ modules/filter/filter.info	30 May 2008 03:12:53 -0000
@@ -1,9 +1,12 @@
-; $Id: filter.info,v 1.6 2008/05/06 12:18:47 dries Exp $
-name = Filter
-description = Handles the filtering of content in preparation for display.
-package = Core - required
-version = VERSION
-core = 7.x
-files[] = filter.module
-files[] = filter.admin.inc
-files[] = filter.pages.inc
+<?php
+// $Id$
+
+class Filter extends RequiredCoreModule {
+  protected $name = 'Filter';
+  protected $description = 'Handles the filtering of content in preparation for display.';
+  protected $files = array(
+    'filter.module',
+    'filter.admin.inc',
+    'filter.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/forum/forum.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.info,v
retrieving revision 1.8
diff -u -r1.8 forum.info
--- modules/forum/forum.info	6 May 2008 12:18:47 -0000	1.8
+++ modules/forum/forum.info	30 May 2008 03:23:31 -0000
@@ -1,11 +1,13 @@
-; $Id: forum.info,v 1.8 2008/05/06 12:18:47 dries Exp $
-name = Forum
-description = Enables threaded discussions about general topics.
-dependencies[] = taxonomy
-dependencies[] = comment
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = forum.module
-files[] = forum.admin.inc
-files[] = forum.pages.inc
+<?php
+// $Id$
+
+class Forum extends OptionalCoreModule {
+  protected $name = 'Forum';
+  protected $description = 'Enables threaded discussions about general topics.';
+  protected $files = array(
+    'forum.module',
+    'forum.admin.inc',
+    'forum.pages.inc',
+  );
+  protected $dependencies = array('taxonomy', 'comment');
+}
\ No newline at end of file
Index: modules/help/help.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/help/help.info,v
retrieving revision 1.6
diff -u -r1.6 help.info
--- modules/help/help.info	6 May 2008 12:18:47 -0000	1.6
+++ modules/help/help.info	30 May 2008 03:25:28 -0000
@@ -1,8 +1,11 @@
-; $Id: help.info,v 1.6 2008/05/06 12:18:47 dries Exp $
-name = Help
-description = Manages the display of online help.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = help.module
-files[] = help.admin.inc
+<?php
+// $Id$
+
+class Help extends OptionalCoreModule {
+  protected $name = 'Help';
+  protected $description = 'Manages the display of online help.';
+  protected $files = array(
+    'help.module',
+    'help.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/locale/locale.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.info,v
retrieving revision 1.8
diff -u -r1.8 locale.info
--- modules/locale/locale.info	6 May 2008 12:18:48 -0000	1.8
+++ modules/locale/locale.info	30 May 2008 03:26:32 -0000
@@ -1,7 +1,10 @@
-; $Id: locale.info,v 1.8 2008/05/06 12:18:48 dries Exp $
-name = Locale
-description = Adds language handling functionality and enables the translation of the user interface to languages other than English.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = locale.module
+<?php
+// $Id$
+
+class Locale extends OptionalCoreModule {
+  protected $name = 'Locale';
+  protected $description = 'Adds language handling functionality and enables the translation of the user interface to languages other than English.';
+  protected $files = array(
+    'locale.module',
+  );
+}
\ No newline at end of file
Index: modules/menu/menu.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.info,v
retrieving revision 1.6
diff -u -r1.6 menu.info
--- modules/menu/menu.info	6 May 2008 12:18:48 -0000	1.6
+++ modules/menu/menu.info	30 May 2008 03:28:02 -0000
@@ -1,8 +1,11 @@
-; $Id: menu.info,v 1.6 2008/05/06 12:18:48 dries Exp $
-name = Menu
-description = Allows administrators to customize the site navigation menu.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = menu.module
-files[] = menu.admin.inc
+<?php
+// $Id$
+
+class Menu extends OptionalCoreModule {
+  protected $name = 'Menu';
+  protected $description = 'Allows administrators to customize the site navigation menu.';
+  protected $files = array(
+    'menu.module',
+    'menu.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/node/node.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.info,v
retrieving revision 1.6
diff -u -r1.6 node.info
--- modules/node/node.info	6 May 2008 12:18:48 -0000	1.6
+++ modules/node/node.info	30 May 2008 03:29:02 -0000
@@ -1,10 +1,13 @@
-; $Id: node.info,v 1.6 2008/05/06 12:18:48 dries Exp $
-name = Node
-description = Allows content to be submitted to the site and displayed on pages.
-package = Core - required
-version = VERSION
-core = 7.x
-files[] = node.module
-files[] = content_types.inc
-files[] = node.admin.inc
-files[] = node.pages.inc
+<?php
+// $Id$
+
+class Node extends RequiredCoreModule {
+  protected $name = 'Node';
+  protected $description = 'Allows content to be submitted to the site and displayed on pages.';
+  protected $files = array(
+    'node.module',
+    'node.admin.inc',
+    'node.pages.inc',
+    'content_types.inc',
+  );
+}
\ No newline at end of file
Index: modules/openid/openid.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.info,v
retrieving revision 1.4
diff -u -r1.4 openid.info
--- modules/openid/openid.info	6 May 2008 12:18:48 -0000	1.4
+++ modules/openid/openid.info	30 May 2008 03:31:10 -0000
@@ -1,10 +1,13 @@
-; $Id: openid.info,v 1.4 2008/05/06 12:18:48 dries Exp $
-name = OpenID
-description = "Allows users to log into your site using OpenID."
-version = VERSION
-package = Core - optional
-core = 7.x
-files[] = openid.module
-files[] = openid.inc
-files[] = openid.pages.inc
-files[] = xrds.inc
+<?php
+// $Id$
+
+class OpenID extends OptionalCoreModule {
+  protected $name = 'OpenID';
+  protected $description = 'Allows users to log into your site using OpenID.';
+  protected $files = array(
+    'openid.module',
+    'openid.inc',
+    'openid.pages.inc',
+    'xrds.inc',
+  );
+}
\ No newline at end of file
Index: modules/path/path.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.info,v
retrieving revision 1.6
diff -u -r1.6 path.info
--- modules/path/path.info	6 May 2008 12:18:48 -0000	1.6
+++ modules/path/path.info	30 May 2008 03:33:07 -0000
@@ -1,8 +1,11 @@
-; $Id: path.info,v 1.6 2008/05/06 12:18:48 dries Exp $
-name = Path
-description = Allows users to rename URLs.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = path.module
-files[] = path.admin.inc
+<?php
+// $Id$
+
+class Path extends OptionalCoreModule {
+  protected $name = 'Path';
+  protected $description = 'Allows users to rename URLs.';
+  protected $files = array(
+    'path.module',
+    'path.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/php/php.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/php/php.info,v
retrieving revision 1.4
diff -u -r1.4 php.info
--- modules/php/php.info	6 May 2008 12:18:48 -0000	1.4
+++ modules/php/php.info	30 May 2008 03:34:46 -0000
@@ -1,7 +1,10 @@
-; $Id: php.info,v 1.4 2008/05/06 12:18:48 dries Exp $
-name = PHP filter
-description = Allows embedded PHP code/snippets to be evaluated.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = php.module
+<?php
+// $Id$
+
+class PHP extends OptionalCoreModule {
+  protected $name = 'PHP filter';
+  protected $description = 'Allows embedded PHP code/snippets to be evaluated.';
+  protected $files = array(
+    'php.module',
+  );
+}
\ No newline at end of file
Index: modules/poll/poll.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.info,v
retrieving revision 1.6
diff -u -r1.6 poll.info
--- modules/poll/poll.info	6 May 2008 12:18:49 -0000	1.6
+++ modules/poll/poll.info	30 May 2008 03:35:41 -0000
@@ -1,8 +1,11 @@
-; $Id: poll.info,v 1.6 2008/05/06 12:18:49 dries Exp $
-name = Poll
-description = Allows your site to capture votes on different topics in the form of multiple choice questions.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = poll.module
-files[] = poll.pages.inc
+<?php
+// $Id$
+
+class Poll extends OptionalCoreModule {
+  protected $name = 'Poll';
+  protected $description = 'Allows your site to capture votes on different topics in the form of multiple choice questions.';
+  protected $files = array(
+    'poll.module',
+    'poll.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/profile/profile.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.info,v
retrieving revision 1.6
diff -u -r1.6 profile.info
--- modules/profile/profile.info	6 May 2008 12:18:49 -0000	1.6
+++ modules/profile/profile.info	30 May 2008 03:39:38 -0000
@@ -1,9 +1,12 @@
-; $Id: profile.info,v 1.6 2008/05/06 12:18:49 dries Exp $
-name = Profile
-description = Supports configurable user profiles.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = profile.module
-files[] = profile.admin.inc
-files[] = profile.pages.inc
+<?php
+// $Id$
+
+class Profile extends OptionalCoreModule {
+  protected $name = 'Profile';
+  protected $description = 'Supports configurable user profiles.';
+  protected $files = array(
+    'profile.module',
+    'profile.admin.inc',
+    'profile.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/search/search.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.info,v
retrieving revision 1.6
diff -u -r1.6 search.info
--- modules/search/search.info	6 May 2008 12:18:49 -0000	1.6
+++ modules/search/search.info	30 May 2008 03:41:48 -0000
@@ -1,9 +1,12 @@
-; $Id: search.info,v 1.6 2008/05/06 12:18:49 dries Exp $
-name = Search
-description = Enables site-wide keyword searching.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = search.module
-files[] = search.admin.inc
-files[] = search.pages.inc
+<?php
+// $Id$
+
+class Search extends OptionalCoreModule {
+  protected $name = 'Search';
+  protected $description = 'Enables site-wide keyword searching.';
+  protected $files = array(
+    'search.module',
+    'search.admin.inc',
+    'search.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/simpletest/simpletest.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.info,v
retrieving revision 1.2
diff -u -r1.2 simpletest.info
--- modules/simpletest/simpletest.info	6 May 2008 12:18:50 -0000	1.2
+++ modules/simpletest/simpletest.info	30 May 2008 03:43:18 -0000
@@ -1,7 +1,10 @@
-; $Id: simpletest.info,v 1.2 2008/05/06 12:18:50 dries Exp $
-name = "SimpleTest"
-description = "Provides a framework for unit and functional testing."
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = simpletest.module
+<?php
+// $Id$
+
+class SimpleTest extends OptionalCoreModule {
+  protected $name = 'SimpleTest';
+  protected $description = 'Provides a framework for unit and functional testing.';
+  protected $files = array(
+    'simpletest.module',
+  );
+}
\ No newline at end of file
Index: modules/statistics/statistics.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.info,v
retrieving revision 1.6
diff -u -r1.6 statistics.info
--- modules/statistics/statistics.info	6 May 2008 12:18:50 -0000	1.6
+++ modules/statistics/statistics.info	30 May 2008 03:44:03 -0000
@@ -1,9 +1,12 @@
-; $Id: statistics.info,v 1.6 2008/05/06 12:18:50 dries Exp $
-name = Statistics
-description = Logs access statistics for your site.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = statistics.module
-files[] = statistics.admin.inc
-files[] = statistics.pages.inc
+<?php
+// $Id$
+
+class Statistics extends OptionalCoreModule {
+  protected $name = 'Statistics';
+  protected $description = 'Logs access statistics for your site.';
+  protected $files = array(
+    'statistics.module',
+    'statistics.admin.inc',
+    'statistics.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/syslog/syslog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.info,v
retrieving revision 1.4
diff -u -r1.4 syslog.info
--- modules/syslog/syslog.info	6 May 2008 12:18:50 -0000	1.4
+++ modules/syslog/syslog.info	30 May 2008 03:44:53 -0000
@@ -1,7 +1,10 @@
-; $Id: syslog.info,v 1.4 2008/05/06 12:18:50 dries Exp $
-name = Syslog
-description = Logs and records system events to syslog.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = syslog.module
+<?php
+// $Id$
+
+class Syslog extends OptionalCoreModule {
+  protected $name = 'Syslog';
+  protected $description = 'Logs and records system events to syslog.';
+  protected $files = array(
+    'syslog.module',
+  );
+}
\ No newline at end of file
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.76
diff -u -r1.76 system.admin.inc
--- modules/system/system.admin.inc	10 May 2008 07:32:02 -0000	1.76
+++ modules/system/system.admin.inc	30 May 2008 04:08:18 -0000
@@ -192,7 +192,7 @@
         $screenshot = $themes[$theme_key]->info['screenshot'];
         break;
       }
-      $theme_key = isset($themes[$theme_key]->info['base theme']) ? $themes[$theme_key]->info['base theme'] : NULL;
+      $theme_key = isset($themes[$theme_key]->info['base_theme']) ? $themes[$theme_key]->info['base_theme'] : NULL;
     }
     $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $theme->info['name'])), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');
 
@@ -486,9 +486,9 @@
   if ($key) {
     // Include the theme's theme-settings.php file
     $filename = './' . str_replace("/$key.info", '', $themes[$key]->filename) . '/theme-settings.php';
-    if (!file_exists($filename) and !empty($themes[$key]->info['base theme'])) {
+    if (!file_exists($filename) and !empty($themes[$key]->info['base_theme'])) {
       // If the theme doesn't have a theme-settings.php file, use the base theme's.
-      $base = $themes[$key]->info['base theme'];
+      $base = $themes[$key]->info['base_theme'];
       $filename = './' . str_replace("/$base.info", '', $themes[$base]->filename) . '/theme-settings.php';
     }
     if (file_exists($filename)) {
Index: modules/system/system.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.info,v
retrieving revision 1.6
diff -u -r1.6 system.info
--- modules/system/system.info	6 May 2008 12:18:50 -0000	1.6
+++ modules/system/system.info	30 May 2008 03:45:49 -0000
@@ -1,8 +1,11 @@
-; $Id: system.info,v 1.6 2008/05/06 12:18:50 dries Exp $
-name = System
-description = Handles general site configuration for administrators.
-package = Core - required
-version = VERSION
-core = 7.x
-files[] = system.module
-files[] = system.admin.inc
+<?php
+// $Id$
+
+class System extends RequiredCoreModule {
+  protected $name = 'System';
+  protected $description = 'Handles general site configuration for administrators.';
+  protected $files = array(
+    'system.module',
+    'system.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.602
diff -u -r1.602 system.module
--- modules/system/system.module	7 May 2008 19:17:50 -0000	1.602
+++ modules/system/system.module	30 May 2008 04:43:53 -0000
@@ -848,7 +848,7 @@
             $screenshot = $themes[$theme_key]->info['screenshot'];
             break;
           }
-          $theme_key = isset($themes[$theme_key]->info['base theme']) ? $themes[$theme_key]->info['base theme'] : NULL;
+          $theme_key = isset($themes[$theme_key]->info['base_theme']) ? $themes[$theme_key]->info['base_theme'] : NULL;
         }
 
         $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');
@@ -987,12 +987,11 @@
     // Read info files for each theme
     foreach ($themes as $key => $theme) {
       $themes[$key]->info = drupal_parse_info_file($theme->filename) + $defaults;
-
       // Invoke hook_system_info_alter() to give installed modules a chance to
       // modify the data in the .info files if necessary.
       drupal_alter('system_info', $themes[$key]->info, $themes[$key]);
 
-      if (!empty($themes[$key]->info['base theme'])) {
+      if (!empty($themes[$key]->info['base_theme'])) {
         $sub_themes[] = $key;
       }
       if (empty($themes[$key]->info['engine'])) {
@@ -1073,14 +1072,14 @@
  *   Returns the top level parent that has no ancestor or returns NULL if there isn't a valid parent.
  */
 function system_find_base_theme($themes, $key, $used_keys = array()) {
-  $base_key = $themes[$key]->info['base theme'];
+  $base_key = $themes[$key]->info['base_theme'];
   // Does the base theme exist?
   if (!isset($themes[$base_key])) {
     return NULL;
   }
 
   // Is the base theme itself a child of another theme?
-  if (isset($themes[$base_key]->info['base theme'])) {
+  if (isset($themes[$base_key]->info['base_theme'])) {
     // Prevent loops.
     if (!empty($used_keys[$base_key])) {
       return NULL;
Index: modules/taxonomy/taxonomy.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.info,v
retrieving revision 1.6
diff -u -r1.6 taxonomy.info
--- modules/taxonomy/taxonomy.info	6 May 2008 12:18:51 -0000	1.6
+++ modules/taxonomy/taxonomy.info	30 May 2008 03:46:27 -0000
@@ -1,9 +1,12 @@
-; $Id: taxonomy.info,v 1.6 2008/05/06 12:18:51 dries Exp $
-name = Taxonomy
-description = Enables the categorization of content.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = taxonomy.module
-files[] = taxonomy.admin.inc
-files[] = taxonomy.pages.inc
+<?php
+// $Id$
+
+class Taxonomy extends OptionalCoreModule {
+  protected $name = 'Taxonomy';
+  protected $description = 'Enables the categorization of content.';
+  protected $files = array(
+    'taxonomy.module',
+    'taxonomy.admin.inc',
+    'taxonomy.pages.inc',
+  );
+}
\ No newline at end of file
Index: modules/tracker/tracker.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/tracker/tracker.info,v
retrieving revision 1.7
diff -u -r1.7 tracker.info
--- modules/tracker/tracker.info	6 May 2008 12:18:51 -0000	1.7
+++ modules/tracker/tracker.info	30 May 2008 03:51:47 -0000
@@ -1,9 +1,12 @@
-; $Id: tracker.info,v 1.7 2008/05/06 12:18:51 dries Exp $
-name = Tracker
-description = Enables tracking of recent posts for users.
-dependencies[] = comment
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = tracker.module
-files[] = tracker.pages.inc
+<?php
+// $Id$
+
+class Tracker extends OptionalCoreModule {
+  protected $name = 'Tracker';
+  protected $description = 'Enables tracking of recent posts for users.';
+  protected $files = array(
+    'tracker.module',
+    'tracker.pages.inc',
+  );
+  protected $dependencies = array('comment');
+}
\ No newline at end of file
Index: modules/translation/translation.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.info,v
retrieving revision 1.3
diff -u -r1.3 translation.info
--- modules/translation/translation.info	6 May 2008 12:18:51 -0000	1.3
+++ modules/translation/translation.info	30 May 2008 03:53:21 -0000
@@ -1,9 +1,12 @@
-; $Id: translation.info,v 1.3 2008/05/06 12:18:51 dries Exp $
-name = Content translation
-description = Allows content to be translated into different languages.
-dependencies[] = locale
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = translation.module
-files[] = translation.pages.inc
+<?php
+// $Id$
+
+class Translation extends OptionalCoreModule {
+  protected $name = 'Content translation';
+  protected $description = 'Allows content to be translated into different languages.';
+  protected $files = array(
+    'translation.module',
+    'translation.pages.inc',
+  );
+  protected $dependencies = array('locale');
+}
\ No newline at end of file
Index: modules/trigger/trigger.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.info,v
retrieving revision 1.3
diff -u -r1.3 trigger.info
--- modules/trigger/trigger.info	6 May 2008 12:18:51 -0000	1.3
+++ modules/trigger/trigger.info	30 May 2008 03:54:50 -0000
@@ -1,8 +1,11 @@
-; $Id: trigger.info,v 1.3 2008/05/06 12:18:51 dries Exp $
-name = Trigger
-description = Enables actions to be fired on certain system events, such as when new content is created.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = trigger.module
-files[] = trigger.admin.inc
+<?php
+// $Id$
+
+class Trigger extends OptionalCoreModule {
+  protected $name = 'Trigger';
+  protected $description = 'Enables actions to be fired on certain system events, such as when new content is created.';
+  protected $files = array(
+    'trigger.module',
+    'trigger.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/update/update.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.info,v
retrieving revision 1.3
diff -u -r1.3 update.info
--- modules/update/update.info	6 May 2008 12:18:53 -0000	1.3
+++ modules/update/update.info	30 May 2008 03:57:21 -0000
@@ -1,11 +1,14 @@
-; $Id: update.info,v 1.3 2008/05/06 12:18:53 dries Exp $
-name = Update status
-description = Checks the status of available updates for Drupal and your installed modules and themes.
-version = VERSION
-package = Core - optional
-core = 7.x
-files[] = update.module
-files[] = update.compare.inc
-files[] = update.fetch.inc
-files[] = update.report.inc
-files[] = update.settings.inc
+<?php
+// $Id$
+
+class Update extends OptionalCoreModule {
+  protected $name = 'Update status';
+  protected $description = 'Checks the status of available updates for Drupal and your installed modules and themes.';
+  protected $files = array(
+    'update.module',
+    'update.compare.inc',
+    'update.fetch.inc',
+    'update.report.inc',
+    'update.settings.inc',
+  );
+}
\ No newline at end of file
Index: modules/upload/upload.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.info,v
retrieving revision 1.6
diff -u -r1.6 upload.info
--- modules/upload/upload.info	6 May 2008 12:18:53 -0000	1.6
+++ modules/upload/upload.info	30 May 2008 03:59:09 -0000
@@ -1,8 +1,11 @@
-; $Id: upload.info,v 1.6 2008/05/06 12:18:53 dries Exp $
-name = Upload
-description = Allows users to upload and attach files to content.
-package = Core - optional
-version = VERSION
-core = 7.x
-files[] = upload.module
-files[] = upload.admin.inc
+<?php
+// $Id$
+
+class Upload extends OptionalCoreModule {
+  protected $name = 'Upload';
+  protected $description = 'Allows users to upload and attach files to content.';
+  protected $files = array(
+    'upload.module',
+    'upload.admin.inc',
+  );
+}
\ No newline at end of file
Index: modules/user/user.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.info,v
retrieving revision 1.6
diff -u -r1.6 user.info
--- modules/user/user.info	6 May 2008 12:18:54 -0000	1.6
+++ modules/user/user.info	30 May 2008 04:00:37 -0000
@@ -1,9 +1,12 @@
-; $Id: user.info,v 1.6 2008/05/06 12:18:54 dries Exp $
-name = User
-description = Manages the user registration and login system.
-package = Core - required
-version = VERSION
-core = 7.x
-files[] = user.module
-files[] = user.admin.inc
-files[] = user.pages.inc
+<?php
+// $Id$
+
+class User extends RequiredCoreModule {
+  protected $name = 'User';
+  protected $description = 'Manages the user registration and login system.';
+  protected $files = array(
+    'user.module',
+    'user.admin.inc',
+    'user.pages.inc',
+  );
+}
\ No newline at end of file
Index: themes/bluemarine/bluemarine.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/bluemarine/bluemarine.info,v
retrieving revision 1.6
diff -u -r1.6 bluemarine.info
--- themes/bluemarine/bluemarine.info	7 May 2008 07:05:56 -0000	1.6
+++ themes/bluemarine/bluemarine.info	30 May 2008 04:04:02 -0000
@@ -1,6 +1,8 @@
-; $Id: bluemarine.info,v 1.6 2008/05/07 07:05:56 dries Exp $
-name = Bluemarine
-description = Tableless theme with a marine and ash color scheme.
-version = VERSION
-core = 7.x
-engine = phptemplate
+<?php
+// $Id$
+
+class Bluemarine extends CoreTheme {
+  protected $name = 'Bluemarine';
+  protected $description = 'Tableless theme with a marine and ash color scheme.';
+  protected $engine = 'phptemplate';
+}
\ No newline at end of file
Index: themes/chameleon/chameleon.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/chameleon/chameleon.info,v
retrieving revision 1.5
diff -u -r1.5 chameleon.info
--- themes/chameleon/chameleon.info	18 Feb 2008 19:19:48 -0000	1.5
+++ themes/chameleon/chameleon.info	30 May 2008 04:18:34 -0000
@@ -1,13 +1,15 @@
-; $Id: chameleon.info,v 1.5 2008/02/18 19:19:48 dries Exp $
-name = Chameleon
-description = Minimalist tabled theme with light colors.
-regions[left] = Left sidebar
-regions[right] = Right sidebar
-features[] = logo
-features[] = favicon
-features[] = name
-features[] = slogan
-stylesheets[all][] = style.css
-stylesheets[all][] = common.css
-version = VERSION
-core = 7.x
+<?php
+// $Id$
+
+class Chameleon extends CoreTheme {
+  protected $name = 'Chameleon';
+  protected $description = 'Minimalist tabled theme with light colors.';
+  protected $regions = array(
+    'left' => 'Left sidebar',
+    'right' => 'Right sidebar',
+  );
+  protected $features = array('logo', 'favicon', 'name', 'slogan');
+  protected $stylesheets = array(
+    'all' => array('style.css', 'common.css'),
+  );
+}
\ No newline at end of file
Index: themes/chameleon/marvin/marvin.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/chameleon/marvin/marvin.info,v
retrieving revision 1.5
diff -u -r1.5 marvin.info
--- themes/chameleon/marvin/marvin.info	18 Feb 2008 19:19:48 -0000	1.5
+++ themes/chameleon/marvin/marvin.info	30 May 2008 04:10:59 -0000
@@ -1,8 +1,12 @@
-; $Id: marvin.info,v 1.5 2008/02/18 19:19:48 dries Exp $
-name = Marvin
-description = Boxy tabled theme in all grays.
-regions[left] = Left sidebar
-regions[right] = Right sidebar
-version = VERSION
-core = 7.x
-base theme = chameleon
+<?php
+// $Id$
+
+class Marvin extends CoreTheme {
+  protected $name = 'Marvin';
+  protected $description = 'Boxy tabled theme in all grays.';
+  protected $regions = array(
+    'left' => 'Left sidebar',
+    'right' => 'Right sidebar',
+  );
+  protected $base_theme = 'chameleon';
+}
\ No newline at end of file
Index: themes/garland/garland.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/garland.info,v
retrieving revision 1.6
diff -u -r1.6 garland.info
--- themes/garland/garland.info	18 Feb 2008 19:19:48 -0000	1.6
+++ themes/garland/garland.info	30 May 2008 04:55:38 -0000
@@ -1,8 +1,12 @@
-; $Id: garland.info,v 1.6 2008/02/18 19:19:48 dries Exp $
-name = Garland
-description = Tableless, recolorable, multi-column, fluid width theme (default).
-version = VERSION
-core = 7.x
-engine = phptemplate
-stylesheets[all][] = style.css
-stylesheets[print][] = print.css
+<?php
+// $Id$
+
+class Garland extends CoreTheme {
+  protected $name = 'Garland';
+  protected $description = 'Tableless, recolorable, multi-column, fluid width theme (default).';
+  protected $engine = 'phptemplate';
+  protected $stylesheets = array(
+    'all' => array('style.css'),
+    'print' => array('print.css'),
+  );
+}
\ No newline at end of file
Index: themes/garland/minnelli/minnelli.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/minnelli/minnelli.info,v
retrieving revision 1.8
diff -u -r1.8 minnelli.info
--- themes/garland/minnelli/minnelli.info	18 Feb 2008 19:19:49 -0000	1.8
+++ themes/garland/minnelli/minnelli.info	30 May 2008 04:17:34 -0000
@@ -1,7 +1,11 @@
-; $Id: minnelli.info,v 1.8 2008/02/18 19:19:49 dries Exp $
-name = Minnelli
-description = Tableless, recolorable, multi-column, fixed width theme.
-version = VERSION
-core = 7.x
-base theme = garland
-stylesheets[all][] = minnelli.css
+<?php
+// $Id$
+
+class Minnelli extends CoreTheme {
+  protected $name = 'Minnelli';
+  protected $description = 'Tableless, recolorable, multi-column, fixed width theme.';
+  protected $stylesheets = array(
+    'all' => array('minnelli.css'),
+  );
+  protected $base_theme = 'garland';
+}
\ No newline at end of file
Index: themes/pushbutton/pushbutton.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/pushbutton/pushbutton.info,v
retrieving revision 1.5
diff -u -r1.5 pushbutton.info
--- themes/pushbutton/pushbutton.info	18 Feb 2008 19:19:49 -0000	1.5
+++ themes/pushbutton/pushbutton.info	30 May 2008 04:18:05 -0000
@@ -1,6 +1,8 @@
-; $Id: pushbutton.info,v 1.5 2008/02/18 19:19:49 dries Exp $
-name = Pushbutton
-description = Tabled, multi-column theme in blue and orange tones.
-version = VERSION
-core = 7.x
-engine = phptemplate
+<?php
+// $Id$
+
+class Pushbutton extends CoreTheme {
+  protected $name = 'Pushbutton';
+  protected $description = 'Tabled, multi-column theme in blue and orange tones.';
+  protected $engine = 'phptemplate';
+}
\ No newline at end of file
