protected function processAll($filepath, $preview = false)
{
$this->extend('updateColumnMap', $this->columnMap);
// we have to check for the existence of this in case the stockcontrol module hasn't been loaded
// and the CSV still contains a Stock column
self::$hasStockImpl = Object::has_extension('Product', 'ProductStockDecorator');
$results = parent::processAll($filepath, $preview);
//After results have been processed, publish all created & updated products
$objects = ArrayList::create();
$objects->merge($results->Created());
$objects->merge($results->Updated());
foreach ($objects as $object) {
if (!$object->ParentID) {
//set parent page
if (is_numeric(self::$parentpageid) && DataObject::get_by_id('ProductCategory', self::$parentpageid)) {
//cached option
$object->ParentID = self::$parentpageid;
} elseif ($parentpage = DataObject::get_one('ProductCategory', "\"Title\" = 'Products'", '"Created" DESC')) {
//page called 'Products'
$object->ParentID = self::$parentpageid = $parentpage->ID;
} elseif ($parentpage = DataObject::get_one('ProductCategory', "\"ParentID\" = 0", '"Created" DESC')) {
//root page
$object->ParentID = self::$parentpageid = $parentpage->ID;
} elseif ($parentpage = DataObject::get_one('ProductCategory', "", '"Created" DESC')) {
//any product page
$object->ParentID = self::$parentpageid = $parentpage->ID;
} else {
$object->ParentID = self::$parentpageid = 0;
}
}
$object->extend('updateImport');
//could be used for setting other attributes, such as stock level
$object->writeToStage('Stage');
$object->publish('Stage', 'Live');
}
return $results;
}