Skip to content

Instantly share code, notes, and snippets.

@bmann
Created July 25, 2010 03:44
Show Gist options
  • Save bmann/489285 to your computer and use it in GitHub Desktop.
Save bmann/489285 to your computer and use it in GitHub Desktop.
; from the auto-generated make from drupal.org
projects[diff] = 2.0
projects[freelinking] = 1.10
projects[token] = 1.13
projects[talk] = 1.6
projects[pathauto] = 1.3
projects[wikitools] = 1.2
projects[flexifilter] = 1.2
projects[admin_menu] = 1.5
projects[extlink] = 1.11
<?php
// $Id: drupal_wiki.profile,v 1.3 2008/01/05 08:34:30 cwgordon7 Exp $
/**
* Implementation of hook_profile_modules().
*/
function drupal_wiki_profile_modules() {
return array (
0 => 'block',
1 => 'book',
2 => 'color',
3 => 'comment',
4 => 'diff',
5 => 'filter',
6 => 'freelinking',
7 => 'help',
8 => 'menu',
9 => 'node',
10 => 'path',
11 => 'token',
13 => 'search',
14 => 'statistics',
15 => 'system',
16 => 'talk',
17 => 'pathauto',
18 => 'user',
19 => 'dblog',
20 => 'wikitools',
21 => 'flexifilter',
22 => 'admin_menu',
23 => 'extlink',
);
}
/**
* Implementation of hook_profile_details().
*/
function drupal_wiki_profile_details() {
return array (
'name' => 'Drupal wiki',
'description' => 'Select this profile to create a wiki powered by Drupal.',
);
}
/**
* 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 hook_profile_task_list()
* above. 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
* returning an array of them in hook_profile_task_list(), as these
* show up in the list of tasks on the installer user interface.
*
* 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 drupal_wiki_profile_tasks(&$task, $url) {
// 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'),
'module' => 'node',
'description' => st("A <em>page</em>, similar in form to a <em>story</em>, is a simple method for creating and displaying information that rarely changes, such as an \"About us\" section of a website. By default, a <em>page</em> entry does not allow visitor comments and is not featured on the site's initial home page."),
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE,
'help' => '',
'min_word_count' => '',
),
array(
'type' => 'story',
'name' => st('Story'),
'module' => 'node',
'description' => st("A <em>story</em>, similar in form to a <em>page</em>, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a <em>story</em> entry. By default, a <em>story</em> entry is automatically featured on the site's initial home page, and provides the ability to post comments."),
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE,
'help' => '',
'min_word_count' => '',
),
array(
'type' => 'wiki',
'name' => st('Wiki'),
'module' => 'node',
'description' => st("A <em>story</em>, similar in form to a <em>page</em>, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a <em>story</em> entry. By default, a <em>story</em> entry is automatically featured on the site's initial home page, and provides the ability to post comments."),
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE,
'help' => '',
'min_word_count' => '',
),
);
foreach ($types as $type) {
$type = (object) _node_type_set_defaults($type);
node_type_save($type);
}
// Set various variables.
variable_set('anonymous', 'Anonymous');
variable_set('clean_url', '1');
variable_set('comment_book', '2');
variable_set('comment_page', 0);
variable_set('comment_talk_wiki', 1);
variable_set('filter_html_1', 1);
variable_set('freelinking_camelcase', 0);
variable_set('freelinking_nodetype', 'book');
variable_set('freelinking_notfound', 'no access search');
variable_set('freelinking_onceonly', 0);
variable_set('freelinking_restriction', 'none');
variable_set('menu_primary_menu', 2);
variable_set('menu_secondary_menu', 2);
variable_set('node_options_wiki', array (
0 => 'status',
1 => 'revision',
));
variable_set('node_options_book', array (
0 => 'status',
1 => 'revision',
));
variable_set('node_options_forum', array (
0 => 'status',
));
variable_set('node_options_page', array (
0 => 'status',
));
variable_set('pathauto_case', '1');
variable_set('pathauto_ignore_words', '');
variable_set('pathauto_indexaliases', false);
variable_set('pathauto_indexaliases_bulkupdate', false);
variable_set('pathauto_max_bulk_update', '50');
variable_set('pathauto_max_component_length', '100');
variable_set('pathauto_max_length', '100');
variable_set('pathauto_modulelist', array (
0 => 'node',
1 => 'taxonomy',
2 => 'user',
));
variable_set('pathauto_node_book_pattern', 'wiki/[title-raw]');
variable_set('pathauto_node_bulkupdate', 0);
variable_set('pathauto_node_pattern', 'content/[title-raw]');
variable_set('pathauto_node_supportsfeeds', NULL);
variable_set('pathauto_punctuation_ampersand', '2');
variable_set('pathauto_punctuation_asterisk', '2');
variable_set('pathauto_punctuation_at', '2');
variable_set('pathauto_punctuation_backtick', '2');
variable_set('pathauto_punctuation_back_slash', '2');
variable_set('pathauto_punctuation_caret', '2');
variable_set('pathauto_punctuation_colon', '2');
variable_set('pathauto_punctuation_comma', '2');
variable_set('pathauto_punctuation_dollar', '2');
variable_set('pathauto_punctuation_double_quotes', '2');
variable_set('pathauto_punctuation_equal', '2');
variable_set('pathauto_punctuation_exclamation', '2');
variable_set('pathauto_punctuation_greater_than', '2');
variable_set('pathauto_punctuation_hash', '2');
variable_set('pathauto_punctuation_hyphen', '2');
variable_set('pathauto_punctuation_left_curly', '2');
variable_set('pathauto_punctuation_left_parenthesis', '2');
variable_set('pathauto_punctuation_left_square', '2');
variable_set('pathauto_punctuation_less_than', '2');
variable_set('pathauto_punctuation_percent', '2');
variable_set('pathauto_punctuation_period', '2');
variable_set('pathauto_punctuation_pipe', '2');
variable_set('pathauto_punctuation_plus', '2');
variable_set('pathauto_punctuation_question_mark', '2');
variable_set('pathauto_punctuation_quotes', '2');
variable_set('pathauto_punctuation_right_curly', '2');
variable_set('pathauto_punctuation_right_parenthesis', '2');
variable_set('pathauto_punctuation_right_square', '2');
variable_set('pathauto_punctuation_semicolon', '2');
variable_set('pathauto_punctuation_tilde', '2');
variable_set('pathauto_punctuation_underscore', '2');
variable_set('pathauto_reduce_ascii', 0);
variable_set('pathauto_separator', '_');
variable_set('pathauto_taxonomy_1_pattern', '');
variable_set('pathauto_taxonomy_2_pattern', '');
variable_set('pathauto_taxonomy_applytofeeds', 0);
variable_set('pathauto_taxonomy_bulkupdate', 0);
variable_set('pathauto_taxonomy_pattern', 'category/[vocab-raw]/[catpath-raw]');
variable_set('pathauto_taxonomy_supportsfeeds', '0/feed');
variable_set('pathauto_transliterate', false);
variable_set('pathauto_update_action', '2');
variable_set('pathauto_user_bulkupdate', 0);
variable_set('pathauto_user_pattern', 'users/[user-raw]');
variable_set('pathauto_user_supportsfeeds', NULL);
variable_set('pathauto_verbose', 0);
variable_set('show_preview_changes_book', 1);
system_theme_data();
variable_set('wikitools_disallowed_characters', '[]{}|');
variable_set('wikitools_hijack_freelinking', 1);
variable_set('wikitools_main_page_title', 'Main Page');
variable_set('wikitools_node_types', array (
'book' => 'book',
'wiki' => 'wiki',
));
variable_set('wikitools_options', array (
'node creation' => 'node creation',
'node search' => 'node search',
'auto redirect' => 'auto redirect',
'unique titles' => 'unique titles',
'move protection' => 'move protection',
'delete protection' => 'delete protection',
'underscore as space' => 'underscore as space',
'dash as space' => 'dash as space',
));
variable_set('wikitools_path', 'wiki');
// Add role "Moderator".
db_query("INSERT INTO {role} (`rid`, `name`) VALUES (3, '%s')", 'moderator');
// Set access permissions for different roles
db_query("UPDATE {permission} SET perm = 'create wiki content, edit any wiki content, edit own wiki content, access comments, post comments, post comments without approval, access content, revert revisions, view revisions, search content, use advanced search, access user profiles' WHERE rid = 1");
db_query("UPDATE {permission} SET perm = 'create wiki content, edit any wiki content, edit own wiki content, access comments, post comments, post comments without approval, access content, revert revisions, view revisions, search content, use advanced search, access user profiles, change own username' WHERE rid = 2");
db_query("INSERT INTO {permission} (`rid`, `perm`, `tid`) VALUES (3, 'create wiki content, edit any wiki content, edit own wiki content, access comments, administer comments, post comments, post comments without approval, access freelinking list, access content, revert revisions, view revisions, search content, use advanced search, access user profiles, administer users, change own username', 0)");
// Add admin user with password 'admin'
db_query("INSERT INTO {users} (`uid`, `name`, `pass`, `mail`, `mode`, `sort`, `threshold`, `theme`, `signature`, `created`, `access`, `login`, `status`, `timezone`, `language`, `picture`, `init`, `data`) VALUES (2, 'moderator', MD5('moderator'), '', 0, 0, 0, '', '', NOW(), NOW(), 0, 1, NULL, '', '', '', NULL)");
// Update the menu router information.
menu_rebuild();
// Add freelinking filter
db_query("INSERT INTO {filters} (`format`, `module`, `delta`, `weight`) VALUES (%d, 'freelinking', 0, 10)", 1);
system_initialize_theme_blocks('garland');
}
@bmann
Copy link
Author

bmann commented Jul 25, 2010

TO DO:

  • input filters patch
  • remove Story, and perhaps Page as well
  • Feature-ize it for the Wiki content type; might actually be able to turn the whole install profile into a Wiki?
  • those DB queries are nasty with a capital N
  • don't understand why book AND wiki both exist....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment