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 ?>