. */ /* */ /*************************************************************************************/ namespace Thelia\Install; /** * Class Database * @package Thelia\Install * @author Manuel Raynaud */ class Database { public $connection; public function __construct(\PDO $connection) { $this->connection = $connection; } /** * Insert all sql needed in database * Default insert /install/thelia.sql and /install/insert.sql * * @param string $dbName Database name * @param array $extraSqlFiles SQL Files uri to insert */ public function insertSql($dbName = null, array $extraSqlFiles = null) { if ($dbName) { $this->connection->query(sprintf("use %s", $dbName)); } $sql = array(); if (null === $extraSqlFiles) { $sql = array_merge( $sql, $this->prepareSql(file_get_contents(THELIA_ROOT . '/install/thelia.sql')), $this->prepareSql(file_get_contents(THELIA_ROOT . '/install/insert.sql')) ); } else { foreach ($extraSqlFiles as $fileToInsert) { $sql = array_merge( $sql, $this->prepareSql(file_get_contents($fileToInsert)) ); } } $size = count($sql); for ($i = 0; $i < $size; $i ++) { if (!empty($sql[$i])) { $this->connection->query($sql[$i]); } } } /** * Separate each sql instruction in an array * * @param $sql * @return array */ protected function prepareSql($sql) { $sql = str_replace(";',", "-CODE-", $sql); $sql = trim($sql); $query = array(); $tab = explode(";\n", $sql); $size = count($tab); for ($i=0; $i<$size; $i++) { $queryTemp = str_replace("-CODE-", ";',", $tab[$i]); $queryTemp = str_replace("|", ";", $queryTemp); $query[] = $queryTemp; } return $query; } /** * create database if not exists * * @param $dbName */ public function createDatabase($dbName) { $this->connection->exec( sprintf( "CREATE DATABASE IF NOT EXISTS %s CHARACTER SET utf8", $dbName ) ); } }