? .install.php.swp
? drushrc.php
? includes/.install.inc.swp
? includes/.module.inc.swp
? modules/simpletest/tests/.module.test.swp
? profiles/expert/.expert.info.swp
? sites/head.dev
? sites/default/files
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.184
diff -u -r1.184 install.php
--- install.php	15 Jul 2009 02:08:40 -0000	1.184
+++ install.php	15 Jul 2009 11:55:02 -0000
@@ -972,8 +972,10 @@
   // Add tasks defined by the profile.
   if ($profile) {
     $info = install_profile_info($profile);
-    if (array_key_exists('tasks', $info)) {
-      $tasks += $info['tasks'];
+    if (isset($info['tasks'])) {
+      foreach ($info['tasks'] as $task => $title) {
+        $tasks[$task] = st($title);
+      }
     }
   }
 
Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.96
diff -u -r1.96 install.inc
--- includes/install.inc	15 Jul 2009 02:08:41 -0000	1.96
+++ includes/install.inc	15 Jul 2009 11:55:04 -0000
@@ -977,23 +977,50 @@
 
 /**
  * Retrieve info about an install profile from its .info file.
+ *
+ * Information stored in the profile.info file:
+ * - name: The real name of the install profile for display purposes.
+ * - description: A brief description of the profile.
+ * - dependencies: An array of shortnames of other modules this install profile requires.
+ * - tasks: An associative array of tasks and the page title of each task that need to be 
+ *   completed for installation.
+ *
+ * Example of .info file:
+ * @verbatim
+ *    name = Drupal (minimal)
+ *    description = Create a Drupal site with only required modules enabled.
+ *    version = VERSION
+ *    dependencies[] = block
+ *    dependencies[] = dblog
+ * @endverbatim
+ *
+ * @param profile
+ *   Name of profile.
+ * @param locale
+ *   Name of locale used (if any).
+ * @return
+ *   The info array.
  */
 function install_profile_info($profile, $locale = 'en') {
-  $cache =& drupal_static('install_profile_info', array(), TRUE);
-  // Set defaults for module info.
-  $defaults = array(
-    'dependencies' => array(),
-    'tasks' => array(),
-    'description' => '',
-    'version' => NULL,
-    'php' => DRUPAL_MINIMUM_PHP,
-  );
-  $info = drupal_parse_info_file(sprintf('profiles/%s/%s.info', $profile, $profile)) + $defaults;
-  $info['dependencies'] = array_unique(array_merge(
-    drupal_required_modules(), 
-    $info['dependencies'], 
-    ($locale != 'en' && !empty($locale) ? array('locale') : array()))
-  );
-  return $info;
+  $cache =& drupal_static('install_profile_info', array());
+
+  if (!isset($cache[$profile])) {
+    // Set defaults for module info.
+    $defaults = array(
+      'dependencies' => array(),
+      'tasks' => array(),
+      'description' => '',
+      'version' => NULL,
+      'php' => DRUPAL_MINIMUM_PHP,
+    );
+    $info = drupal_parse_info_file('profiles/'.$profile.'/'.$profile.'.info') + $defaults;
+    $info['dependencies'] = array_unique(array_merge(
+      drupal_required_modules(), 
+      $info['dependencies'], 
+      ($locale != 'en' && !empty($locale) ? array('locale') : array()))
+    );
+    $cache[$profile] = $info;
+  }
+  return $cache[$profile];
 }
 
Index: modules/simpletest/tests/module.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/module.test,v
retrieving revision 1.8
diff -u -r1.8 module.test
--- modules/simpletest/tests/module.test	13 Jul 2009 21:51:41 -0000	1.8
+++ modules/simpletest/tests/module.test	15 Jul 2009 11:55:06 -0000
@@ -23,7 +23,8 @@
    */
   function testModuleList() {
     // Build a list of modules, sorted alphabetically.
-    $module_list = drupal_get_profile_modules('default', 'en');
+    $profile_info = install_profile_info('default', 'en');
+    $module_list = $profile_info['dependencies'];
     sort($module_list);
     // Compare this list to the one returned by module_list(). We expect them
     // to match, since all default profile modules have a weight equal to 0
Index: modules/system/system.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.api.php,v
retrieving revision 1.49
diff -u -r1.49 system.api.php
--- modules/system/system.api.php	15 Jul 2009 02:08:41 -0000	1.49
+++ modules/system/system.api.php	15 Jul 2009 11:55:10 -0000
@@ -1825,6 +1825,128 @@
   }
 }
 
