diff --git a/admin/migration.php b/admin/migration.php index 25bc733..1a85f65 100644 --- a/admin/migration.php +++ b/admin/migration.php @@ -22,6 +22,7 @@ use Framadate\Migration\From_0_8_to_0_9_Migration; use Framadate\Migration\AddColumn_receiveNewComments_For_0_9; use Framadate\Migration\AddColumn_uniqId_In_vote_For_0_9; use Framadate\Migration\AddColumn_hidden_In_poll_For_0_9; +use Framadate\Migration\Generate_uniqId_for_old_votes; use Framadate\Migration\Migration; use Framadate\Utils; @@ -36,6 +37,7 @@ $migrations = [ new AddColumn_receiveNewComments_For_0_9(), new AddColumn_uniqId_In_vote_For_0_9(), new AddColumn_hidden_In_poll_For_0_9(), + new Generate_uniqId_for_old_votes(), ]; // --------------------------------------- diff --git a/app/classes/Framadate/Migration/Generate_uniqId_for_old_votes.php b/app/classes/Framadate/Migration/Generate_uniqId_for_old_votes.php new file mode 100644 index 0000000..4814e9f --- /dev/null +++ b/app/classes/Framadate/Migration/Generate_uniqId_for_old_votes.php @@ -0,0 +1,83 @@ +query('SHOW TABLES'); + $tables = $stmt->fetchAll(\PDO::FETCH_COLUMN); + + // Check if tables of v0.9 are presents + $diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables); + return count($diff) === 0; + } + + /** + * This methode is called only one time in the migration page. + * + * @param \PDO $pdo The connection to database + * @return bool true is the execution succeeded + */ + function execute(\PDO $pdo) { + + $pdo->beginTransaction(); + $this->generateUniqIdsForEmptyOnes($pdo); + $pdo->commit(); + + return true; + } + + private function generateUniqIdsForEmptyOnes($pdo) { + $select = $pdo->query(' +SELECT `id` + FROM `' . Utils::table('vote') . '` + WHERE `uniqid` = \'\''); + + $update = $pdo->prepare(' +UPDATE `' . Utils::table('vote') . '` + SET `uniqid` = :uniqid + WHERE `id` = :id'); + + while ($row = $select->fetch(\PDO::FETCH_OBJ)) { + $token = Token::getToken(16); + $update->execute([ + 'uniqid' => $token, + 'id' => $row->id + ]); + } + } + +}