Beispiel #1
0
/**
 * Checks a PDO statement for errors and if any exist, the script will exist and log to the error log
 *
 * @param $statement PDOStatement
 */
function check_statement($statement)
{
    $errorInfo = $statement->errorInfo();
    // If the first element is 0, it's good
    if ($errorInfo[0] == 0) {
        return;
    }
    // Some error has occurred, log it and quit
    error_fquit('FQUIT Statement \\"' . $statement->queryString . '" errorInfo() => ' . print_r($errorInfo, true));
}
 /**
  * Get or create a custom column and return the id
  *
  * @param $columnName string
  * @return int
  * @deprecated
  */
 public function getCustomColumnID($columnName, $attemptedToCreate = false)
 {
     global $master_db_handle;
     // Execute  the query
     $statement = get_slave_db_handle()->prepare('SELECT ID FROM CustomColumn WHERE Name = ?');
     $statement->execute(array($columnName));
     // Did we get it?
     if ($row = $statement->fetch()) {
         return $row['ID'];
     }
     if ($attemptedToCreate) {
         error_fquit("Failed to create custom column: {$columnName}");
     }
     // Nope...
     $statement = $master_db_handle->prepare('INSERT INTO CustomColumn (Plugin, Name) VALUES (:Plugin, :Name)');
     $statement->execute(array(':Plugin' => $this->plugin, ':Name' => $columnName));
     return $this->getCustomColumnID($columnName, true);
 }
 /**
  * Get a server by its GUID. If not found, this will create it.
  * @param $guid
  * @param $attemptedToCreate
  */
 public function getOrCreateServer($guid, $attemptedToCreate = false)
 {
     global $master_db_handle;
     // Try to select it first
     $statement = get_slave_db_handle()->prepare('SELECT Server.ID, GUID, ServerVersion, Country, Hits, Created, ServerSoftware, MinecraftVersion, Players, Plugin, ServerPlugin.Version, ServerPlugin.Updated
                                             FROM Server
                                             LEFT OUTER JOIN ServerPlugin ON ServerPlugin.Server = Server.ID
                                             WHERE GUID = :GUID');
     $statement->execute(array(':GUID' => $guid));
     // The server object
     $server = null;
     while ($row = $statement->fetch()) {
         if ($server === null) {
             $server = new Server();
             $server->setID($row['ID']);
             $server->setPlugin($this->id);
             $server->setGUID($row['GUID']);
             $server->setCountry($row['Country']);
             $server->setPlayers($row['Players']);
             $server->setServerVersion($row['ServerVersion']);
             $server->setHits($row['Hits']);
             $server->setCreated($row['Created']);
             $server->setServerSoftware($row['ServerSoftware']);
             $server->setMinecraftVersion($row['MinecraftVersion']);
             $server->setModified(false);
         }
         if ($row['Plugin'] == $this->id) {
             $server->setCurrentVersion($row['Version']);
             $server->setUpdated($row['Updated']);
             $server->setModified(false);
             return $server;
         }
     }
     // Do we need to add the plugin?
     if ($server !== null) {
         $statement = $master_db_handle->prepare('INSERT INTO ServerPlugin (Server, Plugin, Version, Updated) VALUES (:Server, :Plugin, :Version, :Updated)');
         $statement->execute(array(':Server' => $server->getID(), ':Plugin' => $this->id, ':Version' => '', ':Updated' => time()));
         $server->setUpdated(time());
         $server->setModified(false);
         // Return the server object
         return $server;
     }
     // Did we already try to create it?
     if ($attemptedToCreate) {
         error_fquit($this->name . ': Failed to create server for "' . $guid . '"');
     }
     // It doesn't exist so we are going to create it ^^
     $statement = $master_db_handle->prepare('INSERT INTO Server (GUID, Players, Country, ServerVersion, Hits, Created) VALUES(:GUID, :Players, :Country, :ServerVersion, :Hits, :Created)');
     $statement->execute(array(':GUID' => $guid, ':Players' => 0, ':Country' => 'ZZ', ':ServerVersion' => '', ':Hits' => 0, ':Created' => time()));
     // reselect it
     return $this->getOrCreateServer($guid, true);
 }