コード例 #1
0
 /**
  * @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;
 }
コード例 #2
0
 /**
  * @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;
 }