-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathtables-mysql.sql
715 lines (686 loc) · 24 KB
/
tables-mysql.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
/**
* Description:
* This file is used to create all tables used by WebCalendar
* and initialize some of those tables with the required data.
*
* The comments in the table definitions will be parsed to
* generate a document (in HTML) that describes these tables.
*/
/**
* Defines a WebCalendar user.
*/
CREATE TABLE webcal_user (
/* the unique user login */
cal_login VARCHAR(25) NOT NULL,
/* the user's password. (not used for http) */
cal_passwd VARCHAR(255),
/* user's last name */
cal_lastname VARCHAR(25),
/* user's first name */
cal_firstname VARCHAR(25),
/* is the user a WebCalendar administrator ('Y' = yes, 'N' = no) */
cal_is_admin CHAR(1) DEFAULT 'N',
/* user's email address */
cal_email VARCHAR(75) NULL,
/* allow admin to disable account ('Y' = yes, 'N' = no) */
cal_enabled CHAR(1) DEFAULT 'Y',
/* user's telephone */
cal_telephone VARCHAR(50) NULL,
/* user's address */
cal_address VARCHAR(75) NULL,
/* user's title */
cal_title VARCHAR(75) NULL,
/* user's birthday */
cal_birthday INT NULL,
/* user's last log in date */
cal_last_login INT NULL,
PRIMARY KEY ( cal_login )
);
# create a DEFAULT admin user
INSERT INTO webcal_user
( cal_login, cal_passwd, cal_lastname, cal_firstname, cal_is_admin )
VALUES ( 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Administrator',
'Default', 'Y' );
/**
* Defines a calendar event. Each event in the system has one entry in
* this table unless the event starts before midnight and ends after
* midnight. In that case a secondary event will be created with
* cal_ext_for_id set to the cal_id of the original entry. The following
* tables contain additional information about each event:
* <ul>
* <li><a href="#webcal_entry_user">webcal_entry_user</a>
* - lists participants in the event and specifies the status
* (accepted, rejected) and category of each participant.</li>
* <li><a href="#webcal_entry_repeats">webcal_entry_repeats</a>
* - contains information if the event repeats.</li>
* <li><a href="#webcal_entry_repeats_not">webcal_entry_repeats_not</a>
* - specifies which dates the repeating event does not repeat
* (because they were deleted or modified for just that date by the
* user)</li>
* <li><a href="#webcal_entry_log">webcal_entry_log</a>
* - provides a history of changes to this event.</li>
* <li><a href="#webcal_site_extras">webcal_site_extras</a>
* - stores event data as defined in site_extras.php (such as
* reminders and other custom event fields).</li>
* </ul>
*/
CREATE TABLE webcal_entry (
/* cal_id is unique integer id for event */
cal_id INT NOT NULL,
/* cal_group_id: the parent event id if this event is overriding an */
/* occurrence of a repeating event */
cal_group_id INT NULL,
/* used when an event goes past midnight into the next day, */
/* in which case an additional entry in this table */
/* will use this field to indicate the original event cal_id */
cal_ext_for_id INT NULL,
/* user login of user that created the event */
cal_create_by VARCHAR(25) NOT NULL,
/* date of event (in YYYYMMDD format) */
cal_date INT NOT NULL,
/* event time (in HHMMSS format) */
cal_time INT NULL,
/* date the event was last modified (in YYYYMMDD format) */
cal_mod_date INT,
/* time the event was last modified (in HHMMSS format) */
cal_mod_time INT,
/* duration of event in minutes */
cal_duration INT NOT NULL,
/* Task due date */
cal_due_date INT DEFAULT NULL,
/* Task due time */
cal_due_time INT DEFAULT NULL,
/* event priority: 1=Low, 2=Med, 3=High */
cal_priority INT DEFAULT 5,
/* 'E' = Event, 'M' = Repeating event, 'T' = Task */
cal_type CHAR(1) DEFAULT 'E',
/* 'P' = Public, */
/* 'R' = Private (others cannot see the event), */
/* 'C' = Confidential (others can see time allocated but not what it is) */
cal_access CHAR(1) DEFAULT 'P',
/* brief description of event */
cal_name VARCHAR(80) NOT NULL,
/* location of event */
cal_location varchar(100) DEFAULT NULL,
/* URL of event */
cal_url varchar(255) DEFAULT NULL,
/* date task completed */
cal_completed INT DEFAULT NULL,
/* full description of event */
cal_description TEXT,
PRIMARY KEY ( cal_id )
);
/**
* Contains category foreign keys
* to enable multiple categories for each event or task
*/
CREATE TABLE webcal_entry_categories (
/* id of event. Not unique*/
cal_id INT DEFAULT 0 NOT NULL,
/* id of category. Not unique */
cat_id INT DEFAULT 0 NOT NULL,
/* order that user requests their categories appear. */
/* Globals are always last */
cat_order INT DEFAULT 0 NOT NULL,
/* user that owns this record. Global categories will be empty string */
cat_owner varchar(25) DEFAULT '' NOT NULL,
PRIMARY KEY ( cal_id, cat_id, cat_order, cat_owner ),
INDEX webcal_entry_categories ( cat_id )
);
/**
* Defines repeating info about an event.
* The event is defined in <a href="#webcal_entry">webcal_entry</a>.
*/
CREATE TABLE webcal_entry_repeats (
/* event id */
cal_id INT DEFAULT 0 NOT NULL,
/* type of repeating: */
/* <ul> */
/* <li>daily - repeats daily</li> */
/* <li>monthlyByDate - repeats on same day of the month</li> */
/* <li>monthlyBySetPos */
/* - repeats based on position within other ByXXX values</li> */
/* <li>monthlyByDay */
/* - repeats on specified weekday (2nd Monday, for example)</li> */
/* <li>weekly - repeats every week</li> */
/* <li>yearly - repeats on same date every year</li> */
/* </ul> */
cal_type VARCHAR(20),
/* end date for repeating event (in YYYYMMDD format) */
cal_end INT,
cal_endtime INT DEFAULT NULL,
/* frequency of repeat: 1 = every, 2 = every other, 3 = every 3rd, etc. */
cal_frequency INT DEFAULT 1,
/* NO LONGER USED. We'll leave it in for now */
cal_days CHAR(7),
/* the following columns are values as specified in RFC2445 */
cal_bymonth varchar(50) DEFAULT NULL,
cal_bymonthday varchar(100) DEFAULT NULL,
cal_byday varchar(100) DEFAULT NULL,
cal_bysetpos varchar(50) DEFAULT NULL,
cal_byweekno varchar(50) DEFAULT NULL,
cal_byyearday varchar(50) DEFAULT NULL,
cal_wkst char(2) DEFAULT 'MO',
cal_count INT DEFAULT NULL,
PRIMARY KEY (cal_id)
);
/**
* This table specifies which dates in a repeating event have either been
* deleted, included, or replaced with a replacement event for that day.
* When replaced, the cal_group_id (I know... not the best name, but it
* was not being used) column will be set to the original event.
* That way the user can delete the original event and (at the same time)
* delete any exception events.
*/
CREATE TABLE webcal_entry_repeats_not (
/* event id of repeating event */
cal_id INT NOT NULL,
/* cal_date: date event should not repeat (in YYYYMMDD format) */
cal_date INT NOT NULL,
/* indicates whether this record is an exclusion (1) or inclusion (0) */
cal_exdate int(1) NOT NULL DEFAULT 1,
PRIMARY KEY ( cal_id, cal_date )
);
/**
* This table associates one or more users with an event by the event id.
* The event can be found in <a href="#webcal_entry">webcal_entry</a>.
*/
CREATE TABLE webcal_entry_user (
/* event id */
cal_id INT DEFAULT 0 NOT NULL,
/* participant in the event */
cal_login VARCHAR(25) NOT NULL,
/* status of event for this user: */
/* <ul> */
/* <li>A=Accepted</li> */
/* <li>C=Completed</li> */
/* <li>D=Deleted</li> */
/* <li>P=In-Progress</li> */
/* <li>R=Rejected/Declined</li> */
/* <li>W=Waiting</li> */
/* </ul>*/
cal_status CHAR(1) DEFAULT 'A',
/* category of the event for this user */
cal_category INT DEFAULT NULL,
/* Task percentage of completion for this user's task */
cal_percent INT DEFAULT 0 NOT NULL,
PRIMARY KEY ( cal_id, cal_login )
);
/**
* This table associates one or more external users (people who do not
* have a WebCalendar login) with an event by the event id. An event must
* still have at least one WebCalendar user associated with it. This table
* is not used unless external users are enabled* in system settings. The
* event can be found in <a href="#webcal_entry">webcal_entry</a>.
*/
CREATE TABLE webcal_entry_ext_user (
/* event id */
cal_id INT DEFAULT 0 NOT NULL,
/* external user fill name */
cal_fullname VARCHAR(50) NOT NULL,
/* external user email (for sending a reminder) */
cal_email VARCHAR(75) NULL,
PRIMARY KEY ( cal_id, cal_fullname )
);
/**
* Specify preferences for a user.
* Most preferences are set via pref.php.
* Values in this table are loaded after system settings
* found in <a href="#webcal_config">webcal_config</a>.
*/
CREATE TABLE webcal_user_pref (
/* user login */
cal_login VARCHAR(25) NOT NULL,
/* setting name */
cal_setting VARCHAR(25) NOT NULL,
/* setting value */
cal_value VARCHAR(100) NULL,
PRIMARY KEY ( cal_login, cal_setting )
);
/**
* Define layers for a user.
*/
CREATE TABLE webcal_user_layers (
/* unique layer id */
cal_layerid INT DEFAULT 0 NOT NULL,
/* login of owner of this layer */
cal_login VARCHAR(25) NOT NULL,
/* login name of user that this layer represents */
cal_layeruser VARCHAR(25) NOT NULL,
/* color to display this layer in */
cal_color VARCHAR(25) NULL,
/* show duplicates ('N' or 'Y') */
cal_dups CHAR(1) DEFAULT 'N',
PRIMARY KEY ( cal_login, cal_layeruser )
);
/**
* This table holds data for site extra fields
* (customized in site_extra.php).
*/
CREATE TABLE webcal_site_extras (
/* event id */
cal_id INT DEFAULT 0 NOT NULL,
/* the brief name of this type (first field in $site_extra array) */
cal_name VARCHAR(25) NOT NULL,
/* EXTRA_URL, EXTRA_DATE, etc. */
cal_type INT NOT NULL,
/* only used for EXTRA_DATE type fields (in YYYYMMDD format) */
cal_date INT DEFAULT 0,
/* how many minutes before event should a reminder be sent */
cal_remind INT DEFAULT 0,
/* used to store text data */
cal_data TEXT,
PRIMARY KEY (cal_id, cal_name)
);
/**
* Stores information about reminders
*/
CREATE TABLE webcal_reminders (
cal_id INT NOT NULL default '0',
/* timestamp that specifies send datetime. */
/* Use this or cal_offset, but not both */
cal_date INT NOT NULL default '0',
/* offset in minutes from the selected edge */
cal_offset INT NOT NULL default '0',
/* S=Start, E=End. Specifies which edge of entry this reminder applies to */
cal_related CHAR(1) NOT NULL default 'S',
/* specifies whether reminder is sent before or after selected edge */
cal_before CHAR(1) NOT NULL default 'Y',
/* timestamp of last sent reminder */
cal_last_sent INT NOT NULL default '0',
/* number of times to repeat in addition to original occurrence */
cal_repeats INT NOT NULL default '0',
/* time in ISO 8601 format that specifies time between repeated reminders */
cal_duration INT NOT NULL default '0',
/* number of times this reminder has been sent */
cal_times_sent INT NOT NULL default '0',
/* action as imported, may be used in the future */
cal_action VARCHAR(12) NOT NULL default 'EMAIL',
PRIMARY KEY ( cal_id )
);
/**
* Define a group. Group members can be found in
* <a href="#webcal_group_user">webcal_group_user</a>.
*/
CREATE TABLE webcal_group (
/* unique group id */
cal_group_id INT NOT NULL,
/* user login of user that created this group */
cal_owner VARCHAR(25) NULL,
/* name of the group */
cal_name VARCHAR(50) NOT NULL,
/* date last updated (in YYYYMMDD format) */
cal_last_update INT NOT NULL,
PRIMARY KEY ( cal_group_id )
);
/**
* Specify users in a group. The group is defined in
* <a href="#webcal_group">webcal_group</a>.
*/
CREATE TABLE webcal_group_user (
/* group id */
cal_group_id INT NOT NULL,
/* user login */
cal_login VARCHAR(25) NOT NULL,
PRIMARY KEY ( cal_group_id, cal_login )
);
/**
* A "view" allows a user to put the calendars of multiple users all on one
* page. A "view" is valid only for the owner (cal_owner) of the view.
* Users for the view are in
* <a href="#webcal_view_user">webcal_view_user</a>.
*/
CREATE TABLE webcal_view (
/* unique view id */
cal_view_id INT NOT NULL,
/* login name of owner of this view */
cal_owner VARCHAR(25) NOT NULL,
/* name of view */
cal_name VARCHAR(50) NOT NULL,
/* "W" for week view, "D" for day view, "M" for month view */
cal_view_type CHAR(1),
/* is this a global view (can it be accessed by other users) ('Y' or 'N') */
cal_is_global CHAR(1) DEFAULT 'N' NOT NULL,
PRIMARY KEY ( cal_view_id )
);
/**
* Specify users in a view. See <a href="#webcal_view">webcal_view</a>.
*/
CREATE TABLE webcal_view_user (
/* view id */
cal_view_id INT NOT NULL,
/* a user in the view */
cal_login VARCHAR(25) NOT NULL,
PRIMARY KEY ( cal_view_id, cal_login )
);
/**
* System settings (set by the admin interface in admin.php)
*/
CREATE TABLE webcal_config (
/* setting name */
cal_setting VARCHAR(50) NOT NULL,
/* setting value */
cal_value VARCHAR(100) NULL,
PRIMARY KEY ( cal_setting )
);
/**
* Activity log for an event.
*/
CREATE TABLE webcal_entry_log (
/* unique id of this log entry */
cal_log_id INT NOT NULL,
/* event id */
cal_entry_id INT NOT NULL,
/* user who performed this action */
cal_login VARCHAR(25) NOT NULL,
/* user of calendar affected */
cal_user_cal VARCHAR(25) NULL,
/* log types: */
/* <ul> */
/* <li>C: Created</li> */
/* <li>A: Approved/Confirmed by user</li> */
/* <li>R: Rejected by user</li> */
/* <li>U: Updated by user</li> */
/* <li>M: Mail Notification sent</li> */
/* <li>E: Reminder sent</li> */
/* </ul> */
cal_type CHAR(1) NOT NULL,
/* date in YYYYMMDD format */
cal_date INT NOT NULL,
/* time in HHMMSS format */
cal_time INT NULL,
/* optional text */
cal_text TEXT,
PRIMARY KEY ( cal_log_id )
);
/**
* Defines user categories. Categories can be specific to a user or global.
* When a category is global, the cat_owner field will be an empty string.
* (Only an admin user can create a global category.)
*/
CREATE TABLE webcal_categories (
/* unique category id */
cat_id INT NOT NULL,
/* user login of category owner. */
/* If this is empty, then it is a global category */
cat_owner VARCHAR(25) DEFAULT '' NOT NULL,
/* category name */
cat_name VARCHAR(80) NOT NULL,
/* RGB color for category */
cat_color VARCHAR(8) NULL,
/* Status of the category (A = Active, I = Inactive, D = Deleted) */
cat_status CHAR DEFAULT 'A',
/* category icon mime type (e.g. "image/png") */
cat_icon_mime VARCHAR(32) DEFAULT NULL,
/* category icon image blob */
cat_icon_blob LONGBLOB DEFAULT NULL,
PRIMARY KEY ( cat_id, cat_owner )
);
/**
* Define assistant/boss relationship.
*/
CREATE TABLE webcal_asst (
/* user login of boss */
cal_boss VARCHAR(25) NOT NULL,
/* user login of assistant */
cal_assistant VARCHAR(25) NOT NULL,
PRIMARY KEY ( cal_boss, cal_assistant )
);
/**
* Defines non-user calendars.
*/
CREATE TABLE webcal_nonuser_cals (
/* the unique id for the calendar */
cal_login VARCHAR(25) NOT NULL,
/* calendar's last name */
cal_lastname VARCHAR(25) NULL,
/* calendar's first name */
cal_firstname VARCHAR(25) NULL,
/* who is the calendar administrator */
cal_admin VARCHAR(25) NOT NULL,
/* can this nonuser calendar be a public calendar (no login required) */
cal_is_public CHAR(1) NOT NULL DEFAULT 'N',
/* url of the remote calendar */
cal_url VARCHAR(255) DEFAULT NULL,
PRIMARY KEY ( cal_login )
);
/**
* Used to track import data (one row per import)
*/
CREATE TABLE webcal_import (
/* unique id for import */
cal_import_id INT NOT NULL,
/* name of import (optional) */
cal_name VARCHAR(50) NULL,
/* date of import (YYYYMMDD format) */
cal_date INT NOT NULL,
/* date of last check to see if remote calendar updated (YYYYMMDD format) */
cal_check_date INT NULL,
/* type of import (ical, vcal, palm, outlookcsv) */
cal_type VARCHAR(10) NOT NULL,
/* user who performed the import */
cal_login VARCHAR(25) NULL,
/* md5 of last import used to see if a new import changes anything */
cal_md5 VARCHAR(32) NULL DEFAULT NULL,
PRIMARY KEY ( cal_import_id )
);
/**
* Used to track import data (one row per event)
*/
CREATE TABLE webcal_import_data (
/* import id (from webcal_import table) */
cal_import_id INT NOT NULL,
/* event id in WebCalendar */
cal_id INT NOT NULL,
/* user login */
cal_login VARCHAR(25) NOT NULL,
/* type of import: 'palm', 'vcal', 'ical' or 'outlookcsv' */
cal_import_type VARCHAR(15) NOT NULL,
/* external id used in external calendar system */
/* (for example, UID in iCal) */
cal_external_id VARCHAR(200) NULL,
PRIMARY KEY ( cal_id, cal_login )
);
/**
* Defines a custom report created by a user.
*/
CREATE TABLE webcal_report (
/* creator of report */
cal_login VARCHAR(25) NOT NULL,
/* unique id of this report */
cal_report_id INT NOT NULL,
/* is this a global report (can it be accessed by other users) */
/* ('Y' or 'N') */
cal_is_global CHAR(1) DEFAULT 'N' NOT NULL,
/* format of report (html, plain or csv) */
cal_report_type VARCHAR(20) NOT NULL,
/* if cal_report_type is 'html', should the DEFAULT HTML header and */
/* trailer be included? ('Y' or 'N') */
cal_include_header CHAR(1) DEFAULT 'Y' NOT NULL,
/* name of the report */
cal_report_name VARCHAR(50) NOT NULL,
/* time range for report: */
/* <ul> */
/* <li>0 = tomorrow</li> */
/* <li>1 = today</li> */
/* <li>2 = yesterday</li> */
/* <li>3 = day before yesterday</li> */
/* <li>10 = next week</li> */
/* <li>11 = current week</li> */
/* <li>12 = last week</li> */
/* <li>13 = week before last</li> */
/* <li>20 = next week and week after</li> */
/* <li>21 = current week and next week</li> */
/* <li>22 = last week and this week</li> */
/* <li>23 = last two weeks</li> */
/* <li>30 = next month</li> */
/* <li>31 = current month</li> */
/* <li>32 = last month</li> */
/* <li>33 = month before last</li> */
/* <li>40 = next year</li> */
/* <li>41 = current year</li> */
/* <li>42 = last year</li> */
/* <li>43 = year before last</li> */
/* </ul> */
cal_time_range INT NOT NULL,
/* user calendar to display (NULL indicates current user) */
cal_user VARCHAR(25) NULL,
/* allow user to navigate to different dates with next/previous */
/* ('Y' or 'N') */
cal_allow_nav CHAR(1) DEFAULT 'Y',
/* category to filter on (optional) */
cal_cat_id INT NULL,
/* include empty dates in report ('Y' or 'N') */
cal_include_empty CHAR(1) DEFAULT 'N',
/* include a link for this report in the "Go to" section of the */
/* navigation in the page trailer ('Y' or 'N') */
cal_show_in_trailer CHAR(1) DEFAULT 'N',
/* date created or last updated (in YYYYMMDD format) */
cal_update_date INT NOT NULL,
PRIMARY KEY ( cal_report_id )
);
/**
* Defines one of the templates used for a report.
* Each report has three templates:
* <ol>
* <li>Page template - Defines the entire page (except for header and
* footer). The following variables can be defined:
* <ul>
* <li>${days}<sup>*</sup>
* - the HTML of all dates (generated from the Date template)</li>
* </ul></li>
* <li>Date template - Defines events for one day. If the report
* is for a week or month, then the results of each day will be
* concatenated and used as the ${days} variable in the Page template.
* The following variables can be defined:
* <ul>
* <li>${events}<sup>*</sup> - the HTML of all events
* for the data (generated from the Event template)</li>
* <li>${date} - the date</li>
* <li>${fulldate} - date (includes weekday)</li>
* </ul></li>
* <li>Event template - Defines a single event.
* The following variables can be defined:
* <ul>
* <li>${name}<sup>*</sup> - Brief Description of event</li>
* <li>${description} - Full Description of event</li>
* <li>${date} - Date of event</li>
* <li>${fulldate} - Date of event (includes weekday)</li>
* <li>${time} - Time of event (4:00pm - 4:30pm)</li>
* <li>${starttime} - Start time of event</li>
* <li>${endtime} - End time of event</li>
* <li>${duration} - Duration of event (in minutes)</li>
* <li>${priority} - Priority of event</li>
* <li>${href} - URL to view event details</li>
* </ul></li>
* </ol>
* <sup>*</sup> denotes a required template variable
*/
CREATE TABLE webcal_report_template (
/* report id (in webcal_report table) */
cal_report_id INT NOT NULL,
/* type of template: <ul> */
/* <li>'P': page template represents entire document</li> */
/* <li>'D': date template represents a single day of events</li> */
/* <li>'E': event template represents a single event</li> */
/* </ul> */
cal_template_type CHAR(1) NOT NULL,
/* text of template */
cal_template_text TEXT,
PRIMARY KEY ( cal_report_id, cal_template_type )
);
/**
* Specifies which users can access another user's calendar.
*/
CREATE TABLE webcal_access_user (
/* the current user who is attempting to look at another user's calendar */
cal_login VARCHAR(25) NOT NULL,
/* the login of the other user whose calendar the current user */
/* wants to access */
cal_other_user VARCHAR(25) NOT NULL,
/* can current user view events on the other user's calendar? */
cal_can_view INT NOT NULL DEFAULT '0',
/* can current user edit events on the other user's calendar? */
cal_can_edit INT NOT NULL DEFAULT '0',
/* can current user approve events on the other user's calendar? */
cal_can_approve INT NOT NULL DEFAULT '0',
/* can current user see other user in Participant lists? */
cal_can_invite CHAR(1) DEFAULT 'Y',
/* can current user send emails to other user? */
cal_can_email CHAR(1) DEFAULT 'Y',
/* can current user can only see time of other user? */
cal_see_time_only CHAR(1) DEFAULT 'N',
PRIMARY KEY ( cal_login, cal_other_user )
);
/**
* Specifies what WebCalendar functions a user can access. Each function
* has a corresponding numeric value (specified in the file
* includes/access.php). For example, view event is 0, so the very first
* character in the cal_permissions column is either a "Y" if this user
* can view events or a "N" if they cannot.
*/
CREATE TABLE webcal_access_function (
/* user login */
cal_login VARCHAR(25) NOT NULL,
/* a string of 'Y' or 'N' for the various functions */
cal_permissions VARCHAR(64) NOT NULL,
PRIMARY KEY ( cal_login )
);
/**
* This table stores the custom header/stylesheet/trailer. If configured
* properly, each user (or nonuser cal) can have their own custom
* header/trailer.
*/
CREATE TABLE webcal_user_template (
/* user login (or nonuser cal name), the DEFAULT for all users is stored */
/* with the username '__system__' */
cal_login VARCHAR(25) NOT NULL,
/* type ('H' = header, 'S' = stylesheet/script, 'T' = trailer) */
cal_type CHAR(1) NOT NULL,
/* text of template */
cal_template_text TEXT,
PRIMARY KEY ( cal_login, cal_type )
);
/**
* This table stores event attachments and comments.
*/
CREATE TABLE webcal_blob (
/* Unique identifier for this object */
cal_blob_id INT NOT NULL,
/* event id (if applicable) */
cal_id INT NULL,
/* login of user who created */
cal_login VARCHAR(25) NULL,
/* filename of object (not used for comments) */
cal_name VARCHAR(30) NULL,
/* description of what the object is (subject for comment) */
cal_description VARCHAR(128) NULL,
/* size of object (not used for comment) */
cal_size INT NULL,
/* MIME type of object (as specified by browser during upload) */
/* (not used for comment) */
cal_mime_type VARCHAR(50) NULL,
/* type of object: C=Comment, A=Attachment */
cal_type CHAR(1) NOT NULL,
/* date added (in YYYYMMDD format) */
cal_mod_date INT NOT NULL,
/* time added in HHMMSS format */
cal_mod_time INT NOT NULL,
/* binary data for object */
cal_blob LONGBLOB,
PRIMARY KEY ( cal_blob_id )
);
/**
* This table stores timezones of the world.
*/
CREATE TABLE webcal_timezones (
/* Unique name of timezone, try to use Olsen naming conventions */
tzid varchar(100) NOT NULL default '',
/* earliest date this timezone represents YYYYMMDDTHHMMSSZ format */
dtstart varchar(25) default NULL,
/* last date this timezone represents YYYYMMDDTHHMMSSZ format */
dtend varchar(25) default NULL,
/* Complete VTIMEZONE text gleaned from imported ics files */
vtimezone text,
PRIMARY KEY ( tzid )
);