Index: blog/blog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v retrieving revision 1.299 diff -u -r1.299 blog.module --- blog/blog.module 20 Feb 2008 13:46:38 -0000 1.299 +++ blog/blog.module 5 Mar 2008 01:50:54 -0000 @@ -76,7 +76,7 @@ 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: blogapi/blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v retrieving revision 1.117 diff -u -r1.117 blogapi.module --- blogapi/blogapi.module 20 Feb 2008 13:46:39 -0000 1.117 +++ blogapi/blogapi.module 5 Mar 2008 01:50:54 -0000 @@ -559,7 +559,7 @@ } 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: book/book.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.admin.inc,v retrieving revision 1.8 diff -u -r1.8 book.admin.inc --- book/book.admin.inc 8 Jan 2008 10:35:41 -0000 1.8 +++ book/book.admin.inc 5 Mar 2008 01:50:54 -0000 @@ -27,7 +27,7 @@ * @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: forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.452 diff -u -r1.452 forum.module --- forum/forum.module 20 Feb 2008 13:46:39 -0000 1.452 +++ forum/forum.module 5 Mar 2008 01:50:54 -0000 @@ -447,7 +447,7 @@ * 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 @@ 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: node/content_types.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v retrieving revision 1.50 diff -u -r1.50 content_types.inc --- node/content_types.inc 27 Jan 2008 18:03:05 -0000 1.50 +++ node/content_types.inc 5 Mar 2008 01:50:54 -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 @@ // 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: node/node.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v retrieving revision 1.20 diff -u -r1.20 node.admin.inc --- node/node.admin.inc 6 Feb 2008 19:38:27 -0000 1.20 +++ node/node.admin.inc 5 Mar 2008 01:50:54 -0000 @@ -156,7 +156,7 @@ ); } - $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)) { @@ -495,7 +495,7 @@ $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: node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.950 diff -u -r1.950 node.module --- node/node.module 20 Feb 2008 13:46:40 -0000 1.950 +++ node/node.module 5 Mar 2008 02:03:42 -0000 @@ -51,12 +51,12 @@ 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 @@ } /** + * 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 @@ * 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 @@ * 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 @@ * 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_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_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 @@ 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 @@ $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 @@ '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 @@ } // 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 @@ // 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 @@ * 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_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_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_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_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_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: node/node.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v retrieving revision 1.29 diff -u -r1.29 node.pages.inc --- node/node.pages.inc 17 Feb 2008 19:29:07 -0000 1.29 +++ node/node.pages.inc 5 Mar 2008 01:50:55 -0000 @@ -452,7 +452,7 @@ 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 @@ 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 @@ 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: poll/poll.module =================================================================== RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v retrieving revision 1.264 diff -u -r1.264 poll.module --- poll/poll.module 20 Feb 2008 13:46:40 -0000 1.264 +++ poll/poll.module 5 Mar 2008 01:50:55 -0000 @@ -193,7 +193,7 @@ $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: system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.64 diff -u -r1.64 system.admin.inc --- system/system.admin.inc 20 Feb 2008 13:46:41 -0000 1.64 +++ system/system.admin.inc 5 Mar 2008 01:50:55 -0000 @@ -408,7 +408,7 @@ ); // Toggle node display. - $node_types = node_get_types('names'); + $node_types = node_get_names(); if ($node_types) { $form['node_info'] = array( '#type' => 'fieldset', Index: system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.592 diff -u -r1.592 system.module --- system/system.module 20 Feb 2008 13:46:41 -0000 1.592 +++ system/system.module 5 Mar 2008 01:50:55 -0000 @@ -1737,7 +1737,7 @@ $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 @@ $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: taxonomy/taxonomy.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v retrieving revision 1.24 diff -u -r1.24 taxonomy.admin.inc --- taxonomy/taxonomy.admin.inc 14 Feb 2008 18:41:16 -0000 1.24 +++ taxonomy/taxonomy.admin.inc 5 Mar 2008 01:50:55 -0000 @@ -19,7 +19,7 @@ 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 @@ $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: tracker/tracker.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/tracker/tracker.pages.inc,v retrieving revision 1.5 diff -u -r1.5 tracker.pages.inc --- tracker/tracker.pages.inc 28 Nov 2007 10:29:20 -0000 1.5 +++ tracker/tracker.pages.inc 5 Mar 2008 01:50:55 -0000 @@ -50,7 +50,7 @@ } $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),