Dotclear

source: inc/dbschema/db-schema.php @ 1107:3943962d69b8

Revision 1107:3943962d69b8, 6.7 KB checked in by JcDenis, 12 years ago (diff)

merge with default branch in 2.5-RC

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
14if (!($_s instanceof dbStruct)) {
15     throw new Exception('No valid schema object');
16}
17
18/* Tables
19-------------------------------------------------------- */
20$_s->blog
21     ->blog_id      ('varchar',    32,  false)
22     ->blog_uid     ('varchar',    32,  false)
23     ->blog_creadt  ('timestamp',  0,   false,    'now()')
24     ->blog_upddt   ('timestamp',  0,   false,    'now()')
25     ->blog_url     ('varchar',    255, false)
26     ->blog_name    ('varchar',    255, false)
27     ->blog_desc    ('text',       0,   true)
28     ->blog_status  ('smallint',   0,   false,    1)
29     
30     ->primary('pk_blog','blog_id')
31     ;
32
33$_s->session
34     ->ses_id       ('varchar',    40,  false)
35     ->ses_time     ('integer',    0,   false,    0)
36     ->ses_start    ('integer',    0,   false,    0)
37     ->ses_value    ('text',       0,   false)
38     
39     ->primary('pk_session','ses_id')
40     ;
41
42$_s->setting
43     ->setting_id        ('varchar',    255, false)
44     ->blog_id           ('varchar',    32,  true)
45     ->setting_ns        ('varchar',    32,  false,    "'system'")
46     ->setting_value     ('text',       0,   true,     null)
47     ->setting_type      ('varchar',    8,   false,    "'string'")
48     ->setting_label     ('text',       0,   true)
49     
50     ->unique('uk_setting','setting_ns','setting_id','blog_id')
51     ;
52
53$_s->user
54     ->user_id           ('varchar',    32,  false)
55     ->user_super        ('smallint',   0,   true)
56     ->user_status       ('smallint',   0,   false,    1)
57     ->user_pwd          ('varchar',    40,  false)
58     ->user_change_pwd   ('smallint',   0,   false,    0)
59     ->user_recover_key  ('varchar',    32,  true,     null)
60     ->user_name         ('varchar',    255, true,     null)
61     ->user_firstname    ('varchar',    255, true,     null)
62     ->user_displayname  ('varchar',    255, true,     null)
63     ->user_email        ('varchar',    255, true,     null)
64     ->user_url          ('varchar',    255, true,     null)
65     ->user_desc         ('text',       0,   true)
66     ->user_default_blog ('varchar',    32,  true,     null)
67     ->user_options      ('text',       0,   true)
68     ->user_lang         ('varchar',    5,   true,     null)
69     ->user_tz           ('varchar',    128, false,    "'UTC'")
70     ->user_post_status  ('smallint',   0,   false,    -2)
71     ->user_creadt       ('timestamp',  0,   false,    'now()')
72     ->user_upddt        ('timestamp',  0,   false,    'now()')
73     
74     ->primary('pk_user','user_id')
75     ;
76
77$_s->permissions
78     ->user_id      ('varchar',    32,  false)
79     ->blog_id      ('varchar',    32,  false)
80     ->permissions  ('text',       0,   true)
81     
82     ->primary('pk_permissions','user_id','blog_id')
83     ;
84
85$_s->post
86     ->post_id                ('bigint',     0,   false)
87     ->blog_id                ('varchar',    32,  false)
88     ->user_id                ('varchar',    32,  false)
89     ->post_dt                ('timestamp',  0,   false,    'now()')
90     ->post_tz                ('varchar',    128, false,    "'UTC'")
91     ->post_creadt            ('timestamp',  0,   false,    'now()')
92     ->post_upddt             ('timestamp',  0,   false,    'now()')
93     ->post_type              ('varchar',    32,  false,    "'post'")
94     ->post_format            ('varchar',    32,  false,    "'xhtml'")
95     ->post_url               ('varchar',    255, false)
96     ->post_lang              ('varchar',    5,   true,     null)
97     ->post_title             ('varchar',    255, true,     null)
98     ->post_excerpt           ('text',       0,   true,     null)
99     ->post_excerpt_xhtml     ('text',       0,   true,     null)
100     ->post_content           ('text',       0,   true,     null)
101     ->post_content_xhtml     ('text',       0,   false)
102     ->post_notes             ('text',       0,   true,     null)
103     ->post_meta              ('text',       0,   true,     null)
104     ->post_words             ('text',       0,   true,     null)
105     ->post_status            ('smallint',   0,   false,    0)
106     ->post_selected          ('smallint',   0,   false,    0)
107     ->post_position          ('integer',    0,   false,    0)
108     ->primary('pk_post','post_id')
109     
110     ->unique('uk_post_url','post_url','post_type','blog_id')
111     ;
112
113
114$_s->log
115     ->log_id       ('bigint',     0,   false)
116     ->user_id      ('varchar',    32,  true)
117     ->blog_id      ('varchar',    32,  true)
118     ->log_table    ('varchar',    255, false)
119     ->log_dt       ('timestamp',  0,   false,    'now()')
120     ->log_ip       ('varchar',    39,  false)
121     ->log_msg      ('text',  0,   true,     null)
122     
123     ->primary('pk_log','log_id')
124     ;
125
126$_s->version
127     ->module  ('varchar',    64,  false)
128     ->version ('varchar',    32,  false)
129     
130     ->primary('pk_version','module')
131     ;
132
133$_s->meta
134     ->meta_id      ('varchar',    255, false)
135     ->meta_type    ('varchar',    64,  false)
136     ->post_id      ('bigint',     0,   false)
137     
138     ->primary('pk_meta','meta_id','meta_type','post_id')
139     ;
140
141$_s->pref
142     ->pref_id      ('varchar',    255, false)
143     ->user_id           ('varchar',    32,  true)
144     ->pref_ws      ('varchar',    32,  false,    "'system'")
145     ->pref_value   ('text',       0,   true,     null)
146     ->pref_type         ('varchar',    8,   false,    "'string'")
147     ->pref_label   ('text',       0,   true)
148     
149     ->unique('uk_pref','pref_ws','pref_id','user_id')
150     ;
151
152/* References indexes
153-------------------------------------------------------- */
154$_s->setting->index      ('idx_setting_blog_id',            'btree',  'blog_id');
155$_s->user->index         ('idx_user_user_default_blog',     'btree',  'user_default_blog');
156$_s->permissions->index  ('idx_permissions_blog_id',        'btree',  'blog_id');
157$_s->post->index         ('idx_post_user_id',               'btree',  'user_id');
158$_s->post->index         ('idx_post_blog_id',               'btree',  'blog_id');
159$_s->log->index          ('idx_log_user_id',                'btree',  'user_id');
160$_s->meta->index         ('idx_meta_post_id',     'btree','post_id');
161$_s->meta->index         ('idx_meta_meta_type',   'btree','meta_type');
162$_s->pref->index         ('idx_pref_user_id',               'btree',  'user_id');
163
164/* Performance indexes
165-------------------------------------------------------- */
166$_s->post->index         ('idx_post_post_dt',               'btree',  'post_dt');
167$_s->post->index         ('idx_post_post_dt_post_id',       'btree',  'post_dt','post_id');
168$_s->post->index         ('idx_blog_post_post_dt_post_id',  'btree',  'blog_id','post_dt','post_id');
169$_s->post->index         ('idx_blog_post_post_status',      'btree',  'blog_id','post_status');
170$_s->blog->index         ('idx_blog_blog_upddt',            'btree',  'blog_upddt');
171$_s->user->index         ('idx_user_user_super',            'btree',  'user_super');
172
173/* Foreign keys
174-------------------------------------------------------- */
175$_s->setting->reference('fk_setting_blog','blog_id','blog','blog_id','cascade','cascade');
176$_s->user->reference('fk_user_default_blog','user_default_blog','blog','blog_id','cascade','set null');
177$_s->permissions->reference('fk_permissions_blog','blog_id','blog','blog_id','cascade','cascade');
178$_s->permissions->reference('fk_permissions_user','user_id','user','user_id','cascade','cascade');
179$_s->post->reference('fk_post_user','user_id','user','user_id','cascade','cascade');
180$_s->post->reference('fk_post_blog','blog_id','blog','blog_id','cascade','cascade');
181$_s->log->reference('fk_log_blog','blog_id','blog','blog_id','cascade','set null');
182$_s->meta->reference('fk_meta_post','post_id','post','post_id','cascade','cascade');
183$_s->pref->reference('fk_pref_user','user_id','user','user_id','cascade','cascade');
184
185/* PostgreSQL specific indexes
186-------------------------------------------------------- */
187if ($_s->driver() == 'pgsql')
188{
189     $_s->setting->index      ('idx_setting_blog_id_null',  'btree',  '(blog_id IS NULL)');
190     $_s->pref->index         ('idx_pref_user_id_null',          'btree',  '(user_id IS NULL)');
191}
192?>
Note: See TracBrowser for help on using the repository browser.

Sites map