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 ----------------------------------------- |
---|
12 | if (!defined('DC_RC_PATH')) { return; } |
---|
13 | |
---|
14 | if (!($_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 | -------------------------------------------------------- */ |
---|
261 | if ($_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 | ?> |
---|