Dotclear

source: inc/dbschema/db-schema.php @ 0:54703be25dd6

Revision 0:54703be25dd6, 9.6 KB checked in by Dsls <dsls@…>, 14 years ago (diff)

2.3 branch (trunk) first checkin

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2010 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->category
34     ->cat_id       ('bigint',     0,   false)
35     ->blog_id      ('varchar',    32,  false)
36     ->cat_title    ('varchar',    255, false)
37     ->cat_url      ('varchar',    255, false)
38     ->cat_desc     ('text',       0,   true)
39     ->cat_position ('integer',    0,   true,     0)
40     ->cat_lft      ('integer',    0,   true)
41     ->cat_rgt      ('integer',    0,   true)
42     
43     ->primary('pk_category','cat_id')
44     
45     ->unique('uk_cat_url','cat_url','blog_id')
46     ;
47
48$_s->session
49     ->ses_id       ('varchar',    40,  false)
50     ->ses_time     ('integer',    0,   false,    0)
51     ->ses_start    ('integer',    0,   false,    0)
52     ->ses_value    ('text',       0,   false)
53     
54     ->primary('pk_session','ses_id')
55     ;
56
57$_s->setting
58     ->setting_id        ('varchar',    255, false)
59     ->blog_id           ('varchar',    32,  true)
60     ->setting_ns        ('varchar',    32,  false,    "'system'")
61     ->setting_value     ('text',       0,   true,     null)
62     ->setting_type      ('varchar',    8,   false,    "'string'")
63     ->setting_label     ('text',       0,   true)
64     
65     ->unique('uk_setting','setting_ns','setting_id','blog_id')
66     ;
67
68$_s->user
69     ->user_id           ('varchar',    32,  false)
70     ->user_super        ('smallint',   0,   true)
71     ->user_status       ('smallint',   0,   false,    1)
72     ->user_pwd          ('varchar',    40,  false)
73     ->user_change_pwd   ('smallint',   0,   false,    0)
74     ->user_recover_key  ('varchar',    32,  true,     null)
75     ->user_name         ('varchar',    255, true,     null)
76     ->user_firstname    ('varchar',    255, true,     null)
77     ->user_displayname  ('varchar',    255, true,     null)
78     ->user_email        ('varchar',    255, true,     null)
79     ->user_url          ('varchar',    255, true,     null)
80     ->user_desc         ('text',       0,   true)
81     ->user_default_blog ('varchar',    32,  true,     null)
82     ->user_options      ('text',       0,   true)
83     ->user_lang         ('varchar',    5,   true,     null)
84     ->user_tz           ('varchar',    128, false,    "'UTC'")
85     ->user_post_status  ('smallint',   0,   false,    -2)
86     ->user_creadt       ('timestamp',  0,   false,    'now()')
87     ->user_upddt        ('timestamp',  0,   false,    'now()')
88     
89     ->primary('pk_user','user_id')
90     ;
91
92$_s->permissions
93     ->user_id      ('varchar',    32,  false)
94     ->blog_id      ('varchar',    32,  false)
95     ->permissions  ('text',       0,   true)
96     
97     ->primary('pk_permissions','user_id','blog_id')
98     ;
99
100$_s->post
101     ->post_id                ('bigint',     0,   false)
102     ->blog_id                ('varchar',    32,  false)
103     ->user_id                ('varchar',    32,  false)
104     ->cat_id                 ('bigint',     0,   true)
105     ->post_dt                ('timestamp',  0,   false,    'now()')
106     ->post_tz                ('varchar',    128, false,    "'UTC'")
107     ->post_creadt            ('timestamp',  0,   false,    'now()')
108     ->post_upddt             ('timestamp',  0,   false,    'now()')
109     ->post_password          ('varchar',    32,  true,     null)
110     ->post_type              ('varchar',    32,  false,    "'post'")
111     ->post_format            ('varchar',    32,  false,    "'xhtml'")
112     ->post_url               ('varchar',    255, false)
113     ->post_lang              ('varchar',    5,   true,     null)
114     ->post_title             ('varchar',    255, true,     null)
115     ->post_excerpt           ('text',       0,   true,     null)
116     ->post_excerpt_xhtml     ('text',       0,   true,     null)
117     ->post_content           ('text',       0,   true,     null)
118     ->post_content_xhtml     ('text',       0,   false)
119     ->post_notes             ('text',       0,   true,     null)
120     ->post_meta              ('text',       0,   true,     null)
121     ->post_words             ('text',       0,   true,     null)
122     ->post_status            ('smallint',   0,   false,    0)
123     ->post_selected          ('smallint',   0,   false,    0)
124     ->post_position          ('integer',    0,   false,    0)
125     ->post_open_comment      ('smallint',   0,   false,    0)
126     ->post_open_tb           ('smallint',   0,   false,    0)
127     ->nb_comment             ('integer',    0,   false,    0)
128     ->nb_trackback           ('integer',    0,   false,    0)
129     
130     ->primary('pk_post','post_id')
131     
132     ->unique('uk_post_url','post_url','post_type','blog_id')
133     ;
134
135$_s->media
136     ->media_id          ('bigint',     0,   false)
137     ->user_id           ('varchar',    32,  false)
138     ->media_path        ('varchar',    255, false)
139     ->media_title       ('varchar',    255, false)
140     ->media_file        ('varchar',    255, false)
141     ->media_dir         ('varchar',    255, false,    "'.'")
142     ->media_meta        ('text',       0,   true,     null)
143     ->media_dt          ('timestamp',  0,   false,    'now()')
144     ->media_creadt      ('timestamp',  0,   false,    'now()')
145     ->media_upddt       ('timestamp',  0,   false,    'now()')
146     ->media_private     ('smallint',   0,   false,    0)
147     
148     ->primary('pk_media','media_id')
149     ;
150
151$_s->post_media
152     ->media_id     ('bigint',     0,   false)
153     ->post_id      ('bigint',     0,   false)
154     
155     ->primary('pk_post_media','media_id','post_id')
156     ;
157
158$_s->log
159     ->log_id       ('bigint',     0,   false)
160     ->user_id      ('varchar',    32,  true)
161     ->blog_id      ('varchar',    32,  true)
162     ->log_table    ('varchar',    255, false)
163     ->log_dt       ('timestamp',  0,   false,    'now()')
164     ->log_ip       ('varchar',    39,  false)
165     ->log_msg      ('varchar',    255, false)
166     
167     ->primary('pk_log','log_id')
168     ;
169
170$_s->version
171     ->module  ('varchar',    64,  false)
172     ->version ('varchar',    32,  false)
173     
174     ->primary('pk_version','module')
175     ;
176
177$_s->ping
178     ->post_id      ('bigint',     0,   false)
179     ->ping_url     ('varchar',    255, false)
180     ->ping_dt      ('timestamp',  0,   false,    'now()')
181     
182     ->primary('pk_ping','post_id','ping_url')
183     ;
184
185$_s->comment
186     ->comment_id             ('bigint',     0,   false)
187     ->post_id                ('bigint',     0,   false)
188     ->comment_dt             ('timestamp',  0,   false,    'now()')
189     ->comment_tz             ('varchar',    128, false,    "'UTC'")
190     ->comment_upddt          ('timestamp',  0,   false,    'now()')
191     ->comment_author         ('varchar',    255, true,     null)
192     ->comment_email          ('varchar',    255, true,     null)
193     ->comment_site           ('varchar',    255, true,     null)
194     ->comment_content        ('text',       0,   true)
195     ->comment_words          ('text',       0,   true,     null)
196     ->comment_ip             ('varchar',    39,  true,     null)
197     ->comment_status         ('smallint',   0,   true,     0)
198     ->comment_spam_status    ('varchar',    128, true,     0)
199     ->comment_spam_filter    ('varchar',    32,  true,     null)
200     ->comment_trackback      ('smallint',   0,   false,    0)
201     
202     ->primary('pk_comment','comment_id')
203     ;
204
205$_s->meta
206     ->meta_id      ('varchar',    255, false)
207     ->meta_type    ('varchar',    64,  false)
208     ->post_id      ('bigint',     0,   false)
209     
210     ->primary('pk_meta','meta_id','meta_type','post_id')
211     ;
212
213/* References indexes
214-------------------------------------------------------- */
215$_s->category->index     ('idx_category_blog_id',           'btree',  'blog_id');
216$_s->category->index     ('idx_category_cat_lft_blog_id',   'btree',  'blog_id', 'cat_lft');
217$_s->category->index     ('idx_category_cat_rgt_blog_id',   'btree',  'blog_id', 'cat_rgt');
218$_s->setting->index      ('idx_setting_blog_id',            'btree',  'blog_id');
219$_s->user->index         ('idx_user_user_default_blog',     'btree',  'user_default_blog');
220$_s->permissions->index  ('idx_permissions_blog_id',        'btree',  'blog_id');
221$_s->post->index         ('idx_post_cat_id',                'btree',  'cat_id');
222$_s->post->index         ('idx_post_user_id',               'btree',  'user_id');
223$_s->post->index         ('idx_post_blog_id',               'btree',  'blog_id');
224$_s->media->index        ('idx_media_user_id',              'btree',  'user_id');
225$_s->post_media->index   ('idx_post_media_post_id',         'btree',  'post_id');
226$_s->log->index          ('idx_log_user_id',                'btree',  'user_id');
227$_s->comment->index      ('idx_comment_post_id',            'btree',  'post_id');
228$_s->meta->index         ('idx_meta_post_id',     'btree','post_id');
229$_s->meta->index         ('idx_meta_meta_type',   'btree','meta_type');
230
231/* Performance indexes
232-------------------------------------------------------- */
233$_s->comment->index      ('idx_comment_post_id_dt_status',  'btree',  'post_id', 'comment_dt', 'comment_status');
234$_s->post->index         ('idx_post_post_dt',               'btree',  'post_dt');
235$_s->post->index         ('idx_post_post_dt_post_id',       'btree',  'post_dt','post_id');
236$_s->post->index         ('idx_blog_post_post_dt_post_id',  'btree',  'blog_id','post_dt','post_id');
237$_s->post->index         ('idx_blog_post_post_status',      'btree',  'blog_id','post_status');
238$_s->blog->index         ('idx_blog_blog_upddt',            'btree',  'blog_upddt');
239$_s->user->index         ('idx_user_user_super',            'btree',  'user_super');
240
241/* Foreign keys
242-------------------------------------------------------- */
243$_s->category->reference('fk_category_blog','blog_id','blog','blog_id','cascade','cascade');
244$_s->setting->reference('fk_setting_blog','blog_id','blog','blog_id','cascade','cascade');
245$_s->user->reference('fk_user_default_blog','user_default_blog','blog','blog_id','cascade','set null');
246$_s->permissions->reference('fk_permissions_blog','blog_id','blog','blog_id','cascade','cascade');
247$_s->permissions->reference('fk_permissions_user','user_id','user','user_id','cascade','cascade');
248$_s->post->reference('fk_post_category','cat_id','category','cat_id','cascade','set null');
249$_s->post->reference('fk_post_user','user_id','user','user_id','cascade','cascade');
250$_s->post->reference('fk_post_blog','blog_id','blog','blog_id','cascade','cascade');
251$_s->media->reference('fk_media_user','user_id','user','user_id','cascade','cascade');
252$_s->post_media->reference('fk_media','media_id','media','media_id','cascade','cascade');
253$_s->post_media->reference('fk_media_post','post_id','post','post_id','cascade','cascade');
254$_s->ping->reference('fk_ping_post','post_id','post','post_id','cascade','cascade');
255$_s->comment->reference('fk_comment_post','post_id','post','post_id','cascade','cascade');
256$_s->log->reference('fk_log_blog','blog_id','blog','blog_id','cascade','set null');
257$_s->meta->reference('fk_meta_post','post_id','post','post_id','cascade','cascade');
258
259/* PostgreSQL specific indexes
260-------------------------------------------------------- */
261if ($_s->driver() == 'pgsql')
262{
263     $_s->setting->index      ('idx_setting_blog_id_null',  'btree',  '(blog_id IS NULL)');
264     $_s->media->index        ('idx_media_media_path',      'btree',  'media_path', 'media_dir');
265}
266?>
Note: See TracBrowser for help on using the repository browser.

Sites map