Merge branch 'fix-MySQL-zero-no-date' into 'develop'
Fix MySQL NO_ZERO_DATE Closes #224 See merge request framasoft/framadate!245
This commit is contained in:
commit
955465f5f9
@ -24,6 +24,7 @@ use Framadate\Migration\AddColumn_ValueMax_In_poll_For_1_1;
|
|||||||
use Framadate\Migration\AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9;
|
use Framadate\Migration\AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9;
|
||||||
use Framadate\Migration\Alter_Comment_table_adding_date;
|
use Framadate\Migration\Alter_Comment_table_adding_date;
|
||||||
use Framadate\Migration\Alter_Comment_table_for_name_length;
|
use Framadate\Migration\Alter_Comment_table_for_name_length;
|
||||||
|
use Framadate\Migration\Fix_MySQL_No_Zero_Date;
|
||||||
use Framadate\Migration\From_0_0_to_0_8_Migration;
|
use Framadate\Migration\From_0_0_to_0_8_Migration;
|
||||||
use Framadate\Migration\From_0_8_to_0_9_Migration;
|
use Framadate\Migration\From_0_8_to_0_9_Migration;
|
||||||
use Framadate\Migration\Generate_uniqId_for_old_votes;
|
use Framadate\Migration\Generate_uniqId_for_old_votes;
|
||||||
@ -49,11 +50,14 @@ $migrations = [
|
|||||||
new Alter_Comment_table_for_name_length(),
|
new Alter_Comment_table_for_name_length(),
|
||||||
new Alter_Comment_table_adding_date(),
|
new Alter_Comment_table_adding_date(),
|
||||||
new AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9(),
|
new AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9(),
|
||||||
new Increase_pollId_size()
|
new Increase_pollId_size(),
|
||||||
|
new AddColumn_ValueMax_In_poll_For_1_1(),
|
||||||
|
new Fix_MySQL_No_Zero_Date(),
|
||||||
];
|
];
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
|
|
||||||
// Check if MIGRATION_TABLE already exists
|
// Check if MIGRATION_TABLE already exists
|
||||||
|
/** @var \Framadate\FramaDB $connect */
|
||||||
$tables = $connect->allTables();
|
$tables = $connect->allTables();
|
||||||
$pdo = $connect->getPDO();
|
$pdo = $connect->getPDO();
|
||||||
$prefixedMigrationTable = Utils::table(MIGRATION_TABLE);
|
$prefixedMigrationTable = Utils::table(MIGRATION_TABLE);
|
||||||
|
68
app/classes/Framadate/Migration/Fix_MySQL_No_Zero_Date.php
Normal file
68
app/classes/Framadate/Migration/Fix_MySQL_No_Zero_Date.php
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace Framadate\Migration;
|
||||||
|
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration sets Poll.end_date to NULL by default
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.1
|
||||||
|
*/
|
||||||
|
class Fix_MySQL_No_Zero_Date implements Migration {
|
||||||
|
function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
function description() {
|
||||||
|
return 'Sets Poll end_date to NULL by default (work around MySQL NO_ZERO_DATE)';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method could check if the execute method should be called.
|
||||||
|
* It is called before the execute method.
|
||||||
|
*
|
||||||
|
* @param \PDO $pdo The connection to database
|
||||||
|
* @return bool true is the Migration should be executed.
|
||||||
|
*/
|
||||||
|
function preCondition(\PDO $pdo) {
|
||||||
|
$stmt = $pdo->prepare("SELECT Column_Default from Information_Schema.Columns where Table_Name = ? AND Column_Name = ?;");
|
||||||
|
$stmt->bindValue(1, Utils::table('poll'));
|
||||||
|
$stmt->bindValue(2, 'end_date');
|
||||||
|
$stmt->execute();
|
||||||
|
$default = $stmt->fetch(\PDO::FETCH_COLUMN);
|
||||||
|
|
||||||
|
return $default !== null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called only one time in the migration page.
|
||||||
|
*
|
||||||
|
* @param \PDO $pdo The connection to database
|
||||||
|
* @return void true is the execution succeeded
|
||||||
|
*/
|
||||||
|
function execute(\PDO $pdo) {
|
||||||
|
$pdo->exec('ALTER TABLE ' . Utils::table('poll') . ' CHANGE COLUMN end_date TIMESTAMP NULL DEFAULT NULL');
|
||||||
|
}
|
||||||
|
}
|
@ -71,7 +71,7 @@ CREATE TABLE IF NOT EXISTS `sondage` (
|
|||||||
`titre` text,
|
`titre` text,
|
||||||
`id_sondage_admin` char(24) DEFAULT NULL,
|
`id_sondage_admin` char(24) DEFAULT NULL,
|
||||||
`date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`date_fin` timestamp NOT NULL,
|
`date_fin` timestamp NULL DEFAULT NULL,
|
||||||
`format` varchar(2) DEFAULT NULL,
|
`format` varchar(2) DEFAULT NULL,
|
||||||
`mailsonde` tinyint(1) DEFAULT \'0\',
|
`mailsonde` tinyint(1) DEFAULT \'0\',
|
||||||
`statut` int(11) NOT NULL DEFAULT \'1\' COMMENT \'1 = actif ; 0 = inactif ; \',
|
`statut` int(11) NOT NULL DEFAULT \'1\' COMMENT \'1 = actif ; 0 = inactif ; \',
|
||||||
|
@ -89,7 +89,7 @@ CREATE TABLE IF NOT EXISTS `' . Utils::table('poll') . '` (
|
|||||||
`admin_name` VARCHAR(64) DEFAULT NULL,
|
`admin_name` VARCHAR(64) DEFAULT NULL,
|
||||||
`admin_mail` VARCHAR(128) DEFAULT NULL,
|
`admin_mail` VARCHAR(128) DEFAULT NULL,
|
||||||
`creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`end_date` TIMESTAMP NOT NULL,
|
`end_date` TIMESTAMP NULL DEFAULT NULL,
|
||||||
`format` VARCHAR(1) DEFAULT NULL,
|
`format` VARCHAR(1) DEFAULT NULL,
|
||||||
`editable` TINYINT(1) DEFAULT \'0\',
|
`editable` TINYINT(1) DEFAULT \'0\',
|
||||||
`receiveNewVotes` TINYINT(1) DEFAULT \'0\',
|
`receiveNewVotes` TINYINT(1) DEFAULT \'0\',
|
||||||
|
Loading…
Reference in New Issue
Block a user