1ae6ff62720a18270de4b2800ce80052144cce63
[squirrelmail.git] / plugins / calendar / calendar_data.php
1 <?php
2
3 /**
4 * calendar_data.php
5 *
6 * Originally contrubuted by Michal Szczotka <michal@tuxy.org>
7 *
8 * functions to operate on calendar data files.
9 *
10 * @copyright &copy; 2002-2005 The SquirrelMail Project Team
11 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 * @version $Id$
13 * @package plugins
14 * @subpackage calendar
15 */
16
17 /** this is array that contains all events
18 * it is three dimensional array with fallowing structure
19 * $calendardata[date][time] = array(length,priority,title,message); */
20 $calendardata = array();
21
22 /**
23 * read events into array
24 *
25 * data is | delimited, just like addressbook
26 * files are structured like this:
27 * date|time|length|priority|title|message
28 * files are divided by year for performance increase */
29 function readcalendardata() {
30 global $calendardata, $username, $data_dir, $year;
31
32 $filename = getHashedFile($username, $data_dir, "$username.$year.cal");
33
34 if (file_exists($filename)){
35 $fp = fopen ($filename,'r');
36
37 if ($fp){
38 while ($fdata = fgetcsv ($fp, 4096, '|')) {
39 $calendardata[$fdata[0]][$fdata[1]] = array( 'length' => $fdata[2],
40 'priority' => $fdata[3],
41 'title' => htmlspecialchars($fdata[4],ENT_NOQUOTES),
42 'message' => htmlspecialchars($fdata[5],ENT_NOQUOTES),
43 'reminder' => $fdata[6] );
44 }
45 fclose ($fp);
46 // this is to sort the events within a day on starttime
47 $new_calendardata = array();
48 foreach($calendardata as $day => $data) {
49 ksort($data, SORT_NUMERIC);
50 $new_calendardata[$day] = $data;
51 }
52 $calendardata = $new_calendardata;
53 }
54 }
55 }
56
57 //makes events persistant
58 function writecalendardata() {
59 global $calendardata, $username, $data_dir, $year, $color;
60
61 $filetmp = getHashedFile($username, $data_dir, "$username.$year.cal.tmp");
62 $filename = getHashedFile($username, $data_dir, "$username.$year.cal");
63 $fp = fopen ($filetmp,"w");
64 if ($fp) {
65 while ( $calfoo = each ($calendardata)) {
66 while ( $calbar = each ($calfoo['value'])) {
67 $calfoobar = $calendardata[$calfoo['key']][$calbar['key']];
68 $calstr = "$calfoo[key]|$calbar[key]|$calfoobar[length]|$calfoobar[priority]|$calfoobar[title]|$calfoobar[message]|$calfoobar[reminder]\n";
69 if(sq_fwrite($fp, $calstr, 4096) === FALSE) {
70 error_box(_("Could not write calendar file %s", "$username.$year.cal.tmp"), $color);
71 }
72 }
73
74 }
75 fclose ($fp);
76 @unlink($filename);
77 rename($filetmp,$filename);
78 }
79 }
80
81 //deletes event from file
82 function delete_event($date, $time) {
83 global $calendardata, $username, $data_dir, $year;
84
85 $filename = getHashedFile($username, $data_dir, "$username.$year.cal");
86 $fp = fopen ($filename,'r');
87 if ($fp){
88 while ($fdata = fgetcsv ($fp, 4096, "|")) {
89 if (($fdata[0]==$date) && ($fdata[1]==$time)){
90 // do nothing
91 } else {
92 $calendardata[$fdata[0]][$fdata[1]] = array( 'length' => $fdata[2],
93 'priority' => $fdata[3],
94 'title' => $fdata[4],
95 'message' => $fdata[5],
96 'reminder' => $fdata[6] );
97 }
98 }
99 fclose ($fp);
100 }
101 writecalendardata();
102
103 }
104
105 // same as delete but not saves calendar
106 // saving is done inside event_edit.php
107 function update_event($date, $time) {
108 global $calendardata, $username, $data_dir, $year;
109
110 $filename = getHashedFile($username, $data_dir, "$username.$year.cal");
111 $fp = fopen ($filename,'r');
112 if ($fp){
113 while ($fdata = fgetcsv ($fp, 4096, '|')) {
114 if (($fdata[0]==$date) && ($fdata[1]==$time)){
115 // do nothing
116 } else {
117 $calendardata[$fdata[0]][$fdata[1]] = array( 'length' => $fdata[2],
118 'priority' => $fdata[3],
119 'title' => $fdata[4],
120 'message' => $fdata[5],
121 'reminder' => $fdata[6] );
122 }
123 }
124 fclose ($fp);
125 }
126 }
127
128
129 ?>