$name) { $types['node:'. $type] = array( 'title' => t('%name content type', array('%name' => $name)), 'can_create' => node_access('create', $type), 'create' => 'node_import_create_node', ); } return $types; } /** * Check if the node_import $type is a node content type. * * @param $type * String. Node_import $type. * * @return * FALSE if $type is not a node content type. Otherwise * the node content type. */ function node_import_type_is_node($type) { if (strpos($type, 'node:') === 0) { return substr($type, strlen('node:')); } return FALSE; } /** * Create a new node by submitting $type_node_form. */ function node_import_create_node($type, &$values, $preview) { $output = $preview ? '' : FALSE; if (($node_type = node_import_type_is_node($type)) !== FALSE) { module_load_include('inc', 'node', 'node.pages'); $form_id = $node_type .'_node_form'; $values['op'] = $preview ? t('Preview') : t('Save'); $form_state = array( 'values' => $values, ); $node = (object)array( 'type' => $node_type, 'name' => isset($values['name']) ? $values['name'] : '', ); node_import_drupal_execute($form_id, $form_state, $node); if ($preview) { $output = isset($form_state['node_preview']) ? $form_state['node_preview'] : ''; } else { $output = $values['nid'] = $form_state['nid']; } } return $output; } /** * Implementation of hook_node_import_fields(). */ function node_node_import_fields($type) { $fields = array(); if (($node_type = node_import_type_is_node($type)) !== FALSE) { global $user; $type_info = node_get_types('type', $node_type); $administer_nodes = user_access('administer nodes'); $node_options = variable_get('node_options_'. $node_type, array('status', 'promote')); $fields['type'] = array( 'title' => t('Content type'), 'module' => 'node', 'is_mappable' => FALSE, 'default_value' => $node_type, ); if ($type_info->has_title) { $fields['title'] = array( 'title' => $type_info->title_label, 'module' => 'node', 'weight' => -5, 'map_required' => TRUE, 'default_value' => '', ); } if ($type_info->has_body) { $fields['body'] = array( 'title' => $type_info->body_label, 'group' => $type_info->body_label, 'module' => 'node', 'map_required' => ($type_info->min_word_count > 0), 'default_value' => '', ); $fields['format'] = array( 'title' => t('Input format'), 'group' => $type_info->body_label, 'module' => 'node', 'allowed_values' => node_import_extract_property(filter_formats(), 'name'), 'default_value' => filter_resolve_format(FILTER_FORMAT_DEFAULT), ); } $fields['uid'] = array( 'title' => t('Authored by'), 'group' => t('Authoring information'), 'module' => 'node', 'weight' => 20, 'is_mappable' => $administer_nodes, 'input_format' => 'user_reference', 'default_value' => $user->uid, ); $fields['created'] = array( 'title' => t('Authored on'), 'group' => t('Authoring information'), 'module' => 'node', 'weight' => 20, 'is_mappable' => $administer_nodes, 'input_format' => 'date', 'output_format' => DATE_UNIX, ); $fields['log'] = array( 'title' => t('Log message'), 'group' => t('Revision information'), 'module' => 'node', 'weight' => 20, 'is_mappable' => FALSE, 'default_value' => '', ); $fields['revision'] = array( 'title' => t('Create new revision'), 'group' => t('Revision information'), 'module' => 'node', 'weight' => 20, 'is_mappable' => FALSE, 'default_value' => in_array('revision', $node_options) ? '1' : '0', ); $workflow = array( 'status' => t('Published'), 'promote' => t('Promoted to front page'), 'sticky' => t('Sticky at top of lists'), ); foreach ($workflow as $key => $title) { $fields[$key] = array( 'title' => $title, 'group' => t('Publishing options'), 'module' => 'node', 'weight' => 25, 'is_mappable' => $administer_nodes, 'input_format' => 'boolean', 'default_value' => in_array($key, $node_options) ? '1' : '0', ); } } return $fields; } /** * Implementation of hook_node_import_defaults(). */ function node_node_import_defaults($type, $defaults, $fields, $map) { $form = array(); if (($node_type = node_import_type_is_node($type)) !== FALSE) { global $user; $type_info = node_get_types('type', $node_type); if ($type_info->has_body) { $form['format'] = array( '#title' => t('Input format'), '#type' => 'radios', '#options' => node_import_extract_property(filter_formats(), 'name'), '#default_value' => isset($defaults['format']) ? $defaults['format'] : filter_resolve_format(FILTER_FORMAT_DEFAULT), ); } if (user_access('administer nodes')) { $form['uid'] = array( '#title' => t('Authored by'), '#type' => 'textfield', '#maxlength' => 60, '#autocomplete_path' => 'user/autocomplete', '#default_value' => isset($defaults['uid']) ? $defaults['uid'] : $user->name, ); $form['created'] = array( '#title' => t('Authored on'), '#type' => 'textfield', '#maxlength' => 25, ); $form['log'] = array( '#title' => t('Log message'), '#type' => 'textarea', '#rows' => 2, '#default_value' => isset($defaults['log']) ? $defaults['log'] : t('Imported with node_import.'), ); $workflow = array( 'status' => t('Published'), 'promote' => t('Promoted to front page'), 'sticky' => t('Sticky at top of lists'), ); $node_options = variable_get('node_options_'. $node_type, array('status', 'promote')); foreach ($workflow as $key => $title) { $form[$key] = array( '#title' => $title, '#type' => 'radios', '#options' => array(0 => t('No'), 1 => t('Yes')), '#default_value' => isset($defaults[$key]) ? $defaults[$key] : (in_array($key, $node_options) ? 1 : 0), ); } } } return $form; } /** * Implementation of hook_node_import_values(). */ function node_node_import_values($type, $defaults, $options, $fields, $preview) { $values = array(); if (($node_type = node_import_type_is_node($type)) !== FALSE) { $values = array( 'created' => time(), ); } return $values; } /** * Implementation of hook_node_import_values_alter(). */ function node_node_import_values_alter(&$values, $type, $defaults, $options, $fields, $preview) { if (($node_type = node_import_type_is_node($type)) !== FALSE) { if (isset($values['uid']) && drupal_strlen($values['uid']) > 0) { if (($name = node_import_get_object('user:name', $values['uid'])) || ($name = db_result(db_query("SELECT name FROM {users} WHERE uid = %d", $values['uid'])))) { $values['name'] = $name; node_import_set_object('user:name', $values['uid'], $name); } } else { $values['name'] = ''; } if (isset($values['created']) && drupal_strlen($values['created']) > 0) { $values['date'] = format_date($values['created'], 'custom', 'Y-m-d H:i:s O'); } } }