| 
<?php$host="localhost";
 $user="root";
 $pass="";
 $dbname=__DIR__."/phprbac.sqlite3";
 // $dbname="phprbac";
 $adapter="pdo_sqlite";
 // $adapter="pdo_mysql";
 #TODO: test on sqlite
 
 if ($adapter=="pdo_mysql")
 {
 try {
 jf::$DB=new PDO("mysql:host={$host};dbname={$dbname}",$user,$pass);
 }
 catch (PDOException $e)
 {
 if ($e->getCode()==1049) //database not found
 InstallPDOMySQL($host,$user,$pass,$dbname);
 else
 throw $e;
 }
 }
 elseif ($adapter=="pdo_sqlite")
 {
 if (!file_exists($dbname))
 InstallPDOSQLite($host,$user,$pass,$dbname);
 else
 jf::$DB=new PDO("sqlite:{$dbname}",$user,$pass);
 //         jf::$DB=new PDO("sqlite::memory:",$user,$pass);
 }
 else # default to mysqli
 {
 jf::$DB=new mysqli($host,$user,$pass,$dbname);
 if(jf::$DB->connect_errno==1049);
 InstallMySQLi($host,$user,$pass,$dbname);
 }
 function GetSQLs($dbms)
 {
 $sql=file_get_contents(__DIR__."/sql/{$dbms}.sql");
 $sql=str_replace("PREFIX_",jf::TablePrefix(),$sql);
 return explode(";",$sql);
 }
 function InstallPDOMySQL($host,$user,$pass,$dbname)
 {
 $sqls=GetSQLs("mysql");
 $db=new PDO("mysql:host={$host};",$user,$pass);
 $db->query("CREATE DATABASE {$dbname}");
 $db->query("USE {$dbname}");
 if (is_array($sqls))
 foreach ($sqls as $query)
 $db->query($query);
 jf::$DB=new PDO("mysql:host={$host};dbname={$dbname}",$user,$pass);
 jf::$RBAC->Reset(true);
 }
 function InstallPDOSQLite($host,$user,$pass,$dbname)
 {
 jf::$DB=new PDO("sqlite:{$dbname}",$user,$pass);
 $sqls=GetSQLs("sqlite");
 if (is_array($sqls))
 foreach ($sqls as $query)
 jf::$DB->query($query);
 jf::$RBAC->Reset(true);
 }
 function InstallMySQLi($host,$user,$pass,$dbname)
 {
 $sqls=GetSQLs("mysql");
 $db=new mysqli($host,$user,$pass);
 $db->query("CREATE DATABASE {$dbname}");
 $db->select_db($dbname);
 if (is_array($sqls))
 foreach ($sqls as $query)
 $db->query($query);
 jf::$DB=new mysqli($host,$user,$pass,$dbname);
 jf::$RBAC->Reset(true);
 }
 |