/** * @var bool * * @throws Exception */ public static function requireRecords($force = false) { if (self::$ran && !$force) { return true; } self::$ran = true; if (!(Director::isDev() || Director::isTest())) { throw new Exception('requireRecords can only be run in development or test environments'); } $factory = Injector::inst()->create('PopulateFactory'); foreach (self::config()->get('truncate_objects') as $objName) { $versions = array(); if (class_exists($objName)) { foreach (DataList::create($objName) as $obj) { // if the object has the versioned extension, make sure we delete // that as well if ($obj->hasExtension('Versioned')) { foreach ($obj->getVersionedStages() as $stage) { $versions[$stage] = true; $obj->deleteFromStage($stage); } } try { @$obj->delete(); } catch (Exception $e) { // notice } } } if ($versions) { self::truncate_versions($objName, $versions); } foreach ((array) ClassInfo::getValidSubClasses($objName) as $table) { self::truncate_table($table); self::truncate_versions($table, $versions); } self::truncate_table($objName); } foreach (self::config()->get('include_yaml_fixtures') as $fixtureFile) { $fixture = new YamlFixture($fixtureFile); $fixture->writeInto($factory); $fixture = null; } // hook allowing extensions to clean up records, modify the result or // export the data to a SQL file (for importing performance). $static = !(isset($this) && get_class($this) == __CLASS__); if ($static) { $populate = Injector::inst()->create('Populate'); } else { $populate = $this; } $populate->extend('onAfterPopulateRecords'); return true; }
/** * @var bool * * @throws Exception */ public static function requireRecords($force = false) { if (self::$ran && !$force) { return true; } self::$ran = true; if (!(Director::isDev() || Director::isTest())) { throw new Exception('requireRecords can only be run in development or test environments'); } $factory = Injector::inst()->create('PopulateFactory'); foreach (self::config()->get('truncate_objects') as $objName) { $versions = array(); if (class_exists($objName)) { foreach (DataList::create($objName) as $obj) { // if the object has the versioned extension, make sure we delete // that as well if ($obj->hasExtension('Versioned')) { foreach ($obj->getVersionedStages() as $stage) { $versions[$stage] = true; $obj->deleteFromStage($stage); } } try { @$obj->delete(); } catch (Exception $e) { // notice } } } if ($versions) { self::truncate_versions($objName, $versions); } foreach (ClassInfo::getValidSubClasses($objName) as $table) { self::truncate_table($table); self::truncate_versions($table, $versions); } self::truncate_table($objName); } foreach (self::config()->get('include_yaml_fixtures') as $fixtureFile) { $fixture = new YamlFixture($fixtureFile); $fixture->writeInto($factory); $fixture = null; } return true; }