Commit 3a0d4322 authored by webchick's avatar webchick

#206138 by pwolanin: Rename mis-named 'module' attribute in node types.

parent 34ec8f98
......@@ -13,7 +13,7 @@ function blog_node_info() {
return array(
'blog' => array(
'name' => t('Blog entry'),
'module' => 'blog',
'base' => 'blog',
'description' => t('A <em>blog entry</em> is a single post to an online journal, or <em>blog</em>.'),
)
);
......
......@@ -27,14 +27,14 @@ function _book_install_type_create() {
$book_node_type = array(
'type' => 'book',
'name' => t('Book page'),
'module' => 'node',
'base' => 'node_content',
'description' => t('A <em>book page</em> is a page of content, organized into a collection of related entries collectively known as a <em>book</em>. A <em>book page</em> automatically displays links to adjacent pages, providing a simple navigation system for organizing and reviewing structured content.'),
'custom' => TRUE,
'modified' => TRUE,
'locked' => FALSE,
'custom' => 1,
'modified' => 1,
'locked' => 0,
);
$book_node_type = (object)_node_type_set_defaults($book_node_type);
$book_node_type = node_type_set_defaults($book_node_type);
node_type_save($book_node_type);
// Default to not promoted.
variable_set('node_options_book', array('status'));
......
......@@ -356,7 +356,7 @@ function forum_node_info() {
return array(
'forum' => array(
'name' => t('Forum topic'),
'module' => 'forum',
'base' => 'forum',
'description' => t('A <em>forum topic</em> is the initial post to a new discussion thread within a forum.'),
'title_label' => t('Subject'),
)
......
......@@ -50,19 +50,12 @@ function node_overview_types() {
*/
function node_type_form(&$form_state, $type = NULL) {
if (!isset($type->type)) {
$type = new stdClass();
$type->type = $type->name = $type->module = $type->description = $type->help = '';
$type->min_word_count = 0;
$type->has_title = TRUE;
$type->has_body = TRUE;
$type->title_label = t('Title');
$type->body_label = t('Body');
$type->custom = TRUE;
$type->modified = FALSE;
$type->locked = FALSE;
// This is a new type. Node module managed types are custom and unlocked.
$type = node_type_set_defaults(array('custom' => 1, 'locked' => 0));
}
$form['#node_type'] = $type; // Make the type object available to implementations of hook_form_alter.
// Make the type object available to implementations of hook_form_alter.
$form['#node_type'] = $type;
$form['identity'] = array(
'#type' => 'fieldset',
......@@ -170,9 +163,9 @@ function node_type_form(&$form_state, $type = NULL) {
'#type' => 'value',
'#value' => isset($type->orig_type) ? $type->orig_type : '',
);
$form['module'] = array(
$form['base'] = array(
'#type' => 'value',
'#value' => $type->module,
'#value' => $type->base,
);
$form['custom'] = array(
'#type' => 'value',
......@@ -253,7 +246,7 @@ function node_type_form_validate($form, &$form_state) {
function node_type_form_submit($form, &$form_state) {
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$type = new stdClass();
$type = node_type_set_defaults();
$type->type = trim($form_state['values']['type']);
$type->name = trim($form_state['values']['name']);
......@@ -271,7 +264,7 @@ function node_type_form_submit($form, &$form_state) {
$type->has_title = ($type->title_label != '');
$type->has_body = ($type->body_label != '');
$type->module = !empty($form_state['values']['module']) ? $form_state['values']['module'] : 'node';
$type->base = !empty($form_state['values']['base']) ? $form_state['values']['base'] : 'node_content';
$type->custom = $form_state['values']['custom'];
$type->modified = TRUE;
$type->locked = $form_state['values']['locked'];
......@@ -365,7 +358,7 @@ function node_type_reset(&$type) {
$info_array = module_invoke_all('node_info');
if (isset($info_array[$type->orig_type])) {
$info_array[$type->orig_type]['type'] = $type->orig_type;
$info = _node_type_set_defaults($info_array[$type->orig_type]);
$info = node_type_set_defaults($info_array[$type->orig_type]);
foreach ($info as $field => $value) {
$type->$field = $value;
......
......@@ -293,8 +293,8 @@ function node_schema() {
'not null' => TRUE,
'default' => '',
),
'module' => array(
'description' => t('The module that implements this type.'),
'base' => array(
'description' => t('The base string used to construct callbacks corresponding to this node type.'),
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
......@@ -380,3 +380,23 @@ function node_schema() {
return $schema;
}
/**
* Drupal 6.x to 7.x updates
*/
/**
* Fix node type 'module' attribute to avoid name-space conflicts.
*/
function node_update_7000() {
$ret = array();
$ret[] = update_sql("UPDATE {node_type} SET module = 'node_content' WHERE module = 'node'");
db_change_field($ret, 'node_type', 'module', 'base', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE));
return $ret;
}
/**
* End of 6.x to 7.x updates
*/
......@@ -465,8 +465,8 @@ function node_get_types($op = 'types', $node = NULL, $reset = FALSE) {
return $_node_types;
case 'type':
return isset($_node_types[$type]) ? $_node_types[$type] : FALSE;
case 'module':
return isset($_node_types[$type]->module) ? $_node_types[$type]->module : FALSE;
case 'base':
return isset($_node_types[$type]->base) ? $_node_types[$type]->base : FALSE;
case 'names':
return $_node_names;
case 'name':
......@@ -508,32 +508,35 @@ function node_type_save($info) {
$is_existing = FALSE;
$existing_type = !empty($info->old_type) ? $info->old_type : $info->type;
$is_existing = db_result(db_query("SELECT COUNT(*) FROM {node_type} WHERE type = '%s'", $existing_type));
if (!isset($info->help)) {
$info->help = '';
}
if (empty($info->min_word_count)) {
$info->min_word_count = 0;
}
if (!isset($info->body_label)) {
$info->body_label = '';
}
if (empty($info->custom)) {
$info->custom = 0;
}
if (empty($info->locked)) {
$info->locked = 0;
}
$type = node_type_set_defaults($info);
$fields = array(
'type' => (string) $type->type,
'name' => (string) $type->name,
'base' => (string) $type->base,
'has_title' => (int) $type->has_title,
'title_label' => (string) $type->title_label,
'has_body' => (int) $type->has_body,
'body_label' => (string) $type->body_label,
'description' => (string) $type->description,
'help' => (string) $type->help,
'min_word_count' => (int) $type->min_word_count,
'custom' => (int) $type->custom,
'modified' => (int) $type->modified,
'locked' => (int) $type->locked,
);
if ($is_existing) {
db_query("UPDATE {node_type} SET type = '%s', name = '%s', module = '%s', has_title = %d, title_label = '%s', has_body = %d, body_label = '%s', description = '%s', help = '%s', min_word_count = %d, custom = %d, modified = %d, locked = %d WHERE type = '%s'", $info->type, $info->name, $info->module, $info->has_title, $info->title_label, $info->has_body, $info->body_label, $info->description, $info->help, $info->min_word_count, $info->custom, $info->modified, $info->locked, $existing_type);
db_update('node_type')->fields($fields)->condition('type', $existing_type)->execute();
module_invoke_all('node_type', 'update', $info);
module_invoke_all('node_type', 'update', $type);
return SAVED_UPDATED;
}
else {
db_query("INSERT INTO {node_type} (type, name, module, has_title, title_label, has_body, body_label, description, help, min_word_count, custom, modified, locked, orig_type) VALUES ('%s', '%s', '%s', %d, '%s', %d, '%s', '%s', '%s', %d, %d, %d, %d, '%s')", $info->type, $info->name, $info->module, $info->has_title, $info->title_label, $info->has_body, $info->body_label, $info->description, $info->help, $info->min_word_count, $info->custom, $info->modified, $info->locked, $info->orig_type);
$fields['orig_type'] = (string) $type->orig_type;
db_insert('node_type')->fields($fields)->execute();
module_invoke_all('node_type', 'insert', $info);
module_invoke_all('node_type', 'insert', $type);
return SAVED_NEW;
}
}
......@@ -580,7 +583,7 @@ function _node_types_build() {
$info_array = module_invoke_all('node_info');
foreach ($info_array as $type => $info) {
$info['type'] = $type;
$_node_types[$type] = (object) _node_type_set_defaults($info);
$_node_types[$type] = node_type_set_defaults($info);
$_node_names[$type] = $info['name'];
}
......@@ -588,8 +591,8 @@ function _node_types_build() {
while ($type_object = db_fetch_object($type_result)) {
// Check for node types from disabled modules and mark their types for removal.
// Types defined by the node module in the database (rather than by a separate
// module using hook_node_info) have a module value of 'node'.
if ($type_object->module != 'node' && empty($info_array[$type_object->type])) {
// module using hook_node_info) have a base value of 'node_content'.
if ($type_object->base != 'node_content' && empty($info_array[$type_object->type])) {
$type_object->disabled = TRUE;
}
if (!isset($_node_types[$type_object->type]) || $type_object->modified) {
......@@ -609,43 +612,54 @@ function _node_types_build() {
}
/**
* Set default values for a node type defined through hook_node_info().
* Set the default values for a node type.
*
* The defaults are for a type defined through hook_node_info().
* When populating a custom node type $info should have the 'custom'
* key set to 1.
*
* @param $info
* An object or array containing values to override the defaults.
*
* @return
* A node type object.
*/
function _node_type_set_defaults($info) {
if (!isset($info['has_title'])) {
$info['has_title'] = TRUE;
}
if ($info['has_title'] && !isset($info['title_label'])) {
$info['title_label'] = t('Title');
}
function node_type_set_defaults($info = array()) {
static $type;
if (!isset($info['has_body'])) {
$info['has_body'] = TRUE;
}
if ($info['has_body'] && !isset($info['body_label'])) {
$info['body_label'] = t('Body');
if (!isset($type)) {
$type = new stdClass();
$type->type = '';
$type->name = '';
$type->base = '';
$type->description = '';
$type->help = '';
$type->min_word_count = 0;
$type->has_title = 1;
$type->has_body = 1;
$type->title_label = t('Title');
$type->body_label = t('Body');
$type->custom = 0;
$type->modified = 0;
$type->locked = 1;
$type->is_new = 1;
}
if (!isset($info['help'])) {
$info['help'] = '';
}
if (!isset($info['min_word_count'])) {
$info['min_word_count'] = 0;
$new_type = clone $type;
$info = (array) $info;
foreach ($info as $key => $data) {
$new_type->$key = $data;
}
if (!isset($info['custom'])) {
$info['custom'] = FALSE;
// If the type has no title or body, set an empty label.
if (!$new_type->has_title) {
$new_type->title_label = '';
}
if (!isset($info['modified'])) {
$info['modified'] = FALSE;
if (!$new_type->has_body) {
$new_type->body_label = '';
}
if (!isset($info['locked'])) {
$info['locked'] = TRUE;
}
$info['orig_type'] = $info['type'];
$info['is_new'] = TRUE;
$new_type->orig_type = isset($info['type']) ? $info['type'] : '';
return $info;
return $new_type;
}
/**
......@@ -659,12 +673,8 @@ function _node_type_set_defaults($info) {
* TRUE iff the $hook exists in the node type of $node.
*/
function node_hook(&$node, $hook) {
$module = node_get_types('module', $node);
if ($module == 'node') {
// Avoid function name collisions.
$module = 'node_content';
}
return module_hook($module, $hook);
$base = node_get_types('base', $node);
return module_hook($base, $hook);
}
/**
......@@ -681,11 +691,8 @@ function node_hook(&$node, $hook) {
*/
function node_invoke(&$node, $hook, $a2 = NULL, $a3 = NULL, $a4 = NULL) {
if (node_hook($node, $hook)) {
$module = node_get_types('module', $node);
if ($module == 'node') {
$module = 'node_content'; // Avoid function name collisions.
}
$function = $module . '_' . $hook;
$base = node_get_types('base', $node);
$function = $base . '_' . $hook;
return ($function($node, $a2, $a3, $a4));
}
}
......@@ -1172,7 +1179,7 @@ function node_perm() {
);
foreach (node_get_types() as $type) {
if ($type->module == 'node') {
if ($type->base == 'node_content') {
$perms += node_list_permissions($type);
}
}
......@@ -2085,11 +2092,8 @@ function node_access($op, $node, $account = NULL) {
// Can't use node_invoke('access', $node), because the access hook takes the
// $op parameter before the $node parameter.
$module = node_get_types('module', $node);
if ($module == 'node') {
$module = 'node_content'; // Avoid function name collisions.
}
$access = module_invoke($module, 'access', $op, $node, $account);
$base = node_get_types('base', $node);
$access = module_invoke($base, 'access', $op, $node, $account);
if (!is_null($access)) {
return $access;
}
......
......@@ -174,7 +174,7 @@ function poll_node_info() {
return array(
'poll' => array(
'name' => t('Poll'),
'module' => 'poll',
'base' => 'poll',
'description' => t('A <em>poll</em> is a question with a set of possible responses. A <em>poll</em>, once created, automatically provides a simple running count of the number of votes received for each response.'),
'title_label' => t('Question'),
'has_body' => FALSE,
......
......@@ -98,29 +98,25 @@ function default_profile_tasks(&$task, $url) {
array(
'type' => 'page',
'name' => st('Page'),
'module' => 'node',
'base' => 'node_content',
'description' => st("A <em>page</em>, similar in form to an <em>article</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' => '',
'custom' => 1,
'modified' => 1,
'locked' => 0,
),
array(
'type' => 'article',
'name' => st('Article'),
'module' => 'node',
'base' => 'node_content',
'description' => st("An <em>article</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 an <em>article</em> entry. By default, an <em>article</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' => '',
'custom' => 1,
'modified' => 1,
'locked' => 0,
),
);
foreach ($types as $type) {
$type = (object) _node_type_set_defaults($type);
$type = node_type_set_defaults($type);
node_type_save($type);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment