Example #1
0
 /**
  * @return bool
  */
 public function populate()
 {
     \Civi\Test::schema()->truncateAll();
     \Civi\Test::schema()->setStrict(FALSE);
     $sqlDir = dirname(dirname(__DIR__)) . "/sql";
     $query2 = file_get_contents("{$sqlDir}/civicrm_data.mysql");
     $query3 = file_get_contents("{$sqlDir}/test_data.mysql");
     $query4 = file_get_contents("{$sqlDir}/test_data_second_domain.mysql");
     if (\Civi\Test::execute($query2) === FALSE) {
         throw new RuntimeException("Cannot load civicrm_data.mysql. Aborting.");
     }
     if (\Civi\Test::execute($query3) === FALSE) {
         throw new RuntimeException("Cannot load test_data.mysql. Aborting.");
     }
     if (\Civi\Test::execute($query4) === FALSE) {
         throw new RuntimeException("Cannot load test_data.mysql. Aborting.");
     }
     unset($query, $query2, $query3);
     \Civi\Test::schema()->setStrict(TRUE);
     // Rebuild triggers
     civicrm_api('system', 'flush', array('version' => 3, 'triggers' => 1));
     \CRM_Core_BAO_ConfigSetting::setEnabledComponents(array('CiviEvent', 'CiviContribute', 'CiviMember', 'CiviMail', 'CiviReport', 'CiviPledge'));
     return TRUE;
 }
 /**
  * @param bool $perClass
  * @param null $object
  * @return bool
  *   TRUE if the populate logic runs; FALSE if it is skipped
  */
 protected static function _populateDB($perClass = FALSE, &$object = NULL)
 {
     if ($perClass || $object == NULL) {
         $dbreset = TRUE;
     } else {
         $dbreset = $object->requireDBReset();
     }
     if (self::$populateOnce || !$dbreset) {
         return FALSE;
     }
     self::$populateOnce = NULL;
     $dbName = self::getDBName();
     $pdo = self::$utils->pdo;
     // only consider real tables and not views
     $tables = $pdo->query("SELECT table_name FROM INFORMATION_SCHEMA.TABLES\n    WHERE TABLE_SCHEMA = '{$dbName}' AND TABLE_TYPE = 'BASE TABLE'");
     $truncates = array();
     $drops = array();
     foreach ($tables as $table) {
         // skip log tables
         if (substr($table['table_name'], 0, 4) == 'log_') {
             continue;
         }
         // don't change list of installed extensions
         if ($table['table_name'] == 'civicrm_extension') {
             continue;
         }
         if (substr($table['table_name'], 0, 14) == 'civicrm_value_') {
             $drops[] = 'DROP TABLE ' . $table['table_name'] . ';';
         } else {
             $truncates[] = 'TRUNCATE ' . $table['table_name'] . ';';
         }
     }
     $queries = array("USE {$dbName};", "SET foreign_key_checks = 0", "SET SQL_MODE='STRICT_ALL_TABLES';", "SET global innodb_flush_log_at_trx_commit = 2;");
     $queries = array_merge($queries, $truncates);
     $queries = array_merge($queries, $drops);
     foreach ($queries as $query) {
         if (self::$utils->do_query($query) === FALSE) {
             //  failed to create test database
             echo "failed to create test db.";
             exit;
         }
     }
     //  initialize test database
     $sql_file2 = dirname(dirname(dirname(dirname(__FILE__)))) . "/sql/civicrm_data.mysql";
     $sql_file3 = dirname(dirname(dirname(dirname(__FILE__)))) . "/sql/test_data.mysql";
     $sql_file4 = dirname(dirname(dirname(dirname(__FILE__)))) . "/sql/test_data_second_domain.mysql";
     $query2 = file_get_contents($sql_file2);
     $query3 = file_get_contents($sql_file3);
     $query4 = file_get_contents($sql_file4);
     if (self::$utils->do_query($query2) === FALSE) {
         echo "Cannot load civicrm_data.mysql. Aborting.";
         exit;
     }
     if (self::$utils->do_query($query3) === FALSE) {
         echo "Cannot load test_data.mysql. Aborting.";
         exit;
     }
     if (self::$utils->do_query($query4) === FALSE) {
         echo "Cannot load test_data.mysql. Aborting.";
         exit;
     }
     // done with all the loading, get transactions back
     if (self::$utils->do_query("set global innodb_flush_log_at_trx_commit = 1;") === FALSE) {
         echo "Cannot set global? Huh?";
         exit;
     }
     if (self::$utils->do_query("SET foreign_key_checks = 1") === FALSE) {
         echo "Cannot get foreign keys back? Huh?";
         exit;
     }
     unset($query, $query2, $query3);
     // Rebuild triggers
     civicrm_api('system', 'flush', array('version' => 3, 'triggers' => 1));
     CRM_Core_BAO_ConfigSetting::setEnabledComponents(array('CiviEvent', 'CiviContribute', 'CiviMember', 'CiviMail', 'CiviReport', 'CiviPledge'));
     return TRUE;
 }