/** * Implementation of a Drupal action. * Changes node type. */ function action_nodetype_node_change_type($op, $edit = array(), &$node) { switch($op) { case 'metadata': return array( 'description' => t('Change node type'), 'type' => t('Node'), 'batchable' => true, 'configurable' => true, ); case 'do': $types = node_get_types(); $node->type = $edit['nodetype']; $node->revision = '0'; node_save($node); if ($edit['showmsg']) { drupal_set_message(t('The node type of post %title has been changed from %old to %new.', array('%title' => $node->title, '%old' => $types[$node->type]->name, '%new' => $types[$edit['nodetype']]->name))); } break; case 'form': $form = array(); $types = node_get_types('names'); $form['nodetype'] = array( '#type' => 'select', '#title' => t('Node type'), '#options' => $types, '#default_value' => 0, ); $form['showmsg'] = array( '#type' => 'select', '#title' => t('Display system message on change?'), '#options' => array(0 => 'No', 1 => 'Yes'), '#default_value' => 0, ); return $form; case 'validate': return TRUE; case 'submit': $params = array('nodetype' => $edit['nodetype'], 'showmsg' => $edit['showmsg']); return $params; } }