diff options
Diffstat (limited to 'vendor/fguillot/picodb/lib/PicoDb/Driver/Mysql.php')
-rw-r--r-- | vendor/fguillot/picodb/lib/PicoDb/Driver/Mysql.php | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/vendor/fguillot/picodb/lib/PicoDb/Driver/Mysql.php b/vendor/fguillot/picodb/lib/PicoDb/Driver/Mysql.php deleted file mode 100644 index 17f44057..00000000 --- a/vendor/fguillot/picodb/lib/PicoDb/Driver/Mysql.php +++ /dev/null @@ -1,264 +0,0 @@ -<?php - -namespace PicoDb\Driver; - -use PDO; -use PDOException; - -/** - * Mysql Driver - * - * @package PicoDb\Driver - * @author Frederic Guillot - */ -class Mysql extends Base -{ - /** - * List of required settings options - * - * @access protected - * @var array - */ - protected $requiredAttributes = array( - 'hostname', - 'username', - 'password', - 'database', - ); - - /** - * Table to store the schema version - * - * @access private - * @var array - */ - private $schemaTable = 'schema_version'; - - /** - * Create a new PDO connection - * - * @access public - * @param array $settings - */ - public function createConnection(array $settings) - { - $this->pdo = new PDO( - $this->buildDsn($settings), - $settings['username'], - $settings['password'], - $this->buildOptions($settings) - ); - - if (isset($settings['schema_table'])) { - $this->schemaTable = $settings['schema_table']; - } - } - - /** - * Build connection DSN - * - * @access protected - * @param array $settings - * @return string - */ - protected function buildDsn(array $settings) - { - $charset = empty($settings['charset']) ? 'utf8' : $settings['charset']; - $dsn = 'mysql:host='.$settings['hostname'].';dbname='.$settings['database'].';charset='.$charset; - - if (! empty($settings['port'])) { - $dsn .= ';port='.$settings['port']; - } - - return $dsn; - } - - /** - * Build connection options - * - * @access protected - * @param array $settings - * @return array - */ - protected function buildOptions(array $settings) - { - $options = array( - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET sql_mode = STRICT_ALL_TABLES', - ); - - if (! empty($settings['ssl_key'])) { - $options[PDO::MYSQL_ATTR_SSL_KEY] = $settings['ssl_key']; - } - - if (! empty($settings['ssl_cert'])) { - $options[PDO::MYSQL_ATTR_SSL_CERT] = $settings['ssl_cert']; - } - - if (! empty($settings['ssl_ca'])) { - $options[PDO::MYSQL_ATTR_SSL_CA] = $settings['ssl_ca']; - } - - if (! empty($settings['persistent'])) { - $options[PDO::ATTR_PERSISTENT] = $settings['persistent']; - } - - if (! empty($settings['timeout'])) { - $options[PDO::ATTR_TIMEOUT] = $settings['timeout']; - } - - if (isset($settings['verify_server_cert'])) { - $options[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] = $settings['verify_server_cert']; - } - - return $options; - } - - /** - * Enable foreign keys - * - * @access public - */ - public function enableForeignKeys() - { - $this->pdo->exec('SET FOREIGN_KEY_CHECKS=1'); - } - - /** - * Disable foreign keys - * - * @access public - */ - public function disableForeignKeys() - { - $this->pdo->exec('SET FOREIGN_KEY_CHECKS=0'); - } - - /** - * Return true if the error code is a duplicate key - * - * @access public - * @param integer $code - * @return boolean - */ - public function isDuplicateKeyError($code) - { - return $code == 23000; - } - - /** - * Escape identifier - * - * @access public - * @param string $identifier - * @return string - */ - public function escape($identifier) - { - return '`'.$identifier.'`'; - } - - /** - * Get non standard operator - * - * @access public - * @param string $operator - * @return string - */ - public function getOperator($operator) - { - if ($operator === 'LIKE') { - return 'LIKE BINARY'; - } - else if ($operator === 'ILIKE') { - return 'LIKE'; - } - - return ''; - } - - /** - * Get last inserted id - * - * @access public - * @return integer - */ - public function getLastId() - { - return $this->pdo->lastInsertId(); - } - - /** - * Get current schema version - * - * @access public - * @return integer - */ - public function getSchemaVersion() - { - $this->pdo->exec("CREATE TABLE IF NOT EXISTS `".$this->schemaTable."` (`version` INT DEFAULT '0') ENGINE=InnoDB CHARSET=utf8"); - - $rq = $this->pdo->prepare('SELECT `version` FROM `'.$this->schemaTable.'`'); - $rq->execute(); - $result = $rq->fetchColumn(); - - if ($result !== false) { - return (int) $result; - } - else { - $this->pdo->exec('INSERT INTO `'.$this->schemaTable.'` VALUES(0)'); - } - - return 0; - } - - /** - * Set current schema version - * - * @access public - * @param integer $version - */ - public function setSchemaVersion($version) - { - $rq = $this->pdo->prepare('UPDATE `'.$this->schemaTable.'` SET `version`=?'); - $rq->execute(array($version)); - } - - /** - * Upsert for a key/value variable - * - * @access public - * @param string $table - * @param string $keyColumn - * @param string $valueColumn - * @param array $dictionary - * @return bool False on failure - */ - public function upsert($table, $keyColumn, $valueColumn, array $dictionary) - { - try { - - $sql = sprintf( - 'REPLACE INTO %s (%s, %s) VALUES %s', - $this->escape($table), - $this->escape($keyColumn), - $this->escape($valueColumn), - implode(', ', array_fill(0, count($dictionary), '(?, ?)')) - ); - - $values = array(); - - foreach ($dictionary as $key => $value) { - $values[] = $key; - $values[] = $value; - } - - $rq = $this->pdo->prepare($sql); - $rq->execute($values); - - return true; - } - catch (PDOException $e) { - return false; - } - } -} |