DBVersion000029.class.php (2253B)
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