ProductBulkLoader::processAll PHP Method

processAll() protected method

protected processAll ( $filepath, $preview = false )
    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;
    }