/[drupal]/contributions/modules/node_import/import_cck.inc
ViewVC logotype

Contents of /contributions/modules/node_import/import_cck.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download) (as text)
Wed Apr 5 10:36:23 2006 UTC (3 years, 7 months ago) by dado
Branch: MAIN
Changes since 1.1: +24 -3 lines
File MIME type: text/x-php
added support for importing CCK nodereference field (not fully tested).
changed theming of field matching form to fix bug & better comply w/ 4.7 standard
import location seems to work
had to remove node validation of nodes during import, due to barriers presented by new forms API toward this approach
added validation of node title (must be unique and non-blank)
hard-coded (for now) imported nodes will have status=1 (published).  Plan to make these status decisions (front page, sticky, etc.) be configurable
1 dado 1.1 <?php
2     /* $Id: import_flexinode.inc,v 1.5 2005/07/01 23:37:02 drumm Exp $ */
3    
4     function content_node_import_types() {
5     $types = array();
6     foreach (_content_types() as $id => $type) {
7     $types[$id] = $type->label;
8     }
9     return $types;
10     }
11    
12     function content_node_import_fields($type) {
13 dado 1.2 $types = (array)_content_types();
14 dado 1.1 if (!isset($types[$type])) return;
15    
16     $content_type = $types[$type];
17     $fields = array();
18    
19     //add the title field
20     $fields['title'] = $content_type->title_label;
21    
22     //add all cck widget fields
23     foreach ($content_type->fields as $field) {
24     $fields[$field['field_name']] = $field['widget']['label'];
25     }
26     return $fields;
27     }
28    
29     function content_node_import_prepare(&$node, $preview = FALSE) {
30     $types = _content_types();
31     if (!isset($types[$node->type])) return;
32     $content_type = $types[$node->type];
33     //add all cck widget fields
34     foreach ($content_type->fields as $field) {
35 dado 1.2 if (strpos($field['widget']['type'], 'nodereference') === 0) {//nodereference node: query nid of the referenced node
36     $referenced_nodes = array();
37     $sql = "select title from {node} where title sounds like '%s'";
38     $result = db_query($sql, $node->$field['field_name']);
39     $record_found = db_fetch_object($result);
40    
41     if ($record_found) {
42    
43     if ($field['multiple']) {
44     $node->$field['field_name'] = array('title' => array(0 => $record_found->title));
45     } else {
46     $node->$field['field_name'] = array('title' => $record_found->title);
47     }
48     //update the node field with proper info (nid(s) of referenced nodes)
49     nodereference_widget('submit', $node, $field);
50     } else {
51     $node->$field['field_name'] = array();
52     }
53    
54     } else {//default node types: add value to array w/ key 'value'
55     $thisval = $node->$field['field_name'];
56     $node->$field['field_name'] = array('value' => $thisval);
57     }
58 dado 1.1 }
59     return;
60     }
61     ?>

  ViewVC Help
Powered by ViewVC 1.1.2