1 | <?php |
---|
2 | # -- BEGIN LICENSE BLOCK --------------------------------------- |
---|
3 | # |
---|
4 | # This file is part of Dotclear 2. |
---|
5 | # |
---|
6 | # Copyright (c) 2003-2013 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', 255, 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_firstpub('smallint', 0, false, 0) |
---|
124 | ->post_selected('smallint', 0, false, 0) |
---|
125 | ->post_position('integer', 0, false, 0) |
---|
126 | ->post_open_comment('smallint', 0, false, 0) |
---|
127 | ->post_open_tb('smallint', 0, false, 0) |
---|
128 | ->nb_comment('integer', 0, false, 0) |
---|
129 | ->nb_trackback('integer', 0, false, 0) |
---|
130 | |
---|
131 | ->primary('pk_post', 'post_id') |
---|
132 | |
---|
133 | ->unique('uk_post_url', 'post_url', 'post_type', 'blog_id') |
---|
134 | ; |
---|
135 | |
---|
136 | $_s->media |
---|
137 | ->media_id('bigint', 0, false) |
---|
138 | ->user_id('varchar', 32, false) |
---|
139 | ->media_path('varchar', 255, false) |
---|
140 | ->media_title('varchar', 255, false) |
---|
141 | ->media_file('varchar', 255, false) |
---|
142 | ->media_dir('varchar', 255, false, "'.'") |
---|
143 | ->media_meta('text', 0, true, null) |
---|
144 | ->media_dt('timestamp', 0, false, 'now()') |
---|
145 | ->media_creadt('timestamp', 0, false, 'now()') |
---|
146 | ->media_upddt('timestamp', 0, false, 'now()') |
---|
147 | ->media_private('smallint', 0, false, 0) |
---|
148 | |
---|
149 | ->primary('pk_media', 'media_id') |
---|
150 | ; |
---|
151 | |
---|
152 | $_s->post_media |
---|
153 | ->media_id('bigint', 0, false) |
---|
154 | ->post_id('bigint', 0, false) |
---|
155 | ->link_type('varchar', 32, false, "'attachment'") |
---|
156 | |
---|
157 | ->primary('pk_post_media', 'media_id', 'post_id', 'link_type') |
---|
158 | ; |
---|
159 | |
---|
160 | $_s->log |
---|
161 | ->log_id('bigint', 0, false) |
---|
162 | ->user_id('varchar', 32, true) |
---|
163 | ->blog_id('varchar', 32, true) |
---|
164 | ->log_table('varchar', 255, false) |
---|
165 | ->log_dt('timestamp', 0, false, 'now()') |
---|
166 | ->log_ip('varchar', 39, false) |
---|
167 | ->log_msg('text', 0, true, null) |
---|
168 | |
---|
169 | ->primary('pk_log', 'log_id') |
---|
170 | ; |
---|
171 | |
---|
172 | $_s->version |
---|
173 | ->module('varchar', 64, false) |
---|
174 | ->version('varchar', 32, false) |
---|
175 | |
---|
176 | ->primary('pk_version', 'module') |
---|
177 | ; |
---|
178 | |
---|
179 | $_s->ping |
---|
180 | ->post_id('bigint', 0, false) |
---|
181 | ->ping_url('varchar', 255, false) |
---|
182 | ->ping_dt('timestamp', 0, false, 'now()') |
---|
183 | |
---|
184 | ->primary('pk_ping', 'post_id', 'ping_url') |
---|
185 | ; |
---|
186 | |
---|
187 | $_s->comment |
---|
188 | ->comment_id('bigint', 0, false) |
---|
189 | ->post_id('bigint', 0, false) |
---|
190 | ->comment_dt('timestamp', 0, false, 'now()') |
---|
191 | ->comment_tz('varchar', 128, false, "'UTC'") |
---|
192 | ->comment_upddt('timestamp', 0, false, 'now()') |
---|
193 | ->comment_author('varchar', 255, true, null) |
---|
194 | ->comment_email('varchar', 255, true, null) |
---|
195 | ->comment_site('varchar', 255, true, null) |
---|
196 | ->comment_content('text', 0, true) |
---|
197 | ->comment_words('text', 0, true, null) |
---|
198 | ->comment_ip('varchar', 39, true, null) |
---|
199 | ->comment_status('smallint', 0, true, 0) |
---|
200 | ->comment_spam_status('varchar', 128, true, 0) |
---|
201 | ->comment_spam_filter('varchar', 32, true, null) |
---|
202 | ->comment_trackback('smallint', 0, false, 0) |
---|
203 | |
---|
204 | ->primary('pk_comment', 'comment_id') |
---|
205 | ; |
---|
206 | |
---|
207 | $_s->meta |
---|
208 | ->meta_id('varchar', 255, false) |
---|
209 | ->meta_type('varchar', 64, false) |
---|
210 | ->post_id('bigint', 0, false) |
---|
211 | |
---|
212 | ->primary('pk_meta', 'meta_id', 'meta_type', 'post_id') |
---|
213 | ; |
---|
214 | |
---|
215 | $_s->pref |
---|
216 | ->pref_id('varchar', 255, false) |
---|
217 | ->user_id('varchar', 32, true) |
---|
218 | ->pref_ws('varchar', 32, false, "'system'") |
---|
219 | ->pref_value('text', 0, true, null) |
---|
220 | ->pref_type('varchar', 8, false, "'string'") |
---|
221 | ->pref_label('text', 0, true) |
---|
222 | |
---|
223 | ->unique('uk_pref', 'pref_ws', 'pref_id', 'user_id') |
---|
224 | ; |
---|
225 | |
---|
226 | /* References indexes |
---|
227 | -------------------------------------------------------- */ |
---|
228 | $_s->category->index('idx_category_blog_id', 'btree', 'blog_id'); |
---|
229 | $_s->category->index('idx_category_cat_lft_blog_id', 'btree', 'blog_id', 'cat_lft'); |
---|
230 | $_s->category->index('idx_category_cat_rgt_blog_id', 'btree', 'blog_id', 'cat_rgt'); |
---|
231 | $_s->setting->index('idx_setting_blog_id', 'btree', 'blog_id'); |
---|
232 | $_s->user->index('idx_user_user_default_blog', 'btree', 'user_default_blog'); |
---|
233 | $_s->permissions->index('idx_permissions_blog_id', 'btree', 'blog_id'); |
---|
234 | $_s->post->index('idx_post_cat_id', 'btree', 'cat_id'); |
---|
235 | $_s->post->index('idx_post_user_id', 'btree', 'user_id'); |
---|
236 | $_s->post->index('idx_post_blog_id', 'btree', 'blog_id'); |
---|
237 | $_s->media->index('idx_media_user_id', 'btree', 'user_id'); |
---|
238 | $_s->post_media->index('idx_post_media_post_id', 'btree', 'post_id'); |
---|
239 | $_s->post_media->index('idx_post_media_media_id', 'btree', 'media_id'); |
---|
240 | $_s->log->index('idx_log_user_id', 'btree', 'user_id'); |
---|
241 | $_s->comment->index('idx_comment_post_id', 'btree', 'post_id'); |
---|
242 | $_s->meta->index('idx_meta_post_id', 'btree', 'post_id'); |
---|
243 | $_s->meta->index('idx_meta_meta_type', 'btree', 'meta_type'); |
---|
244 | $_s->pref->index('idx_pref_user_id', 'btree', 'user_id'); |
---|
245 | |
---|
246 | /* Performance indexes |
---|
247 | -------------------------------------------------------- */ |
---|
248 | $_s->comment->index('idx_comment_post_id_dt_status', 'btree', 'post_id', 'comment_dt', 'comment_status'); |
---|
249 | $_s->post->index('idx_post_post_dt', 'btree', 'post_dt'); |
---|
250 | $_s->post->index('idx_post_post_dt_post_id', 'btree', 'post_dt', 'post_id'); |
---|
251 | $_s->post->index('idx_blog_post_post_dt_post_id', 'btree', 'blog_id', 'post_dt', 'post_id'); |
---|
252 | $_s->post->index('idx_blog_post_post_status', 'btree', 'blog_id', 'post_status'); |
---|
253 | $_s->blog->index('idx_blog_blog_upddt', 'btree', 'blog_upddt'); |
---|
254 | $_s->user->index('idx_user_user_super', 'btree', 'user_super'); |
---|
255 | |
---|
256 | /* Foreign keys |
---|
257 | -------------------------------------------------------- */ |
---|
258 | $_s->category->reference('fk_category_blog', 'blog_id', 'blog', 'blog_id', 'cascade', 'cascade'); |
---|
259 | $_s->setting->reference('fk_setting_blog', 'blog_id', 'blog', 'blog_id', 'cascade', 'cascade'); |
---|
260 | $_s->user->reference('fk_user_default_blog', 'user_default_blog', 'blog', 'blog_id', 'cascade', 'set null'); |
---|
261 | $_s->permissions->reference('fk_permissions_blog', 'blog_id', 'blog', 'blog_id', 'cascade', 'cascade'); |
---|
262 | $_s->permissions->reference('fk_permissions_user', 'user_id', 'user', 'user_id', 'cascade', 'cascade'); |
---|
263 | $_s->post->reference('fk_post_category', 'cat_id', 'category', 'cat_id', 'cascade', 'set null'); |
---|
264 | $_s->post->reference('fk_post_user', 'user_id', 'user', 'user_id', 'cascade', 'cascade'); |
---|
265 | $_s->post->reference('fk_post_blog', 'blog_id', 'blog', 'blog_id', 'cascade', 'cascade'); |
---|
266 | $_s->media->reference('fk_media_user', 'user_id', 'user', 'user_id', 'cascade', 'cascade'); |
---|
267 | $_s->post_media->reference('fk_media', 'media_id', 'media', 'media_id', 'cascade', 'cascade'); |
---|
268 | $_s->post_media->reference('fk_media_post', 'post_id', 'post', 'post_id', 'cascade', 'cascade'); |
---|
269 | $_s->ping->reference('fk_ping_post', 'post_id', 'post', 'post_id', 'cascade', 'cascade'); |
---|
270 | $_s->comment->reference('fk_comment_post', 'post_id', 'post', 'post_id', 'cascade', 'cascade'); |
---|
271 | $_s->log->reference('fk_log_blog', 'blog_id', 'blog', 'blog_id', 'cascade', 'set null'); |
---|
272 | $_s->meta->reference('fk_meta_post', 'post_id', 'post', 'post_id', 'cascade', 'cascade'); |
---|
273 | $_s->pref->reference('fk_pref_user', 'user_id', 'user', 'user_id', 'cascade', 'cascade'); |
---|
274 | |
---|
275 | /* PostgreSQL specific indexes |
---|
276 | -------------------------------------------------------- */ |
---|
277 | if ($_s->driver() == 'pgsql') { |
---|
278 | $_s->setting->index('idx_setting_blog_id_null', 'btree', '(blog_id IS NULL)'); |
---|
279 | $_s->media->index('idx_media_media_path', 'btree', 'media_path', 'media_dir'); |
---|
280 | $_s->pref->index('idx_pref_user_id_null', 'btree', '(user_id IS NULL)'); |
---|
281 | } |
---|