+<<<<<<< system.api.php
+
+/**
+ * Perform any final installation tasks for this profile.
+ *
+ * The installer goes through the profile-select -> locale-select
+ * -> requirements -> database -> profile-install-batch
+ * -> locale-initial-batch -> configure -> locale-remaining-batch
+ * -> finished -> done tasks, in this order, if you don't implement
+ * this function in your profile.
+ *
+ * If this function is implemented, you can have any number of
+ * custom tasks to perform after 'configure', implementing a state
+ * machine here to walk the user through those tasks. First time,
+ * this function gets called with $task set to 'profile', and you
+ * can advance to further tasks by setting $task to your tasks'
+ * identifiers, used as array keys in the tasks property of the
+ * profilename.info file.
+ * 
+ * You must avoid the reserved tasks listed in install_reserved_tasks(). 
+ * If you implement your custom tasks, this function will get called in
+ * every HTTP request (for form processing, printing your information 
+ * screens and so on) until you advance to the 'profile-finished' task,
+ * with which you hand control back to the installer. Each custom page
+ * you return needs to provide a way to continue, such as a form
+ * submission or a link. You should also set custom page titles.
+ *
+ * You should define the list of custom tasks you implement by
+ * specifying an array of tasks in your profilename.info file, as these
+ * show up in the list of tasks on the installer user interface.
+ *
+ * Example :
+ *   task[custom_task] = My first custom task
+ *   task[custom_task_2] = My second custom task
+ *
+ * Remember that the user will be able to reload the pages multiple
+ * times, so you might want to use variable_set() and variable_get()
+ * to remember your data and control further processing, if $task
+ * is insufficient. Should a profile want to display a form here,
+ * it can; the form should set '#redirect' to FALSE, and rely on
+ * an action in the submit handler, such as variable_set(), to
+ * detect submission and proceed to further tasks. See the configuration
+ * form handling code in install_tasks() for an example.
+ *
+ * Important: Any temporary variables should be removed using
+ * variable_del() before advancing to the 'profile-finished' phase.
+ *
+ * @param $task
+ *   The current $task of the install system. When hook_profile_tasks()
+ *   is first called, this is 'profile'.
+ * @param $url
+ *   Complete URL to be used for a link or form action on a custom page,
+ *   if providing any, to allow the user to proceed with the installation.
+ *
+ * @return
+ *   An optional HTML string to display to the user. Only used if you
+ *   modify the $task, otherwise discarded.
+ */
+function hook_profile_tasks(&$task, $url) {
+
+  // Enable some standard blocks.
+  $values = array(
+    array(
+      'module' => 'system',
+      'delta' => 'main',
+      'theme' => 'garland',
+      'status' => 1,
+      'weight' => 0,
+      'region' => 'content',
+      'pages' => '',
+      'cache' => -1,
+    ),
+    array(
+      'module' => 'user',
+      'delta' => 'login',
+      'theme' => 'garland',
+      'status' => 1,
+      'weight' => 0,
+      'region' => 'left',
+      'pages' => '',
+      'cache' => -1,
+    ),
+    array(
+      'module' => 'system',
+      'delta' => 'navigation',
+      'theme' => 'garland',
+      'status' => 1,
+      'weight' => 0,
+      'region' => 'left',
+      'pages' => '',
+      'cache' => -1,
+    ),
+    array(
+      'module' => 'system',
+      'delta' => 'management',
+      'theme' => 'garland',
+      'status' => 1,
+      'weight' => 1,
+      'region' => 'left',
+      'pages' => '',
+      'cache' => -1,
+    ),
+    array(
+      'module' => 'system',
+      'delta' => 'help',
+      'theme' => 'garland',
+      'status' => 1,
+      'weight' => 0,
+      'region' => 'help',
+      'pages' => '',
+      'cache' => -1,
+    ),
+  );
+  $query = db_insert('block')->fields(array('module', 'delta', 'theme', 'status', 'weight', 'region', 'pages', 'cache'));
+  foreach ($values as $record) {
+    $query->values($record);
+  }
+  $query->execute();  
+}
+
+
+=======
 
 /**
  * Perform any final installation tasks for an installation profile.
@@ -1945,6 +2067,7 @@
 }
 
 
+>>>>>>> 1.49
 /**
  * @} End of "addtogroup hooks".
  */
