diff --git a/includes/common.inc b/includes/common.inc index 4e701de9e54820145d52c1438903cf68a6fb2cf7..910f4028a9be5a53249a43dc1afcc58fe9311af4 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -119,6 +119,32 @@ function drupal_get_region_content($region = NULL, $delimiter = ' ') { } } +/** + * Get the name of the currently active install profile. + * + * When this function is called during Drupal's initial installation process, + * the name of the profile that's about to be installed is stored in the global + * installation state. At all other times, the standard Drupal systems variable + * table contains the name of the current profile, and we can call variable_get() + * to determine what one is active. + * + * @return $profile + * The name of the install profile. + */ +function drupal_get_profile() { + global $install_state; + + if (isset($install_state['parameters']['profile'])) { + $profile = $install_state['parameters']['profile']; + } + else { + $profile = variable_get('install_profile', 'default'); + } + + return $profile; +} + + /** * Set the breadcrumb trail for the current page. * @@ -3724,20 +3750,10 @@ function drupal_cron_cleanup() { * An array of file objects of the specified type. */ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1) { - global $install_state; $config = conf_path(); - // When this function is called during Drupal's initial installation process, - // the name of the profile that's about to be installed is stored in the global - // installation state. At all other times, the standard Drupal systems variable - // table contains the name of the current profile, and we can call variable_get() - // to determine what one is active. - if (isset($install_state['parameters']['profile'])) { - $profile = $install_state['parameters']['profile']; - } - else { - $profile = variable_get('install_profile', 'default'); - } + $profile = drupal_get_profile(); + $searchdir = array($directory); $files = array(); diff --git a/includes/install.inc b/includes/install.inc index 5626196b06688ef8dc0a7126d7e803ddd3950ed5..60164b1188fad91e57694211b0b1a284bcf13136 100644 --- a/includes/install.inc +++ b/includes/install.inc @@ -166,16 +166,12 @@ function drupal_set_installed_schema_version($module, $version) { */ function drupal_install_profile_name() { global $install_state; - $profile = $install_state['parameters']['profile']; - static $name = NULL; - if (!isset($name)) { - // Load profile details. - $function = $profile . '_profile_details'; - if (function_exists($function)) { - $details = $function(); - } - $name = isset($details['name']) ? $details['name'] : 'Drupal'; + if (isset($install_state['profile_info']['name'])) { + $name = $install_state['profile_info']['name']; + } + else { + $name = 'Drupal'; } return $name; @@ -522,6 +518,10 @@ function drupal_verify_profile($install_state) { $present_modules[] = $present_module->name; } + // The install profile is also a module, which needs to be installed after all the other dependencies + // have been installed. + $present_modules[] = drupal_get_profile(); + // Verify that all of the profile's required modules are present. $missing_modules = array_diff($info['dependencies'], $present_modules); @@ -1087,6 +1087,11 @@ function install_profile_info($profile, $locale = 'en') { $info['dependencies'], ($locale != 'en' && !empty($locale) ? array('locale') : array())) ); + + // drupal_required_modules() includes the current profile as a dependency. + // Since a module can't depend on itself we remove that element of the array. + array_shift($info['dependencies']); + $cache[$profile] = $info; } return $cache[$profile]; diff --git a/includes/module.inc b/includes/module.inc index e741e310f2023204cc42f260e7c84b421e678d74..0c3f9202dcbc5e31e5e6d3e875b9f908801d8019 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -502,11 +502,16 @@ function module_invoke_all() { function drupal_required_modules() { $files = drupal_system_listing('/\.info$/', 'modules', 'name', 0); $required = array(); + + // An install profile is required and one must always be loaded. + $required[] = drupal_get_profile(); + foreach ($files as $name => $file) { $info = drupal_parse_info_file($file->uri); if (!empty($info) && !empty($info['required']) && $info['required']) { $required[] = $name; } } + return $required; } diff --git a/includes/update.inc b/includes/update.inc index e27dd42d17e748a26b61bf28b83644379d0103d0..efe0d8535dbe731faa3eb2d31ed22e94b91991c3 100644 --- a/includes/update.inc +++ b/includes/update.inc @@ -255,9 +255,79 @@ function update_fix_d7_requirements() { } } + update_fix_d7_install_profile(); + return $ret; } +/** + * Register the currently installed profile in the system table. + * + * Install profiles are now treated as modules by Drupal, and have an upgrade path + * based on their schema version in the system table. + * + * The install profile will be set to schema_version 0, as it has already been + * installed. Any other hook_update_N functions provided by the install profile + * will be run by update.php. + */ +function update_fix_d7_install_profile() { + $profile = drupal_get_profile(); + + + $results = db_select('system', 's') + ->fields('s', array('name', 'schema_version')) + ->condition('name', $profile) + ->condition('type', 'module') + ->execute() + ->fetchAll(); + + if (empty($results)) { + $filename = 'profiles/' . $profile . '/' . $profile . '.profile'; + + // Read profile info file + $info = drupal_parse_info_file(dirname($filename) . '/' . $profile . '.info'); + + // Merge in defaults. + $info = $info + array( + 'dependencies' => array(), + 'dependents' => array(), + 'description' => '', + 'package' => 'Other', + 'version' => NULL, + 'php' => DRUPAL_MINIMUM_PHP, + 'files' => array(), + ); + + // The install profile is always required. + $file->info['required'] = TRUE; + + $values = array( + 'filename' => $filename, + 'name' => $profile, + 'info' => serialize($info), + 'schema_version' => 0, + 'type' => 'module', + 'status' => 1, + 'owner' => '', + ); + + // Install profile hooks are always executed last by the module system + $values['weight'] = 1000; + + // Initializing the system table entry for the install profile + db_insert('system') + ->fields(array_keys($values)) + ->values($values) + ->execute(); + + // Reset the cached schema version. + drupal_get_installed_schema_version($profile, TRUE); + + // Load the updates again to make sure the install profile updates are loaded + drupal_load_updates(); + } +} + /** * Parse database connection URLs (in the old, pre-Drupal 7 format) and * return them as an array of database connection information. diff --git a/install.php b/install.php index 11f8d301090c4376dc7dcf2f8ae92386347dd891..35f8dc722ef23fb4eaae42a92da86410fc52ca24 100644 --- a/install.php +++ b/install.php @@ -733,6 +733,11 @@ function install_system_module(&$install_state) { // variable_set() can be used now that system.module is installed and // Drupal is bootstrapped. $modules = $install_state['profile_info']['dependencies']; + + // The install profile is also a module, which needs to be installed + // after all the dependencies have been installed. + $modules[] = drupal_get_profile(); + variable_set('install_profile_modules', array_diff($modules, array('system'))); $install_state['database_tables_exist'] = TRUE; } @@ -1424,7 +1429,14 @@ function install_finished(&$install_state) { _drupal_flush_css_js(); // Remember the profile which was used. - variable_set('install_profile', $install_state['parameters']['profile']); + variable_set('install_profile', drupal_get_profile()); + + // Install profiles are always loaded last + db_update('system') + ->fields(array('weight' => 1000)) + ->condition('type', 'module') + ->condition('name', drupal_get_profile()) + ->execute(); // Cache a fully-built schema. drupal_get_schema(NULL, TRUE); diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php index 51b983a34c97cb626884c741bec37a4afa2a633a..893c7e8c66fee29c8cf4b18ea445ddb78bd42601 100644 --- a/modules/simpletest/drupal_web_test_case.php +++ b/modules/simpletest/drupal_web_test_case.php @@ -1037,6 +1037,7 @@ protected function setUp() { $this->originalLanguageDefault = variable_get('language_default'); $this->originalPrefix = $db_prefix; $this->originalFileDirectory = file_directory_path(); + $this->originalProfile = drupal_get_profile(); $clean_url_original = variable_get('clean_url', 0); // Generate temporary prefixed database to ensure that tests have a clean starting point. @@ -1062,7 +1063,7 @@ protected function setUp() { $this->preloadRegistry(); // Include the default profile - require_once('./profiles/default/default.profile'); + variable_set('install_profile', 'default'); $profile_details = install_profile_info('default', 'en'); // Add the specified modules to the list of modules in the default profile. @@ -1086,7 +1087,7 @@ protected function setUp() { // Run default profile tasks. $install_state = array(); - default_profile_site_setup($install_state); + drupal_install_modules(array('default'), TRUE); // Rebuild caches. node_types_rebuild(); diff --git a/modules/simpletest/tests/module.test b/modules/simpletest/tests/module.test index ee95044e0a274b8a70f4e306b350e5db3b0f3d4a..5c703c2873715169f64528ef799b079e918f2527 100644 --- a/modules/simpletest/tests/module.test +++ b/modules/simpletest/tests/module.test @@ -25,6 +25,10 @@ class ModuleUnitTest extends DrupalWebTestCase { // Build a list of modules, sorted alphabetically. $profile_info = install_profile_info('default', 'en'); $module_list = $profile_info['dependencies']; + + // Install profile is a module that is expected to be loaded. + $module_list[] = 'default'; + 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 diff --git a/modules/system/system.install b/modules/system/system.install index 594f311bdb8fb96bb06d2f64d034fefbf3a2a6fe..e555e5795b6a59204a397ab193df8dc7da8a3e9f 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -28,6 +28,23 @@ function system_requirements($phase) { 'severity' => REQUIREMENT_INFO, 'weight' => -10, ); + + // Display the currently active install profile, if the site + // is not running the default install profile. + $profile = drupal_get_profile(); + if ($profile != 'default') { + $info = install_profile_info($profile); + $requirements['install_profile'] = array( + 'title' => $t('Install profile'), + 'value' => $t('%profile_name (%profile-%version)', array( + '%profile_name' => $info['name'], + '%profile' => $profile, + '%version' => $info['version'] + )), + 'severity' => REQUIREMENT_INFO, + 'weight' => -9 + ); + } } // Web server information. diff --git a/modules/system/system.module b/modules/system/system.module index 2eb1fafb4373d9a6aaa171ea0e9d6db09ed03ca5..a98438365c5a4af40baecbd0747029e7f0115f44 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -1753,6 +1753,15 @@ function _system_get_module_data() { // Find modules $modules = drupal_system_listing('/\.module$/', 'modules', 'name', 0); + // Include the install profile in modules that are loaded. + $profile = drupal_get_profile(); + $modules[$profile]->name = $profile; + $modules[$profile]->uri = 'profiles/' . $profile . '/' . $profile . '.profile'; + $modules[$profile]->filename = $profile . '.profile'; + + // Install profile hooks are always executed last. + $modules[$profile]->weight = 1000; + // Set defaults for module info. $defaults = array( 'dependencies' => array(), @@ -1783,6 +1792,9 @@ function _system_get_module_data() { drupal_alter('system_info', $modules[$key]->info, $modules[$key]); } + // The install profile is required. + $modules[$profile]->info['required'] = TRUE; + return $modules; } diff --git a/profiles/default/default.info b/profiles/default/default.info index 583829d8805fa2dd3e1d00e3b75d9067b84a7f9a..c143de0929a36544f463d914c311a4ee515b5dfa 100644 --- a/profiles/default/default.info +++ b/profiles/default/default.info @@ -15,3 +15,4 @@ dependencies[] = dblog dependencies[] = search dependencies[] = toolbar dependencies[] = field_ui +files[] = default.profile diff --git a/profiles/default/default.install b/profiles/default/default.install new file mode 100644 index 0000000000000000000000000000000000000000..7a81aecd52349797a8c6a8eed5a15b0af086fce7 --- /dev/null +++ b/profiles/default/default.install @@ -0,0 +1,216 @@ +<?php +// $Id$ + +/** + * Implement hook_install(). + * + * Perform actions to set up the site for this profile. + */ +function default_install() { + + // 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' => 'sidebar_first', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'navigation', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 0, + 'region' => 'sidebar_first', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'management', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 1, + 'region' => 'sidebar_first', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'powered-by', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 10, + 'region' => 'footer', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'help', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 0, + 'region' => 'help', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'main', + 'theme' => 'seven', + 'status' => 1, + 'weight' => 0, + 'region' => 'content', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'help', + 'theme' => 'seven', + 'status' => 1, + 'weight' => 0, + 'region' => 'help', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'user', + 'delta' => 'login', + 'theme' => 'seven', + 'status' => 1, + 'weight' => 10, + 'region' => 'content', + '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(); + + // Insert default user-defined node types into the database. For a complete + // list of available node type attributes, refer to the node type API + // documentation at: http://api.drupal.org/api/HEAD/function/hook_node_info. + $types = array( + array( + 'type' => 'page', + 'name' => st('Page'), + 'base' => 'node_content', + 'description' => st("Use <em>pages</em> for your static content, such as an 'About us' page."), + 'custom' => 1, + 'modified' => 1, + 'locked' => 0, + ), + array( + 'type' => 'article', + 'name' => st('Article'), + 'base' => 'node_content', + 'description' => st('Use <em>articles</em> for time-specific content like news, press releases or blog posts.'), + 'custom' => 1, + 'modified' => 1, + 'locked' => 0, + ), + ); + + foreach ($types as $type) { + $type = node_type_set_defaults($type); + node_type_save($type); + } + + // Default page to not be promoted and have comments disabled. + variable_set('node_options_page', array('status')); + variable_set('comment_page', COMMENT_NODE_HIDDEN); + + // Don't display date and author information for page nodes by default. + variable_set('node_submitted_page', FALSE); + + // Create an image style. + $style = array('name' => 'thumbnail'); + $style = image_style_save($style); + $effect = array( + 'isid' => $style['isid'], + 'name' => 'image_scale_and_crop', + 'data' => array('width' => '85', 'height' => '85'), + ); + image_effect_save($effect); + + // Enable user picture support and set the default to a square thumbnail option. + variable_set('user_pictures', '1'); + variable_set('user_picture_dimensions', '1024x1024'); + variable_set('user_picture_file_size', '800'); + variable_set('user_picture_style', 'thumbnail'); + + $theme_settings = theme_get_settings(); + $theme_settings['toggle_node_user_picture'] = '1'; + $theme_settings['toggle_comment_user_picture'] = '1'; + variable_set('theme_settings', $theme_settings); + + // Create a default vocabulary named "Tags", enabled for the 'article' content type. + $description = st('Use tags to group articles on similar topics into categories.'); + $help = st('Enter a comma-separated list of words to describe your content.'); + + $vid = db_insert('taxonomy_vocabulary')->fields(array( + 'name' => 'Tags', + 'description' => $description, + 'machine_name' => 'tags', + 'help' => $help, + 'relations' => 0, + 'hierarchy' => 0, + 'multiple' => 0, + 'required' => 0, + 'tags' => 1, + 'module' => 'taxonomy', + 'weight' => 0, + ))->execute(); + db_insert('taxonomy_vocabulary_node_type')->fields(array('vid' => $vid, 'type' => 'article'))->execute(); + + // Create a default role for site administrators. + $rid = db_insert('role')->fields(array('name' => 'administrator'))->execute(); + + // Set this as the administrator role. + variable_set('user_admin_role', $rid); + + // Assign all available permissions to this role. + foreach (module_invoke_all('permission') as $key => $value) { + db_insert('role_permission') + ->fields(array( + 'rid' => $rid, + 'permission' => $key, + ))->execute(); + } + + // Update the menu router information. + menu_rebuild(); + + // Save some default links. + $link = array('link_path' => 'admin/structure/menu-customize/main-menu/add', 'link_title' => 'Add a main menu link', 'menu_name' => 'main-menu'); + menu_link_save($link); + + // Enable the admin theme. + db_update('system') + ->fields(array('status' => 1)) + ->condition('type', 'theme') + ->condition('name', 'seven') + ->execute(); + variable_set('admin_theme', 'seven'); + variable_set('node_admin_theme', '1'); +} diff --git a/profiles/default/default.profile b/profiles/default/default.profile index 15a640749900dee98287cc7fe7234d7994a01b75..4724aea3983d0b71e980e416b36e0b4ce5737911 100644 --- a/profiles/default/default.profile +++ b/profiles/default/default.profile @@ -1,234 +1,6 @@ <?php // $Id$ -/** - * Implement hook_profile_tasks(). - */ -function default_profile_tasks() { - $tasks = array( - 'default_profile_site_setup' => array(), - ); - return $tasks; -} - -/** - * Installation task; perform actions to set up the site for this profile. - * - * This task does not return any output, meaning that control will be passed - * along to the next task without ending the page request. - * - * @param $install_state - * An array of information about the current installation state. - */ -function default_profile_site_setup(&$install_state) { - - // 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' => 'sidebar_first', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'navigation', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 0, - 'region' => 'sidebar_first', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'management', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 1, - 'region' => 'sidebar_first', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'powered-by', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 10, - 'region' => 'footer', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'help', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 0, - 'region' => 'help', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'main', - 'theme' => 'seven', - 'status' => 1, - 'weight' => 0, - 'region' => 'content', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'help', - 'theme' => 'seven', - 'status' => 1, - 'weight' => 0, - 'region' => 'help', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'user', - 'delta' => 'login', - 'theme' => 'seven', - 'status' => 1, - 'weight' => 10, - 'region' => 'content', - '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(); - - // Insert default user-defined node types into the database. For a complete - // list of available node type attributes, refer to the node type API - // documentation at: http://api.drupal.org/api/HEAD/function/hook_node_info. - $types = array( - array( - 'type' => 'page', - 'name' => st('Page'), - 'base' => 'node_content', - 'description' => st("Use <em>pages</em> for your static content, such as an 'About us' page."), - 'custom' => 1, - 'modified' => 1, - 'locked' => 0, - ), - array( - 'type' => 'article', - 'name' => st('Article'), - 'base' => 'node_content', - 'description' => st('Use <em>articles</em> for time-specific content like news, press releases or blog posts.'), - 'custom' => 1, - 'modified' => 1, - 'locked' => 0, - ), - ); - - foreach ($types as $type) { - $type = node_type_set_defaults($type); - node_type_save($type); - } - - // Default page to not be promoted and have comments disabled. - variable_set('node_options_page', array('status')); - variable_set('comment_page', COMMENT_NODE_HIDDEN); - - // Don't display date and author information for page nodes by default. - variable_set('node_submitted_page', FALSE); - - // Create an image style. - $style = array('name' => 'thumbnail'); - $style = image_style_save($style); - $effect = array( - 'isid' => $style['isid'], - 'name' => 'image_scale_and_crop', - 'data' => array('width' => '85', 'height' => '85'), - ); - image_effect_save($effect); - - // Enable user picture support and set the default to a square thumbnail option. - variable_set('user_pictures', '1'); - variable_set('user_picture_dimensions', '1024x1024'); - variable_set('user_picture_file_size', '800'); - variable_set('user_picture_style', 'thumbnail'); - - $theme_settings = theme_get_settings(); - $theme_settings['toggle_node_user_picture'] = '1'; - $theme_settings['toggle_comment_user_picture'] = '1'; - variable_set('theme_settings', $theme_settings); - - // Create a default vocabulary named "Tags", enabled for the 'article' content type. - $description = st('Use tags to group articles on similar topics into categories.'); - $help = st('Enter a comma-separated list of words to describe your content.'); - - $vid = db_insert('taxonomy_vocabulary')->fields(array( - 'name' => 'Tags', - 'description' => $description, - 'machine_name' => 'tags', - 'help' => $help, - 'relations' => 0, - 'hierarchy' => 0, - 'multiple' => 0, - 'required' => 0, - 'tags' => 1, - 'module' => 'taxonomy', - 'weight' => 0, - ))->execute(); - db_insert('taxonomy_vocabulary_node_type')->fields(array('vid' => $vid, 'type' => 'article'))->execute(); - - // Create a default role for site administrators. - $rid = db_insert('role')->fields(array('name' => 'administrator'))->execute(); - - // Set this as the administrator role. - variable_set('user_admin_role', $rid); - - // Assign all available permissions to this role. - foreach (module_invoke_all('permission') as $key => $value) { - db_insert('role_permission') - ->fields(array( - 'rid' => $rid, - 'permission' => $key, - ))->execute(); - } - - // Update the menu router information. - menu_rebuild(); - - // Save some default links. - $link = array('link_path' => 'admin/structure/menu-customize/main-menu/add', 'link_title' => 'Add a main menu link', 'menu_name' => 'main-menu'); - menu_link_save($link); - - // Enable the admin theme. - db_update('system') - ->fields(array('status' => 1)) - ->condition('type', 'theme') - ->condition('name', 'seven') - ->execute(); - variable_set('admin_theme', 'seven'); - variable_set('node_admin_theme', '1'); -} - /** * Implement hook_form_alter(). * diff --git a/profiles/expert/expert.info b/profiles/expert/expert.info index a6958c855a3a3fa6fe9500c87abb2b60249041db..2be5d5437663bd0a42522c83fe81269025000e93 100644 --- a/profiles/expert/expert.info +++ b/profiles/expert/expert.info @@ -5,3 +5,4 @@ version = VERSION core = 7.x dependencies[] = block dependencies[] = dblog +files[] = expert.profile diff --git a/profiles/expert/expert.install b/profiles/expert/expert.install new file mode 100644 index 0000000000000000000000000000000000000000..bcb6cfff8d7eadb398086bf40c274e2cc347721d --- /dev/null +++ b/profiles/expert/expert.install @@ -0,0 +1,71 @@ +<?php +// $Id$ + +/** + * Implement hook_install(). + * + * Perform actions to set up the site for this profile. + */ +function expert_install() { + + // 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' => 'sidebar_first', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'navigation', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 0, + 'region' => 'sidebar_first', + 'pages' => '', + 'cache' => -1, + ), + array( + 'module' => 'system', + 'delta' => 'management', + 'theme' => 'garland', + 'status' => 1, + 'weight' => 1, + 'region' => 'sidebar_first', + '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(); +} + + diff --git a/profiles/expert/expert.profile b/profiles/expert/expert.profile index dd8a5e194823c7543a5689ecf0fe6c89d8580e2a..91188f00c26d00f5687aa43f5139e8b3375e39cb 100644 --- a/profiles/expert/expert.profile +++ b/profiles/expert/expert.profile @@ -1,87 +1,6 @@ <?php // $Id$ -/** - * Implement hook_profile_tasks(). - */ -function expert_profile_tasks() { - $tasks = array( - 'expert_profile_site_setup' => array(), - ); - return $tasks; -} - -/** - * Installation task; perform actions to set up the site for this profile. - * - * This task does not return any output, meaning that control will be passed - * along to the next task without ending the page request. - * - * @param $install_state - * An array of information about the current installation state. - */ -function expert_profile_site_setup(&$install_state) { - - // 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' => 'sidebar_first', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'navigation', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 0, - 'region' => 'sidebar_first', - 'pages' => '', - 'cache' => -1, - ), - array( - 'module' => 'system', - 'delta' => 'management', - 'theme' => 'garland', - 'status' => 1, - 'weight' => 1, - 'region' => 'sidebar_first', - '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(); -} - /** * Implement hook_form_alter(). *