diff --git a/calendar/inc/class.calendar_import_csv.inc.php b/calendar/inc/class.calendar_import_csv.inc.php index a74b1fefbb..6ea5d1f84a 100644 --- a/calendar/inc/class.calendar_import_csv.inc.php +++ b/calendar/inc/class.calendar_import_csv.inc.php @@ -201,6 +201,7 @@ class calendar_import_csv implements importexport_iface_import_plugin { } } } + // Calendar doesn't actually support conditional importing if ( $_definition->plugin_options['conditions'] ) { foreach ( $_definition->plugin_options['conditions'] as $condition ) { @@ -208,20 +209,19 @@ class calendar_import_csv implements importexport_iface_import_plugin { switch ( $condition['type'] ) { // exists case 'exists' : - if($record[$condition['string']]) { - $records = $this->bo->search( - // Calendar doesn't support searching the way we need - ); + if($record[$condition['string']] && $condition['string'] == 'id') { + $event = $this->bo->read($record[$condition['string']]); + $records = array($event); } - if ( is_array( $records ) && count( array_keys( $records )) >= 1) { + if ( is_array( $records ) && count( $records ) >= 1) { // apply action to all records matching this exists condition $action = $condition['true']; - foreach ( (array)$records as $record ) { - $record['id'] = $record['id']; + foreach ( (array)$records as $event ) { + $record['id'] = $event['id']; if ( $_definition->plugin_options['update_cats'] == 'add' ) { - if ( !is_array( $record['cat_id'] ) ) $record['cat_id'] = explode( ',', $record['cat_id'] ); - $record['cat_id'] = implode( ',', array_unique( array_merge( $record['cat_id'], $record['cat_id'] ) ) ); + if ( !is_array( $record['category'] ) ) $record['category'] = explode( ',', $record['category'] ); + $record['category'] = implode( ',', array_unique( array_merge( $record['category'], $event['category'] ) ) ); } $success = $this->action( $action['action'], $record, $import_csv->get_current_position() ); } @@ -274,7 +274,6 @@ class calendar_import_csv implements importexport_iface_import_plugin { if(count($changed) == 0) { return true; } - // Fall through case 'insert' : if($_action == 'insert') { diff --git a/calendar/inc/class.calendar_wizard_import_csv.inc.php b/calendar/inc/class.calendar_wizard_import_csv.inc.php index b52dc92009..4f17346175 100644 --- a/calendar/inc/class.calendar_wizard_import_csv.inc.php +++ b/calendar/inc/class.calendar_wizard_import_csv.inc.php @@ -23,8 +23,6 @@ class calendar_wizard_import_csv extends importexport_wizard_basic_import_csv $this->steps += array( 'wizard_step50' => lang('Manage mapping'), ); - // No conditions yet - unset($this->steps['wizard_step55']); // Field mapping $tracking = new calendar_tracking(); @@ -39,6 +37,7 @@ class calendar_wizard_import_csv extends importexport_wizard_basic_import_csv // Conditions $this->conditions = array( + 'exists' => lang('exists'), ); }