openrat-cms

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

DBVersion000001.class.php (13793B)


      1 <?php
      2 
      3 namespace cms\update\version;
      4 
      5 use database\Database;
      6 use database\DbVersion;
      7 use database\Column;
      8 
      9 
     10 /**
     11  * Baseline database structure.
     12  * 
     13  * @author dankert
     14  *
     15  */
     16 class DBVersion000001 extends DbVersion
     17 {
     18 	public function update()
     19 	{
     20 		$table = $this->table('project')->add();
     21 
     22 		$table->column('name'               )->type(Column::TYPE_VARCHAR)->size( 128)->add();
     23 		$table->column('target_dir'         )->type(Column::TYPE_VARCHAR)->size( 255)->add();
     24 		$table->column('ftp_url'            )->type(Column::TYPE_VARCHAR)->size( 255)->add();
     25 		$table->column('ftp_passive'        )->type(Column::TYPE_INT    )->add();
     26 		$table->column('cmd_after_publish'  )->type(Column::TYPE_VARCHAR)->size( 255)->add();
     27 		$table->column('content_negotiation')->type(Column::TYPE_INT    )->size(   1)->defaultValue(   0)->add();
     28 		$table->column('cut_index'          )->type(Column::TYPE_INT    )->size(   1)->defaultValue(   0)->add();
     29 		
     30 		$table->addPrimaryKey();
     31 		$table->addIndex('name');
     32 		
     33 
     34 		$table = $this->table('user')->add();
     35 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(128)->add();
     36 		$table->column('password')->type(Column::TYPE_VARCHAR)->size(50)->add();
     37 		$table->column('ldap_dn')->type(Column::TYPE_VARCHAR)->size(255)->add();
     38 		$table->column('fullname')->type(Column::TYPE_VARCHAR)->size(128)->add();
     39 		$table->column('tel')->type(Column::TYPE_VARCHAR)->size(128)->add();
     40 		$table->column('mail')->type(Column::TYPE_VARCHAR)->size(255)->add();
     41 		$table->column('descr')->type(Column::TYPE_VARCHAR)->size(255)->add();
     42 		$table->column('style')->type(Column::TYPE_VARCHAR)->size(64)->add();
     43 		$table->column('is_admin')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
     44 		$table->addPrimaryKey();
     45 		$table->addUniqueIndex('name');
     46 		
     47 		$table = $this->table('group')->add();
     48 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(100)->add();
     49 		$table->addPrimaryKey();
     50 		$table->addUniqueIndex('name');
     51 		
     52 		$table = $this->table('object')->add();
     53 		$table->column('parentid')->type(Column::TYPE_INT)->nullable()->add();
     54 		$table->column('projectid')->type(Column::TYPE_INT)->size(0)->defaultValue(0)->add();
     55 		$table->column('filename')->type(Column::TYPE_VARCHAR)->size(150)->add();
     56 		$table->column('orderid')->type(Column::TYPE_INT)->size(0)->add();
     57 		$table->column('create_date')->type(Column::TYPE_INT)->size(0)->add();
     58 		$table->column('create_userid')->type(Column::TYPE_INT)->size(0)->nullable()->add();
     59 		$table->column('lastchange_date')->type(Column::TYPE_INT)->size(0)->add();
     60 		$table->column('lastchange_userid')->type(Column::TYPE_INT)->size(0)->nullable()->add();
     61 		$table->column('is_folder')->type(Column::TYPE_INT)->size(1)->add();
     62 		$table->column('is_file')->type(Column::TYPE_INT)->size(1)->add();
     63 		$table->column('is_page')->type(Column::TYPE_INT)->size(1)->add();
     64 		$table->column('is_link')->type(Column::TYPE_INT)->size(1)->add();
     65 		$table->addPrimaryKey();
     66 		$table->addConstraint('projectid', 'project');
     67 		$table->addConstraint('lastchange_userid', 'user');
     68 		$table->addConstraint('create_userid', 'user');
     69 		
     70 		$table->addIndex('parentid');
     71 		$table->addIndex('projectid');
     72 		$table->addIndex('is_folder');
     73 		$table->addIndex('is_file');
     74 		$table->addIndex('is_page');
     75 		$table->addIndex('is_link');
     76 		$table->addIndex('orderid');
     77 		$table->addIndex('create_userid');
     78 		$table->addIndex('lastchange_userid');
     79 		$table->addUniqueIndex( ['parentid','filename'] );
     80 		
     81 		
     82 		
     83 		
     84 		$table = $this->table('template')->add();
     85 		$table->column('projectid')->type(Column::TYPE_INT)->add();
     86 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(50)->add();
     87 		$table->addPrimaryKey();
     88 		$table->addConstraint('projectid', 'project');
     89 		
     90 		$table->addIndex('projectid');
     91 		$table->addIndex('name');
     92 		$table->addUniqueIndex(['projectid','name']);
     93 		
     94 		
     95 		
     96 		$table = $this->table('language')->add();
     97 		$table->column('projectid')->type(Column::TYPE_INT)->size(0)->add();
     98 		$table->column('isocode')->type(Column::TYPE_VARCHAR)->size(10)->add();
     99 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(50)->add();
    100 		$table->column('is_default')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    101 		$table->addPrimaryKey();
    102 		$table->addConstraint('projectid', 'project');
    103 		$table->addUniqueIndex(['projectid','isocode']);
    104 		
    105 		
    106 		
    107 		
    108 		$table = $this->table('page')->add();
    109 		$table->column('objectid')->type(Column::TYPE_INT)->size(0)->add();
    110 		$table->column('templateid')->type(Column::TYPE_INT)->size(0)->add();
    111 		$table->addPrimaryKey();
    112 		$table->addConstraint('templateid', 'template');
    113 		$table->addConstraint('objectid', 'object');
    114 		 
    115 		$table->addUniqueIndex('objectid');
    116 		$table->addIndex('templateid');
    117 		
    118 		
    119 		
    120 		
    121 		$table = $this->table('projectmodel')->add();
    122 		$table->column('projectid')->type(Column::TYPE_INT)->size(0)->add();
    123 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(50)->add();
    124 		$table->column('extension')->type(Column::TYPE_VARCHAR)->size(10)->nullable()->add();
    125 		$table->column('is_default')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    126 		$table->addPrimaryKey();
    127 		$table->addConstraint('projectid', 'project');
    128 		
    129 		$table->addIndex('projectid');
    130 		$table->addUniqueIndex(['projectid','name'] );
    131 		
    132 		
    133 		$table = $this->table('element')->add();
    134 		$table->column('templateid')->type(Column::TYPE_INT)->size(0)->defaultValue(0)->add();
    135 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(50)->add();
    136 		$table->column('descr')->type(Column::TYPE_VARCHAR)->size(255)->add();
    137 		$table->column('type')->type(Column::TYPE_VARCHAR)->size(20)->add();
    138 		$table->column('subtype')->type(Column::TYPE_VARCHAR)->size(20)->nullable()->add();
    139 		$table->column('with_icon')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    140 		$table->column('dateformat')->type(Column::TYPE_VARCHAR)->size(100)->nullable()->add();
    141 		$table->column('wiki')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->nullable()->add();
    142 		$table->column('html')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->nullable()->add();
    143 		$table->column('all_languages')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    144 		$table->column('writable')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    145 		$table->column('decimals')->type(Column::TYPE_INT)->size(0)->nullable()->add();
    146 		$table->column('dec_point')->type(Column::TYPE_VARCHAR)->size(5)->nullable()->add();
    147 		$table->column('thousand_sep')->type(Column::TYPE_VARCHAR)->size(1)->nullable()->add();
    148 		$table->column('code')->type(Column::TYPE_TEXT)->nullable()->add();
    149 		$table->column('default_text')->type(Column::TYPE_TEXT)->nullable()->add();
    150 		$table->column('folderobjectid')->type(Column::TYPE_INT)->nullable()->add();
    151 		$table->column('default_objectid')->type(Column::TYPE_INT)->nullable()->add();
    152 		$table->addPrimaryKey();
    153 		$table->addConstraint('default_objectid', 'object');
    154 		$table->addConstraint('folderobjectid', 'object');
    155 		$table->addConstraint('templateid', 'template');
    156 		
    157 		$table->addIndex('templateid');
    158 		$table->addIndex('name');
    159 		$table->addUniqueIndex(['templateid','name']);
    160 		
    161 		
    162 		
    163 		
    164 		$table = $this->table('file')->add();
    165 		$table->column('objectid')->type(Column::TYPE_INT)->size(0)->add();
    166 		$table->column('extension')->type(Column::TYPE_VARCHAR)->size(10)->add();
    167 		$table->column('size')->type(Column::TYPE_INT)->size(0)->add();
    168 		$table->column('value')->type(Column::TYPE_BLOB)->add();
    169 		$table->addPrimaryKey();
    170 		$table->addConstraint('objectid', 'object');
    171 		
    172 		$table->addUniqueIndex('objectid');
    173 		
    174 		
    175 		
    176 		$table = $this->table('folder')->add();
    177 		$table->column('objectid')->type(Column::TYPE_INT)->size(0)->add();
    178 		$table->addPrimaryKey();
    179 		$table->addConstraint('objectid', 'object');
    180 		
    181 		$table->addUniqueIndex('objectid');
    182 		
    183 		
    184 		
    185 		
    186 		
    187 		$table = $this->table('link')->add();
    188 		$table->column('objectid')->type(Column::TYPE_INT)->size(0)->add();
    189 		$table->column('link_objectid')->type(Column::TYPE_INT)->nullable()->add();
    190 		$table->column('url')->type(Column::TYPE_VARCHAR)->size(255)->nullable()->add();
    191 		$table->addPrimaryKey();
    192 		$table->addConstraint('objectid', 'object');
    193 		$table->addConstraint('link_objectid', 'object');
    194 		
    195 		$table->addUniqueIndex('objectid');
    196 		$table->addIndex('link_objectid');
    197 		
    198 		
    199 		
    200 		
    201 		
    202 		$table = $this->table('name')->add();
    203 		$table->column('objectid')->type(Column::TYPE_INT)->size(0)->add();
    204 		$table->column('name')->type(Column::TYPE_VARCHAR)->size(255)->add();
    205 		$table->column('descr')->type(Column::TYPE_VARCHAR)->size(255)->add();
    206 		$table->column('languageid')->type(Column::TYPE_INT)->size(0)->add();
    207 		$table->addPrimaryKey();
    208 		$table->addConstraint('objectid', 'object');
    209 		$table->addConstraint('languageid', 'language');
    210 		
    211 		$table->addIndex('objectid');
    212 		$table->addIndex('languageid');
    213 		$table->addUniqueIndex(['objectid','languageid']);
    214 		
    215 		
    216 		
    217 		
    218 		
    219 		$table = $this->table('templatemodel')->add();
    220 		$table->column('templateid')->type(Column::TYPE_INT)->size(0)->add();
    221 		$table->column('projectmodelid')->type(Column::TYPE_INT)->size(0)->add();
    222 		$table->column('extension')->type(Column::TYPE_VARCHAR)->size(10)->nullable()->add();
    223 		$table->column('text')->type(Column::TYPE_TEXT)->add();
    224 		$table->addPrimaryKey();
    225 		$table->addConstraint('templateid', 'template');
    226 		$table->addConstraint('projectmodelid', 'projectmodel');
    227 		
    228 		$table->addIndex('templateid');
    229 		$table->addUniqueIndex(['templateid','extension'     ]);
    230 		$table->addUniqueIndex(['templateid','projectmodelid']);
    231 		
    232 		
    233 		
    234 		
    235 		
    236 		$table = $this->table('usergroup')->add();
    237 		$table->column('userid')->type(Column::TYPE_INT)->add();
    238 		$table->column('groupid')->type(Column::TYPE_INT)->add();
    239 		$table->addPrimaryKey();
    240 		$table->addConstraint('groupid', 'group');
    241 		$table->addConstraint('userid', 'user');
    242 		
    243 		$table->addIndex('groupid');
    244 		$table->addIndex('userid');
    245 		$table->addUniqueIndex(['userid','groupid']);
    246 		
    247 		
    248 		
    249 		
    250 		$table = $this->table('value')->add();
    251 		$table->column('pageid')->type(Column::TYPE_INT)->size(0)->add();
    252 		$table->column('languageid')->type(Column::TYPE_INT)->add();
    253 		$table->column('elementid')->type(Column::TYPE_INT)->size(0)->add();
    254 		$table->column('linkobjectid')->type(Column::TYPE_INT)->nullable()->add();
    255 		$table->column('text')->type(Column::TYPE_TEXT)->nullable()->add();
    256 		$table->column('number')->type(Column::TYPE_INT)->nullable()->add();
    257 		$table->column('date')->type(Column::TYPE_INT)->nullable()->add();
    258 		$table->column('active')->type(Column::TYPE_INT)->size(0)->add();
    259 		$table->column('lastchange_date')->type(Column::TYPE_INT)->size(0)->add();
    260 		$table->column('lastchange_userid')->type(Column::TYPE_INT)->nullable()->add();
    261 		$table->column('publish')->type(Column::TYPE_INT)->add();
    262 		$table->addPrimaryKey();
    263 		$table->addConstraint('pageid', 'page');
    264 		$table->addConstraint('elementid', 'element');
    265 		$table->addConstraint('languageid', 'language');
    266 		$table->addConstraint('lastchange_userid', 'user');
    267 		$table->addConstraint('linkobjectid', 'object');
    268 		
    269 		$table->addIndex('pageid');
    270 		$table->addIndex('languageid');
    271 		$table->addIndex('elementid');
    272 		$table->addIndex('active');
    273 		$table->addIndex('lastchange_date');
    274 		$table->addIndex('publish');
    275 		
    276 		
    277 		
    278 		
    279 		
    280 		$table = $this->table('acl')->add();
    281 		$table->column('userid')->type(Column::TYPE_INT)->nullable()->add();
    282 		$table->column('groupid')->type(Column::TYPE_INT)->nullable()->add();
    283 		$table->column('objectid')->type(Column::TYPE_INT)->add();
    284 		$table->column('languageid')->type(Column::TYPE_INT)->size(0)->nullable()->add();
    285 		$table->column('is_write')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    286 		$table->column('is_prop')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    287 		$table->column('is_create_folder')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    288 		$table->column('is_create_file')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    289 		$table->column('is_create_link')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    290 		$table->column('is_create_page')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    291 		$table->column('is_delete')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    292 		$table->column('is_release')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    293 		$table->column('is_publish')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    294 		$table->column('is_grant')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    295 		$table->column('is_transmit')->type(Column::TYPE_INT)->size(1)->defaultValue(0)->add();
    296 		$table->addPrimaryKey();
    297 		$table->addConstraint('groupid', 'group');
    298 		$table->addConstraint('userid', 'user');
    299 		$table->addConstraint('objectid', 'object');
    300 		$table->addConstraint('languageid', 'language');
    301 		
    302 		$table->addIndex('userid');
    303 		$table->addIndex('groupid');
    304 		$table->addIndex('languageid');
    305 		$table->addIndex('objectid');
    306 		$table->addIndex('is_transmit');
    307 
    308 		$this->afterUpdate( $this->getDb() );
    309 	}
    310 
    311 
    312 
    313     /**
    314      * Initialisieren der frisch aktualisierten Datenbank.
    315      *
    316      * @param Database $db
    317      */
    318     private function afterUpdate( Database $db )
    319     {
    320         // Benutzer zählen.
    321         $sql = $db->sql('SELECT COUNT(*) From {{user}}',$db->id);
    322         $countUsers = $sql->getOne();
    323 
    324         // Wenn noch kein Benutzer vorhanden, dann einen anlegen.
    325         if	( $countUsers == 0 )
    326         {
    327             // Hashing the admin password with MD5. In Version 6 the Algo will be set to 2 (=MD5).
    328             $sql = $db->sql("INSERT INTO {{user}} (id,name,password,ldap_dn,fullname,tel,mail,descr,style,is_admin) VALUES(1,'admin','21232f297a57a5a743894a0e4a801fc3','','Administrator','','','Account for administration tasks.','default',1)",$db->id);
    329             $sql->execute();
    330             $db->commit();
    331         }
    332     }
    333 
    334 
    335 }