openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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