File modules/cms/update/version/DBVersion000029.class.php

Last commit: Sun Nov 7 23:45:50 2021 +0100	Jan Dankert	Fix: First successful migration to the new "content" table.
1 <?php 2 3 namespace cms\update\version; 4 5 use database\DbVersion; 6 use database\Column; 7 use security\Password; 8 9 /** 10 * Migrate page value to content, so it becomes versionable. 11 * 12 * @author dankert 13 * 14 */ 15 class DBVersion000029 extends DbVersion 16 { 17 /** 18 * 19 */ 20 public function update() 21 { 22 $contentTable = $this->table('content'); 23 $contentTable->add(); 24 $contentTable->addPrimaryKey(); 25 26 $valueTable = $this->table('value'); 27 $valueTable->column('contentid')->nullable()->add(); 28 $valueTable->addConstraint('contentid','content'); 29 $valueTable->column('file')->type( Column::TYPE_BLOB )->nullable()->add(); 30 31 $pageContentTable = $this->table('pagecontent'); 32 $pageContentTable->add(); 33 $pageContentTable->addPrimaryKey(); 34 $pageContentTable->column('pageid' )->add(); 35 $pageContentTable->column('elementid' )->add(); 36 $pageContentTable->column('languageid')->add(); 37 $pageContentTable->column('contentid' )->add(); 38 39 $pageContentTable->addConstraint('pageid' , 'page' ); 40 $pageContentTable->addConstraint('elementid' , 'element' ); 41 $pageContentTable->addConstraint('languageid', 'language'); 42 $pageContentTable->addConstraint('contentid' , 'content' ); 43 44 $db = $this->getDb(); 45 $stmt = $db->sql('SELECT * FROM '.$valueTable->getSqlName().' WHERE active=1' ); 46 $contentid = 0; 47 foreach($stmt->getAll() as $row ) 48 { 49 ++$contentid; 50 51 $stmt = $db->sql('INSERT INTO '.$contentTable->getSqlName().' (id) VALUES('.$contentid.')'); 52 $stmt->execute(); 53 54 $stmt = $db->sql('INSERT INTO '.$pageContentTable->getSqlName().' (id,pageid,elementid,languageid,contentid) VALUES('.$contentid.','.$row['pageid'].','.$row['elementid'].','.$row['languageid'].','.$contentid.')'); 55 $stmt->execute(); 56 57 $stmt = $db->sql('UPDATE '.$valueTable->getSqlName().' SET contentid='.$contentid.' WHERE pageid='.$row['pageid'].' AND elementid='.$row['elementid'].' AND languageid='.$row['languageid'] ); 58 $stmt->execute(); 59 } 60 61 $valueTable->dropConstraint('pageid'); 62 $valueTable->column('pageid' )->drop(); 63 64 $valueTable->dropConstraint('elementid'); 65 $valueTable->column('elementid' )->drop(); 66 67 $valueTable->dropConstraint('languageid'); 68 $valueTable->column('languageid')->drop(); 69 } 70 } 71
Download modules/cms/update/version/DBVersion000029.class.php
History Sun, 7 Nov 2021 23:45:50 +0100 Jan Dankert Fix: First successful migration to the new "content" table. Wed, 7 Jul 2021 22:29:06 +0200 Jan Dankert Refactoring: Split values and content, new table "content".