openrat-cms

# OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

DBVersion000001.class.php (15324B)


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