Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -N -r3698 -r3709 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 3698) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 3709) @@ -39,7 +39,7 @@ //recalling by different name, because we may get kDBList, if we recall just by prefix $object =& $this->Application->recallObject($event->getPrefixSpecial().'.item', $event->Prefix); - $this->prepareObject($object, $event); +// $this->prepareObject($object, $event); if ($this->Application->RecallVar($event->getPrefixSpecial().'_clipboard_mode') == 'copy') { $ids_arr = explode(',', $ids); @@ -533,6 +533,34 @@ } } + /** + * Load price from temp table if product mode is temp table + * + * @param kEvent $event + */ + function OnAfterItemLoad(&$event) + { + $special = substr($event->Special, -6); + if ($special == 'import' || $special == 'export') { + $object =& $event->getObject(); + $image_data = $object->getPrimaryImageData(); + + if ($image_data) { + $thumbnail_image = $image_data[$image_data['LocalThumb'] ? 'ThumbPath' : 'ThumbUrl']; + if ($image_data['SameImages']) { + $full_image = ''; + } + else { + $full_image = $image_data[$image_data['LocalImage'] ? 'LocalPath' : 'Url']; + } + $object->SetDBField('ThumbnailImage', $thumbnail_image); + $object->SetDBField('FullImage', $full_image); + $object->SetDBField('ImageAlt', $image_data['AltName']); + } + } + + } + function OnAfterItemUpdate(&$event) { $this->CalculateHotLimit($event); @@ -1511,7 +1539,9 @@ */ function getCustomExportColumns(&$event) { - return Array(); + return Array( '__VIRTUAL__ThumbnailImage' => 'ThumbnailImage', + '__VIRTUAL__FullImage' => 'FullImage', + '__VIRTUAL__ImageAlt' => 'ImageAlt'); } /** @@ -1521,9 +1551,67 @@ */ function setCustomExportColumns(&$event) { -// $object =& $event->getObject(); + $this->restorePrimaryImage($event); } + /** + * Create/Update primary image record in info found in imported data + * + * @param kEvent $event + */ + function restorePrimaryImage(&$event) + { + $object =& $event->getObject(); + + $has_image_info = $object->GetDBField('ImageAlt') && ($object->GetDBField('ThumbnailImage') || $object->GetDBField('FullImage')); + if (!$has_image_info) { + return false; + } + + $image_data = $object->getPrimaryImageData(); + + $image =& $this->Application->recallObject('img', null, Array('skip_autoload' => true)); + if ($image_data) { + $image->Load($image_data['ImageId']); + } + else { + $image->Clear(); + $image->SetDBField('Name', 'main'); + $image->SetDBField('DefaultImg', 1); + $image->SetDBField('ResourceId', $object->GetDBField('ResourceId')); + } + + $image->SetDBField('AltName', $object->GetDBField('ImageAlt')); + + if ($object->GetDBField('ThumbnailImage')) { + $thumbnail_field = $this->isURL( $object->GetDBField('ThumbnailImage') ) ? 'ThumbUrl' : 'ThumbPath'; + $image->SetDBField($thumbnail_field, $object->GetDBField('ThumbnailImage') ); + $image->SetDBField('LocalThumb', $thumbnail_field == 'ThumbPath' ? 1 : 0); + } + + if (!$object->GetDBField('FullImage')) { + $image->SetDBField('SameImages', 1); + } + else { + $image->SetDBField('SameImages', 0); + $full_field = $this->isURL( $object->GetDBField('FullImage') ) ? 'Url' : 'LocalPath'; + $image->SetDBField($full_field, $object->GetDBField('FullImage') ); + $image->SetDBField('LocalImage', $thumbnail_field == 'LocalPath' ? 1 : 0); + } + + if ($image->isLoaded()) { + $image->Update(); + } + else { + $image->Create(); + } + } + + function isURL($path) + { + return preg_match('#(http|https)://(.*)#', $path); + } + // ImportLocalFilename function getExportField($field_key)