content.inc in Node import 6
Same filename and directory in other branches
Support file for contrib CCK module.
File
supported/cck/content.incView source
<?php
/**
* @file
* Support file for contrib CCK module.
*/
/**
* Returns a list of CCK fields.
*
* @param $type
* Node import type.
*
* @param $module
* Support module.
*
* @param $reset
* Reset internal cache.
*
* @return
* Array of CCK field definitions.
*/
function node_import_cck_fields($type, $module, $reset = FALSE) {
static $fields;
if (!isset($fields) || $reset) {
$fields = array();
}
if (!isset($fields[$type])) {
$fields[$type] = array();
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
$node_info = content_types($node_type);
foreach ($node_info['fields'] as $fieldname => $fieldinfo) {
if (!isset($fields[$type][$fieldinfo['module']])) {
$fields[$type][$fieldinfo['module']] = array();
}
$fields[$type][$fieldinfo['module']][$fieldname] = $fieldinfo;
}
}
}
if (!isset($fields[$type][$module])) {
$fields[$type][$module] = array();
}
return $fields[$type][$module];
}
/**
* Creates a unique field/column name.
*/
function node_import_cck_name($fieldname, $colname) {
return 'cck:' . $fieldname . ':' . $colname;
}
/**
* Returns an array of default values for the field information array
* for CCK fields.
*/
function node_import_cck_field_defaults($fieldinfo) {
return array(
'group' => count($fieldinfo['columns']) > 1 ? $fieldinfo['widget']['label'] : '',
'tips' => array(
t('Imports into %name CCK field (%type type).', array(
'%name' => $fieldinfo['field_name'],
'%type' => $fieldinfo['type'],
)),
),
'has_multiple' => $fieldinfo['multiple'],
'module' => $fieldinfo['module'],
'allowed_values' => content_allowed_values($fieldinfo),
'cck:fieldname' => $fieldinfo['field_name'],
'cck:fieldinfo' => $fieldinfo,
);
}
/**
* Implementation of hook_node_import_values_alter().
*/
function content_node_import_values_alter(&$values, $type, $defaults, $options, $fields, $preview) {
if (($node_type = node_import_type_is_node($type)) !== FALSE) {
foreach ($fields as $fieldname => $fieldinfo) {
if (isset($fieldinfo['cck:fieldname'])) {
$values[$fieldinfo['cck:fieldname']] = array();
$num_values = 0;
foreach ($fieldinfo['cck:fieldinfo']['columns'] as $colname => $colinfo) {
$cck_fieldname = node_import_cck_name($fieldinfo['cck:fieldname'], $colname);
if (isset($values[$cck_fieldname])) {
if (!is_array($values[$cck_fieldname])) {
$values[$cck_fieldname] = array(
0 => $values[$cck_fieldname],
);
}
$num_values = max(count($values[$cck_fieldname]), $num_values);
}
}
$i = 0;
while ($i < $num_values) {
$value = array();
foreach ($fieldinfo['cck:fieldinfo']['columns'] as $colname => $colinfo) {
$cck_fieldname = node_import_cck_name($fieldinfo['cck:fieldname'], $colname);
if (isset($values[$cck_fieldname]) && array_key_exists($i, $values[$cck_fieldname])) {
$value[$colname] = $values[$cck_fieldname][$i];
}
else {
$value[$colname] = isset($defaults[$cck_fieldname]) ? $defaults[$cck_fieldname] : NULL;
}
}
$values[$fieldinfo['cck:fieldname']][$i] = $value;
$i++;
}
/*
foreach ($fieldinfo['cck:fieldinfo']['columns'] as $colname => $colinfo) {
$cck_fieldname = node_import_cck_name($fieldinfo['cck:fieldname'], $colname);
unset($values[$cck_fieldname]);
}
*/
}
}
}
}
Functions
Name | Description |
---|---|
content_node_import_values_alter | Implementation of hook_node_import_values_alter(). |
node_import_cck_fields | Returns a list of CCK fields. |
node_import_cck_field_defaults | Returns an array of default values for the field information array for CCK fields. |
node_import_cck_name | Creates a unique field/column name. |