diff --git a/README.md b/README.md
index d19f9c48..700f5915 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@ Installing
----------
You will need PHP 5.6+ (with OpenSSL support and enabled functions: `exec()`, `shell_exec()` and `proc_open()`)
-with web-server (Nginx or Apache2), MySQL (or MariaDB) database and Composer.
+with web-server (Nginx or Apache2), DB (MySQL/MariaDB or PostgreSQL) database and Composer.
* Go to the directory in which you want to install PHP Censor, for example: `/var/www`;
@@ -83,7 +83,7 @@ with web-server (Nginx or Apache2), MySQL (or MariaDB) database and Composer.
* Install dependencies using Composer: `composer install`;
-* Create empty MySQL database for application;
+* Create empty database for application;
* Install Beanstalkd queue (`aptitude install beanstalkd`);
@@ -135,7 +135,7 @@ cd /path/to/php-censor
For Phar plugin tests set 'phar.readonly' setting to Off (0) in `php.ini` config. Otherwise tests will be skipped.
-For database B8Framework tests create empty 'b8_test' MySQL database on 'localhost' with user/password: `root/root`.
+For database B8Framework tests create empty 'b8_test' database on 'localhost' with user/password: `root/root`.
Otherwise database tests will be skipped.
Documentation
diff --git a/app/config.example.yml b/app/config.example.yml
index c7c05952..48e920eb 100644
--- a/app/config.example.yml
+++ b/app/config.example.yml
@@ -1,9 +1,13 @@
b8:
database:
servers:
- read: localhost
- write: localhost
- port: 3306
+ read:
+ - host: localhost
+ port: 3306
+ write:
+ - host: localhost
+ port: 3306
+ type: mysql
name: php-censor-db
username: php-censor-user
password: php-censor-password
diff --git a/composer.json b/composer.json
index 1b561125..5d40f176 100644
--- a/composer.json
+++ b/composer.json
@@ -39,7 +39,6 @@
"require": {
"php": ">=5.6.0",
"ext-pdo": "*",
- "ext-pdo_mysql": "*",
"swiftmailer/swiftmailer": "5.4.*",
"symfony/yaml": "2.8.*",
diff --git a/docs/en/config.md b/docs/en/config.md
index ca6b834f..29027ecd 100644
--- a/docs/en/config.md
+++ b/docs/en/config.md
@@ -53,7 +53,7 @@ As mentioned earlier, PHP Censor is powered by plugins, there are several phases
* `setup` - This phase is designed to initialise the build procedure.
* `test` - The tests that should be run during the build. Plugins run during this phase will contribute to the success or failure of the build.
-* `complete` - Always called when the `test` phase completes, regardless of success or failure. **Note** that is you do any mysql stuff here, you will need to add the mysql credentials to this section as well, as it runs in a separate instance.
+* `complete` - Always called when the `test` phase completes, regardless of success or failure. **Note** that is you do any DB stuff here, you will need to add the DB credentials to this section as well, as it runs in a separate instance.
* `success` - Called upon success of the `test` phase.
* `failure` - Called upon failure of the `test` phase.
* `fixed` - Called upon success of the `test` phase if the previous build of the branch was a success.
diff --git a/docs/en/configuring.md b/docs/en/configuring.md
index b72655c2..62cb30b0 100644
--- a/docs/en/configuring.md
+++ b/docs/en/configuring.md
@@ -16,5 +16,5 @@ php-censor:
default_user_id: 1
```
-where you can get the `default_user_id by` logging into the mysql database and selecting your user ID from the `users` table in
+where you can get the `default_user_id` by logging into the database and selecting your user ID from the `users` table in
the PHP Censor database.
diff --git a/docs/en/installing.md b/docs/en/installing.md
index 70e85675..90011f59 100644
--- a/docs/en/installing.md
+++ b/docs/en/installing.md
@@ -8,7 +8,7 @@ What you'll need
* A web server (Nginx or Apache)
* [Composer](https://getcomposer.org/download/)
* [Git](http://git-scm.com/downloads)
-* A MySQL server to connect to.
+* A DB server to connect to (MySQL/MariaDB or PostgreSQL).
* The following functions need to be enabled: `exec()`, `shell_exec()` and `proc_open()` in php.ini.
* PHP must have OpenSSL support enabled.
diff --git a/docs/en/workers/worker.md b/docs/en/workers/worker.md
index 4b5971d1..e47eba95 100644
--- a/docs/en/workers/worker.md
+++ b/docs/en/workers/worker.md
@@ -6,7 +6,7 @@ Unless already running a build, the worker will pick up and start running new bu
creation.
The worker is the recommended way to run PHP Censor builds. You can run several workers all watching one queue,
-allowing jobs to be run simultaneously without the overhead of polling your MySQL database.
+allowing jobs to be run simultaneously without the overhead of polling your database.
If you can't run Beanstalkd on your server, or would prefer to run builds on a regular schedule, you should consider
using the [running builds via Cron](workers/cron.md).
diff --git a/src/B8Framework/Database.php b/src/B8Framework/Database.php
index 07f5cd9a..f11b61b8 100644
--- a/src/B8Framework/Database.php
+++ b/src/B8Framework/Database.php
@@ -17,9 +17,11 @@ class Database extends \PDO
self::$servers['read'] = $settings['servers']['read'];
self::$servers['write'] = $settings['servers']['write'];
+ self::$details['type'] = $settings['type'];
self::$details['db'] = $settings['name'];
self::$details['user'] = $settings['username'];
self::$details['pass'] = $settings['password'];
+
self::$initialised = true;
}
@@ -42,14 +44,9 @@ class Database extends \PDO
}
if (is_null(self::$connections[$type])) {
- if (is_array(self::$servers[$type])) {
- // Shuffle, so we pick a random server:
- $servers = self::$servers[$type];
- shuffle($servers);
- } else {
- // Only one server was specified
- $servers = [self::$servers[$type]];
- }
+ // Shuffle, so we pick a random server:
+ $servers = self::$servers[$type];
+ shuffle($servers);
$connection = null;
@@ -58,14 +55,16 @@ class Database extends \PDO
// Pull the next server:
$server = array_shift($servers);
- if (stristr($server, ':')) {
- list($host, $port) = explode(':', $server);
- $server = $host . ';port=' . $port;
+ $dns = self::$details['type'] . ':host=' . $server['host'];
+ if (isset($server['port'])) {
+ $dns .= ';port=' . $server['port'];
}
+ $dns .= ';dbname=' . self::$details['db'];
// Try to connect:
try {
- $connection = new self('mysql:host=' . $server . ';dbname=' . self::$details['db'],
+ $connection = new self(
+ $dns,
self::$details['user'],
self::$details['pass'],
[
@@ -73,7 +72,8 @@ class Database extends \PDO
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'',
- ]);
+ ]
+ );
} catch (\PDOException $ex) {
$connection = false;
}
@@ -107,4 +107,18 @@ class Database extends \PDO
self::$lastUsed = ['read' => null, 'write' => null];
self::$initialised = false;
}
+
+ public function prepareCommon($statement, array $driver_options = [])
+ {
+ $quote = '';
+ if ('mysql' === self::$details['type']) {
+ $quote = '`';
+ } elseif ('pgsql' === self::$details['type']) {
+ $quote = '"';
+ }
+
+ $statement = preg_replace('/{{(.*?)}}/', ($quote . '\1' . $quote), $statement);
+
+ return parent::prepare($statement, $driver_options);
+ }
}
diff --git a/src/B8Framework/Store.php b/src/B8Framework/Store.php
index f2542645..f14ed532 100644
--- a/src/B8Framework/Store.php
+++ b/src/B8Framework/Store.php
@@ -27,8 +27,8 @@ abstract class Store
$manualWheres = [],
$whereType = 'AND'
) {
- $query = 'SELECT ' . $this->tableName . '.* FROM ' . $this->tableName;
- $countQuery = 'SELECT COUNT(*) AS cnt FROM ' . $this->tableName;
+ $query = 'SELECT * FROM {{' . $this->tableName . '}}';
+ $countQuery = 'SELECT COUNT(*) AS {{count}} FROM {{' . $this->tableName . '}}';
$wheres = [];
$params = [];
@@ -70,7 +70,7 @@ abstract class Store
}
} else {
$params[] = $item;
- $ors[] = $this->fieldCheck($key) . ' ' . $value['operator'] . ' ?';
+ $ors[] = $key . ' ' . $value['operator'] . ' ?';
}
}
$wheres[] = '(' . implode(' OR ', $ors) . ')';
@@ -98,16 +98,15 @@ abstract class Store
}
}
} else {
- $wheres[] = $key . ' IN (' . implode(', ',
- array_map([Database::getConnection('read'), 'quote'], $value)) . ')';
+ $wheres[] = $key . ' IN (' . implode(', ', array_map([Database::getConnection('read'), 'quote'], $value)) . ')';
}
}
}
if (count($joins)) {
foreach ($joins as $table => $join) {
- $query .= ' LEFT JOIN ' . $table . ' ' . $join['alias'] . ' ON ' . $join['on'] . ' ';
- $countQuery .= ' LEFT JOIN ' . $table . ' ' . $join['alias'] . ' ON ' . $join['on'] . ' ';
+ $query .= ' LEFT JOIN {{' . $table . '}} AS ' . $join['alias'] . ' ON ' . $join['on'] . ' ';
+ $countQuery .= ' LEFT JOIN {{' . $table . '}} AS ' . $join['alias'] . ' ON ' . $join['on'] . ' ';
}
}
@@ -173,16 +172,16 @@ abstract class Store
}
try {
- $stmt = Database::getConnection('read')->prepare($countQuery);
+ $stmt = Database::getConnection('read')->prepareCommon($countQuery);
$stmt->execute($params);
$res = $stmt->fetch(\PDO::FETCH_ASSOC);
- $count = (int)$res['cnt'];
+ $count = (int)$res['count'];
} catch (\PDOException $ex) {
$count = 0;
}
try {
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->execute($params);
$res = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$rtn = [];
@@ -232,8 +231,8 @@ abstract class Store
}
if (count($updates)) {
- $qs = 'UPDATE ' . $this->tableName . ' SET ' . implode(', ', $updates) . ' WHERE ' . $this->primaryKey . ' = :primaryKey';
- $q = Database::getConnection('write')->prepare($qs);
+ $qs = 'UPDATE {{' . $this->tableName . '}} SET ' . implode(', ', $updates) . ' WHERE {{' . $this->primaryKey . '}} = :primaryKey';
+ $q = Database::getConnection('write')->prepareCommon($qs);
foreach ($update_params as $update_param) {
$q->bindValue(':' . $update_param[0], $update_param[1]);
@@ -266,9 +265,9 @@ abstract class Store
}
if (count($cols)) {
- $qs = 'INSERT INTO ' . $this->tableName . ' (' . implode(', ', $cols) . ') VALUES (' . implode(', ',
+ $qs = 'INSERT INTO {{' . $this->tableName . '}} (' . implode(', ', $cols) . ') VALUES (' . implode(', ',
$values) . ')';
- $q = Database::getConnection('write')->prepare($qs);
+ $q = Database::getConnection('write')->prepareCommon($qs);
if ($q->execute($qParams)) {
$id = !empty($data[$this->primaryKey]) ? $data[$this->primaryKey] : Database::getConnection('write')->lastInsertId();
@@ -291,16 +290,13 @@ abstract class Store
$data = $obj->getDataArray();
- $q = Database::getConnection('write')->prepare('DELETE FROM ' . $this->tableName . ' WHERE ' . $this->primaryKey . ' = :primaryKey');
+ $q = Database::getConnection('write')->prepareCommon('DELETE FROM {{' . $this->tableName . '}} WHERE {{' . $this->primaryKey . '}} = :primaryKey');
$q->bindValue(':primaryKey', $data[$this->primaryKey]);
$q->execute();
return true;
}
- /**
- *
- */
protected function fieldCheck($field)
{
if (empty($field)) {
diff --git a/src/PHPCensor/Command/InstallCommand.php b/src/PHPCensor/Command/InstallCommand.php
index 8bbfbbd3..eca0e9d9 100644
--- a/src/PHPCensor/Command/InstallCommand.php
+++ b/src/PHPCensor/Command/InstallCommand.php
@@ -15,6 +15,7 @@ use PDO;
use b8\Config;
use b8\Store\Factory;
use PHPCensor\Helper\Lang;
+use PHPCensor\Model\ProjectGroup;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputInterface;
@@ -43,6 +44,7 @@ class InstallCommand extends Command
$this
->setName('php-censor:install')
->addOption('url', null, InputOption::VALUE_OPTIONAL, Lang::get('installation_url'))
+ ->addOption('db-type', null, InputOption::VALUE_OPTIONAL, Lang::get('db_host'))
->addOption('db-host', null, InputOption::VALUE_OPTIONAL, Lang::get('db_host'))
->addOption('db-port', null, InputOption::VALUE_OPTIONAL, Lang::get('db_port'))
->addOption('db-name', null, InputOption::VALUE_OPTIONAL, Lang::get('db_name'))
@@ -82,7 +84,7 @@ class InstallCommand extends Command
$output->writeln('');
// ----
- // Get MySQL connection information and verify that it works:
+ // Get DB connection information and verify that it works:
// ----
$connectionVerified = false;
@@ -104,8 +106,11 @@ class InstallCommand extends Command
$this->writeConfigFile($conf);
$this->setupDatabase($output);
+
$admin = $this->getAdminInformation($input, $output);
$this->createAdminUser($admin, $output);
+
+ $this->createDefaultGroup($output);
}
/**
@@ -127,7 +132,7 @@ class InstallCommand extends Command
}
// Check required extensions are present:
- $requiredExtensions = ['PDO', 'pdo_mysql'];
+ $requiredExtensions = ['PDO'];
foreach ($requiredExtensions as $extension) {
if (!extension_loaded($extension)) {
@@ -300,6 +305,11 @@ class InstallCommand extends Command
/** @var $helper QuestionHelper */
$helper = $this->getHelperSet()->get('question');
+ if (!$dbType = $input->getOption('db-type')) {
+ $questionType = new Question(Lang::get('enter_db_type'), 'mysql');
+ $dbType = $helper->ask($input, $output, $questionType);
+ }
+
if (!$dbHost = $input->getOption('db-host')) {
$questionHost = new Question(Lang::get('enter_db_host'), 'localhost');
$dbHost = $helper->ask($input, $output, $questionHost);
@@ -327,18 +337,24 @@ class InstallCommand extends Command
$dbPass = $helper->ask($input, $output, $questionPass);
}
- $db['servers']['read'] = $dbHost;
- $db['servers']['write'] = $dbHost;
- $db['port'] = $dbPort;
- $db['name'] = $dbName;
- $db['username'] = $dbUser;
- $db['password'] = $dbPass;
+ $db['servers']['read'] = [[
+ 'host' => $dbHost,
+ 'port' => $dbPort,
+ ]];
+ $db['servers']['write'] = [[
+ 'host' => $dbHost,
+ 'port' => $dbPort,
+ ]];
+ $db['type'] = $dbType;
+ $db['name'] = $dbName;
+ $db['username'] = $dbUser;
+ $db['password'] = $dbPass;
return $db;
}
/**
- * Try and connect to MySQL using the details provided.
+ * Try and connect to DB using the details provided.
* @param array $db
* @param OutputInterface $output
* @return bool
@@ -347,7 +363,7 @@ class InstallCommand extends Command
{
try {
$pdo = new PDO(
- 'mysql:host='.$db['servers']['write'].';port='.$db['port'].'dbname='.$db['name'],
+ $db['type'] . ':host=' . $db['servers']['write'][0]['host'] . ';port=' . $db['servers']['write'][0]['host'] . 'dbname=' . $db['name'],
$db['username'],
$db['password'],
[
@@ -413,6 +429,24 @@ class InstallCommand extends Command
}
}
+ /**
+ * @param OutputInterface $output
+ */
+ protected function createDefaultGroup($output)
+ {
+ try {
+ $group = new ProjectGroup();
+ $group->setTitle('Projects');
+
+ Factory::getStore('ProjectGroup')->save($group);
+
+ $output->writeln(''.Lang::get('default_group_created').'');
+ } catch (\Exception $ex) {
+ $output->writeln(''.Lang::get('default_group_failed_to_create').'');
+ $output->writeln('' . $ex->getMessage() . '');
+ }
+ }
+
protected function reloadConfig()
{
$config = Config::getInstance();
diff --git a/src/PHPCensor/Console/Application.php b/src/PHPCensor/Console/Application.php
index 5df1c378..9923e16f 100644
--- a/src/PHPCensor/Console/Application.php
+++ b/src/PHPCensor/Console/Application.php
@@ -33,14 +33,18 @@ class Application extends BaseApplication
'default_migration_table' => 'migration',
'default_database' => 'php-censor',
'php-censor' => [
- 'adapter' => 'mysql',
- 'host' => $databaseSettings['servers']['write'],
+ 'adapter' => $databaseSettings['type'],
+ 'host' => $databaseSettings['servers']['write'][0]['host'],
'name' => $databaseSettings['name'],
'user' => $databaseSettings['username'],
'pass' => $databaseSettings['password'],
],
],
];
+
+ if (!empty($databaseSettings['port'])) {
+ $phinxSettings['environments']['php-censor']['port'] = (integer)$databaseSettings['port'];
+ }
$phinxConfig = new PhinxConfig($phinxSettings);
diff --git a/src/PHPCensor/Languages/lang.da.php b/src/PHPCensor/Languages/lang.da.php
index c370da10..02f02878 100644
--- a/src/PHPCensor/Languages/lang.da.php
+++ b/src/PHPCensor/Languages/lang.da.php
@@ -309,11 +309,11 @@ Kontrollér venligst nedenstående fejl før du fortsætter.',
'enter_password' => 'Administrator-adgangskode: ',
'enter_app_url' => 'Din PHP Censor URL (eksempelvis "http://php-censor.local"): ',
- 'enter_db_host' => 'Indtast dit MySQL-hostnavn [localhost]: ',
- 'enter_db_name' => 'Indtast dit MySQL database-navn [php-censor-db]: ',
- 'enter_db_user' => 'Indtast dit MySQL-brugernavn [php-censor-user]: ',
- 'enter_db_pass' => 'Indtast dit MySQL-password: ',
- 'could_not_connect' => 'PHP Censor kunne ikke forbinde til MySQL med de angivning oplysninger. Forsøg igen.',
+ 'enter_db_host' => 'Indtast dit DB-hostnavn [localhost]: ',
+ 'enter_db_name' => 'Indtast dit DB database-navn [php-censor-db]: ',
+ 'enter_db_user' => 'Indtast dit DB-brugernavn [php-censor-user]: ',
+ 'enter_db_pass' => 'Indtast dit DB-password: ',
+ 'could_not_connect' => 'PHP Censor kunne ikke forbinde til DB med de angivning oplysninger. Forsøg igen.',
'setting_up_db' => 'Indlæser database...',
'user_created' => 'Brugerkonto oprettet!',
'failed_to_create' => 'PHP Censor kunne ikke oprette din administrator-konto.',
diff --git a/src/PHPCensor/Languages/lang.de.php b/src/PHPCensor/Languages/lang.de.php
index 57676a71..bbbae40c 100644
--- a/src/PHPCensor/Languages/lang.de.php
+++ b/src/PHPCensor/Languages/lang.de.php
@@ -332,11 +332,11 @@ generiert. Um es zu verwenden, fügen Sie einfach den folgenden Public Key im Ab
'enter_password' => 'Passwort des Administrators: ',
'enter_app_url' => 'Ihre PHP Censor-URL (z.B. "http://php-censor.local"): ',
- 'enter_db_host' => 'Bitte geben Sie Ihren MySQL-Host ein [localhost]: ',
- 'enter_db_name' => 'Bitte geben Sie Ihren MySQL-Namen ein [php-censor-db]: ',
- 'enter_db_user' => 'Bitte geben Sie Ihren MySQL-Benutzernamen ein [php-censor-user]: ',
- 'enter_db_pass' => 'Bitte geben Sie Ihr MySQL-Passwort ein: ',
- 'could_not_connect' => 'PHP Censor konnte wegen folgender Details nicht mit MySQL verbinden. Bitte versuchen Sie es erneut.',
+ 'enter_db_host' => 'Bitte geben Sie Ihren DB-Host ein [localhost]: ',
+ 'enter_db_name' => 'Bitte geben Sie Ihren DB-Namen ein [php-censor-db]: ',
+ 'enter_db_user' => 'Bitte geben Sie Ihren DB-Benutzernamen ein [php-censor-user]: ',
+ 'enter_db_pass' => 'Bitte geben Sie Ihr DB-Passwort ein: ',
+ 'could_not_connect' => 'PHP Censor konnte wegen folgender Details nicht mit DB verbinden. Bitte versuchen Sie es erneut.',
'setting_up_db' => 'Ihre Datenbank wird aufgesetzt... ',
'user_created' => 'Benutzerkonto wurde erstellt!',
'failed_to_create' => 'PHP Censor konnte Ihr Administratorenkonto nicht erstellen.',
diff --git a/src/PHPCensor/Languages/lang.el.php b/src/PHPCensor/Languages/lang.el.php
index c6a911cd..7f143d17 100644
--- a/src/PHPCensor/Languages/lang.el.php
+++ b/src/PHPCensor/Languages/lang.el.php
@@ -311,11 +311,11 @@ Services του Bitbucket αποθετηρίου σας.',
'enter_password' => 'Κωδικός πρόσβασης διαχειριστή: ',
'enter_app_url' => 'Ο URL σύνδεσμος σας για το PHP Censor ("http://php-censor.local" για παράδειγμα): ',
- 'enter_db_host' => 'Παρακαλώ εισάγετε τον MySQL οικοδεσπότη σας [localhost]: ',
- 'enter_db_name' => 'Παρακαλώ εισάγετε το όνομα της MySQL βάσης δεδομένων σας [php-censor-db]: ',
- 'enter_db_user' => 'Παρακαλώ εισάγετε το όνομα χρήστη της MySQL σας [php-censor-user]: ',
- 'enter_db_pass' => 'Παρακαλώ εισάγετε τον κωδικό χρήστη της MySQL σας: ',
- 'could_not_connect' => 'Το PHP Censor δεν μπόρεσε να συνδεθεί με την MySQL με τα στοχεία που δώσατε. Παρακαλώ δοκιμάστε ξανά.',
+ 'enter_db_host' => 'Παρακαλώ εισάγετε τον DB οικοδεσπότη σας [localhost]: ',
+ 'enter_db_name' => 'Παρακαλώ εισάγετε το όνομα της DB βάσης δεδομένων σας [php-censor-db]: ',
+ 'enter_db_user' => 'Παρακαλώ εισάγετε το όνομα χρήστη της DB σας [php-censor-user]: ',
+ 'enter_db_pass' => 'Παρακαλώ εισάγετε τον κωδικό χρήστη της DB σας: ',
+ 'could_not_connect' => 'Το PHP Censor δεν μπόρεσε να συνδεθεί με την DB με τα στοχεία που δώσατε. Παρακαλώ δοκιμάστε ξανά.',
'setting_up_db' => 'Γίνεται ρύθμιση της βάσης δεδομένων σας ...',
'user_created' => 'Λογαριασμός χρήστη δημιουργήθηκε!',
'failed_to_create' => 'Το PHP Censor απέτυχε να δημιουργήσει το λογαριασμό διαχειριστή σας.',
diff --git a/src/PHPCensor/Languages/lang.en.php b/src/PHPCensor/Languages/lang.en.php
index 1f9a6f0c..b4051200 100644
--- a/src/PHPCensor/Languages/lang.en.php
+++ b/src/PHPCensor/Languages/lang.en.php
@@ -362,12 +362,12 @@ PHP Censor',
'enter_password' => 'Admin Password: ',
'enter_app_url' => 'Your PHP Censor URL ("http://php-censor.local" for example): ',
- 'enter_db_host' => 'Please enter your MySQL host [localhost]: ',
- 'enter_db_port' => 'Please enter your MySQL port [3306]: ',
- 'enter_db_name' => 'Please enter your MySQL database name [php-censor-db]: ',
- 'enter_db_user' => 'Please enter your MySQL username [php-censor-user]: ',
- 'enter_db_pass' => 'Please enter your MySQL password: ',
- 'could_not_connect' => 'PHP Censor could not connect to MySQL with the details provided. Please try again.',
+ 'enter_db_host' => 'Please enter your DB host [localhost]: ',
+ 'enter_db_port' => 'Please enter your DB port [3306]: ',
+ 'enter_db_name' => 'Please enter your DB database name [php-censor-db]: ',
+ 'enter_db_user' => 'Please enter your DB username [php-censor-user]: ',
+ 'enter_db_pass' => 'Please enter your DB password: ',
+ 'could_not_connect' => 'PHP Censor could not connect to DB with the details provided. Please try again.',
'setting_up_db' => 'Setting up your database... ',
'user_created' => 'User account created!',
'failed_to_create' => 'PHP Censor failed to create your admin account.',
diff --git a/src/PHPCensor/Languages/lang.es.php b/src/PHPCensor/Languages/lang.es.php
index 6c3d5a80..d496ca41 100644
--- a/src/PHPCensor/Languages/lang.es.php
+++ b/src/PHPCensor/Languages/lang.es.php
@@ -306,11 +306,11 @@ PHP Censor',
'enter_password' => 'Contraseña de Admin:',
'enter_app_url' => 'La URL de PHP Censor ("Por ejemplo: http://php-censor.local"): ',
- 'enter_db_host' => 'Por favor, ingresa el servidor MySQL [localhost]: ',
- 'enter_db_name' => 'Por favor, ingresa el nombre de la base de datos MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Por favor, ingresa el usuario MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Por favor, ingresa la contraseña MySQL: ',
- 'could_not_connect' => 'PHP Censor no pudo conectarse a MySQL con los datos dados. Por favor, intenta nuevamente.',
+ 'enter_db_host' => 'Por favor, ingresa el servidor DB [localhost]: ',
+ 'enter_db_name' => 'Por favor, ingresa el nombre de la base de datos DB [php-censor-db]: ',
+ 'enter_db_user' => 'Por favor, ingresa el usuario DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Por favor, ingresa la contraseña DB: ',
+ 'could_not_connect' => 'PHP Censor no pudo conectarse a DB con los datos dados. Por favor, intenta nuevamente.',
'setting_up_db' => 'Configurando base de datos... ',
'user_created' => '¡Cuenta de usuario creada!',
'failed_to_create' => 'PHP Censor no pudo crear la cuenta de admin.',
diff --git a/src/PHPCensor/Languages/lang.fr.php b/src/PHPCensor/Languages/lang.fr.php
index 85d43b2a..5da55271 100644
--- a/src/PHPCensor/Languages/lang.fr.php
+++ b/src/PHPCensor/Languages/lang.fr.php
@@ -326,11 +326,11 @@ PHP Censor',
'enter_password' => 'Mot de passe de l\'admin: ',
'enter_app_url' => 'Votre URL vers PHP Censor (par exemple "http://php-censor.local"): ',
- 'enter_db_host' => 'Merci d\'entrer le nom d\'hôte MySQL [localhost]: ',
- 'enter_db_name' => 'Merci d\'entrer le nom de la base MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Merci d\'entrer le nom d\'utilisateur MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Merci d\'entrer le mot de passe MySQL: ',
- 'could_not_connect' => 'PHP Censor ne peut pas se connecter à MySQL à partir des informations fournies. Veuillez réessayer..',
+ 'enter_db_host' => 'Merci d\'entrer le nom d\'hôte DB [localhost]: ',
+ 'enter_db_name' => 'Merci d\'entrer le nom de la base DB [php-censor-db]: ',
+ 'enter_db_user' => 'Merci d\'entrer le nom d\'utilisateur DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Merci d\'entrer le mot de passe DB: ',
+ 'could_not_connect' => 'PHP Censor ne peut pas se connecter à DB à partir des informations fournies. Veuillez réessayer..',
'setting_up_db' => 'Paramétrage de la base de données... ',
'user_created' => 'Le compte utilisateur a été créé !',
'failed_to_create' => 'PHP Censor n\'a pas réussi à créer votre compte admin.',
diff --git a/src/PHPCensor/Languages/lang.it.php b/src/PHPCensor/Languages/lang.it.php
index 45e9f137..e7142c3d 100644
--- a/src/PHPCensor/Languages/lang.it.php
+++ b/src/PHPCensor/Languages/lang.it.php
@@ -312,11 +312,11 @@ PHP Censor',
'enter_password' => 'Password dell\'amministratore: ',
'enter_app_url' => 'L\'URL di PHP Censor ("http://php-censor.locale" ad esempio): ',
- 'enter_db_host' => 'Per favore inserisci l\'host MySQL [localhost]: ',
- 'enter_db_name' => 'Per favore inserisci il nome MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Per favore inserisci l\'username MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Per favore inserisci la password MySQL: ',
- 'could_not_connect' => 'PHP Censor non può connettersi a MySQL con le informazioni fornite. Per favore prova ancora.',
+ 'enter_db_host' => 'Per favore inserisci l\'host DB [localhost]: ',
+ 'enter_db_name' => 'Per favore inserisci il nome DB [php-censor-db]: ',
+ 'enter_db_user' => 'Per favore inserisci l\'username DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Per favore inserisci la password DB: ',
+ 'could_not_connect' => 'PHP Censor non può connettersi a DB con le informazioni fornite. Per favore prova ancora.',
'setting_up_db' => 'Configurzione del tuo database... ',
'user_created' => 'Account utente creato!',
'failed_to_create' => 'PHP Censor non è riuscito a creare il tuo account amministrativo.',
diff --git a/src/PHPCensor/Languages/lang.nl.php b/src/PHPCensor/Languages/lang.nl.php
index 046f67c3..7c326a32 100644
--- a/src/PHPCensor/Languages/lang.nl.php
+++ b/src/PHPCensor/Languages/lang.nl.php
@@ -311,11 +311,11 @@ Gelieve de fouten na te kijken vooraleer verder te gaan.',
'enter_password' => 'Administrator wachtwoord: ',
'enter_app_url' => 'Je PHP Censor URL (bijvoorbeeld "http://php-censor.local"): ',
- 'enter_db_host' => 'Vul je MySQL host in [localhost]: ',
- 'enter_db_name' => 'Vul je MySQL databasenaam in [php-censor-db]: ',
- 'enter_db_user' => 'Vul je MySQL gebruikersnaam in [php-censor-user]: ',
- 'enter_db_pass' => 'Vul je MySQL watchtwoord in: ',
- 'could_not_connect' => 'PHP Censor kon met deze gegevens geen verbinding maken met MySQL. Gelieve opnieuw te proberen.',
+ 'enter_db_host' => 'Vul je DB host in [localhost]: ',
+ 'enter_db_name' => 'Vul je DB databasenaam in [php-censor-db]: ',
+ 'enter_db_user' => 'Vul je DB gebruikersnaam in [php-censor-user]: ',
+ 'enter_db_pass' => 'Vul je DB watchtwoord in: ',
+ 'could_not_connect' => 'PHP Censor kon met deze gegevens geen verbinding maken met DB. Gelieve opnieuw te proberen.',
'setting_up_db' => 'Database wordt aangemaakt...',
'user_created' => 'Gebruikersprofiel aangemaakt!',
'failed_to_create' => 'PHP Censor kon je administratorprofiel niet aanmaken.',
diff --git a/src/PHPCensor/Languages/lang.pl.php b/src/PHPCensor/Languages/lang.pl.php
index 8ba280a3..3de94599 100644
--- a/src/PHPCensor/Languages/lang.pl.php
+++ b/src/PHPCensor/Languages/lang.pl.php
@@ -312,11 +312,11 @@ Przejrzyj powyższą listę błędów przed kontynuowaniem.',
'enter_password' => 'Hasło Admina: ',
'enter_app_url' => 'URL PHP Censor (na przykład "http://php-censor.local"): ',
- 'enter_db_host' => 'Wpisz hosta MySQL [host lokalny]: ',
- 'enter_db_name' => 'Wpisz nazwę bazy danych MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Wpisz nazwę użytkownika MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Wpisz hasło MySQL: ',
- 'could_not_connect' => 'Z podanymi ustawieniami PHP Censor nie udało się połączyć z MySQL. Spróbuj ponownie.',
+ 'enter_db_host' => 'Wpisz hosta DB [host lokalny]: ',
+ 'enter_db_name' => 'Wpisz nazwę bazy danych DB [php-censor-db]: ',
+ 'enter_db_user' => 'Wpisz nazwę użytkownika DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Wpisz hasło DB: ',
+ 'could_not_connect' => 'Z podanymi ustawieniami PHP Censor nie udało się połączyć z DB. Spróbuj ponownie.',
'setting_up_db' => 'Ustawianie Twojej bazy danych...',
'user_created' => 'Utworzono konto użytkownika!',
'failed_to_create' => 'PHP Censor nie udało się założyc Twojego konta administratora.',
diff --git a/src/PHPCensor/Languages/lang.pt-br.php b/src/PHPCensor/Languages/lang.pt-br.php
index 33551776..0606c350 100644
--- a/src/PHPCensor/Languages/lang.pt-br.php
+++ b/src/PHPCensor/Languages/lang.pt-br.php
@@ -333,11 +333,11 @@ PHP Censor',
'enter_password' => 'Admin Password: ',
'enter_app_url' => 'Your PHP Censor URL ("http://php-censor.local" for example): ',
- 'enter_db_host' => 'Please enter your MySQL host [localhost]: ',
- 'enter_db_name' => 'Please enter your MySQL database name [php-censor-db]: ',
- 'enter_db_user' => 'Please enter your MySQL username [php-censor-user]: ',
- 'enter_db_pass' => 'Please enter your MySQL password: ',
- 'could_not_connect' => 'PHP Censor could not connect to MySQL with the details provided. Please try again.',
+ 'enter_db_host' => 'Please enter your DB host [localhost]: ',
+ 'enter_db_name' => 'Please enter your DB database name [php-censor-db]: ',
+ 'enter_db_user' => 'Please enter your DB username [php-censor-user]: ',
+ 'enter_db_pass' => 'Please enter your DB password: ',
+ 'could_not_connect' => 'PHP Censor could not connect to DB with the details provided. Please try again.',
'setting_up_db' => 'Setting up your database... ',
'user_created' => 'User account created!',
'failed_to_create' => 'PHP Censor failed to create your admin account.',
diff --git a/src/PHPCensor/Languages/lang.ru.php b/src/PHPCensor/Languages/lang.ru.php
index 0c7c7417..eed19ca3 100644
--- a/src/PHPCensor/Languages/lang.ru.php
+++ b/src/PHPCensor/Languages/lang.ru.php
@@ -351,12 +351,12 @@ PHP Censor',
'enter_password' => 'Пароль администратора: ',
'enter_app_url' => 'URL-адрес вашего PHP Censor (например: "http://php-censor.local"): ',
- 'enter_db_host' => 'Пожалуйста, введите хост MySQL [localhost]: ',
- 'enter_db_port' => 'Пожалуйста, введите порт MySQL [3306]: ',
- 'enter_db_name' => 'Пожалуйста, введите имя базы данных MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Пожалуйста, введите пользователя MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Пожалуйста, введите пароль MySQL: ',
- 'could_not_connect' => 'PHP Censor не может подключится к MySQL с переданными параметрами. Пожалуйста, попробуйте еще раз.',
+ 'enter_db_host' => 'Пожалуйста, введите хост DB [localhost]: ',
+ 'enter_db_port' => 'Пожалуйста, введите порт DB [3306]: ',
+ 'enter_db_name' => 'Пожалуйста, введите имя базы данных DB [php-censor-db]: ',
+ 'enter_db_user' => 'Пожалуйста, введите пользователя DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Пожалуйста, введите пароль DB: ',
+ 'could_not_connect' => 'PHP Censor не может подключится к DB с переданными параметрами. Пожалуйста, попробуйте еще раз.',
'setting_up_db' => 'Установка базы данных... ',
'user_created' => 'Аккаунт пользователя создан!',
'failed_to_create' => 'PHP Censor не удалось создать аккаунт администратора.',
diff --git a/src/PHPCensor/Languages/lang.uk.php b/src/PHPCensor/Languages/lang.uk.php
index 9b7c6dd5..8f2450aa 100644
--- a/src/PHPCensor/Languages/lang.uk.php
+++ b/src/PHPCensor/Languages/lang.uk.php
@@ -311,11 +311,11 @@ PHP Censor',
'enter_password' => 'Пароль адміністратора: ',
'enter_app_url' => 'URL адреса вашого PHP Censor (наприклад, "http://php-censor.local"): ',
- 'enter_db_host' => 'Будь ласка, введіть хост MySQL [localhost]: ',
- 'enter_db_name' => 'Будь ласка, введить ім’я бази даних MySQL [php-censor-db]: ',
- 'enter_db_user' => 'Будь ласка, введить ім’я користувача MySQL [php-censor-user]: ',
- 'enter_db_pass' => 'Будь ласка, введить ваш пароль MySQL: ',
- 'could_not_connect' => 'PHP Censor не може підключитися до MySQL із наданими параметрами. Будь ласка, спробуйте ще раз.',
+ 'enter_db_host' => 'Будь ласка, введіть хост DB [localhost]: ',
+ 'enter_db_name' => 'Будь ласка, введить ім’я бази даних DB [php-censor-db]: ',
+ 'enter_db_user' => 'Будь ласка, введить ім’я користувача DB [php-censor-user]: ',
+ 'enter_db_pass' => 'Будь ласка, введить ваш пароль DB: ',
+ 'could_not_connect' => 'PHP Censor не може підключитися до DB із наданими параметрами. Будь ласка, спробуйте ще раз.',
'setting_up_db' => 'Налаштування вашої бази даних...',
'user_created' => 'Аккаунт користувача створено!',
'failed_to_create' => 'PHP Censor не вдалося створити ваш аккаунт адміністратора.',
diff --git a/src/PHPCensor/Languages/lang.zh.php b/src/PHPCensor/Languages/lang.zh.php
index c25ff633..34d964fc 100644
--- a/src/PHPCensor/Languages/lang.zh.php
+++ b/src/PHPCensor/Languages/lang.zh.php
@@ -326,11 +326,11 @@ PHP Censor',
'enter_password' => 'Admin Password: ',
'enter_app_url' => 'Your PHP Censor URL ("http://php-censor.local" for example): ',
- 'enter_db_host' => 'Please enter your MySQL host [localhost]: ',
- 'enter_db_name' => 'Please enter your MySQL database name [php-censor-db]: ',
- 'enter_db_user' => 'Please enter your MySQL username [php-censor-user]: ',
- 'enter_db_pass' => 'Please enter your MySQL password: ',
- 'could_not_connect' => 'PHP Censor could not connect to MySQL with the details provided. Please try again.',
+ 'enter_db_host' => 'Please enter your DB host [localhost]: ',
+ 'enter_db_name' => 'Please enter your DB database name [php-censor-db]: ',
+ 'enter_db_user' => 'Please enter your DB username [php-censor-user]: ',
+ 'enter_db_pass' => 'Please enter your DB password: ',
+ 'could_not_connect' => 'PHP Censor could not connect to DB with the details provided. Please try again.',
'setting_up_db' => 'Setting up your database... ',
'user_created' => 'User account created!',
'failed_to_create' => 'PHP Censor failed to create your admin account.',
diff --git a/src/PHPCensor/Migrations/20140730143702_fix_database_columns.php b/src/PHPCensor/Migrations/20140730143702_fix_database_columns.php
index 9a65c367..11b3540d 100644
--- a/src/PHPCensor/Migrations/20140730143702_fix_database_columns.php
+++ b/src/PHPCensor/Migrations/20140730143702_fix_database_columns.php
@@ -6,13 +6,6 @@ class FixDatabaseColumns extends AbstractMigration
{
public function up()
{
- $dbAdapter = $this->getAdapter();
-
- if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) {
- $pdo = $dbAdapter->getConnection();
- $pdo->exec('SET foreign_key_checks = 0');
- }
-
$build = $this->table('build');
$build->changeColumn('project_id', 'integer', ['null' => false]);
@@ -53,11 +46,6 @@ class FixDatabaseColumns extends AbstractMigration
$user->changeColumn('hash', 'string', ['limit' => 250, 'null' => false]);
$user->changeColumn('is_admin', 'integer', ['null' => false, 'default' => 0]);
$user->changeColumn('name', 'string', ['limit' => 250, 'null' => false]);
-
- if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) {
- $pdo = $dbAdapter->getConnection();
- $pdo->exec('SET foreign_key_checks = 1');
- }
}
public function down()
diff --git a/src/PHPCensor/Migrations/20150131075425_archive_project.php b/src/PHPCensor/Migrations/20150131075425_archive_project.php
index 3da41cc8..4d8bbfe3 100644
--- a/src/PHPCensor/Migrations/20150131075425_archive_project.php
+++ b/src/PHPCensor/Migrations/20150131075425_archive_project.php
@@ -9,7 +9,7 @@ class ArchiveProject extends AbstractMigration
$project = $this->table('project');
if (!$project->hasColumn('archived')) {
- $project->addColumn('archived', 'boolean', ['default' => 0])->save();
+ $project->addColumn('archived', 'boolean', ['default' => false])->save();
}
}
diff --git a/src/PHPCensor/Migrations/20150203105015_fix_column_types.php b/src/PHPCensor/Migrations/20150203105015_fix_column_types.php
index 0387b066..f13442b5 100644
--- a/src/PHPCensor/Migrations/20150203105015_fix_column_types.php
+++ b/src/PHPCensor/Migrations/20150203105015_fix_column_types.php
@@ -1,7 +1,6 @@
table('build');
- $build->changeColumn('log', 'text', ['null' => true, 'limit' => MysqlAdapter::TEXT_MEDIUM]);
+ $build->changeColumn('log', 'text', ['null' => true]);
$buildMeta = $this->table('build_meta');
- $buildMeta->changeColumn('meta_value', 'text', ['null' => false, 'limit' => MysqlAdapter::TEXT_MEDIUM]);
+ $buildMeta->changeColumn('meta_value', 'text', ['null' => false]);
}
public function down()
diff --git a/src/PHPCensor/Migrations/20150308074509_add_user_providers.php b/src/PHPCensor/Migrations/20150308074509_add_user_providers.php
index a01c626b..f9b52012 100644
--- a/src/PHPCensor/Migrations/20150308074509_add_user_providers.php
+++ b/src/PHPCensor/Migrations/20150308074509_add_user_providers.php
@@ -1,6 +1,5 @@
addColumn('provider_key', 'string', [
'default' => 'internal',
- 'limit' => MysqlAdapter::TEXT_SMALL
+ 'limit' => 255
])
// A data used by the provider
->addColumn('provider_data', 'string', [
'null' => true,
- 'limit' => MysqlAdapter::TEXT_SMALL
+ 'limit' => 255
])
->save();
}
diff --git a/src/PHPCensor/Migrations/20151008140800_add_project_groups.php b/src/PHPCensor/Migrations/20151008140800_add_project_groups.php
index 1751202b..6cafa6b2 100644
--- a/src/PHPCensor/Migrations/20151008140800_add_project_groups.php
+++ b/src/PHPCensor/Migrations/20151008140800_add_project_groups.php
@@ -13,12 +13,14 @@ class AddProjectGroups extends AbstractMigration
}
if (!$table->hasColumn('title')) {
- $table->addColumn('title', 'string', ['limit' => 100, 'null' => false])->save();
+ $table
+ ->addColumn('title', 'string', ['limit' => 100, 'null' => false])
+ ->save();
- $group = new \PHPCensor\Model\ProjectGroup();
+/* $group = new \PHPCensor\Model\ProjectGroup();
$group->setTitle('Projects');
- \b8\Store\Factory::getStore('ProjectGroup')->save($group);
+ \b8\Store\Factory::getStore('ProjectGroup')->save($group);*/
}
$table = $this->table('project');
diff --git a/src/PHPCensor/Migrations/20151009100610_remove_unique_name_index.php b/src/PHPCensor/Migrations/20151009100610_remove_unique_name_index.php
index 764debe4..72c56a8a 100644
--- a/src/PHPCensor/Migrations/20151009100610_remove_unique_name_index.php
+++ b/src/PHPCensor/Migrations/20151009100610_remove_unique_name_index.php
@@ -9,11 +9,11 @@ class RemoveUniqueNameIndex extends AbstractMigration
$user = $this->table('user');
if ($user->hasIndex('name', ['unique' => true])) {
- $user->removeIndex('name', ['unique' => true])->save();
+ $user->removeIndex(['name'], ['unique' => true])->save();
}
if (!$user->hasIndex('name', ['unique' => true])) {
- $user->addIndex('name', ['unique' => false])->save();
+ $user->addIndex(['name'], ['unique' => false])->save();
}
}
}
diff --git a/src/PHPCensor/Migrations/20151014091859_errors_table.php b/src/PHPCensor/Migrations/20151014091859_errors_table.php
index d383e396..6a8922d6 100644
--- a/src/PHPCensor/Migrations/20151014091859_errors_table.php
+++ b/src/PHPCensor/Migrations/20151014091859_errors_table.php
@@ -1,7 +1,6 @@
hasColumn('severity')) {
- $table->addColumn('severity', 'integer', ['signed' => false, 'limit' => MysqlAdapter::INT_TINY])->save();
+ $table->addColumn('severity', 'integer', ['signed' => false, 'limit' => 255])->save();
}
if (!$table->hasColumn('message')) {
diff --git a/src/PHPCensor/Migrations/20160623100223_project_table_defaults.php b/src/PHPCensor/Migrations/20160623100223_project_table_defaults.php
index 5b2f88d0..a25b9937 100644
--- a/src/PHPCensor/Migrations/20160623100223_project_table_defaults.php
+++ b/src/PHPCensor/Migrations/20160623100223_project_table_defaults.php
@@ -1,17 +1,13 @@
table('project')
- ->changeColumn('build_config', MysqlAdapter::PHINX_TYPE_TEXT, ['null' => true])
- ->changeColumn('archived', MysqlAdapter::PHINX_TYPE_INTEGER, [
- 'length' => MysqlAdapter::INT_TINY,
- 'default' => 0,
- ])->save();
+ ->changeColumn('build_config', 'text', ['null' => true])
+ ->save();
}
}
diff --git a/src/PHPCensor/Plugin/Codeception.php b/src/PHPCensor/Plugin/Codeception.php
index a0fec023..c4cf0d5e 100644
--- a/src/PHPCensor/Plugin/Codeception.php
+++ b/src/PHPCensor/Plugin/Codeception.php
@@ -16,7 +16,6 @@ use PHPCensor\Plugin\Util\TestResultParsers\Codeception as Parser;
use PHPCensor\Plugin;
use Symfony\Component\Yaml\Parser as YamlParser;
use PHPCensor\ZeroConfigPluginInterface;
-use Psr\Log\LogLevel;
/**
* Codeception Plugin - Enables full acceptance, unit, and functional testing.
diff --git a/src/PHPCensor/Store/Base/BuildErrorStoreBase.php b/src/PHPCensor/Store/Base/BuildErrorStoreBase.php
index 308a77bc..2bc31f9b 100644
--- a/src/PHPCensor/Store/Base/BuildErrorStoreBase.php
+++ b/src/PHPCensor/Store/Base/BuildErrorStoreBase.php
@@ -38,8 +38,8 @@ class BuildErrorStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `build_error` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build_error}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
@@ -62,8 +62,8 @@ class BuildErrorStoreBase extends Store
}
- $query = 'SELECT * FROM `build_error` WHERE `build_id` = :build_id LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build_error}} WHERE {{build_id}} = :build_id LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':build_id', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/Base/BuildMetaStoreBase.php b/src/PHPCensor/Store/Base/BuildMetaStoreBase.php
index 5ab7d829..6410732b 100644
--- a/src/PHPCensor/Store/Base/BuildMetaStoreBase.php
+++ b/src/PHPCensor/Store/Base/BuildMetaStoreBase.php
@@ -38,8 +38,8 @@ class BuildMetaStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `build_meta` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build_meta}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
@@ -62,8 +62,8 @@ class BuildMetaStoreBase extends Store
}
- $query = 'SELECT * FROM `build_meta` WHERE `project_id` = :project_id LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build_meta}} WHERE {{project_id}} = :project_id LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':project_id', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
@@ -94,8 +94,8 @@ class BuildMetaStoreBase extends Store
}
- $query = 'SELECT * FROM `build_meta` WHERE `build_id` = :build_id LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build_meta}} WHERE {{build_id}} = :build_id LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':build_id', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/Base/BuildStoreBase.php b/src/PHPCensor/Store/Base/BuildStoreBase.php
index 6d0941ac..442c79eb 100644
--- a/src/PHPCensor/Store/Base/BuildStoreBase.php
+++ b/src/PHPCensor/Store/Base/BuildStoreBase.php
@@ -38,8 +38,8 @@ class BuildStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `build` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
@@ -62,8 +62,8 @@ class BuildStoreBase extends Store
}
- $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build}} WHERE {{project_id}} = :project_id LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':project_id', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
@@ -94,8 +94,8 @@ class BuildStoreBase extends Store
}
- $query = 'SELECT * FROM `build` WHERE `status` = :status LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{build}} WHERE {{status}} = :status LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':status', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/Base/ProjectGroupStoreBase.php b/src/PHPCensor/Store/Base/ProjectGroupStoreBase.php
index 10ffd7df..c4c2b393 100644
--- a/src/PHPCensor/Store/Base/ProjectGroupStoreBase.php
+++ b/src/PHPCensor/Store/Base/ProjectGroupStoreBase.php
@@ -38,8 +38,8 @@ class ProjectGroupStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `project_group` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{project_group}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
diff --git a/src/PHPCensor/Store/Base/ProjectStoreBase.php b/src/PHPCensor/Store/Base/ProjectStoreBase.php
index cf310548..50992bfb 100644
--- a/src/PHPCensor/Store/Base/ProjectStoreBase.php
+++ b/src/PHPCensor/Store/Base/ProjectStoreBase.php
@@ -38,8 +38,8 @@ class ProjectStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `project` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{project}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
@@ -62,8 +62,8 @@ class ProjectStoreBase extends Store
}
- $query = 'SELECT * FROM `project` WHERE `title` = :title LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{project}} WHERE {{title}} = :title LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':title', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
@@ -94,8 +94,8 @@ class ProjectStoreBase extends Store
}
- $query = 'SELECT * FROM `project` WHERE `group_id` = :group_id LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{project}} WHERE {{group_id}} = :group_id LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':group_id', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/Base/UserStoreBase.php b/src/PHPCensor/Store/Base/UserStoreBase.php
index fee5fe24..edbbb507 100644
--- a/src/PHPCensor/Store/Base/UserStoreBase.php
+++ b/src/PHPCensor/Store/Base/UserStoreBase.php
@@ -38,8 +38,8 @@ class UserStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `user` WHERE `id` = :id LIMIT 1';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{user}} WHERE {{id}} = :id LIMIT 1';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':id', $value);
if ($stmt->execute()) {
@@ -67,8 +67,8 @@ class UserStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `user` WHERE `email` = :email LIMIT 1';
- $stmt = Database::getConnection()->prepare($query);
+ $query = 'SELECT * FROM {{user}} WHERE {{email}} = :email LIMIT 1';
+ $stmt = Database::getConnection()->prepareCommon($query);
$stmt->bindValue(':email', $value);
if ($stmt->execute()) {
@@ -96,8 +96,8 @@ class UserStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
- $query = 'SELECT * FROM `user` WHERE `email` = :value OR `name` = :value LIMIT 1';
- $stmt = Database::getConnection()->prepare($query);
+ $query = 'SELECT * FROM {{user}} WHERE {{email}} = :value OR {{name}} = :value LIMIT 1';
+ $stmt = Database::getConnection()->prepareCommon($query);
$stmt->bindValue(':value', $value);
if ($stmt->execute()) {
@@ -119,9 +119,8 @@ class UserStoreBase extends Store
throw new HttpException('Value passed to ' . __FUNCTION__ . ' cannot be null.');
}
-
- $query = 'SELECT * FROM `user` WHERE `name` = :name LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{user}} WHERE {{name}} = :name LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':name', $value);
$stmt->bindValue(':limit', (int)$limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/BuildErrorStore.php b/src/PHPCensor/Store/BuildErrorStore.php
index 963b5e0b..5e937382 100644
--- a/src/PHPCensor/Store/BuildErrorStore.php
+++ b/src/PHPCensor/Store/BuildErrorStore.php
@@ -24,8 +24,7 @@ class BuildErrorStore extends BuildErrorStoreBase
*/
public function getErrorsForBuild($buildId, $since = null)
{
- $query = 'SELECT * FROM build_error
- WHERE build_id = :build';
+ $query = 'SELECT * FROM {{build_error}} WHERE {{build_id}} = :build';
if (!is_null($since)) {
$query .= ' AND created_date > :since';
@@ -33,7 +32,7 @@ class BuildErrorStore extends BuildErrorStoreBase
$query .= ' LIMIT 15000';
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':build', $buildId, \PDO::PARAM_INT);
@@ -63,10 +62,10 @@ class BuildErrorStore extends BuildErrorStoreBase
*/
public function getErrorTotalForBuild($buildId)
{
- $query = 'SELECT COUNT(*) AS total FROM build_error
- WHERE build_id = :build';
+ $query = 'SELECT COUNT(*) AS {{total}} FROM {{build_error}}
+ WHERE {{build_id}} = :build';
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':build', $buildId, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/BuildMetaStore.php b/src/PHPCensor/Store/BuildMetaStore.php
index 79a65294..269f726d 100644
--- a/src/PHPCensor/Store/BuildMetaStore.php
+++ b/src/PHPCensor/Store/BuildMetaStore.php
@@ -28,11 +28,11 @@ class BuildMetaStore extends BuildMetaStoreBase
*/
public function getErrorsForUpgrade($limit)
{
- $query = 'SELECT * FROM build_meta
- WHERE meta_key IN (\'phpmd-data\', \'phpcs-data\', \'phpdoccheck-data\', \'technical_debt - data\')
- ORDER BY id ASC LIMIT :limit';
+ $query = 'SELECT * FROM {{build_meta}}
+ WHERE {{meta_key}} IN (\'phpmd-data\', \'phpcs-data\', \'phpdoccheck-data\', \'technical_debt - data\')
+ ORDER BY {{id}} ASC LIMIT :limit';
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/BuildStore.php b/src/PHPCensor/Store/BuildStore.php
index f3d5284a..246ab902 100644
--- a/src/PHPCensor/Store/BuildStore.php
+++ b/src/PHPCensor/Store/BuildStore.php
@@ -30,12 +30,12 @@ class BuildStore extends BuildStoreBase
public function getLatestBuilds($projectId = null, $limit = 5)
{
if (!is_null($projectId)) {
- $query = 'SELECT * FROM build WHERE `project_id` = :pid ORDER BY id DESC LIMIT :limit';
+ $query = 'SELECT * FROM {{build}} WHERE {{project_id}} = :pid ORDER BY {{id}} DESC LIMIT :limit';
} else {
- $query = 'SELECT * FROM build ORDER BY id DESC LIMIT :limit';
+ $query = 'SELECT * FROM {{build}} ORDER BY {{id}} DESC LIMIT :limit';
}
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
if (!is_null($projectId)) {
$stmt->bindValue(':pid', $projectId);
@@ -65,8 +65,8 @@ class BuildStore extends BuildStoreBase
*/
public function getLastBuildByStatus($projectId = null, $status = Build::STATUS_SUCCESS)
{
- $query = 'SELECT * FROM build WHERE project_id = :pid AND status = :status ORDER BY id DESC LIMIT 1';
- $stmt = Database::getConnection('read')->prepare($query);
+ $query = 'SELECT * FROM {{build}} WHERE {{project_id}} = :pid AND {{status}} = :status ORDER BY {{id}} DESC LIMIT 1';
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':pid', $projectId);
$stmt->bindValue(':status', $status);
@@ -87,8 +87,8 @@ class BuildStore extends BuildStoreBase
*/
public function getByProjectAndCommit($projectId, $commitId)
{
- $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id AND `commit_id` = :commit_id';
- $stmt = Database::getConnection('read')->prepare($query);
+ $query = 'SELECT * FROM {{build}} WHERE {{project_id}} = :project_id AND {{commit_id}} = :commit_id';
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':project_id', $projectId);
$stmt->bindValue(':commit_id', $commitId);
@@ -116,8 +116,8 @@ class BuildStore extends BuildStoreBase
*/
public function getBuildBranches($projectId)
{
- $query = 'SELECT DISTINCT `branch` FROM `build` WHERE `project_id` = :project_id';
- $stmt = Database::getConnection('read')->prepare($query);
+ $query = 'SELECT DISTINCT {{branch}} FROM {{build}} WHERE {{project_id}} = :project_id';
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':project_id', $projectId);
if ($stmt->execute()) {
@@ -140,8 +140,8 @@ class BuildStore extends BuildStoreBase
public function getMeta($key, $projectId, $buildId = null, $branch = null, $numResults = 1)
{
$query = 'SELECT bm.build_id, bm.meta_key, bm.meta_value
- FROM build_meta AS bm
- LEFT JOIN build b ON b.id = bm.build_id
+ FROM {{build_meta}} AS {{bm}}
+ LEFT JOIN {{build}} AS {{b}} ON b.id = bm.build_id
WHERE bm.meta_key = :key
AND bm.project_id = :projectId';
@@ -160,7 +160,7 @@ class BuildStore extends BuildStoreBase
$query .= ' ORDER BY bm.id DESC LIMIT :numResults';
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':key', $key, \PDO::PARAM_STR);
$stmt->bindValue(':projectId', (int)$projectId, \PDO::PARAM_INT);
$stmt->bindValue(':buildId', (int)$buildId, \PDO::PARAM_INT);
@@ -199,10 +199,10 @@ class BuildStore extends BuildStoreBase
*/
public function setMeta($projectId, $buildId, $key, $value)
{
- $cols = '`project_id`, `build_id`, `meta_key`, `meta_value`';
- $query = 'REPLACE INTO build_meta ('.$cols.') VALUES (:projectId, :buildId, :key, :value)';
+ $cols = '{{project_id}}, {{build_id}}, {{meta_key}}, {{meta_value}}';
+ $query = 'INSERT INTO {{build_meta}} ('.$cols.') VALUES (:projectId, :buildId, :key, :value)';
- $stmt = Database::getConnection('read')->prepare($query);
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':key', $key, \PDO::PARAM_STR);
$stmt->bindValue(':projectId', (int)$projectId, \PDO::PARAM_INT);
$stmt->bindValue(':buildId', (int)$buildId, \PDO::PARAM_INT);
diff --git a/src/PHPCensor/Store/ProjectStore.php b/src/PHPCensor/Store/ProjectStore.php
index 03c39f79..fe22bbe2 100644
--- a/src/PHPCensor/Store/ProjectStore.php
+++ b/src/PHPCensor/Store/ProjectStore.php
@@ -28,8 +28,8 @@ class ProjectStore extends ProjectStoreBase
*/
public function getKnownBranches($projectId)
{
- $query = 'SELECT DISTINCT branch from build WHERE project_id = :pid';
- $stmt = Database::getConnection('read')->prepare($query);
+ $query = 'SELECT DISTINCT {{branch}} from {{build}} WHERE {{project_id}} = :pid';
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':pid', $projectId);
if ($stmt->execute()) {
@@ -57,8 +57,8 @@ class ProjectStore extends ProjectStoreBase
{
$archived = (integer)$archived;
- $query = 'SELECT * FROM `project` WHERE `archived` = :archived ORDER BY `title` ASC';
- $stmt = Database::getConnection('read')->prepare($query);
+ $query = 'SELECT * FROM {{project}} WHERE {{archived}} = :archived ORDER BY {{title}} ASC';
+ $stmt = Database::getConnection('read')->prepareCommon($query);
$stmt->bindValue(':archived', $archived);
@@ -98,8 +98,8 @@ class ProjectStore extends ProjectStoreBase
}
$archived = (integer)$archived;
- $query = 'SELECT * FROM `project` WHERE `group_id` = :group_id AND `archived` = :archived ORDER BY title LIMIT :limit';
- $stmt = Database::getConnection($useConnection)->prepare($query);
+ $query = 'SELECT * FROM {{project}} WHERE {{group_id}} = :group_id AND {{archived}} = :archived ORDER BY {{title}} LIMIT :limit';
+ $stmt = Database::getConnection($useConnection)->prepareCommon($query);
$stmt->bindValue(':group_id', $value);
$stmt->bindValue(':archived', $archived);
diff --git a/tests/B8Framework/DatabaseTest.php b/tests/B8Framework/DatabaseTest.php
index 4d1ea57c..636555e0 100755
--- a/tests/B8Framework/DatabaseTest.php
+++ b/tests/B8Framework/DatabaseTest.php
@@ -13,9 +13,14 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
'b8' => [
'database' => [
'servers' => [
- 'read' => 'localhost',
- 'write' => 'localhost',
+ 'read' => [
+ ['host' => 'localhost'],
+ ],
+ 'write' => [
+ ['host' => 'localhost'],
+ ],
],
+ 'type' => 'mysql',
'name' => 'b8_test',
'username' => 'root',
'password' => 'root',
@@ -69,9 +74,14 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
'b8' => [
'database' => [
'servers' => [
- 'read' => 'localhost',
- 'write' => 'localhost',
+ 'read' => [
+ ['host' => 'localhost'],
+ ],
+ 'write' => [
+ ['host' => 'localhost'],
+ ],
],
+ 'type' => 'mysql',
'name' => 'b8_test_2',
'username' => '',
'password' => '',
diff --git a/tests/PHPCensor/Command/InstallCommandTest.php b/tests/PHPCensor/Command/InstallCommandTest.php
index a9e827e4..5c8e2404 100644
--- a/tests/PHPCensor/Command/InstallCommandTest.php
+++ b/tests/PHPCensor/Command/InstallCommandTest.php
@@ -58,6 +58,7 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
'verifyDatabaseDetails',
'setupDatabase',
'createAdminUser',
+ 'createDefaultGroup',
'writeConfigFile',
'checkRequirements',
])->getMock();
@@ -78,6 +79,7 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
})
);
$command->expects($this->once())->method('checkRequirements');
+ $command->expects($this->once())->method('createDefaultGroup');
return $command;
}
@@ -100,6 +102,7 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
'--db-name' => 'php-censor-db',
'--db-user' => 'php-censor-user',
'--db-pass' => 'php-censor-password',
+ '--db-type' => 'mysql',
'--admin-mail' => 'admin@php-censor.local',
'--admin-name' => 'admin',
'--admin-pass' => 'admin-password',
@@ -144,8 +147,8 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
$this->executeWithoutParam('--db-host', $dialog);
// Check that specified arguments are correctly loaded.
- $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['read']);
- $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['write']);
+ $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['read'][0]['host']);
+ $this->assertEquals('testedvalue', $this->config['b8']['database']['servers']['write'][0]['host']);
}
public function testDatabaseNameConfig()