/** * Install and upgrade core. * * @param Zend_Db_Adapter_Abstract $db * @param string $dbType * @param UtilityComponent $utilityComponent * @throws Zend_Exception */ function installCore($db, $dbType, $utilityComponent) { require_once BASE_PATH . '/core/controllers/components/UpgradeComponent.php'; $upgradeComponent = new UpgradeComponent(); $upgradeComponent->dir = BASE_PATH . '/core/database/' . $dbType; $upgradeComponent->init = true; $newestVersion = $upgradeComponent->getNewestVersion(true); $sqlFile = BASE_PATH . '/core/database/' . $dbType . '/' . $newestVersion . '.sql'; if (!isset($sqlFile) || !file_exists($sqlFile)) { throw new Zend_Exception('Unable to find SQL file: ' . $sqlFile); } switch ($dbType) { case 'mysql': $utilityComponent->run_sql_from_file($db, $sqlFile); $upgradeDbType = 'PDO_MYSQL'; break; case 'pgsql': $utilityComponent->run_sql_from_file($db, $sqlFile); $upgradeDbType = 'PDO_PGSQL'; break; case 'sqlite': $utilityComponent->run_sql_from_file($db, $sqlFile); $upgradeDbType = 'PDO_SQLITE'; break; default: throw new Zend_Exception('Unknown database type: ' . $dbType); break; } $options = array('allowModifications' => true); $databaseConfig = new Zend_Config_Ini(BASE_PATH . '/tests/configs/lock.' . $dbType . '.ini', null, $options); $databaseConfig->testing->version = $newestVersion; $writer = new Zend_Config_Writer_Ini(); $writer->setConfig($databaseConfig); $writer->setFilename(BASE_PATH . '/tests/configs/lock.' . $dbType . '.ini'); $writer->write(); $upgradeComponent->initUpgrade('core', $db, $upgradeDbType); $upgradeComponent->upgrade(str_replace('.sql', '', basename($sqlFile)), true); }