Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -r3559 -r3578 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 3559) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 3578) @@ -240,7 +240,7 @@ function prepareObject(&$object, &$event) { $this->prepareItemStatuses($event); - + if ($event->Special == 'export' || $event->Special == 'import') { $this->prepareExportColumns($event); @@ -255,7 +255,7 @@ function prepareItemStatuses(&$event) { $object =& $event->getObject( Array('skip_autoload' => true) ); - + $property_mappings = $this->Application->getUnitOption($event->Prefix, 'ItemPropertyMappings'); $new_days_var = getArrayValue($property_mappings, 'NewDays'); @@ -295,7 +295,7 @@ %1$s.PopItem)'); } } - + function CalculateHotLimit(&$event) { $property_mappings = $this->Application->getUnitOption($event->Prefix, 'ItemPropertyMappings'); @@ -434,6 +434,10 @@ $exploded = explode('.', $foreign_field); $foreign_table = TABLE_PREFIX.$exploded[0]; + if($search_config[$field]['CustomFieldId']) { + $exploded[1] = 'l'.$lang.'_'.$exploded[1]; + } + $alias_counter++; $alias = 't'.$alias_counter; @@ -1035,9 +1039,9 @@ $object->SetPage($page); } - + /* === RELATED TO IMPORT/EXPORT: BEGIN === */ - + /** * Returns module folder * @@ -1048,7 +1052,7 @@ { return $this->Application->getUnitOption($event->Prefix, 'ModuleFolder'); } - + /** * Shows export dialog * @@ -1058,20 +1062,20 @@ { $selected_ids = $this->Application->GetVar('linklist'); $selected_cats_ids = $this->Application->GetVar('export_categories'); - + $this->Application->StoreVar($event->Prefix.'_export_ids', $selected_ids ? implode(',', $selected_ids) : '' ); $this->Application->StoreVar($event->Prefix.'_export_cats_ids', $selected_cats_ids); - + $event->redirect = $this->getModuleFolder($event).'/export'; - + $redirect_params = Array( 'm_opener' => 'd', 'index_file' => 'index4.php', $this->Prefix.'.export_event' => 'OnNew', 'pass' => 'all,'.$this->Prefix.'.export'); - + $event->setRedirectParams($redirect_params); } - + /** * Export form validation & processing * @@ -1084,31 +1088,31 @@ { $items_info = unserialize( $this->Application->RecallVar($event->getPrefixSpecial().'_ItemsInfo') ); } - + list($item_id, $field_values) = each($items_info); - + $object =& $event->getObject( Array('skip_autoload' => true) ); $object->SetFieldsFromHash($field_values); $object->setID($item_id); $this->setRequiredFields($event); - + $export_object =& $this->Application->recallObject('CatItemExportHelper'); - + // save export/import options if ($event->Special == 'export') { $export_ids = $this->Application->RecallVar($event->Prefix.'_export_ids'); $export_cats_ids = $this->Application->RecallVar($event->Prefix.'_export_cats_ids'); - + // used for multistep export $field_values['export_ids'] = $export_ids ? explode(',', $export_ids) : false; $field_values['export_cats_ids'] = $export_cats_ids ? explode(',', $export_cats_ids) : Array( $this->Application->GetVar('m_cat_id') ); } - + $field_values['ExportColumns'] = $field_values['ExportColumns'] ? explode('|', substr($field_values['ExportColumns'], 1, -1) ) : Array(); $field_values['start_from'] = 0; $this->Application->StoreVar($event->getPrefixSpecial().'_options', serialize($field_values) ); - + if( $export_object->verifyOptions($event) ) { $this->doExport($event); @@ -1119,7 +1123,7 @@ $event->redirect = false; } } - + /** * Enter description here... * @@ -1135,7 +1139,7 @@ $export_options = unserialize($this->Application->RecallVar($event->getPrefixSpecial().'_options')); $done_percent = round($export_options['start_from'] * 100 / $export_options['total_records'], 0); } - + $block_params = Array( 'name' => $this->getModuleFolder($event).'/'.$event->Special.'_progress', 'percent_done' => $done_percent, 'percent_left' => 100 - $done_percent); @@ -1144,12 +1148,12 @@ $this->Application->setUnitOption($event->Prefix, 'AutoLoad', false); echo $this->Application->ParseBlock($block_params); flush(); - + $export_object =& $this->Application->recallObject('CatItemExportHelper'); - + $action_method = 'perform'.ucfirst($event->Special); $field_values = $export_object->$action_method($event); - + if ($field_values['start_from'] == $field_values['total_records']) { if ($event->Special == 'import') { @@ -1166,7 +1170,7 @@ $event->setRedirectParams($redirect_params); } } - + /** * Next export steps * @@ -1176,7 +1180,7 @@ { $this->doExport($event); } - + /** * Sets correct available & export fields * @@ -1185,12 +1189,12 @@ function prepareExportColumns(&$event) { $object =& $event->getObject( Array('skip_autoload' => true) ); - + $available_columns = Array(); - + // category field (mixed) $available_columns['__CATEGORY__CategoryPath'] = 'CategoryPath'; - + if ($event->Special == 'import') { // category field (separated fields) $max_level = $this->Application->ConfigValue('MaxImportCategoryLevels'); @@ -1200,7 +1204,7 @@ $i++; } } - + // db fields $fields = array_keys($object->Fields); foreach ($fields as $field_name) @@ -1210,14 +1214,14 @@ $available_columns[$field_name] = $field_name; } } - + // custom fields $fields = array_keys($object->CustomFields); foreach ($fields as $field_name) { $available_columns['__CUSTOM__'.$field_name] = $field_name; } - + // columns already in use $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); if ($items_info) @@ -1227,33 +1231,33 @@ $export_keys = $export_keys ? explode('|', substr($export_keys, 1, -1) ) : Array(); } else { - $export_keys = Array(); + $export_keys = Array(); } - + $export_columns = Array(); foreach ($export_keys as $field_key) { $field_name = $this->getExportField($field_key); $export_columns[$field_key] = $field_name; unset($available_columns[$field_key]); } - + $options = $object->GetFieldOptions('ExportColumns'); $options['options'] = $export_columns; $object->SetFieldOptions('ExportColumns', $options); - + $options = $object->GetFieldOptions('AvailableColumns'); $options['options'] = $available_columns; $object->SetFieldOptions('AvailableColumns', $options); - + if ($event->Special == 'import') { $import_filenames = Array(); - + if ($folder_handle = opendir(EXPORT_PATH)) { while (false !== ($file = readdir($folder_handle))) { if ( substr($file, 0, 1) == '.' || strtolower($file) == 'cvs' || strtolower($file) == 'dummy' || filesize(EXPORT_PATH.'/'.$file) == 0) continue; - + $file_size = formatSize( filesize(EXPORT_PATH.'/'.$file) ); $import_filenames[$file] = $file.' ('.$file_size.')'; } @@ -1264,10 +1268,10 @@ $object->SetFieldOptions('ImportLocalFilename', $options); } } - - + + // ImportLocalFilename - + function getExportField($field_key) { $prepends = Array('__CUSTOM__', '__CATEGORY__'); @@ -1281,25 +1285,25 @@ } return $field_key; } - + /** * Shows export dialog * * @param kEvent $event */ function OnImport(&$event) { - + $event->redirect = $this->getModuleFolder($event).'/import'; - + $redirect_params = Array( 'm_opener' => 'd', 'index_file' => 'index4.php', $this->Prefix.'.import_event' => 'OnNew', 'pass' => 'all,'.$this->Prefix.'.import'); - + $event->setRedirectParams($redirect_params); } - + /** * Prepares item for import/export operations * @@ -1308,11 +1312,11 @@ function OnNew(&$event) { parent::OnNew($event); - + if ($event->Special != 'import' && $event->Special != 'export') return ; $this->setRequiredFields($event); } - + /** * set required fields based on import or export params * @@ -1321,28 +1325,28 @@ function setRequiredFields(&$event) { $required_fields['common'] = Array('FieldsSeparatedBy', 'FieldsEnclosedBy', 'LineEndings', 'CategoryFormat'); - + $required_fields['export'] = Array('ExportFormat', 'ExportFilename','ExportColumns'); $required_fields['import'] = Array('FieldTitles', 'ImportSource', 'CheckDuplicatesMethod'); // ImportFilename, ImportLocalFilename - + $object =& $event->getObject(); if ($event->Special == 'import') { $import_source = Array(1 => 'ImportFilename', 2 => 'ImportLocalFilename'); $used_field = $import_source[ $object->GetDBField('ImportSource') ]; - + $required_fields[$event->Special][] = $used_field; $object->Fields[$used_field]['error_field'] = 'ImportSource'; - + if ($object->GetDBField('FieldTitles') == 2) $required_fields[$event->Special][] = 'ExportColumns'; // manual field titles } - + $required_fields = array_merge($required_fields['common'], $required_fields[$event->Special]); foreach ($required_fields as $required_field) { $object->setRequired($required_field, true); } } - + /** * Saves selected category as new import category * @@ -1351,33 +1355,33 @@ function OnSelectItems(&$event) { $items_info = $this->Application->GetVar('c'); - + if ($items_info) { $selected_categories = array_keys($items_info); $cat_id = array_shift($selected_categories); - + $sql = 'SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ResourceId = '.$cat_id; $cat_id = $this->Conn->GetOne($sql); } else { $cat_id = 0; } - + $this->Application->StoreVar('ImportCategory', $cat_id); $this->Application->StoreVar($event->getPrefixSpecial().'_ForceNotValid', 1); // not to loose import/export values on form refresh - + $this->Application->SetVar($event->getPrefixSpecial().'_id', 0); $this->Application->SetVar($event->getPrefixSpecial().'_event', 'OnExportBegin'); - + $passed = $this->Application->GetVar('passed'); $this->Application->SetVar('passed', $passed.','.$event->getPrefixSpecial()); $event->setEventParam('pass_events', true); - + $this->finalizePopup($event, null, $this->getModuleFolder($event).'/'.$event->Special); } - + /** * Saves Import/Export settings to session * @@ -1391,7 +1395,7 @@ $this->Application->StoreVar($event->getPrefixSpecial().'_ItemsInfo', serialize($items_info)); } } - + /* === RELATED TO IMPORT/EXPORT: END === */ }