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');
 }
Пример #5
0
 /**
  * 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();
 }
Пример #8
0
 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;
 }
Пример #11
0
 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');
 }
Пример #13
0
 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();
 }
Пример #15
0
 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;
 }
Пример #19
0
 /**
  * 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);
 }
Пример #21
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;
 }
Пример #22
0
 /**
  * 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();
 }