/**
  * Get Installed Patches To Be Displayed On Main Page
  * @return array|bool|mixed
  */
 public function getInstalledPatches()
 {
     return Database::plainSQLPDO($this->Connection, 'SELECT * FROM installed_patches', true, true);
 }
 /**
  * Build Initial Tables
  * @return bool
  */
 public function buildInitialTables()
 {
     $ClassMethods = get_class_methods('Core\\Extensions\\Installer');
     foreach ($ClassMethods as $Key => $Value) {
         if (!strstr($Value, 'build') || strstr($Value, 'Initial')) {
             unset($ClassMethods[$Key]);
         }
     }
     $ClassMethods = array_values($ClassMethods);
     try {
         foreach ($ClassMethods as $Method) {
             $this->assignDBManager();
             $InstallationQuery = $this->{$Method}()->stringify();
             Database::plainSQLPDO($this->Connection, 'DROP TABLE IF EXISTS ' . $this->DBManager->getTableName() . ';');
             Database::plainSQLPDO($this->Connection, $InstallationQuery);
         }
     } catch (Exception $e) {
         return false;
     }
     return true;
 }
 /**
  * Execute Plain Parameterized Query
  * @param PDO $PDO
  * @param $Query
  * @param $Parameters
  * @param bool|false $Return
  * @param bool|false $Multiple
  * @return array|mixed
  */
 public static function parameterizedSQLPDO(PDO $PDO, $Query, $Parameters, $Return = false, $Multiple = false)
 {
     $CheckQuery = Database::plainSQLPDO($PDO, 'SELECT * FROM installed_patches WHERE patch_name = "' . $Parameters['patch_name'] . '"', true);
     if ($CheckQuery != false) {
         die('Already Exists');
     } else {
         try {
             foreach ($Parameters as $PKey => $PValue) {
                 $Query = str_replace(':' . $PKey, "'" . $PValue . "'", $Query);
             }
             $Statement = $PDO->prepare($Query);
             $Statement->execute();
             if ($Return == true) {
                 if ($Multiple == false) {
                     return $Statement->fetch(PDO::FETCH_ASSOC);
                 } else {
                     return $Statement->fetchAll(PDO::FETCH_ASSOC);
                 }
             }
         } catch (PDOException $e) {
             $Message = Database::PDOExceptionMessage($e);
             die($Message);
         }
     }
 }