Ejemplo n.º 1
0
 public static function testConfig($dsnTest)
 {
     $fw = \Base::instance();
     // Options
     $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_PERSISTENT => TRUE);
     if ($fw['POST.new.db5.driver'] == "mysql") {
         $options5 = $options + [\PDO::MYSQL_ATTR_COMPRESS => TRUE];
     } else {
         $options5 = $options;
     }
     if ($fw['POST.new.db3.driver'] == "mysql") {
         $options += [\PDO::MYSQL_ATTR_COMPRESS => TRUE];
     }
     // MySQL-specific attribute
     foreach ($dsnTest as $server => $dsn) {
         if ($dsn == NULL) {
             $test[$server] = 1;
         } else {
             // reset connection
             unset($dbTest);
             // Test db connection
             try {
                 $dbTest = new \DB\SQL($dsn, $fw["POST.new.{$server}.user"], $fw["POST.new.{$server}.pass"], $options);
                 $test[$server] = 2;
                 if ($server == "db5") {
                     try {
                         $dbTest->exec('SELECT 1 FROM `' . $fw['POST.new.db5.dbname'] . '`.`' . $fw['POST.new.db5.prefix'] . 'config`');
                         echo $dbTest->count() . "xxxx";
                         $test[$server] = 3;
                     } catch (PDOException $e) {
                         echo "nichts";
                         $test[$server] = 2;
                         $fw['POST.new.db5.error'] = $e->getMessage();
                     }
                 } elseif ($server == "db3") {
                     $probeSQL = "SELECT `tableprefix`, `sitekey`, `sitename` \r\n\t\t\t\t\t\t\t\t\t\tFROM `{$fw['POST.new.db3.dbname']}`.`{$fw['POST.new.db3.settings']}fanfiction_settings`";
                     if ($fw['POST.new.db3.sitekey'] > "") {
                         try {
                             $probe = $dbTest->exec($probeSQL . " WHERE `sitekey` LIKE :sitekey", [':sitekey' => $fw['POST.new.db3.sitekey']]);
                             $test['data'] = 2;
                             if ($dbTest->count() !== 1) {
                                 $test[1] = 1;
                             }
                         } catch (PDOException $e) {
                             $test['data'] = 0;
                         }
                     } else {
                         try {
                             $probe = $dbTest->exec($probeSQL);
                             if ($dbTest->count() === 1) {
                                 $test['data'] = 2;
                                 $fw['POST.new.db3.sitekey'] = $probe[0]['sitekey'];
                             } else {
                                 $test['data'] = 1;
                             }
                         } catch (PDOException $e) {
                             $test['data'] = 0;
                         }
                     }
                     if ($test['data'] == 2) {
                         $fw['POST.new.db3_prefix'] = $probe[0]['tableprefix'];
                         $fw['POST.new.data.sitename'] = $probe[0]['sitename'];
                     }
                 }
                 // probe for supported charset (MySQL only)
                 if ($fw["POST.new.{$server}.driver"] == "mysql") {
                     try {
                         $dbTest->query("SET NAMES 'UTF8MB4'");
                         $fw["POST.new.{$server}.charset"] = "UTF8MB4";
                     } catch (PDOException $e) {
                         $fw["POST.new.{$server}.charset"] = "UTF8";
                     }
                 }
             } catch (PDOException $e) {
                 echo $server;
                 $test[$server] = 0;
                 $fw["POST.new.error.{$server}"] = $e->getMessage();
                 $fw["POST.new.{$server}.charset"] = "";
             }
         }
     }
     return $test;
 }