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 $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 //cached option if (is_numeric(self::$parent_page_id) && DataObject::get_by_id(self::get_product_group_class_name(), self::$parent_page_id)) { $object->ParentID = self::$parent_page_id; } elseif ($parentpage = DataObject::get_one(self::get_product_group_class_name(), "\"Title\" = 'Products'", '"Created" DESC')) { $object->ParentID = self::$parent_page_id = $parentpage->ID; } elseif ($parentpage = DataObject::get_one(self::get_product_group_class_name(), "\"ParentID\" = 0", '"Created" DESC')) { $object->ParentID = self::$parent_page_id = $parentpage->ID; } elseif ($parentpage = DataObject::get_one(self::get_product_group_class_name(), "", '"Created" DESC')) { $object->ParentID = self::$parent_page_id = $parentpage->ID; } else { $object->ParentID = self::$parent_page_id = 0; } } $object->extend('updateImport'); //could be used for setting other attributes, such as stock level $object->writeToStage('Stage'); $object->publish('Stage', 'Live'); } return $results; }