function standard_install

Same name in other branches
  1. 9 core/profiles/standard/standard.install \standard_install()
  2. 8.9.x core/profiles/standard/standard.install \standard_install()
  3. 10 core/profiles/standard/standard.install \standard_install()
  4. 11.x core/profiles/standard/standard.install \standard_install()

Implements hook_install().

Perform actions to set up the site for this profile.

See also

system_install()

File

profiles/standard/standard.install, line 14

Code

function standard_install() {
    // Add text formats.
    $filtered_html_format = array(
        'format' => 'filtered_html',
        'name' => 'Filtered HTML',
        'weight' => 0,
        'filters' => array(
            // URL filter.
'filter_url' => array(
                'weight' => 0,
                'status' => 1,
            ),
            // HTML filter.
'filter_html' => array(
                'weight' => 1,
                'status' => 1,
            ),
            // Line break filter.
'filter_autop' => array(
                'weight' => 2,
                'status' => 1,
            ),
            // HTML corrector filter.
'filter_htmlcorrector' => array(
                'weight' => 10,
                'status' => 1,
            ),
        ),
    );
    $filtered_html_format = (object) $filtered_html_format;
    filter_format_save($filtered_html_format);
    $full_html_format = array(
        'format' => 'full_html',
        'name' => 'Full HTML',
        'weight' => 1,
        'filters' => array(
            // URL filter.
'filter_url' => array(
                'weight' => 0,
                'status' => 1,
            ),
            // Line break filter.
'filter_autop' => array(
                'weight' => 1,
                'status' => 1,
            ),
            // HTML corrector filter.
'filter_htmlcorrector' => array(
                'weight' => 10,
                'status' => 1,
            ),
        ),
    );
    $full_html_format = (object) $full_html_format;
    filter_format_save($full_html_format);
    // Enable some standard blocks.
    $default_theme = variable_get('theme_default', 'bartik');
    $admin_theme = 'seven';
    $blocks = array(
        array(
            'module' => 'system',
            'delta' => 'main',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'content',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'search',
            'delta' => 'form',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => -1,
            'region' => 'sidebar_first',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'node',
            'delta' => 'recent',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => 10,
            'region' => 'dashboard_main',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'user',
            'delta' => 'login',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'sidebar_first',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'system',
            'delta' => 'navigation',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'sidebar_first',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'system',
            'delta' => 'powered-by',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => 10,
            'region' => 'footer',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'system',
            'delta' => 'help',
            'theme' => $default_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'help',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'system',
            'delta' => 'main',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'content',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'system',
            'delta' => 'help',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'help',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'user',
            'delta' => 'login',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => 10,
            'region' => 'content',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'user',
            'delta' => 'new',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => 0,
            'region' => 'dashboard_sidebar',
            'pages' => '',
            'cache' => -1,
        ),
        array(
            'module' => 'search',
            'delta' => 'form',
            'theme' => $admin_theme,
            'status' => 1,
            'weight' => -10,
            'region' => 'dashboard_sidebar',
            'pages' => '',
            'cache' => -1,
        ),
    );
    $query = db_insert('block')->fields(array(
        'module',
        'delta',
        'theme',
        'status',
        'weight',
        'region',
        'pages',
        'cache',
    ));
    foreach ($blocks as $block) {
        $query->values($block);
    }
    $query->execute();
    // Insert default pre-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('Basic page'),
            'base' => 'node_content',
            'description' => st("Use <em>basic 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-sensitive 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);
        node_add_body_field($type);
    }
    // Insert default pre-defined RDF mapping into the database.
    $rdf_mappings = array(
        array(
            'type' => 'node',
            'bundle' => 'page',
            'mapping' => array(
                'rdftype' => array(
                    'foaf:Document',
                ),
            ),
        ),
        array(
            'type' => 'node',
            'bundle' => 'article',
            'mapping' => array(
                'field_image' => array(
                    'predicates' => array(
                        'og:image',
                        'rdfs:seeAlso',
                    ),
                    'type' => 'rel',
                ),
                'field_tags' => array(
                    'predicates' => array(
                        'dc:subject',
                    ),
                    'type' => 'rel',
                ),
            ),
        ),
    );
    foreach ($rdf_mappings as $rdf_mapping) {
        rdf_mapping_save($rdf_mapping);
    }
    // Default "Basic 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 "Basic page" nodes by default.
    variable_set('node_submitted_page', FALSE);
    // 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');
    // Allow visitor account creation with administrative approval.
    variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
    // Create a default vocabulary named "Tags", enabled for the 'article' content type.
    $description = st('Use tags to group articles on similar topics into categories.');
    $vocabulary = (object) array(
        'name' => st('Tags'),
        'description' => $description,
        'machine_name' => 'tags',
    );
    taxonomy_vocabulary_save($vocabulary);
    $field = array(
        'field_name' => 'field_' . $vocabulary->machine_name,
        'type' => 'taxonomy_term_reference',
        // Set cardinality to unlimited for tagging.
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
        'settings' => array(
            'allowed_values' => array(
                array(
                    'vocabulary' => $vocabulary->machine_name,
                    'parent' => 0,
                ),
            ),
        ),
    );
    field_create_field($field);
    $help = st('Enter a comma-separated list of words to describe your content.');
    $instance = array(
        'field_name' => 'field_' . $vocabulary->machine_name,
        'entity_type' => 'node',
        'label' => 'Tags',
        'bundle' => 'article',
        'description' => $help,
        'widget' => array(
            'type' => 'taxonomy_autocomplete',
            'weight' => -4,
        ),
        'display' => array(
            'default' => array(
                'type' => 'taxonomy_term_reference_link',
                'weight' => 10,
            ),
            'teaser' => array(
                'type' => 'taxonomy_term_reference_link',
                'weight' => 10,
            ),
        ),
    );
    field_create_instance($instance);
    // Create an image field named "Image", enabled for the 'article' content type.
    // Many of the following values will be defaulted, they're included here as an illustrative examples.
    // See http://api.drupal.org/api/function/field_create_field/7
    $field = array(
        'field_name' => 'field_image',
        'type' => 'image',
        'cardinality' => 1,
        'locked' => FALSE,
        'indexes' => array(
            'fid' => array(
                'fid',
            ),
        ),
        'settings' => array(
            'uri_scheme' => 'public',
            'default_image' => FALSE,
        ),
        'storage' => array(
            'type' => 'field_sql_storage',
            'settings' => array(),
        ),
    );
    field_create_field($field);
    // Many of the following values will be defaulted, they're included here as an illustrative examples.
    // See http://api.drupal.org/api/function/field_create_instance/7
    $instance = array(
        'field_name' => 'field_image',
        'entity_type' => 'node',
        'label' => 'Image',
        'bundle' => 'article',
        'description' => st('Upload an image to go with this article.'),
        'required' => FALSE,
        'settings' => array(
            'file_directory' => '[date:custom:Y]-[date:custom:m]',
            'file_extensions' => 'png gif jpg jpeg',
            'max_filesize' => '',
            'max_resolution' => '',
            'min_resolution' => '',
            'alt_field' => TRUE,
            'title_field' => '',
        ),
        'widget' => array(
            'type' => 'image_image',
            'settings' => array(
                'progress_indicator' => 'throbber',
                'preview_image_style' => 'thumbnail',
            ),
            'weight' => -1,
        ),
        'display' => array(
            'default' => array(
                'label' => 'hidden',
                'type' => 'image',
                'settings' => array(
                    'image_style' => 'large',
                    'image_link' => '',
                ),
                'weight' => -1,
            ),
            'teaser' => array(
                'label' => 'hidden',
                'type' => 'image',
                'settings' => array(
                    'image_style' => 'medium',
                    'image_link' => 'content',
                ),
                'weight' => -1,
            ),
        ),
    );
    field_create_instance($instance);
    // Enable default permissions for system roles.
    $filtered_html_permission = filter_permission_name($filtered_html_format);
    user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array(
        'access content',
        'access comments',
        $filtered_html_permission,
    ));
    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array(
        'access content',
        'access comments',
        'post comments',
        'skip comment approval',
        $filtered_html_permission,
    ));
    // Create a default role for site administrators, with all available permissions assigned.
    $admin_role = new stdClass();
    $admin_role->name = 'administrator';
    $admin_role->weight = 2;
    user_role_save($admin_role);
    user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission')));
    // Set this as the administrator role.
    variable_set('user_admin_role', $admin_role->rid);
    // Assign user 1 the "administrator" role.
    db_insert('users_roles')->fields(array(
        'uid' => 1,
        'rid' => $admin_role->rid,
    ))
        ->execute();
    // Create a Home link in the main menu.
    $item = array(
        'link_title' => st('Home'),
        'link_path' => '<front>',
        'menu_name' => 'main-menu',
    );
    menu_link_save($item);
    // Update the menu router information.
    menu_rebuild();
    // 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');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.