Import categories when each is in its own column

This commit is contained in:
Nathan Gray 2011-03-16 23:18:48 +00:00
parent d966794b8d
commit d67a265beb
2 changed files with 42 additions and 0 deletions

View File

@ -173,6 +173,25 @@ class addressbook_import_contacts_csv implements importexport_iface_import_plugi
// Automatically handle text categories without explicit translation // Automatically handle text categories without explicit translation
$record['cat_id'] = importexport_helper_functions::cat_name2id($record['cat_id']); $record['cat_id'] = importexport_helper_functions::cat_name2id($record['cat_id']);
// Also handle categories in their own field
$more_categories = array();
foreach($_definition->plugin_options['field_mapping'] as $number => $field_name) {
if(substr($field_name,0,3) != 'cat' || !$record[$field_name]) continue;
list($cat, $cat_id) = explode('-', $field_name);
if(is_numeric($record[$field_name]) && $record[$field_name] != 1) {
// Column has a single category ID
$more_categories[] = $record[$field_name];
} elseif($record[$field_name] == '1' ||
(!is_numeric($record[$field_name]) && strtolower($record[$field_name]) == strtolower(lang('Yes')))) {
// Each category got its own column. '1' is the database value, lang('yes') is the human value
$more_categories[] = $cat_id;
} else {
// Text categories
$more_categories = array_merge($more_categories, importexport_helper_functions::cat_name2id(is_array($record[$field_name]) ? $record[$field_name] : explode(',',$record[$field_name])));
}
}
if(count($more_categories) > 0) $record['cat_id'] = array_merge(is_array($record['cat_id']) ? $record['cat_id'] : explode(',',$record['cat_id']), $more_categories);
if ( $_definition->plugin_options['conditions'] ) { if ( $_definition->plugin_options['conditions'] ) {
foreach ( $_definition->plugin_options['conditions'] as $condition ) { foreach ( $_definition->plugin_options['conditions'] as $condition ) {
$contacts = array(); $contacts = array();

View File

@ -27,6 +27,26 @@ class addressbook_wizard_import_contacts_csv extends importexport_wizard_basic_i
// Field mapping // Field mapping
$bocontacts = new addressbook_bo(); $bocontacts = new addressbook_bo();
$this->mapping_fields = $bocontacts->contact_fields; $this->mapping_fields = $bocontacts->contact_fields;
$categories = new categories('','addressbook');
$cat_list = array();
foreach((array)$categories->return_sorted_array(0,False,'','','',true,0,true) as $cat)
{
$s = str_repeat(' ',$cat['level']) . stripslashes($cat['name']);
if (categories::is_global($cat))
{
$s .= ' ♦';
}
$cat_list['cat-'.$cat['id']] = empty($cat['description']) ? $s : array(
'label' => $s,
'title' => $cat['description'],
);
}
if(count($cat_list) > 0) {
$this->mapping_fields[lang('Categories')] = $cat_list;
}
foreach($bocontacts->customfields as $name => $data) { foreach($bocontacts->customfields as $name => $data) {
$this->mapping_fields['#'.$name] = $data['label']; $this->mapping_fields['#'.$name] = $data['label'];
} }
@ -48,6 +68,9 @@ class addressbook_wizard_import_contacts_csv extends importexport_wizard_basic_i
function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv) function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv)
{ {
if($content['field_mapping'][0] == lang('Categories')) {
unset($content['field_mapping'][0]);
}
$result = parent::wizard_step50($content, $sel_options, $readonlys, $preserv); $result = parent::wizard_step50($content, $sel_options, $readonlys, $preserv);
$content['msg'] .= "\n*" . lang('Contact ID cannot be changed by import'); $content['msg'] .= "\n*" . lang('Contact ID cannot be changed by import');