function test_backupTables() { $GLOBALS['_MAX']['CONF']['pluginPaths']['repo'] = $GLOBALS['_MAX']['CONF']['pluginPaths']['repo'] . '|' . MAX_PATH . $this->testpathData . 'plugins_repo/'; $zipFile = $this->testpathData . 'plugins_repo/' . 'testPluginPackage_v3.zip'; $plugin = $this->testpathData . 'plugins_repo/' . 'testPluginPackage.zip'; if (file_exists($zipFile) && !unlink($zipFile)) { $this->fail('error unlinking ' . $zipFile); return false; } if (!copy(MAX_PATH . $zipFile, MAX_PATH . $plugin)) { $this->fail('error copying ' . $zipFile); return false; } if (!file_exists(MAX_PATH . $plugin)) { $this->fail('file does not exist ' . $plugin); return false; } TestEnv::installPluginPackage('testPluginPackage', false); $prefix = $GLOBALS['_MAX']['CONF']['table']['prefix']; $oExport = new OX_PluginExport(); $oExport->init('testPluginPackage'); $aTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aTables), 1); $this->assertEqual($aTables[0], $prefix . 'testplugin_table'); $this->assertTrue($oExport->backupTables('testPluginPackage')); $aTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aTables), 2); $this->assertEqual($aTables[0], $prefix . 'testplugin_table'); $this->assertPattern('/' . $prefix . 'testplugin_table_' . date('Ymd') . '_[\\d]{6}/', $aTables[1]); TestEnv::uninstallPluginPackage('testPluginPackage', false); TestEnv::restoreConfig(); TestEnv::restoreEnv(); }
function test_runScript() { $GLOBALS['_MAX']['CONF']['table']['prefix'] = $this->prefix; $oUpgrade = new OA_Upgrade(); $oUpgrade->initDatabaseConnection(); $oDbh =& $oUpgrade->oDbh; $oTable = new OA_DB_Table(); $testfile = MAX_PATH . "/etc/changes/tests/data/schema_tables_core_dashboard.xml"; $oTable->init($testfile); $table = 'preference'; $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (in_array($this->prefix . $table, $aExistingTables)) { $this->assertTrue($oTable->dropTable($this->prefix . $table), 'error dropping ' . $this->prefix . $table); } $this->assertTrue($oTable->createTable($table), 'error creating ' . $this->prefix . $table); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertTrue(in_array($this->prefix . $table, $aExistingTables), $this->prefix . $table . ' table not found'); $this->assertTrue($oUpgrade->runScript('postscript_openads_upgrade_2.3.36-beta-rc1.php')); $aExistingColumns = $oDbh->manager->listTableFields($this->prefix . $table); $aColumns = array('ad_clicks_sum', 'ad_views_sum', 'ad_clicks_per_second', 'ad_views_per_second', 'ad_cs_data_last_sent', 'ad_cs_data_last_sent', 'ad_cs_data_last_received'); foreach ($aColumns as $column) { $this->assertFalse(in_array($column, $aExistingColumns, $column . ' found in column list')); } TestEnv::restoreConfig(); TestEnv::restoreEnv(); }
/** * Tests creating/dropping all of the MPE temporary tables. * * Requirements: * Test 1: Test that all MPE temporary tables can be created and dropped. */ function testAllMaintenanceStatisticsTables() { $tmpTables = array('tmp_ad_impression', 'tmp_ad_click', 'tmp_tracker_impression_ad_impression_connection', 'tmp_tracker_impression_ad_click_connection', 'tmp_ad_connection'); // Test 1 $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['prefix'] = ''; $oDbh =& OA_DB::singleton(); foreach ($tmpTables as $tableName) { $query = "SELECT * FROM {$tableName}"; OA::disableErrorHandling(); $result = $oDbh->query($query); OA::enableErrorHandling(); $this->assertEqual(strtolower(get_class($result)), 'mdb2_error'); } $oTable =& OA_DB_Table_Statistics::singleton(); foreach ($tmpTables as $tableName) { $oTable->createTable($tableName); } $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); foreach ($tmpTables as $tableName) { // Test that the table has been created $query = "SELECT * FROM {$tableName}"; $result = $oDbh->query($query); $this->assertTrue($result); // Test that the table can be dropped // Use a different query to overcome MDB2 query buffering $query = "SELECT foo FROM {$tableName}"; OA::disableErrorHandling(); $result = $oDbh->query($query); OA::enableErrorHandling(); $this->assertEqual(strtolower(get_class($result)), 'mdb2_error'); } // Restore the testing environment TestEnv::restoreEnv(); }
function _dropAuditTable($table_name) { $oTable = new OA_DB_Table(); $aDBTables = OA_DB_Table::listOATablesCaseSensitive(); if (in_array($table_name, $aDBTables)) { $this->assertTrue($oTable->dropTable($table_name), 'error dropping audit table ' . $table_name); } $aDBTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertFalse(in_array($table_name, $aDBTables), '_dropAuditTable'); }
/** * Enter description here... * * @param array $installvars * @return boolean */ function checkDatabaseExists($installvars) { $oDbh =& OA_DB::singleton(); $oTable = OA_DB_Table_Core::singleton(); $aTables = OA_DB_Table::listOATablesCaseSensitive(); $result = false; foreach ($oTable->tables as $k => $v) { if (is_array($aTables) && in_array($installvars['table_prefix'] . $k, $aTables)) { // Table exists $result = true; break; } } return $result; }
function test_runScript() { $oUpgrade = new OA_Upgrade(); $this->oConfiguration = $oUpgrade->oConfiguration; $oUpgrade->initDatabaseConnection(); $oDbh =& $oUpgrade->oDbh; $oTable = new OA_DB_Table(); $table = 'database_action'; $testfile = MAX_PATH . "/lib/OA/Upgrade/tests/data/{$table}.xml"; $oTable->init($testfile); $this->assertTrue($oTable->dropTable($this->prefix . $table), 'error dropping ' . $this->prefix . $table); $this->assertTrue($oTable->createTable($table), 'error creating ' . $this->prefix . $table); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertTrue(in_array($this->prefix . $table, $aExistingTables), 'old database_action table not found'); $this->assertTrue($oUpgrade->runScript('prescript_openads_upgrade_2.3.33-beta-rc4.php')); TestEnv::restoreConfig(); }
/** * Tests creating/dropping all of the core tables. * * Requirements: * Test 1: Test that all core tables can be created and dropped. */ function testAllCoreTables() { // Test 1 $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['prefix'] = ''; $oDbh =& OA_DB::singleton(); $oTable =& OA_DB_Table_Core::singleton(); $oTable->dropAllTables(); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (PEAR::isError($aExistingTables)) { // Can't talk to database, test fails! $this->assertTrue(false); } $this->assertEqual(count($aExistingTables), 0); $oTable =& OA_DB_Table_Core::singleton(); $oTable->createAllTables(); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); foreach ($conf['table'] as $key => $tableName) { if ($key == 'prefix' || $key == 'type') { continue; } // Test that the tables exists $this->assertTrue(in_array($tableName, $aExistingTables), 'does not exist: ' . $tableName . ' (found in conf file)'); } $oTable->dropAllTables(); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (PEAR::isError($aExistingTables)) { // Can't talk to database, test fails! $this->assertTrue(false); } $this->assertEqual(count($aExistingTables), 0); // Ensure the singleton is destroyed $oTable->destroy(); }
function _dropAuditTables($oDbh) { $oTable = new OA_DB_Table(); $testpath = MAX_PATH . '/lib/OA/Upgrade/tests/data/'; $oTable->init($testpath . 'schema_test_config.xml'); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (in_array($this->prefix . 'database_action', $aExistingTables)) { $this->assertTrue($oTable->dropTable($this->prefix . 'database_action'), 'error dropping test ' . $this->prefix . 'database_action'); } if (in_array($this->prefix . 'upgrade_action', $aExistingTables)) { $this->assertTrue($oTable->dropTable($this->prefix . 'upgrade_action'), 'error dropping test ' . $this->prefix . 'upgrade_action'); } $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertFalse(in_array($this->prefix . 'database_action', $aExistingTables), 'database_action'); $this->assertFalse(in_array($this->prefix . 'upgrade_action', $aExistingTables), 'upgrade_action'); }
function test_listBackups() { $oAuditor = $this->_getAuditObject('OA_DB_UpgradeAuditor'); $oTable = new OA_DB_Table(); $oTable->init($this->path . 'schema_test_backups.xml'); $this->assertTrue($oTable->createTable('z_test1'), 'error creating test backup z_test1'); $this->assertTrue($oTable->createTable('z_test2'), 'error creating test backup z_test2'); $this->assertTrue($oTable->createTable('z_test3'), 'error creating test backup z_test3'); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertTrue(in_array($oAuditor->prefix . 'z_test1', $aExistingTables), '_listBackups'); $this->assertTrue(in_array($oAuditor->prefix . 'z_test2', $aExistingTables), '_listBackups'); $this->assertTrue(in_array($oAuditor->prefix . 'z_test3', $aExistingTables), '_listBackups'); $aBackupTables = $oAuditor->_listBackups(); $this->assertIsA($aBackupTables, 'array', 'backup array not an array'); $this->assertEqual(count($aBackupTables), 3, 'wrong number of backups found in database: expected 3 got ' . count($aBackupTables)); $this->_dropAuditTable($oAuditor->prefix . $oAuditor->logTable); $this->_dropAuditTable($oAuditor->prefix . 'z_test1'); $this->_dropAuditTable($oAuditor->prefix . 'z_test2'); $this->_dropAuditTable($oAuditor->prefix . 'z_test3'); }
function _checkCreateAuditTable() { $this->aDBTables = OA_DB_Table::listOATablesCaseSensitive(); if (!in_array($this->prefix . $this->logTable, $this->aDBTables)) { $this->log('creating ' . $this->logTable . ' audit table'); if (!$this->_createAuditTable()) { $this->logError('failed to create ' . $this->logTable . ' audit table'); return false; } $this->log('successfully created ' . $this->logTable . ' audit table'); } return true; }
function backupTables($name) { foreach ($this->aGroups as $aGroup) { $path = $this->pathPackages . $aGroup['name'] . '/etc/'; if ($aGroup['install']['schema']['mdb2schema']) { $aSchemas[$aGroup['name']] = $path . $aGroup['install']['schema']['mdb2schema'] . '.xml'; } } if ($aSchemas) { $oDbh = OA_DB::singleton(); switch ($oDbh->dbsyntax) { case 'mysql': $engine = $oDbh->getOption('default_table_type'); $sql = "CREATE TABLE %s ENGINE={$engine} (SELECT * FROM %s)"; break; case 'pgsql': $sql = 'CREATE TABLE "%1$s" (LIKE "%2$s" INCLUDING DEFAULTS); INSERT INTO "%1$s" SELECT * FROM "%2$s"'; break; } $prefix = $GLOBALS['_MAX']['CONF']['table']['prefix']; foreach ($aSchemas as $group => $file) { $oTable = new OA_DB_Table(); if ($oTable->init($this->basePath . $file, false)) { foreach ($oTable->aDefinition['tables'] as $table => $aTable) { $tblSrc = $prefix . $table; $tblTgt = $tblSrc . '_' . date('Ymd_His'); $query = sprintf($sql, $tblTgt, $tblSrc); $result = $oDbh->exec($query); if (PEAR::isError($result)) { $aResult[] = $group . ' : ' . $tblSrc . ' backup failed'; $this->aErrors[] = 'error creating backup ' . $tblSrc . ' : ' . $result->getUserInfo(); } if (count(OA_DB_Table::listOATablesCaseSensitive($tblTgt) == 1)) { $aResult[] = $group . ' : ' . $tblSrc . ' copied to ' . $tblTgt; } } } else { $aResult = $group . ' : no tables copied'; $this->aErrors[] = 'error initialising ' . $group . ' schema ' . $file; } } } return $aResult ? $aResult : array(0 => 'plugin has no tables to backup'); }
function _dropTestTableAutoInc($oDbh) { $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['split'] = false; $oTable = new OA_DB_Table(); $oTable->init($this->path . 'schema_test_autoinc.xml'); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if ($this->_tableExists('table1_autoinc', $aExistingTables)) { $this->assertTrue($oTable->dropTable($this->prefix . 'table1_autoinc'), 'error dropping test table1_autoinc'); } $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertFalse($this->_tableExists('table1_autoinc', $aExistingTables), '_dropTestTableAutoInc'); }
function _tableExists($table) { return count(OA_DB_Table::listOATablesCaseSensitive($table)); }
function test_installPackage() { $oPkgMgr = new OX_PluginManager(); $file = MAX_PATH . $this->testpathData . 'zipInstallTest/testPluginPackage.zip'; $oPkgMgr->clearErrors(); //install $this->assertTrue($oPkgMgr->installPackage(array('tmp_name' => $file, 'name' => 'testPluginPackage.zip'))); if (count($oPkgMgr->aErrors)) { foreach ($oPkgMgr->aErrors as $error) { $this->fail($error); } } $path = MAX_PATH . $oPkgMgr->pathPluginsAdmin . 'testPlugin/'; $this->assertTrue(file_exists($path . 'templates/testPlugin.html')); $this->assertTrue(file_exists($path . 'images/testPlugin1.jpg')); $this->assertTrue(file_exists($path . 'images/testPlugin2.jpg')); $this->assertTrue(file_exists($path . 'testPlugin-common.php')); $this->assertTrue(file_exists($path . 'testPlugin-index.php')); $this->assertTrue(file_exists($path . 'testPlugin-page.php')); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['plugins']['testPluginPackage'])); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['pluginGroupComponents']['testPlugin'])); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['testPlugin'])); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting1'])); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting2'])); $this->assertTrue(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting3'])); $doAppVar = OA_Dal::factoryDO('application_variable'); $doAppVar->name = 'tables_testplugin'; $doAppVar->find(true); $this->assertEqual($doAppVar->value, '001'); $doAppVar = OA_Dal::factoryDO('application_variable'); $doAppVar->name = 'testPlugin_version'; $doAppVar->find(true); $this->assertEqual($doAppVar->value, '0.0.1'); $doPrefs = OA_Dal::factoryDO('preferences'); $doPrefs->preference_name = 'testPlugin_preference1'; $doPrefs->find(true); $this->assertEqual($doPrefs->account_type, OA_ACCOUNT_MANAGER); $doPrefs = OA_Dal::factoryDO('preferences'); $doPrefs->preference_name = 'testPlugin_preference2'; $doPrefs->find(true); $this->assertEqual($doPrefs->account_type, OA_ACCOUNT_ADMIN); $aTables = OA_DB_Table::listOATablesCaseSensitive('testPlugin_table'); $this->assertIsA($aTables, 'array'); $doTestPluginTable = OA_Dal::factoryDO('testPlugin_table'); $this->assertIsA($doTestPluginTable, 'DataObjects_Testplugin_table'); $this->assertEqual($id = $doTestPluginTable->insert(), 1); $this->assertTrue($doTestPluginTable->delete()); // try reinstalling $this->assertFalse($oPkgMgr->installPackage(array('tmp_name' => $file, 'name' => 'testPluginPackage.zip'))); $this->assertEqual($oPkgMgr->aErrors[0], "Plugin with this name is already installed testPluginPackage"); //uninstall $oPkgMgr->clearErrors(); $this->assertTrue($oPkgMgr->uninstallPackage('testPluginPackage')); if (count($oPkgMgr->aErrors)) { foreach ($oPkgMgr->aErrors as $error) { $this->fail($error); } } $path = MAX_PATH . $oPkgMgr->pathPluginsAdmin . 'testPlugin/'; $this->assertFalse(file_exists($path . 'templates/testPlugin.html')); $this->assertFalse(file_exists($path . 'images/testPlugin1.jpg')); $this->assertFalse(file_exists($path . 'images/testPlugin2.jpg')); $this->assertFalse(file_exists($path . 'testPlugin-common.php')); $this->assertFalse(file_exists($path . 'testPlugin-index.php')); $this->assertFalse(file_exists($path . 'testPlugin-page.php')); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['plugins']['testPluginPackage'])); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['pluginGroupComponents']['testPlugin'])); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['testPlugin'])); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting1'])); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting2'])); $this->assertFalse(isset($GLOBALS['_MAX']['CONF']['testPlugin']['setting3'])); $doAppVar = OA_Dal::factoryDO('application_variable'); $doAppVar->name = 'tables_testplugin'; $doAppVar->find(true); $this->assertNull($doAppVar->value, 'Expected null got ' . $doAppVar->value); $doAppVar = OA_Dal::factoryDO('application_variable'); $doAppVar->name = 'testPlugin_version'; $doAppVar->find(true); $this->assertNull($doAppVar->value, 'Expected null got ' . $doAppVar->value); $doPrefs = OA_Dal::factoryDO('preferences'); $doPrefs->preference_name = 'testPlugin_preference1'; $doPrefs->find(true); $this->assertNull($doPrefs->account_type, 'Expected null got ' . $doPrefs->account_type); $doPrefs = OA_Dal::factoryDO('preferences'); $doPrefs->preference_name = 'testPlugin_preference2'; $doPrefs->find(true); $this->assertNull($doPrefs->account_type, 'Expected null got ' . $doPrefs->account_type); $aTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aTables), 0); TestEnv::restoreConfig(); }
function _dropTestTables() { $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['prefix'] = ''; $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (in_array('table1', $aExistingTables)) { $this->assertTrue($this->oTable->dropTable('table1'), 'error dropping test table1'); } if (in_array('table2', $aExistingTables)) { $this->assertTrue($this->oTable->dropTable('table2'), 'error dropping test table2'); } $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertFalse(in_array('table1', $aExistingTables), '_dropTestTables'); $this->assertFalse(in_array('table2', $aExistingTables), '_dropTestTables'); }
/** * retrieve an array of table names from currently connected database * * @return array */ function _listBackups() { $aResult = array(); $prefix = $this->prefix . 'z_'; OA_DB::setCaseSensitive(); $aBakTables = OA_DB_Table::listOATablesCaseSensitive(); OA_DB::disableCaseSensitive(); $prelen = strlen($prefix); krsort($aBakTables); foreach ($aBakTables as $k => &$name) { // workaround for mdb2 problem "show table like" if (substr($name, 0, $prelen) == $prefix) { $name = str_replace($this->prefix, '', $name); $aInfo = $this->queryAuditForABackup($name); $aResult[$k]['backup_table'] = $name; $aResult[$k]['copied_table'] = $aInfo[0]['tablename']; $aResult[$k]['copied_date'] = $aInfo[0]['updated']; $aStatus = $this->getTableStatus($name); $aResult[$k]['data_length'] = $aStatus[0]['data_length'] / 1024; $aResult[$k]['rows'] = $aStatus[0]['rows']; } } return $aResult; }
function exportData($identity = '') { $oDbh = OA_DB::singleton(); switch ($oDbh->dbsyntax) { case 'mysql': $engine = $oDbh->getOption('default_table_type'); $sql = "CREATE TABLE %s ENGINE={$engine} (SELECT * FROM %s %s)"; break; case 'pgsql': $sql = 'CREATE TABLE "%1$s" (LIKE "%2$s" INCLUDING DEFAULTS); INSERT INTO "%1$s" SELECT * FROM "%2$s" "%3$s"'; break; } $aConf = $GLOBALS['_MAX']['CONF']['table']; if (!$identity) { $identity = 'z_' . $this->component . date('Ymd_His'); } $tblSrc = $aConf['prefix'] . 'banners_demo'; $tblTgt = $aConf['prefix'] . $identity . $tblSrc; $where = "WHERE 1=1"; $query = sprintf($sql, $tblTgt, $tblSrc, $where); $result1 = $oDbh->exec($query); $tblSrc = $aConf['prefix'] . 'banners'; $tblTgt = $aConf['prefix'] . $identity . $tblSrc; $where = "WHERE ext_bannertype = '" . $this->getComponentIdentifier() . "'"; $query = sprintf($sql, $tblTgt, $tblSrc, $where); $result2 = $oDbh->exec($query); if ($result1 && $result2) { return OA_DB_Table::listOATablesCaseSensitive($identity); } return false; }
/** * internal function to set up some test tables * * @param mdb2 connection $oDbh */ function _createTestTables($oDbh) { $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); if (!$this->_tableExists('z_test1', $aExistingTables)) { $conf =& $GLOBALS['_MAX']['CONF']; //$conf['table']['prefix'] = ''; $oTable = new OA_DB_Table(); $oTable->init($this->path . 'schema_test_backups.xml'); $this->assertTrue($oTable->createTable('z_test1'), 'error creating test table1'); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertTrue($this->_tableExists('z_test1', $aExistingTables), '_createTestTables'); return $oTable->aDefinition; } return false; }
/** * retrieve an array of table names from currently connected database * uses the conf table prefix to search only for tables from the openads schema * * * @param string : any additional (post-prefix) string to search for * @return array */ function _listTables($prefix = '') { return OA_DB_Table::listOATablesCaseSensitive($prefix); }
function test_Tables() { $prefix = $GLOBALS['_MAX']['CONF']['table']['prefix']; $oTable = new OA_DB_Table(); $oTable->init(MAX_PATH . $this->testpathPackages . 'testPlugin/etc/tables_testplugin.xml'); $version = $oTable->aDefinition['version']; $oPluginManager = new OX_Plugin_ComponentGroupManager(); $oPluginManager->pathPackages = $this->testpathPackages; $aSchema = array('mdb2schema' => 'tables_testplugin'); $aDbTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aDbTables), 0); $this->assertEqual($oPluginManager->_createTables('testPlugin', $aSchema), $version); $aDbTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aDbTables), 1); $this->assertEqual($aDbTables[0], $prefix . 'testplugin_table'); $this->assertTrue($oPluginManager->_dropTables('testPlugin', $aSchema)); $aDbTables = OA_DB_Table::listOATablesCaseSensitive('testplugin_table'); $this->assertEqual(count($aDbTables), 0); }
/** * check if openads tables already exist in the specified database * * @return boolean */ function checkExistingTables() { $result = true; $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $oldTableMessagePrefix = 'Your database contains an old OpenX configuration table: '; $oldTableMessagePostfix = 'If you are trying to upgrade this database, please copy your existing configuration file into the var folder of this install. If you wish to proceed with a fresh installation, please either choose a new Table Prefix or a new Database.'; if (in_array($this->aDsn['table']['prefix'] . 'config', $aExistingTables)) { $this->oLogger->logError($oldTableMessagePrefix . $this->aDsn['table']['prefix'] . 'config. ' . $oldTableMessagePostfix); return false; } if (in_array($this->aDsn['table']['prefix'] . 'preference', $aExistingTables)) { $this->oLogger->logError($oldTableMessagePrefix . $this->aDsn['table']['prefix'] . 'preference. ' . $oldTableMessagePostfix); return false; } if (in_array($this->aDsn['table']['prefix'] . 'preferences', $aExistingTables)) { $this->oLogger->logError($oldTableMessagePrefix . $this->aDsn['table']['prefix'] . 'preferences. ' . $oldTableMessagePostfix); return false; } $tablePrefixError = false; foreach ($aExistingTables as &$tablename) { if (substr($tablename, 0, strlen($this->aDsn['table']['prefix'])) == $this->aDsn['table']['prefix']) { $result = false; $this->oLogger->log('Table with the prefix ' . $this->aDsn['table']['prefix'] . ' found: ' . $tablename); if ($tablePrefixError == false) { $this->oLogger->logError('The database you have chosen already contains tables with the prefix ' . $this->aDsn['table']['prefix']); $this->oLogger->logError('Please either remove these tables or choose a new prefix'); $tablePrefixError = true; } } } return $result; }
/** * A method to test the drop table method. * * Requirements: * Test 1: Test that a table can be dropped. * Test 2: Test that a temporary table can be dropped. * Test 3: Test that a tablename with uppercase prefix can be dropped. * Test 4: Test that a tablename with a mixed prefix can be dropped. */ function testDropTable() { // Test 1 $conf =& $GLOBALS['_MAX']['CONF']; $prefix = $conf['table']['prefix']; $oDbh =& OA_DB::singleton(); $table = $oDbh->quoteIdentifier($prefix . 'foo', true); $oTable = new OA_DB_Table(); $query = "CREATE TABLE {$table} ( a INTEGER )"; $oDbh->query($query); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual($aExistingTables[0], $prefix . 'foo'); $this->assertTrue($oTable->dropTable($prefix . 'foo')); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual(count($aExistingTables), 0, $prefix . 'foo'); //TestEnv::restoreEnv(); // Test 2 $conf =& $GLOBALS['_MAX']['CONF']; $oDbh =& OA_DB::singleton(); $oTable = new OA_DB_Table(); $table = $oDbh->quoteIdentifier($prefix . 'foo', true); $query = "CREATE TEMPORARY TABLE {$table} ( a INTEGER )"; $oDbh->query($query); // Test table exists with an insert $query = "INSERT INTO {$table} (a) VALUES (37)"; $result = $oDbh->query($query); $this->assertTrue($result); $this->assertTrue($oTable->dropTable($prefix . 'foo')); // Test table does not exist with an insert $query = "INSERT INTO {$table} (a) VALUES (37)"; RV::disableErrorHandling(); $result = $oDbh->query($query); RV::enableErrorHandling(); $this->assertEqual(strtolower(get_class($result)), 'mdb2_error'); //TestEnv::restoreEnv(); // Test 3 $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['prefix'] = 'OA_'; $prefix = $conf['table']['prefix']; $oDbh =& OA_DB::singleton(); $table = $oDbh->quoteIdentifier($prefix . 'foo', true); $query = "CREATE TABLE {$table} ( a INTEGER )"; $oDbh->query($query); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual($aExistingTables[0], 'OA_foo'); $this->assertTrue($oTable->dropTable('OA_foo')); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual(count($aExistingTables), 0, 'Table OA_foo'); //TestEnv::restoreEnv(); // Test 4 $conf =& $GLOBALS['_MAX']['CONF']; $conf['table']['prefix'] = 'oA_'; $prefix = $conf['table']['prefix']; $oDbh =& OA_DB::singleton(); $table = $oDbh->quoteIdentifier($prefix . 'foo', true); $oTable = new OA_DB_Table(); $query = "CREATE TABLE {$table} ( a INTEGER )"; $oDbh->query($query); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual($aExistingTables[0], 'oA_foo'); $this->assertTrue($oTable->dropTable('oA_foo')); $aExistingTables = OA_DB_Table::listOATablesCaseSensitive(); $this->assertEqual(count($aExistingTables), 0, 'Table oA_foo'); //TestEnv::restoreEnv(); }