function testLoadDriver()
 {
     $r = DatabaseDriverManager::loadDriver('DB');
     $this->assertTrue($r->is(new Error('INVALID_DATABASEDRIVER', 'DB')));
     $r = DatabaseDriverManager::loadDriver('CantRun');
     $this->assertTrue($r->is(new Error('INVALID_DATABASEDRIVER', 'CantRun')));
 }
 function setUp($moduleName)
 {
     //parent::__construct ();
     $this->_moduleName = $moduleName;
     $this->_module = DatabaseDriverManager::loadDriver($this->_moduleName);
     $a = $this->connect();
     if ($a === false) {
         return;
     }
 }
Example #3
0
 function loadModuleFromConfig($module, $config)
 {
     $mod = DatabaseDriverManager::loadDriver($module);
     if (isError($mod)) {
         return $mod;
     }
     $mOpts = $config[$module];
     $a = $mod->connect($mOpts['Host'], $mOpts['User'], $mOpts['Password'], $mOpts['DatabaseName']);
     if (isError($a)) {
         return $a;
     }
     $mod->setPrefix($mOpts['Prefix']);
     return $mod;
 }
 function installConfigAndDatabase($siteName, $siteDefaultLanguage, $dbDriverName, $databaseHost, $databaseUser, $databasePassword, $databaseName, $databasePrefix, $adminLogin, $adminPassword, $adminMail)
 {
     DatabaseDriverManager::findAllDriversInDirectory('core/dbdrivers');
     $dbDriver = DatabaseDriverManager::loadDriver($dbDriverName);
     if (!isError($dbDriver)) {
         $dbDriver->connect($databaseHost, $databaseUser, $databasePassword, $databaseName);
         $dbDriver->setPrefix($databasePrefix);
         $pluginManager = new pluginManager($this->_pluginAPI);
         $pluginManager->findAllPlugins('interface/core-plugins/');
         // an hack for viewPage to be first
         $foundPlugins = array_reverse($pluginManager->getAllFoundPlugins());
         foreach ($foundPlugins as $plugin) {
             if (is_a($plugin, 'InstallablePlugin')) {
                 $a = $plugin->install($this->_pluginAPI, $dbDriver, $siteDefaultLanguage);
                 if (isError($a)) {
                     var_dump($a);
                     die('Something went wrong');
                 }
             }
         }
         $userM = new userManager($dbDriver);
         $admin = $userM->newUser();
         $a = $admin->initFromArray(array('login' => $adminLogin, 'password' => md5($adminPassword), 'email' => $adminMail));
         $userM->addUserToDatabase($admin);
         $group = $userM->newGroup();
         $group->initFromArray(array('generic_name' => 'administrator', 'generic_description' => 'The admin users'));
         $userM->addGroupToDatabase($group);
         $group->assignPermission('edit_admin', true);
         $admin->addToGroup($group);
         $group = $userM->newGroup();
         $group->initFromArray(array('generic_name' => 'normaluser', 'generic_description' => 'All users'));
         $userM->addGroupToDatabase($group);
         $group->assignPermission('edit_admin', false);
         $admin->addToGroup($group);
         $group = $userM->newGroup();
         $group->initFromArray(array('generic_name' => 'anonymous', 'generic_description' => 'Not logged in'));
         $userM->addGroupToDatabase($group);
         $group->assignPermission('edit_admin', false);
         $configContents = '<?php' . PHP_NL . PHP_NL;
         $configContents .= '$configItems[\'/databases/driver\']=\'' . $dbDriverName . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/databases/host\']=\'' . $databaseHost . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/databases/password\']=\'' . $databasePassword . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/databases/user\']=\'' . $databaseUser . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/databases/database\']=\'' . $databaseName . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/databases/table_prefix\']=\'' . $databasePrefix . '\';' . PHP_NL . PHP_NL;
         $configContents .= '$configItems[\'/site/title\']=\'' . $siteName . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/site/default_language\']=\'' . $siteDefaultLanguage . '\';' . PHP_NL;
         $configContents .= '$configItems[\'/site/enableUsers\']=true;' . PHP_NL;
         $configContents .= '$configItems[\'/languages/' . $siteDefaultLanguage . '\']=\'' . $siteDefaultLanguage . '\';' . PHP_NL;
         $configContents .= '?>';
         $c = @fopen('config.php', 'w');
         if ($c !== false) {
             fwrite($c, $configContents);
             fclose($c);
             header('Location: index.php');
         } else {
             $sm =& $this->_pluginAPI->getSmarty();
             $sm->assign('CONFIG_CONTENT', htmlspecialchars($configContents));
             $sm->display('installer/save_config_manual.tpl');
         }
     } else {
         var_dump($dbModule);
     }
 }
                    $allTables[] = $row[0];
                }
                return $allTables;
            } else {
                return $q;
            }
        }
        function escapeString($value)
        {
            if (get_magic_quotes_gpc()) {
                $value = stripslashes($value);
            }
            return $this->_mysqli->escape_string($value);
        }
        function tableExists($tableName)
        {
            $allTables = $this->getAllTables();
            if (in_array($this->getPrefix() . $tableName, $allTables)) {
                return true;
            } else {
                return in_array(strtolower($this->getPrefix() . $tableName), $allTables);
            }
        }
        function getSQLCreator()
        {
            return 'DataMySQLCompatLayer';
        }
    }
}
DatabaseDriverManager::addDriver('MySQLI', 'MySQLIDatabaseDriver', class_exists('mysqli'));
                    $allTables[] = $row['Tables_in_' . $this->dbName];
                }
                return $allTables;
            } else {
                return $q;
            }
        }
        function escapeString($value)
        {
            if (get_magic_quotes_gpc()) {
                $value = stripslashes($value);
            }
            return mysql_real_escape_string($value, $this->connection);
        }
        function tableExists($tableName)
        {
            $allTables = $this->getAllTables();
            if (in_array($this->getPrefix() . $tableName, $allTables)) {
                return true;
            } else {
                return in_array(strtolower($this->getPrefix() . $tableName), $allTables);
            }
        }
        function getSQLCreator()
        {
            return 'DataMySQLCompatLayer';
        }
    }
}
DatabaseDriverManager::AddDriver('MySQL', 'MySQLDatabaseDriver', function_exists('mysql_connect'));
 /**
  * Init the system.
  * @public
  */
 function init()
 {
     parent::init();
     $this->_pluginAPI = new PluginAPI($this);
     DatabaseDriverManager::findAllDriversInDirectory('core/dbdrivers');
     $this->_dbDriver = DatabaseDriverManager::loadDriver($this->_configManager->getStringItem('/databases/driver'));
     $e = $this->_dbDriver->connect($this->_configManager->getStringItem('/databases/host'), $this->_configManager->getStringItem('/databases/user'), $this->_configManager->getStringItem('/databases/password'), $this->_configManager->getStringItem('/databases/database'));
     if (isError($e)) {
         $this->_pageManager = new PageManager($this->_dbDriver);
         $this->_userManager = new UserManager($this->_dbDriver);
         $this->loadPluginAPI();
         $this->loadUserSettings();
         $this->error($e);
     }
     $this->_dbDriver->setPrefix($this->_configManager->getStringItem('/databases/table_prefix'));
     $this->_pageManager = new PageManager($this->_dbDriver);
     $this->_userManager = new UserManager($this->_dbDriver);
     $this->_pluginManager->findAllPlugins('interface/core-plugins');
     $this->loadPluginAPI();
     $this->loadUserSettings();
 }
    $_POST['action'] = 'installerInstall';
    $_POST['siteName'] = $c->getStringItem('/site/title');
    $_POST['siteDefaultLanguage'] = $c->getStringItem('/site/default_language');
    $_POST['databaseDriver'] = $c->getStringItem('/databases/driver');
    $_POST['databaseHost'] = $c->getStringItem('/databases/host');
    $_POST['databaseUser'] = $c->getStringItem('/databases/user');
    $_POST['databasePassword'] = $c->getStringItem('/databases/password');
    $_POST['databaseName'] = $c->getStringItem('/databases/database');
    $_POST['databasePrefix'] = $c->getStringItem('/databases/table_prefix');
    $_POST['adminLogin'] = '******';
    $_POST['adminPassword1'] = 'test';
    $_POST['adminPassword2'] = 'test';
    $_POST['adminMail'] = '*****@*****.**';
    // lets hack some more
    $_SERVER['REQUEST_METHOD'] = 'POST';
    DatabaseDriverManager::findAllDriversInDirectory('core/dbdrivers');
    $dbDriver = DatabaseDriverManager::loadDriver($_POST['databaseDriver']);
    $dbDriver->connect($_POST['databaseHost'], $_POST['databaseUser'], $_POST['databasePassword'], $_POST['databaseName']);
    foreach ($dbDriver->getAllTables() as $t) {
        if (ereg('^' . $_POST['databasePrefix'], $t)) {
            $sql = "DROP TABLE {$t}";
            $dbDriver->query($sql);
        }
    }
    $morgos = new BaseMorgos();
    $morgos->run();
    header('Location: index.php');
    // header to index.php even if config.php is unwritable
} else {
    die('config.php not found');
}
            $q = $this->query("SELECT table_name FROM information_schema.tables WHERE table_schema='public'");
            if (!isError($q)) {
                $allTables = array();
                while ($row = pg_fetch_assoc($q)) {
                    $allTables[] = $row['table_name'];
                }
                return $allTables;
            } else {
                return $q;
            }
        }
        function escapeString($value)
        {
            if (get_magic_quotes_gpc()) {
                $value = stripslashes($value);
            }
            return pg_escape_string($value);
        }
        function tableExists($tableName)
        {
            $allTables = $this->getAllTables();
            if (in_array($this->getPrefix() . $tableName, $allTables)) {
                return true;
            } else {
                return in_array(strtolower($this->getPrefix() . $tableName), $allTables);
            }
        }
    }
}
DatabaseDriverManager::addDriver('PostgreSQL', 'PgSQLDatabaseDriver', function_exists('pg_connect'));
 /**
  * Adds the driver with name $driverName to the driver list.
  *
  * @since 0.4
  * @param $driverName (string)
  * @param $driverClass (string) the name of the class of the driver
  * @param $canRun (bool)
  */
 function addDriver($driverName, $driverClass, $canRun)
 {
     global $_DBDriverList;
     if (!DatabaseDriverManager::isDriverInstalled($driverName)) {
         if (class_exists($driverClass)) {
             $_DBDriverList[$driverName] = array('className' => $driverClass, 'canRun' => $canRun);
         } else {
             return new Error('DBDRIVERCLASS_NOTFOUND', $driverName, $driverClass);
         }
     } else {
         return new Error('DBDRIVER_ALREADY_ADDED', $driverName);
     }
 }