Index: modules/blog/blog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v retrieving revision 1.299 diff -u -p -r1.299 blog.module --- modules/blog/blog.module 20 Feb 2008 13:46:38 -0000 1.299 +++ modules/blog/blog.module 22 Mar 2008 18:13:35 -0000 @@ -76,7 +76,7 @@ function blog_help($path, $arg) { function blog_form(&$node) { global $nid; $iid = isset($_GET['iid']) ? (int)$_GET['iid'] : 0; - $type = node_get_types('type', $node); + $type = node_get_type($node); if (empty($node->body)) { Index: modules/blogapi/blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v retrieving revision 1.117 diff -u -p -r1.117 blogapi.module --- modules/blogapi/blogapi.module 20 Feb 2008 13:46:39 -0000 1.117 +++ modules/blogapi/blogapi.module 22 Mar 2008 18:13:36 -0000 @@ -559,7 +559,7 @@ function blogapi_blogger_title(&$content } function blogapi_admin_settings() { - $node_types = array_map('check_plain', node_get_types('names')); + $node_types = array_map('check_plain', node_get_names()); $defaults = isset($node_types['blog']) ? array('blog' => 1) : array(); $form['blogapi_node_types'] = array( '#type' => 'checkboxes', Index: modules/book/book.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.admin.inc,v retrieving revision 1.8 diff -u -p -r1.8 book.admin.inc --- modules/book/book.admin.inc 8 Jan 2008 10:35:41 -0000 1.8 +++ modules/book/book.admin.inc 22 Mar 2008 18:13:36 -0000 @@ -27,7 +27,7 @@ function book_admin_overview() { * @ingroup forms */ function book_admin_settings() { - $types = node_get_types('names'); + $types = node_get_names(); $form['book_allowed_types'] = array( '#type' => 'checkboxes', '#title' => t('Allowed book outline types'), Index: modules/forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.452 diff -u -p -r1.452 forum.module --- modules/forum/forum.module 20 Feb 2008 13:46:39 -0000 1.452 +++ modules/forum/forum.module 22 Mar 2008 18:13:37 -0000 @@ -447,7 +447,7 @@ function forum_block($op = 'list', $delt * Implementation of hook_form(). */ function forum_form(&$node, $form_state) { - $type = node_get_types('type', $node); + $type = node_get_type($node); $form['title'] = array('#type' => 'textfield', '#title' => check_plain($type->title_label), '#default_value' => !empty($node->title) ? $node->title : '', '#required' => TRUE, '#weight' => -5); if (!empty($node->nid)) { @@ -678,7 +678,7 @@ function template_preprocess_forums(&$va if (node_access('create', $type)) { // Fetch the "General" name of the content type; // Push the link with title and url to the array. - $forum_types[$type] = array('title' => t('Post new @node_type', array('@node_type' => node_get_types('name', $type))), 'href' => 'node/add/'. str_replace('_', '-', $type) .'/'. $variables['tid']); + $forum_types[$type] = array('title' => t('Post new @node_type', array('@node_type' => node_get_name($type))), 'href' => 'node/add/'. str_replace('_', '-', $type) .'/'. $variables['tid']); } } Index: modules/node/content_types.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v retrieving revision 1.50 diff -u -p -r1.50 content_types.inc --- modules/node/content_types.inc 27 Jan 2008 18:03:05 -0000 1.50 +++ modules/node/content_types.inc 22 Mar 2008 18:13:37 -0000 @@ -11,12 +11,14 @@ */ function node_overview_types() { $types = node_get_types(); - $names = node_get_types('names'); + $names = node_get_names(); + $header = array(t('Name'), t('Type'), t('Description'), array('data' => t('Operations'), 'colspan' => '2')); $rows = array(); foreach ($names as $key => $name) { $type = $types[$key]; + if (node_hook($type, 'form')) { $type_url_str = str_replace('_', '-', $type->type); $row = array( @@ -224,7 +226,7 @@ function node_type_form_validate($form, // Work out what the type was before the user submitted this form $old_type = trim($form_state['values']['old_type']); - $types = node_get_types('names'); + $types = node_get_names(); if (!$form_state['values']['locked']) { if (isset($types[$type->type]) && $type->type != $old_type) { Index: modules/node/node.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v retrieving revision 1.21 diff -u -p -r1.21 node.admin.inc --- modules/node/node.admin.inc 11 Mar 2008 08:17:56 -0000 1.21 +++ modules/node/node.admin.inc 22 Mar 2008 18:13:37 -0000 @@ -157,7 +157,7 @@ function node_filters() { ); } - $filters['type'] = array('title' => t('type'), 'options' => node_get_types('names')); + $filters['type'] = array('title' => t('type'), 'options' => node_get_names()); // The taxonomy filter if ($taxonomy = module_invoke('taxonomy', 'form_all', 1)) { @@ -496,7 +496,7 @@ function node_admin_nodes() { $nodes[$node->nid] = ''; $options = empty($node->language) ? array() : array('language' => $languages[$node->language]); $form['title'][$node->nid] = array('#value' => l($node->title, 'node/'. $node->nid, $options) .' '. theme('mark', node_mark($node->nid, $node->changed))); - $form['name'][$node->nid] = array('#value' => check_plain(node_get_types('name', $node))); + $form['name'][$node->nid] = array('#value' => check_plain(node_get_name($node))); $form['username'][$node->nid] = array('#value' => theme('username', $node)); $form['status'][$node->nid] = array('#value' => ($node->status ? t('published') : t('not published'))); if ($multilanguage) { Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.951 diff -u -p -r1.951 node.module --- modules/node/node.module 13 Mar 2008 21:26:08 -0000 1.951 +++ modules/node/node.module 22 Mar 2008 18:13:39 -0000 @@ -51,12 +51,12 @@ function node_help($path, $arg) { return '

'. t('The revisions let you track differences between multiple versions of a post.') .'

'; case 'node/%/edit': $node = node_load($arg[1]); - $type = node_get_types('type', $node->type); + $type = node_get_type($node); return (!empty($type->help) ? '

'. filter_xss_admin($type->help) .'

' : ''); } if ($arg[0] == 'node' && $arg[1] == 'add' && $arg[2]) { - $type = node_get_types('type', str_replace('-', '_', $arg[2])); + $type = node_get_type(str_replace('-', '_', $arg[2])); return (!empty($type->help) ? '

'. filter_xss_admin($type->help) .'

' : ''); } } @@ -392,6 +392,67 @@ function node_teaser($body, $format = NU } /** + * Builds a list of all the available node types. + * + * @param $reset + * Whether or not to reset the node list (defaults to FALSE). + * @return + * A list of node types, as an array. + */ +function node_get_types($reset = FALSE) { + return _node_get_types('types', null, $reset); +} + +/** + * Returns false if the node type does not exist. Otherwise returns the node's type. + * + *@param $node + * A node object, array, or string that indicates the node type to return. + * Leave at default value (NULL) to return a list of all node types. + * @return + * A single node type, as a string. Returns FALSE if the node name is not found. + */ +function node_get_type($node) { + return _node_get_types('type', $node); +} + +/** + * Returns a list of available node names. + * + * @return + * A list of node names, as an array. + */ +function node_get_names() { + return _node_get_types('names'); +} + +/** + * Returns false if the node name does not exist. Otherwise returns the node's name. + * + * @param $node + * A node object, array, or string that indicates the node type to return. + * + * @return + * A single node name, as a string. Returns FALSE if the node name is not found. + */ +function node_get_name($node) { + return _node_get_types('name', $node); +} + + /** + * Returns false if the module does not exist. Otherwise returns the module's name. + * + * @param $node + * A node object, array, or string that indicates the node type to return. + * + * @return + * A module name, as a string. Returns FALSE if the module is not found. + */ +function node_get_module($node) { + return _node_get_types('module', $node); +} + +/** * Builds a list of available node types, and returns all of part of this list * in the specified format. * @@ -410,7 +471,7 @@ function node_teaser($body, $format = NU * Either an array of all available node types, or a single node type, in a * variable format. Returns FALSE if the node type is not found. */ -function node_get_types($op = 'types', $node = NULL, $reset = FALSE) { +function _node_get_types($op = 'types', $node = NULL, $reset = FALSE) { static $_node_types, $_node_names; if ($reset || !isset($_node_types)) { @@ -510,7 +571,7 @@ function node_type_save($info) { * The machine-readable name of the node type to be deleted. */ function node_type_delete($type) { - $info = node_get_types('type', $type); + $info = node_get_type($type); db_query("DELETE FROM {node_type} WHERE type = '%s'", $type); module_invoke_all('node_type', 'delete', $info); } @@ -624,7 +685,7 @@ 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); + $module = node_get_module($node); if ($module == 'node') { $module = 'node_content'; // Avoid function name collisions. } @@ -645,7 +706,7 @@ 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); + $module = node_get_module($node); if ($module == 'node') { $module = 'node_content'; // Avoid function name collisions. } @@ -777,7 +838,7 @@ function node_load($param = array(), $re function node_validate($node, $form = array()) { // Convert the node to an object, if necessary. $node = (object)$node; - $type = node_get_types('type', $node); + $type = node_get_type($node); // Make sure the body has the minimum number of words. // TODO : use a better word counting algorithm that will work in other languages @@ -978,7 +1039,7 @@ function node_delete($nid) { search_wipe($node->nid, 'node'); } watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title)); - drupal_set_message(t('@type %title has been deleted.', array('@type' => node_get_types('name', $node), '%title' => $node->title))); + drupal_set_message(t('@type %title has been deleted.', array('@type' => node_get_name($node), '%title' => $node->title))); } } @@ -1281,7 +1342,7 @@ function node_search($op = 'search', $ke $extra = node_invoke_nodeapi($node, 'search result'); $results[] = array( 'link' => url('node/'. $item->sid, array('absolute' => TRUE)), - 'type' => check_plain(node_get_types('name', $node)), + 'type' => check_plain(node_get_name($node)), 'title' => $node->title, 'user' => theme('username', $node), 'date' => $node->changed, @@ -1471,7 +1532,7 @@ function node_menu() { 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); - foreach (node_get_types('types', NULL, TRUE) as $type) { + foreach (node_get_types(TRUE) as $type) { $type_url_str = str_replace('_', '-', $type->type); $items['node/add/'. $type_url_str] = array( 'title' => drupal_ucfirst($type->name), @@ -1856,7 +1917,7 @@ function node_form_alter(&$form, $form_s } // Node types: - $types = array_map('check_plain', node_get_types('names')); + $types = array_map('check_plain', node_get_names()); $form['advanced']['type'] = array( '#type' => 'checkboxes', '#title' => t('Only of the type(s)'), @@ -1993,7 +2054,7 @@ function node_access($op, $node, $accoun // Can't use node_invoke(), because the access hook takes the $op parameter // before the $node parameter. - $module = node_get_types('module', $node); + $module = node_get_module($node); if ($module == 'node') { $module = 'node_content'; // Avoid function name collisions. } @@ -2405,7 +2466,9 @@ function node_content_access($op, $node, * Implementation of hook_form(). */ function node_content_form($node, $form_state) { - $type = node_get_types('type', $node); + + $type = node_get_type($node); + $form = array(); if ($type->has_title) { @@ -2584,7 +2647,7 @@ function node_action_info() { */ function node_publish_action(&$node, $context = array()) { $node->status = 1; - watchdog('action', 'Set @type %title to published.', array('@type' => node_get_types('name', $node), '%title' => $node->title)); + watchdog('action', 'Set @type %title to published.', array('@type' => node_get_name($node), '%title' => $node->title)); } /** @@ -2593,7 +2656,7 @@ function node_publish_action(&$node, $co */ function node_unpublish_action(&$node, $context = array()) { $node->status = 0; - watchdog('action', 'Set @type %title to unpublished.', array('@type' => node_get_types('name', $node), '%title' => $node->title)); + watchdog('action', 'Set @type %title to unpublished.', array('@type' => node_get_name($node), '%title' => $node->title)); } /** @@ -2602,7 +2665,7 @@ function node_unpublish_action(&$node, $ */ function node_make_sticky_action(&$node, $context = array()) { $node->sticky = 1; - watchdog('action', 'Set @type %title to sticky.', array('@type' => node_get_types('name', $node), '%title' => $node->title)); + watchdog('action', 'Set @type %title to sticky.', array('@type' => node_get_name($node), '%title' => $node->title)); } /** @@ -2611,7 +2674,7 @@ function node_make_sticky_action(&$node, */ function node_make_unsticky_action(&$node, $context = array()) { $node->sticky = 0; - watchdog('action', 'Set @type %title to unsticky.', array('@type' => node_get_types('name', $node), '%title' => $node->title)); + watchdog('action', 'Set @type %title to unsticky.', array('@type' => node_get_name($node), '%title' => $node->title)); } /** @@ -2648,7 +2711,7 @@ function node_save_action($node) { function node_assign_owner_action(&$node, $context) { $node->uid = $context['owner_uid']; $owner_name = db_result(db_query("SELECT name FROM {users} WHERE uid = %d", $context['owner_uid'])); - watchdog('action', 'Changed owner of @type %title to uid %name.', array('@type' => node_get_types('type', $node), '%title' => $node->title, '%name' => $owner_name)); + watchdog('action', 'Changed owner of @type %title to uid %name.', array('@type' => node_get_type($node), '%title' => $node->title, '%name' => $owner_name)); } function node_assign_owner_action_form($context) { Index: modules/node/node.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v retrieving revision 1.29 diff -u -p -r1.29 node.pages.inc --- modules/node/node.pages.inc 17 Feb 2008 19:29:07 -0000 1.29 +++ modules/node/node.pages.inc 22 Mar 2008 18:13:40 -0000 @@ -452,7 +452,7 @@ function node_form_submit($form, &$form_ node_save($node); $node_link = l(t('view'), 'node/'. $node->nid); $watchdog_args = array('@type' => $node->type, '%title' => $node->title); - $t_args = array('@type' => node_get_types('name', $node), '%title' => $node->title); + $t_args = array('@type' => node_get_name($node), '%title' => $node->title); if ($insert) { watchdog('content', '@type: added %title.', $watchdog_args, WATCHDOG_NOTICE, $node_link); @@ -581,7 +581,7 @@ function node_revision_revert_confirm_su node_save($node_revision); watchdog('content', '@type: reverted %title revision %revision.', array('@type' => $node_revision->type, '%title' => $node_revision->title, '%revision' => $node_revision->vid)); - drupal_set_message(t('@type %title has been reverted back to the revision from %revision-date.', array('@type' => node_get_types('name', $node_revision), '%title' => $node_revision->title, '%revision-date' => format_date($node_revision->revision_timestamp)))); + drupal_set_message(t('@type %title has been reverted back to the revision from %revision-date.', array('@type' => node_get_name($node_revision), '%title' => $node_revision->title, '%revision-date' => format_date($node_revision->revision_timestamp)))); $form_state['redirect'] = 'node/'. $node_revision->nid .'/revisions'; } @@ -595,7 +595,7 @@ function node_revision_delete_confirm_su db_query("DELETE FROM {node_revisions} WHERE nid = %d AND vid = %d", $node_revision->nid, $node_revision->vid); node_invoke_nodeapi($node_revision, 'delete revision'); watchdog('content', '@type: deleted %title revision %revision.', array('@type' => $node_revision->type, '%title' => $node_revision->title, '%revision' => $node_revision->vid)); - drupal_set_message(t('Revision from %revision-date of @type %title has been deleted.', array('%revision-date' => format_date($node_revision->revision_timestamp), '@type' => node_get_types('name', $node_revision), '%title' => $node_revision->title))); + drupal_set_message(t('Revision from %revision-date of @type %title has been deleted.', array('%revision-date' => format_date($node_revision->revision_timestamp), '@type' => node_get_name($node_revision), '%title' => $node_revision->title))); $form_state['redirect'] = 'node/'. $node_revision->nid; if (db_result(db_query('SELECT COUNT(vid) FROM {node_revisions} WHERE nid = %d', $node_revision->nid)) > 1) { $form_state['redirect'] .= '/revisions'; Index: modules/poll/poll.module =================================================================== RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v retrieving revision 1.264 diff -u -p -r1.264 poll.module --- modules/poll/poll.module 20 Feb 2008 13:46:40 -0000 1.264 +++ modules/poll/poll.module 22 Mar 2008 18:13:40 -0000 @@ -193,7 +193,7 @@ function poll_form(&$node, $form_state) $admin = user_access('administer nodes') || user_access('edit any poll content') || (user_access('edit own poll content') && $user->uid == $node->uid); - $type = node_get_types('type', $node); + $type = node_get_type($node); $form = array( '#cache' => TRUE, Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.65 diff -u -p -r1.65 system.admin.inc --- modules/system/system.admin.inc 13 Mar 2008 21:26:09 -0000 1.65 +++ modules/system/system.admin.inc 22 Mar 2008 18:13:42 -0000 @@ -408,7 +408,7 @@ function system_theme_settings(&$form_st ); // Toggle node display. - $node_types = node_get_types('names'); + $node_types = node_get_names(); if ($node_types) { $form['node_info'] = array( '#type' => 'fieldset', Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.593 diff -u -p -r1.593 system.module --- modules/system/system.module 11 Mar 2008 08:13:14 -0000 1.593 +++ modules/system/system.module 22 Mar 2008 18:13:43 -0000 @@ -1737,7 +1737,7 @@ function system_mail($key, &$message, $p $variables += array( '%uid' => $node->uid, '%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)), - '%node_type' => node_get_types('name', $node), + '%node_type' => node_get_name($node), '%title' => $node->title, '%teaser' => $node->teaser, '%body' => $node->body, @@ -1811,7 +1811,7 @@ function system_message_action(&$object, $variables = array_merge($variables, array( '%uid' => $node->uid, '%node_url' => url('node/'. $node->nid, array('absolute' => TRUE)), - '%node_type' => check_plain(node_get_types('name', $node)), + '%node_type' => check_plain(node_get_name($node)), '%title' => filter_xss($node->title), '%teaser' => filter_xss($node->teaser), '%body' => filter_xss($node->body), Index: modules/taxonomy/taxonomy.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v retrieving revision 1.24 diff -u -p -r1.24 taxonomy.admin.inc --- modules/taxonomy/taxonomy.admin.inc 14 Feb 2008 18:41:16 -0000 1.24 +++ modules/taxonomy/taxonomy.admin.inc 22 Mar 2008 18:13:44 -0000 @@ -19,7 +19,7 @@ function taxonomy_overview_vocabularies( foreach ($vocabularies as $vocabulary) { $types = array(); foreach ($vocabulary->nodes as $type) { - $node_type = node_get_types('name', $type); + $node_type = node_get_name($type); $types[] = $node_type ? check_plain($node_type) : check_plain($type); } $form[$vocabulary->vid]['#vocabulary'] = (array)$vocabulary; @@ -148,7 +148,7 @@ function taxonomy_form_vocabulary(&$form $form['content_types']['nodes'] = array('#type' => 'checkboxes', '#title' => t('Content types'), '#default_value' => $edit['nodes'], - '#options' => array_map('check_plain', node_get_types('names')), + '#options' => array_map('check_plain', node_get_names()), '#description' => t('Select content types to categorize using this vocabulary.'), ); $form['settings'] = array( Index: modules/tracker/tracker.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/tracker/tracker.pages.inc,v retrieving revision 1.5 diff -u -p -r1.5 tracker.pages.inc --- modules/tracker/tracker.pages.inc 28 Nov 2007 10:29:20 -0000 1.5 +++ modules/tracker/tracker.pages.inc 22 Mar 2008 18:13:44 -0000 @@ -50,7 +50,7 @@ function tracker_page($account = NULL, $ } $rows[] = array( - check_plain(node_get_types('name', $node->type)), + check_plain(node_get_name($node)), l($node->title, "node/$node->nid") .' '. theme('mark', node_mark($node->nid, $node->changed)), theme('username', $node), array('class' => 'replies', 'data' => $comments),