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 = new DataObjectSet(); $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('ProductGroup', self::$parentpageid)) { //cached option $object->ParentID = self::$parentpageid; } elseif ($parentpage = DataObject::get_one('ProductGroup', "\"Title\" = 'Products'", '"Created" DESC')) { //page called 'Products' $object->ParentID = self::$parentpageid = $parentpage->ID; } elseif ($parentpage = DataObject::get_one('ProductGroup', "\"ParentID\" = 0", '"Created" DESC')) { //root page $object->ParentID = self::$parentpageid = $parentpage->ID; } elseif ($parentpage = DataObject::get_one('ProductGroup', "", '"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; }