commit 3b1fcabe32e97041001b0b054584485ed0043adf
parent e20f5c52857d01e2ece247908fb44064a9efd2c9
Author: Jan Dankert <devnull@localhost>
Date: Wed, 20 Dec 2017 23:02:40 +0100
Das Projekt erhält eine neue Spalte 'flags', in der alle möglichen Einstellungen als Bitmaske hinterlegt werden können. Außerdem Refactoring der DBUpdate-Schnittstelle, möglichst häufig Konstanten verwenden.
Diffstat:
14 files changed, 303 insertions(+), 195 deletions(-)
diff --git a/db/DbUpdate.class.php b/db/DbUpdate.class.php
@@ -2,7 +2,7 @@
use database\Database;
-define('OR_DB_SUPPORTED_VERSION',10);
+define('OR_DB_SUPPORTED_VERSION',11);
define('OR_DB_STATUS_UPDATE_PROGRESS', 0);
define('OR_DB_STATUS_UPDATE_SUCCESS' , 1);
diff --git a/db/update/DBVersion000001.class.php b/db/update/DBVersion000001.class.php
@@ -19,27 +19,27 @@ class DBVersion000001 extends DbVersion
$this->addTable('project');
- $this->addColumn('project','name' ,'VARCHAR', 128,null,$not_nullable);
- $this->addColumn('project','target_dir' ,'VARCHAR', 255,null,$not_nullable);
- $this->addColumn('project','ftp_url' ,'VARCHAR', 255,null,$not_nullable);
- $this->addColumn('project','ftp_passive' ,'INT' ,null,null,$not_nullable);
- $this->addColumn('project','cmd_after_publish' ,'VARCHAR', 255,null,$not_nullable);
- $this->addColumn('project','content_negotiation','INT' , 1, 0,$not_nullable);
- $this->addColumn('project','cut_index' ,'INT' , 1, 0,$not_nullable);
+ $this->addColumn('project','name' ,OR_DB_COLUMN_TYPE_VARCHAR, 128,null,$not_nullable);
+ $this->addColumn('project','target_dir' ,OR_DB_COLUMN_TYPE_VARCHAR, 255,null,$not_nullable);
+ $this->addColumn('project','ftp_url' ,OR_DB_COLUMN_TYPE_VARCHAR, 255,null,$not_nullable);
+ $this->addColumn('project','ftp_passive' ,OR_DB_COLUMN_TYPE_INT ,null,null,$not_nullable);
+ $this->addColumn('project','cmd_after_publish' ,OR_DB_COLUMN_TYPE_VARCHAR, 255,null,$not_nullable);
+ $this->addColumn('project','content_negotiation',OR_DB_COLUMN_TYPE_INT , 1, 0,$not_nullable);
+ $this->addColumn('project','cut_index' ,OR_DB_COLUMN_TYPE_INT , 1, 0,$not_nullable);
$this->addPrimaryKey('project','id');
$this->addIndex('project','name');
/*
*
- $this->addColumn('id','INT',null,null,$not_nullable);
- $this->addColumn('name','VARCHAR',128,null,$not_nullable);
- $this->addColumn('target_dir','VARCHAR',255,null,$not_nullable);
- $this->addColumn('ftp_url','VARCHAR',255,null,$not_nullable);
- $this->addColumn('ftp_passive','INT',1,0,$not_nullable);
- $this->addColumn('cmd_after_publish','VARCHAR',255,null,$not_nullable);
- $this->addColumn('content_negotiation','INT',1,0,$not_nullable);
- $this->addColumn('cut_$this->addIndex('','INT');',1,0,$not_nullable);
+ $this->addColumn('id',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
+ $this->addColumn('name',OR_DB_COLUMN_TYPE_VARCHAR,128,null,$not_nullable);
+ $this->addColumn('target_dir',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('ftp_url',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('ftp_passive',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('cmd_after_publish',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('content_negotiation',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('cut_$this->addIndex('',OR_DB_COLUMN_TYPE_INT);',1,0,$not_nullable);
$this->addPrimaryKey('','id');
close_table
unique_$this->addIndex('','name');
@@ -49,36 +49,36 @@ class DBVersion000001 extends DbVersion
$this->addTable('user');
- $this->addColumn('user','name','VARCHAR',128,null,$not_nullable);
- $this->addColumn('user','password','VARCHAR',50,null,$not_nullable);
- $this->addColumn('user','ldap_dn','VARCHAR',255,null,$not_nullable);
- $this->addColumn('user','fullname','VARCHAR',128,null,$not_nullable);
- $this->addColumn('user','tel','VARCHAR',128,null,$not_nullable);
- $this->addColumn('user','mail','VARCHAR',255,null,$not_nullable);
- $this->addColumn('user','descr','VARCHAR',255,null,$not_nullable);
- $this->addColumn('user','style','VARCHAR',64,null,$not_nullable);
- $this->addColumn('user','is_admin','INT',1,0,$not_nullable);
+ $this->addColumn('user','name',OR_DB_COLUMN_TYPE_VARCHAR,128,null,$not_nullable);
+ $this->addColumn('user','password',OR_DB_COLUMN_TYPE_VARCHAR,50,null,$not_nullable);
+ $this->addColumn('user','ldap_dn',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('user','fullname',OR_DB_COLUMN_TYPE_VARCHAR,128,null,$not_nullable);
+ $this->addColumn('user','tel',OR_DB_COLUMN_TYPE_VARCHAR,128,null,$not_nullable);
+ $this->addColumn('user','mail',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('user','descr',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('user','style',OR_DB_COLUMN_TYPE_VARCHAR,64,null,$not_nullable);
+ $this->addColumn('user','is_admin',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
$this->addPrimaryKey('user','id');
$this->addUniqueIndex('user','name');
$this->addTable('group');
- $this->addColumn('group','name','VARCHAR',100,null,$not_nullable);
+ $this->addColumn('group','name',OR_DB_COLUMN_TYPE_VARCHAR,100,null,$not_nullable);
$this->addPrimaryKey('group','id');
$this->addUniqueIndex('group','name');
$this->addTable('object');
- $this->addColumn('object','parentid','INT',null,null,$nullable);
- $this->addColumn('object','projectid','INT',0,0,$not_nullable);
- $this->addColumn('object','filename','VARCHAR',255,null,$not_nullable);
- $this->addColumn('object','orderid','INT',0,null,$not_nullable);
- $this->addColumn('object','create_date','INT',0,null,$not_nullable);
- $this->addColumn('object','create_userid','INT',0,null,$nullable);
- $this->addColumn('object','lastchange_date','INT',0,null,$not_nullable);
- $this->addColumn('object','lastchange_userid','INT',0,null,$nullable);
- $this->addColumn('object','is_folder','INT',1,null,$not_nullable);
- $this->addColumn('object','is_file','INT',1,null,$not_nullable);
- $this->addColumn('object','is_page','INT',1,null,$not_nullable);
- $this->addColumn('object','is_link','INT',1,null,$not_nullable);
+ $this->addColumn('object','parentid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('object','projectid',OR_DB_COLUMN_TYPE_INT,0,0,$not_nullable);
+ $this->addColumn('object','filename',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('object','orderid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('object','create_date',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('object','create_userid',OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
+ $this->addColumn('object','lastchange_date',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('object','lastchange_userid',OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
+ $this->addColumn('object','is_folder',OR_DB_COLUMN_TYPE_INT,1,null,$not_nullable);
+ $this->addColumn('object','is_file',OR_DB_COLUMN_TYPE_INT,1,null,$not_nullable);
+ $this->addColumn('object','is_page',OR_DB_COLUMN_TYPE_INT,1,null,$not_nullable);
+ $this->addColumn('object','is_link',OR_DB_COLUMN_TYPE_INT,1,null,$not_nullable);
$this->addPrimaryKey('object','id');
$this->addConstraint('object','projectid','project','id');
$this->addConstraint('object','lastchange_userid','user','id');
@@ -99,8 +99,8 @@ class DBVersion000001 extends DbVersion
$this->addTable('template');
- $this->addColumn('template','projectid','INT',null,null,$not_nullable);
- $this->addColumn('template','name','VARCHAR',50,null,$not_nullable);
+ $this->addColumn('template','projectid',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
+ $this->addColumn('template','name',OR_DB_COLUMN_TYPE_VARCHAR,50,null,$not_nullable);
$this->addPrimaryKey('template','id');
$this->addConstraint('template','projectid','project','id');
@@ -111,10 +111,10 @@ class DBVersion000001 extends DbVersion
$this->addTable('language');
- $this->addColumn('language','projectid','INT',0,null,$not_nullable);
- $this->addColumn('language','isocode','VARCHAR',10,null,$not_nullable);
- $this->addColumn('language','name','VARCHAR',50,null,$not_nullable);
- $this->addColumn('language','is_default','INT',1,0,$not_nullable);
+ $this->addColumn('language','projectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('language','isocode',OR_DB_COLUMN_TYPE_VARCHAR,10,null,$not_nullable);
+ $this->addColumn('language','name',OR_DB_COLUMN_TYPE_VARCHAR,50,null,$not_nullable);
+ $this->addColumn('language','is_default',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
$this->addPrimaryKey('language','id');
$this->addConstraint('language','projectid','project','id');
$this->addUniqueIndex('language','projectid,isocode');
@@ -123,8 +123,8 @@ class DBVersion000001 extends DbVersion
$this->addTable('page');
- $this->addColumn('page','objectid','INT',0,null,$not_nullable);
- $this->addColumn('page','templateid','INT',0,null,$not_nullable);
+ $this->addColumn('page','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('page','templateid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
$this->addPrimaryKey('page','id');
$this->addConstraint('page','templateid','template','id');
$this->addConstraint('page','objectid','object','id');
@@ -136,10 +136,10 @@ class DBVersion000001 extends DbVersion
$this->addTable('projectmodel');
- $this->addColumn('projectmodel','projectid','INT',0,null,$not_nullable);
- $this->addColumn('projectmodel','name','VARCHAR',50,null,$not_nullable);
- $this->addColumn('projectmodel','extension','VARCHAR',10,null,$nullable);
- $this->addColumn('projectmodel','is_default','INT',1,0,$not_nullable);
+ $this->addColumn('projectmodel','projectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('projectmodel','name',OR_DB_COLUMN_TYPE_VARCHAR,50,null,$not_nullable);
+ $this->addColumn('projectmodel','extension',OR_DB_COLUMN_TYPE_VARCHAR,10,null,$nullable);
+ $this->addColumn('projectmodel','is_default',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
$this->addPrimaryKey('projectmodel','id');
$this->addConstraint('projectmodel','projectid','project','id');
@@ -148,24 +148,24 @@ class DBVersion000001 extends DbVersion
$this->addTable('element');
- $this->addColumn('element','templateid','INT',0,0,$not_nullable);
- $this->addColumn('element','name','VARCHAR',50,null,$not_nullable);
- $this->addColumn('element','descr','VARCHAR',255,null,$not_nullable);
- $this->addColumn('element','type','VARCHAR',20,null,$not_nullable);
- $this->addColumn('element','subtype','VARCHAR',20,null,$nullable);
- $this->addColumn('element','with_icon','INT',1,0,$not_nullable);
- $this->addColumn('element','dateformat','VARCHAR',100,null,$nullable);
- $this->addColumn('element','wiki','INT',1,0,$nullable);
- $this->addColumn('element','html','INT',1,0,$nullable);
- $this->addColumn('element','all_languages','INT',1,0,$not_nullable);
- $this->addColumn('element','writable','INT',1,0,$not_nullable);
- $this->addColumn('element','decimals','INT',0,null,$nullable);
- $this->addColumn('element','dec_point','VARCHAR',5,null,$nullable);
- $this->addColumn('element','thousand_sep','VARCHAR',1,null,$nullable);
- $this->addColumn('element','code','TEXT',null,null,$nullable);
- $this->addColumn('element','default_text','TEXT',null,null,$nullable);
- $this->addColumn('element','folderobjectid','INT',null,null,$nullable);
- $this->addColumn('element','default_objectid','INT',null,null,$nullable);
+ $this->addColumn('element','templateid',OR_DB_COLUMN_TYPE_INT,0,0,$not_nullable);
+ $this->addColumn('element','name',OR_DB_COLUMN_TYPE_VARCHAR,50,null,$not_nullable);
+ $this->addColumn('element','descr',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('element','type',OR_DB_COLUMN_TYPE_VARCHAR,20,null,$not_nullable);
+ $this->addColumn('element','subtype',OR_DB_COLUMN_TYPE_VARCHAR,20,null,$nullable);
+ $this->addColumn('element','with_icon',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('element','dateformat',OR_DB_COLUMN_TYPE_VARCHAR,100,null,$nullable);
+ $this->addColumn('element','wiki',OR_DB_COLUMN_TYPE_INT,1,0,$nullable);
+ $this->addColumn('element','html',OR_DB_COLUMN_TYPE_INT,1,0,$nullable);
+ $this->addColumn('element','all_languages',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('element','writable',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('element','decimals',OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
+ $this->addColumn('element','dec_point',OR_DB_COLUMN_TYPE_VARCHAR,5,null,$nullable);
+ $this->addColumn('element','thousand_sep',OR_DB_COLUMN_TYPE_VARCHAR,1,null,$nullable);
+ $this->addColumn('element','code',OR_DB_COLUMN_TYPE_TEXT,null,null,$nullable);
+ $this->addColumn('element','default_text',OR_DB_COLUMN_TYPE_TEXT,null,null,$nullable);
+ $this->addColumn('element','folderobjectid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('element','default_objectid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
$this->addPrimaryKey('element','id');
$this->addConstraint('element','default_objectid','object','id');
$this->addConstraint('element','folderobjectid','object','id');
@@ -179,10 +179,10 @@ class DBVersion000001 extends DbVersion
$this->addTable('file');
- $this->addColumn('file','objectid','INT',0,null,$not_nullable);
- $this->addColumn('file','extension','VARCHAR',10,null,$not_nullable);
- $this->addColumn('file','size','INT',0,null,$not_nullable);
- $this->addColumn('file','value','BLOB',null,null,$not_nullable);
+ $this->addColumn('file','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('file','extension',OR_DB_COLUMN_TYPE_VARCHAR,10,null,$not_nullable);
+ $this->addColumn('file','size',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('file','value',OR_DB_COLUMN_TYPE_BLOB,null,null,$not_nullable);
$this->addPrimaryKey('file','id');
$this->addConstraint('file','objectid','object','id');
@@ -191,7 +191,7 @@ class DBVersion000001 extends DbVersion
$this->addTable('folder');
- $this->addColumn('folder','objectid','INT',0,null,$not_nullable);
+ $this->addColumn('folder','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
$this->addPrimaryKey('folder','id');
$this->addConstraint('folder','objectid','object','id');
@@ -202,9 +202,9 @@ class DBVersion000001 extends DbVersion
$this->addTable('link');
- $this->addColumn('link','objectid','INT',0,null,$not_nullable);
- $this->addColumn('link','link_objectid','INT',null,null,$nullable);
- $this->addColumn('link','url','VARCHAR',255,null,$nullable);
+ $this->addColumn('link','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('link','link_objectid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('link','url',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$nullable);
$this->addPrimaryKey('link','id');
$this->addConstraint('link','objectid','object','id');
$this->addConstraint('link','link_objectid','object','id');
@@ -217,10 +217,10 @@ class DBVersion000001 extends DbVersion
$this->addTable('name');
- $this->addColumn('name','objectid','INT',0,null,$not_nullable);
- $this->addColumn('name','name','VARCHAR',255,null,$not_nullable);
- $this->addColumn('name','descr','VARCHAR',255,null,$not_nullable);
- $this->addColumn('name','languageid','INT',0,null,$not_nullable);
+ $this->addColumn('name','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('name','name',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('name','descr',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
+ $this->addColumn('name','languageid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
$this->addPrimaryKey('name','id');
$this->addConstraint('name','objectid','object','id');
$this->addConstraint('name','languageid','language','id');
@@ -234,10 +234,10 @@ class DBVersion000001 extends DbVersion
$this->addTable('templatemodel');
- $this->addColumn('templatemodel','templateid','INT',0,null,$not_nullable);
- $this->addColumn('templatemodel','projectmodelid','INT',0,null,$not_nullable);
- $this->addColumn('templatemodel','extension','VARCHAR',10,null,$nullable);
- $this->addColumn('templatemodel','text','TEXT',null,null,$not_nullable);
+ $this->addColumn('templatemodel','templateid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('templatemodel','projectmodelid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('templatemodel','extension',OR_DB_COLUMN_TYPE_VARCHAR,10,null,$nullable);
+ $this->addColumn('templatemodel',OR_DB_COLUMN_TYPE_TEXT,OR_DB_COLUMN_TYPE_TEXT,null,null,$not_nullable);
$this->addPrimaryKey('templatemodel','id');
$this->addConstraint('templatemodel','templateid','template','id');
$this->addConstraint('templatemodel','projectmodelid','projectmodel','id');
@@ -251,8 +251,8 @@ class DBVersion000001 extends DbVersion
$this->addTable('usergroup');
- $this->addColumn('usergroup','userid','INT',null,null,$not_nullable);
- $this->addColumn('usergroup','groupid','INT',null,null,$not_nullable);
+ $this->addColumn('usergroup','userid',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
+ $this->addColumn('usergroup','groupid',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
$this->addPrimaryKey('usergroup','id');
$this->addConstraint('usergroup','groupid','group','id');
$this->addConstraint('usergroup','userid','user','id');
@@ -265,17 +265,17 @@ class DBVersion000001 extends DbVersion
$this->addTable('value');
- $this->addColumn('value','pageid','INT',0,null,$not_nullable);
- $this->addColumn('value','languageid','INT',null,null,$not_nullable);
- $this->addColumn('value','elementid','INT',0,null,$not_nullable);
- $this->addColumn('value','linkobjectid','INT',null,null,$nullable);
- $this->addColumn('value','text','TEXT',null,null,$nullable);
- $this->addColumn('value','number','INT',null,null,$nullable);
- $this->addColumn('value','date','INT',null,null,$nullable);
- $this->addColumn('value','active','INT',0,null,$not_nullable);
- $this->addColumn('value','lastchange_date','INT',0,null,$not_nullable);
- $this->addColumn('value','lastchange_userid','INT',null,null,$nullable);
- $this->addColumn('value','publish','INT',null,null,$not_nullable);
+ $this->addColumn('value','pageid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('value','languageid',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
+ $this->addColumn('value','elementid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('value','linkobjectid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('value',OR_DB_COLUMN_TYPE_TEXT,OR_DB_COLUMN_TYPE_TEXT,null,null,$nullable);
+ $this->addColumn('value','number',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('value','date',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('value','active',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('value','lastchange_date',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('value','lastchange_userid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('value','publish',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
$this->addPrimaryKey('value','id');
$this->addConstraint('value','pageid','page','id');
$this->addConstraint('value','elementid','element','id');
@@ -295,21 +295,21 @@ class DBVersion000001 extends DbVersion
$this->addTable('acl');
- $this->addColumn('acl','userid','INT',null,null,$nullable);
- $this->addColumn('acl','groupid','INT',null,null,$nullable);
- $this->addColumn('acl','objectid','INT',null,null,$not_nullable);
- $this->addColumn('acl','languageid','INT',0,null,$nullable);
- $this->addColumn('acl','is_write','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_prop','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_create_folder','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_create_file','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_create_link','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_create_page','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_delete','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_release','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_publish','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_grant','INT',1,0,$not_nullable);
- $this->addColumn('acl','is_transmit','INT',1,0,$not_nullable);
+ $this->addColumn('acl','userid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('acl','groupid',OR_DB_COLUMN_TYPE_INT,null,null,$nullable);
+ $this->addColumn('acl','objectid',OR_DB_COLUMN_TYPE_INT,null,null,$not_nullable);
+ $this->addColumn('acl','languageid',OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
+ $this->addColumn('acl','is_write',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_prop',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_create_folder',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_create_file',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_create_link',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_create_page',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_delete',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_release',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_publish',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_grant',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
+ $this->addColumn('acl','is_transmit',OR_DB_COLUMN_TYPE_INT,1,0,$not_nullable);
$this->addPrimaryKey('acl','id');
$this->addConstraint('acl','groupid','group','id');
$this->addConstraint('acl','userid','user','id');
diff --git a/db/update/DBVersion000002.class.php b/db/update/DBVersion000002.class.php
@@ -12,9 +12,9 @@ class DBVersion000002 extends DbVersion
{
$this->addTable('version');
- $this->addColumn('version','version' ,'INT',null,null,false);
- $this->addColumn('version','status' ,'INT',null,null,false);
- $this->addColumn('version','installed','INT',null,null,false);
+ $this->addColumn('version','version' ,OR_DB_COLUMN_TYPE_INT,null,null,false);
+ $this->addColumn('version','status' ,OR_DB_COLUMN_TYPE_INT,null,null,false);
+ $this->addColumn('version','installed',OR_DB_COLUMN_TYPE_INT,null,null,false);
$this->addPrimaryKey ('version','id' );
$this->addIndex ('version','status' );
diff --git a/db/update/DBVersion000004.class.php b/db/update/DBVersion000004.class.php
@@ -15,10 +15,10 @@ class DBVersion000004 extends DbVersion
$nullable = true;
// Add user language
- $this->addColumn('user','language','VARCHAR', 2,null,$nullable);
+ $this->addColumn('user','language',OR_DB_COLUMN_TYPE_VARCHAR, 2,null,$nullable);
// Add user timezone
- $this->addColumn('user','timezone','VARCHAR',64,null,$nullable);
+ $this->addColumn('user','timezone',OR_DB_COLUMN_TYPE_VARCHAR,64,null,$nullable);
}
}
diff --git a/db/update/DBVersion000005.class.php b/db/update/DBVersion000005.class.php
@@ -15,7 +15,7 @@ class DBVersion000005 extends DbVersion
$nullable = true;
// longer Passwords! 50 is not enough.
- $this->addColumn('user','password_hash','VARCHAR',255,null,$not_nullable);
+ $this->addColumn('user','password_hash',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
$db = $this->getDb();
$table = $this->getTableName('user');
@@ -26,7 +26,7 @@ class DBVersion000005 extends DbVersion
$this->dropColumn('user','password');
- $this->addColumn('user','password_salt','VARCHAR',255,null,$not_nullable);
+ $this->addColumn('user','password_salt',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
}
}
diff --git a/db/update/DBVersion000006.class.php b/db/update/DBVersion000006.class.php
@@ -14,11 +14,11 @@ class DBVersion000006 extends DbVersion
$not_nullable = false;
$nullable = true;
- $this->addColumn('user','password_expires','INT',0,null,$nullable);
+ $this->addColumn('user','password_expires',OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
- $this->addColumn('user','last_login' ,'INT',0,null,$nullable);
+ $this->addColumn('user','last_login' ,OR_DB_COLUMN_TYPE_INT,0,null,$nullable);
- $this->addColumn('user','password_algo' ,'INT',0,2,$not_nullable);
+ $this->addColumn('user','password_algo' ,OR_DB_COLUMN_TYPE_INT,0,2,$not_nullable);
// Setting Password algo. Passwords beginning with '$' are (old) MD5-hashes.
diff --git a/db/update/DBVersion000007.class.php b/db/update/DBVersion000007.class.php
@@ -15,7 +15,7 @@ class DBVersion000007 extends DbVersion
$not_nullable = false;
$nullable = true;
- $this->addColumn('user','otp_secret' ,'VARCHAR',255,null,$nullable );
+ $this->addColumn('user','otp_secret' ,OR_DB_COLUMN_TYPE_VARCHAR,255,null,$nullable );
$table = $this->getTableName('user');
$db = $this->getDb();
@@ -29,9 +29,9 @@ class DBVersion000007 extends DbVersion
$stmt->query();
}
- $this->addColumn('user','totp' ,'INT' , 1, 0,$not_nullable);
- $this->addColumn('user','hotp_counter','INT' , 0, 0,$not_nullable);
- $this->addColumn('user','hotp' ,'INT' , 1, 0,$not_nullable);
+ $this->addColumn('user','totp' ,OR_DB_COLUMN_TYPE_INT , 1, 0,$not_nullable);
+ $this->addColumn('user','hotp_counter',OR_DB_COLUMN_TYPE_INT , 0, 0,$not_nullable);
+ $this->addColumn('user','hotp' ,OR_DB_COLUMN_TYPE_INT , 1, 0,$not_nullable);
}
}
diff --git a/db/update/DBVersion000008.class.php b/db/update/DBVersion000008.class.php
@@ -18,7 +18,7 @@ class DBVersion000008 extends DbVersion
$not_nullable = false;
$nullable = true;
- $this->addColumn('object','typeid','INT',2,0,$not_nullable);
+ $this->addColumn('object','typeid',OR_DB_COLUMN_TYPE_INT,2,0,$not_nullable);
$this->addIndex('object','typeid');
// Converting old values...
diff --git a/db/update/DBVersion000009.class.php b/db/update/DBVersion000009.class.php
@@ -23,8 +23,8 @@ class DBVersion000009 extends DbVersion
// Creating new table 'url'
$this->addTable('url');
- $this->addColumn('url','objectid','INT',0,null,$not_nullable);
- $this->addColumn('url','url','VARCHAR',255,null,$not_nullable);
+ $this->addColumn('url','objectid',OR_DB_COLUMN_TYPE_INT,0,null,$not_nullable);
+ $this->addColumn('url','url',OR_DB_COLUMN_TYPE_VARCHAR,255,null,$not_nullable);
$this->addPrimaryKey('url','id');
$this->addConstraint('url','objectid','object','id');
diff --git a/db/update/DBVersion000010.class.php b/db/update/DBVersion000010.class.php
@@ -3,7 +3,7 @@ use database\DbVersion;
use security\Password;
/**
- * Filetype 'file' is now devided into 'file' (unchanged), 'image' (new) and 'text' (new).
+ * Filetype 'file' is now devided into 'file' (unchanged), 'image' (new) and OR_DB_COLUMN_TYPE_TEXT (new).
*
* @author dankert
*
@@ -27,7 +27,7 @@ class DBVersion000010 extends DbVersion
$updateStmt = $db->sql('UPDATE '.$tableObject.
' SET typeid=7 WHERE id IN (SELECT objectid FROM '.$tableFile.
- " WHERE extension IN ('css','text','txt','js','html','xml','log','ini','gpx') )"
+ " WHERE extension IN ('css',OR_DB_COLUMN_TYPE_TEXT,'txt','js','html','xml','log','ini','gpx') )"
);
$updateStmt->query();
diff --git a/db/update/DBVersion000011.class.php b/db/update/DBVersion000011.class.php
@@ -0,0 +1,58 @@
+<?php
+
+use database\DbVersion;
+use security\Password;
+
+/**
+ * Project gets new columns.
+ *
+ * @author dankert
+ *
+ */
+class DBVersion000011 extends DbVersion
+{
+ /**
+ *
+ */
+ public function update()
+ {
+ $not_nullable = false;
+ $nullable = true;
+
+
+ $this->addColumn('project', 'url', OR_DB_COLUMN_TYPE_VARCHAR, 255, '', $not_nullable);
+ $this->addColumn('project', 'flags', OR_DB_COLUMN_TYPE_INT, 11, 0, $not_nullable);
+
+ $db = $this->getDb();
+ $tableProject = $this->getTableName('project');
+
+ // Update the url
+ $updateStmt = $db->sql(<<<SQL
+UPDATE $tableProject
+ SET url= CONCAT('//',name)
+SQL
+ );
+ $updateStmt->query();
+
+ // Update the new flags
+ $updateStmt = $db->sql(<<<SQL
+UPDATE $tableProject
+ SET flags=flags+1 WHERE cut_index=1
+SQL
+ );
+ $updateStmt->query();
+
+ $updateStmt = $db->sql(<<<SQL
+UPDATE $tableProject
+ SET flags=flags+2 WHERE content_negotiation=1
+SQL
+ );
+ $updateStmt->query();
+
+ // now the information is hold in column 'flags', so we can delete the old columns.
+ $this->dropColumn('project', 'cut_index');
+ $this->dropColumn('project', 'content_negotiation');
+ }
+}
+
+?>+
\ No newline at end of file
diff --git a/modules/cms-core/model/Project.class.php b/modules/cms-core/model/Project.class.php
@@ -2,6 +2,11 @@
namespace cms\model;
+define('PROJECT_FLAG_CUT_INDEX',1);
+define('PROJECT_FLAG_CONTENT_NEGOTIATION',2);
+define('PROJECT_FLAG_PUBLISH_FILE_EXTENSION',4);
+define('PROJECT_FLAG_PUBLISH_PAGE_EXTENSION',8);
+
use database\Database;
use Session;
@@ -12,7 +17,7 @@ use Session;
* @author Jan Dankert
* @package openrat.objects
*/
-class Project
+class Project extends ModelBase
{
// Eigenschaften
var $projectid;
@@ -21,9 +26,28 @@ class Project
var $ftp_url;
var $ftp_passive;
var $cmd_after_publish;
- var $content_negotiation;
- var $cut_index;
-
+
+
+ /**
+ * @var boolean
+ */
+ public $content_negotiation = false;
+
+ /**
+ * @var boolean
+ */
+ public $cut_index = false;
+
+ /**
+ * @var boolean
+ */
+ public $publishFileExtension = true;
+
+ /**
+ * @var boolean
+ */
+ public $publishPageExtension = true;
+
var $log = array();
@@ -186,8 +210,10 @@ class Project
$this->ftp_url = $row['ftp_url' ];
$this->ftp_passive = $row['ftp_passive' ];
$this->cmd_after_publish = $row['cmd_after_publish' ];
- $this->content_negotiation = $row['content_negotiation'];
- $this->cut_index = $row['cut_index' ];
+ $this->cut_index = $row['flags']&PROJECT_FLAG_CUT_INDEX;
+ $this->content_negotiation = $row['flags']&PROJECT_FLAG_CONTENT_NEGOTIATION;
+ $this->publishFileExtension = $row['flags']&PROJECT_FLAG_PUBLISH_FILE_EXTENSION;
+ $this->publishPageExtension = $row['flags']&PROJECT_FLAG_PUBLISH_PAGE_EXTENSION;
}
@@ -207,9 +233,11 @@ class Project
$this->ftp_url = $row['ftp_url' ];
$this->ftp_passive = $row['ftp_passive' ];
$this->cmd_after_publish = $row['cmd_after_publish' ];
- $this->content_negotiation = $row['content_negotiation'];
- $this->cut_index = $row['cut_index' ];
- }
+ $this->cut_index = $row['flags']&PROJECT_FLAG_CUT_INDEX;
+ $this->content_negotiation = $row['flags']&PROJECT_FLAG_CONTENT_NEGOTIATION;
+ $this->publishFileExtension = $row['flags']&PROJECT_FLAG_PUBLISH_FILE_EXTENSION;
+ $this->publishPageExtension = $row['flags']&PROJECT_FLAG_PUBLISH_PAGE_EXTENSION;
+ }
// Speichern
@@ -223,8 +251,7 @@ class Project
target_dir = {target_dir},
ftp_url = {ftp_url},
ftp_passive = {ftp_passive},
- cut_index = {cut_index},
- content_negotiation = {content_negotiation},
+ flags = {flags},
cmd_after_publish = {cmd_after_publish}
WHERE id= {projectid}
SQL
@@ -235,8 +262,14 @@ SQL
$sql->setString('target_dir' ,$this->target_dir );
$sql->setInt ('ftp_passive' ,$this->ftp_passive );
$sql->setString('cmd_after_publish' ,$this->cmd_after_publish );
- $sql->setInt ('content_negotiation',$this->content_negotiation );
- $sql->setInt ('cut_index' ,$this->cut_index );
+
+ $flags = 0;
+ if( $this->cut_index) $flags |= PROJECT_FLAG_CUT_INDEX;
+ if( $this->content_negotiation) $flags |= PROJECT_FLAG_CONTENT_NEGOTIATION;
+ if( $this->publishFileExtension) $flags |= PROJECT_FLAG_PUBLISH_PAGE_EXTENSION;
+ if( $this->publishPageExtension) $flags |= PROJECT_FLAG_PUBLISH_PAGE_EXTENSION;
+
+ $sql->setInt ('flags' ,$flags );
$sql->setInt ('projectid' ,$this->projectid );
$sql->query();
@@ -255,32 +288,29 @@ SQL
}
- // Speichern
+ /**
+ * Liefert alle Eigenschaften des Projektes.
+ */
public function getProperties()
{
- return Array( 'name' =>$this->name,
- 'target_dir' =>$this->target_dir,
- 'ftp_url' =>$this->ftp_url,
- 'ftp_passive' =>$this->ftp_passive,
- 'cmd_after_publish' =>$this->cmd_after_publish,
- 'content_negotiation'=>$this->content_negotiation,
- 'cut_index' =>$this->cut_index,
- 'projectid' =>$this->projectid );
+ return parent::getProperties();
}
- // Projekt hinzufuegen
- public function add()
+ /**
+ * Add a project to the database.
+ */
+ public function add()
{
$db = db_connection();
-
+
$sql = $db->sql('SELECT MAX(id) FROM {{project}}');
$this->projectid = intval($sql->getOne())+1;
// Projekt hinzuf?gen
- $sql = $db->sql( 'INSERT INTO {{project}} (id,name,target_dir,ftp_url,ftp_passive,cmd_after_publish,content_negotiation,cut_index) '.
- " VALUES( {projectid},{name},'','',0,'',0,0 ) " );
+ $sql = $db->sql( 'INSERT INTO {{project}} (id,name,target_dir,ftp_url,ftp_passive,cmd_after_publish,flags) '.
+ " VALUES( {projectid},{name},'','',0,'',0 ) " );
$sql->setInt ('projectid',$this->projectid );
$sql->setString('name' ,$this->name );
@@ -363,7 +393,7 @@ SQL
}
- // Projekt l?schen
+ // Deleting the project
$sql = $db->sql( 'DELETE FROM {{project}}'.
' WHERE id= {projectid} ' );
$sql->setInt( 'projectid',$this->projectid );
diff --git a/modules/database/DbVersion.class.php b/modules/database/DbVersion.class.php
@@ -1,11 +1,21 @@
<?php
-namespace {
+
+namespace database {
+
define('OR_DB_INDEX_PREFIX', 'IX');
define('OR_DB_CONSTRAINT_PREFIX', 'FK');
-}
-namespace database {
+ define('OR_DB_TYPE_MYSQL',1);
+ define('OR_DB_TYPE_POSTGRES',2);
+ define('OR_DB_TYPE_SQLITE',3);
+ define('OR_DB_TYPE_ORACLE',4);
+
+ define('OR_DB_COLUMN_TYPE_INT',1);
+ define('OR_DB_COLUMN_TYPE_VARCHAR',2);
+ define('OR_DB_COLUMN_TYPE_TEXT',3);
+ define('OR_DB_COLUMN_TYPE_BLOB',4);
+
use Http;
@@ -14,6 +24,11 @@ namespace database {
private $db;
private $tablePrefix;
private $tableSuffix;
+
+ /**
+ * Datenbank-RDBMS-Typ
+ * @var int
+ */
private $dbmsType;
public function __construct(Database $db)
@@ -23,33 +38,33 @@ namespace database {
switch ($db->conf['type']) {
case 'mysql':
case 'mysqli':
- $this->dbmsType = 'mysql';
+ $this->dbmsType = OR_DB_TYPE_MYSQL;
break;
case 'postgresql':
- $this->dbmsType = 'postgresql';
+ $this->dbmsType = OR_DB_TYPE_POSTGRES;
break;
case 'sqlite':
case 'sqlite3':
- $this->dbmsType = 'sqlite';
+ $this->dbmsType = OR_DB_TYPE_SQLITE;
break;
case 'pdo':
$dsnParts = explode(':', $db->conf['dsn']);
switch ($dsnParts[0]) {
case 'mysql':
- $this->dbmsType = 'mysql';
+ $this->dbmsType = OR_DB_TYPE_MYSQL;
break;
case 'pgsql':
- $this->dbmsType = 'postgresql';
+ $this->dbmsType = OR_DB_TYPE_POSTGRES;
break;
case 'sqlite':
- $this->dbmsType = 'sqlite';
+ $this->dbmsType = OR_DB_TYPE_SQLITE;
break;
default:
- Http::serverError('Datebase Configuration Error', 'Unknown DBMS in PDO-DSN: ' . $dsnParts[0]);
+ throw new \LogicException('Unknown DBMS in PDO-DSN: ' . $dsnParts[0]);
}
break;
default:
- Http::serverError('Datebase Configuration Error', 'Unknown DBMS type: ' . $db->conf['type']);
+ throw new \LogicException('Unknown DBMS type: ' . $db->conf['type']);
}
$this->tablePrefix = $db->conf['prefix'];
@@ -69,12 +84,13 @@ namespace database {
/**
* Erzeugt eine neue Tabelle.
* Die neue Tabelle enthält bereits eine Spalte "id" (da eine leere Tabelle i.d.R. nicht zulässig ist).
+ * @param $tableName string
*/
function addTable($tableName)
{
$tableName = $this->getTableName($tableName);
- $table_opts = $this->dbmsType == 'mysql' ? ' ENGINE=InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci' : '';
+ $table_opts = $this->dbmsType == OR_DB_TYPE_MYSQL ? ' ENGINE=InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci' : '';
$ddl = $this->db->sql('CREATE TABLE ' . $tableName . '(id INTEGER)' . $table_opts . ';');
// The syntax 'TYPE = InnoDB' was deprecated in MySQL 5.0 and was removed in MySQL 5.1 and later versions.
@@ -83,28 +99,31 @@ namespace database {
}
- # Creating a new column
- # param 1: column name
- # param 2: type (available are: INT,VARCHAR,TEXT,BLOB)
- # param 3: size (number value)
- # param 4: default (number value)
- # param 5: nullable (available are: J,N)
+ /**
+ * Creating a new column.
+ * @param $tableName string Table name
+ * @param $columnName string Column name
+ * @param $type int one of the constance OR_DB_COLUMN_TYPE_*
+ * @param $size int Size
+ * @param $default mixed Default value
+ * @param $nullable boolean
+ */
function addColumn($tableName, $columnName, $type, $size, $default, $nullable)
{
$table = $this->getTableName($tableName);
$type = strtoupper($type);
switch ($type) {
- case 'INT':
+ case OR_DB_COLUMN_TYPE_INT:
switch ($this->dbmsType) {
- case 'mysql':
+ case OR_DB_TYPE_MYSQL:
if ($size == 1)
$dbmsInternalType = 'TINYINT';
else
$dbmsInternalType = 'INT';
break;
- case 'oracle':
+ case OR_DB_TYPE_ORACLE:
$dbmsInternalType = 'NUMBER';
break;
@@ -114,7 +133,7 @@ namespace database {
}
break;
- case 'VARCHAR':
+ case OR_DB_COLUMN_TYPE_VARCHAR:
switch ($this->dbmsType) {
default:
$dbmsInternalType = 'VARCHAR';
@@ -122,13 +141,13 @@ namespace database {
}
break;
- case 'TEXT':
+ case OR_DB_COLUMN_TYPE_TEXT:
switch ($this->dbmsType) {
- case 'mysql':
+ case OR_DB_TYPE_MYSQL:
$dbmsInternalType = 'MEDIUMTEXT';
break;
- case 'oracle':
+ case OR_DB_TYPE_ORACLE:
$dbmsInternalType = 'CLOB';
break;
@@ -138,21 +157,21 @@ namespace database {
}
break;
- case 'BLOB':
+ case OR_DB_COLUMN_TYPE_BLOB:
switch ($this->dbmsType) {
- case 'mysql':
+ case OR_DB_TYPE_MYSQL:
$dbmsInternalType = 'MEDIUMBLOB';
break;
- case 'oracle':
+ case OR_DB_TYPE_ORACLE:
$dbmsInternalType = 'CLOB';
break;
- case 'postgresql':
+ case OR_DB_TYPE_POSTGRES:
$dbmsInternalType = 'TEXT';
break;
- case 'sqlite':
+ case OR_DB_TYPE_SQLITE:
$dbmsInternalType = 'TEXT';
break;
@@ -162,12 +181,12 @@ namespace database {
}
break;
default:
- Http::serverError('Datebase Configuration Error', 'Unknown Column type: ' . $type);
+ throw new \LogicException( 'Unknown Column type: ' . $type);
}
- if ($this->dbmsType == 'oracle') {
- // TEXT-columns should be nullable in Oracle, because empty strings are treated as NULL
- if ($type == 'VARCHAR' || $type == 'TEXT')
+ if ($this->dbmsType == OR_DB_TYPE_ORACLE) {
+ // TEXT-columns must be nullable in Oracle, because empty strings are treated as NULL. BAD BAD BAD, Oracle!
+ if ($type == OR_DB_COLUMN_TYPE_VARCHAR || $type == OR_DB_COLUMN_TYPE_TEXT)
$nullable = true;
}
diff --git a/modules/util/Http.class.php b/modules/util/Http.class.php
@@ -512,14 +512,14 @@ class Http
if ( @$_REQUEST['output']=='json' || sizeof($types)==1 && in_array('application/json',$types) )
{
header('Content-Type: application/json');
- require_once( OR_SERVICECLASSES_DIR."JSON.class.".PHP_EXT );
+ require_once( OR_MODULES_DIR."util/JSON.class.".PHP_EXT );
$json = new JSON();
echo $json->encode( array('status'=>$status,'error'=>$text,'description'=>$message,'reason'=>$reason) );
}
elseif ( @$_REQUEST['output']=='xml' || sizeof($types)==1 && in_array('application/xml',$types) )
{
header('Content-Type: application/xml');
- require_once( OR_SERVICECLASSES_DIR."XML.class.".PHP_EXT );
+ require_once( OR_MODULES_DIR."util/XML.class.".PHP_EXT );
$xml = new XML();
$xml->root='error';
echo $xml->encode( array('status'=>$status,'error'=>$text,'description'=>$message,'reason'=>$reason) );