getConfig(); $this->database['username'] = $cConfigArray['core']['database']['username']; $this->database['password'] = $cConfigArray['core']['database']['password']; $this->database['hostname'] = $cConfigArray['core']['database']['hostname']; $this->database['dbname'] = $cConfigArray['core']['database']['dbname']; $this->db = $this->instDB(); } protected function instDB() {// ConstructorFailed try { // FIXME: Find hidden bug ($Conn is null) $Conn = \ParagonIE\EasyDB\Factory::create( 'mysql:host=' . $this->database['hostname'] . ';dbname=' . $this->database['dbname'], $this->database['username'], $this->database['password'] ); if (is_null($Conn)) { throw new Exception("ERROR! There is no usable connection object."); } } catch (ConstructorFailed $Ex) { Analog::log("ALARM! Database connection failed! Message from Wrapper: " . $Ex->getMessage(), Analog::ALERT); } catch (Exception $ConEx) { Analog::log("ALERT! Unstable DB connection", Analog::ALERT); } finally { Analog::log("Returning DB connection\n" . var_dump($Conn), Analog::DEBUG); return $Conn; } } public function Exists($Table, $IDRowColumnName, $SearchValue) { $exists = $db->cell( "SELECT count(ID) FROM $Table WHERE $IDRowColumnName = ?", $SearhValue ); // Query might not return what we're looking for, an integer. Use vardump if otherwise. return ($exists == 1) ? true : false; } public function adminExists($AdminID) { $this->Exists("Administrators", "ID", $ID); } public function addAdministrator($Username, $Name, $Email, $Password, $KeyID) { $this->db->insert('Administrators', [ 'AdministratorName' => $Name, 'AdministratorUsername' => $Username, 'AdministratorEmail' => $Email, 'AdministratorPassword' => $Password ]); } public function listAdminsByName($AdminUsername) { $Admin = $this->db->row( "SELECT * FROM Administrators WHERE Username = ?", $Username ); } public function addKey($AdminID, $Keyname) { $key = password_hash(openssl_random_pseudo_bytes(32), PASSWORD_BCYPT); $this->db->insert('APIKeys', [ 'AdminID' => $AdminID, 'Keyname' => $Keyname, 'Keytext' => $key ]); return $key; } public function ApiKeyExists($AdminID) { $this->Exists("APIKeys", "AdminID", $AdminID); } public function ApiKeyToAdminId($Key) { $apiKey = $this->db->row( "SELECT * FROM APIKeys WHERE Keytext = ?", $Key ); // Expecting an array. Var dump if else if ($apiKey == null && !is_array($apiKey)) { throw new LogicException("Illegal data from DB: ApiKeyToAdminId"); } } }