Fixed/restored reply focus functionality
[squirrelmail.git] / plugins / calendar / calendar_data.php
CommitLineData
2c85de8f 1<?php
7c67a5e8 2
3/**
4 * calendar_data.php
5 *
7c67a5e8 6 * Originally contrubuted by Michal Szczotka <michal@tuxy.org>
d61a01d4 7 *
7c67a5e8 8 * functions to operate on calendar data files.
d61a01d4 9 *
4b4abf93 10 * @copyright &copy; 2002-2005 The SquirrelMail Project Team
11 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 * @version $Id$
ea5f4b8e 13 * @package plugins
14 * @subpackage calendar
d61a01d4 15 */
16
ea5f4b8e 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); */
d61a01d4 20$calendardata = array();
21
ea5f4b8e 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 */
d61a01d4 29function 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');
88cb1b4d 36
37 if ($fp){
38 while ($fdata = fgetcsv ($fp, 4096, '|')) {
39 $calendardata[$fdata[0]][$fdata[1]] = array( 'length' => $fdata[2],
40 'priority' => $fdata[3],
e842b215 41 'title' => htmlspecialchars($fdata[4],ENT_NOQUOTES),
42 'message' => htmlspecialchars($fdata[5],ENT_NOQUOTES),
88cb1b4d 43 'reminder' => $fdata[6] );
44 }
45 fclose ($fp);
5d01bcce 46 // this is to sort the events within a day on starttime
bdb21d65 47 $new_calendardata = array();
91e0dccc 48 foreach($calendardata as $day => $data) {
5d01bcce 49 ksort($data, SORT_NUMERIC);
bdb21d65 50 $new_calendardata[$day] = $data;
5d01bcce 51 }
91e0dccc 52 $calendardata = $new_calendardata;
d61a01d4 53 }
d61a01d4 54 }
55}
56
57//makes events persistant
58function writecalendardata() {
3ecad5e6 59 global $calendardata, $username, $data_dir, $year, $color;
d61a01d4 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)) {
88cb1b4d 66 while ( $calbar = each ($calfoo['value'])) {
67 $calfoobar = $calendardata[$calfoo['key']][$calbar['key']];
d61a01d4 68 $calstr = "$calfoo[key]|$calbar[key]|$calfoobar[length]|$calfoobar[priority]|$calfoobar[title]|$calfoobar[message]|$calfoobar[reminder]\n";
3ecad5e6 69 if(sq_fwrite($fp, $calstr, 4096) === FALSE) {
91e0dccc 70 error_box(_("Could not write calendar file %s", "$username.$year.cal.tmp"), $color);
71 }
d61a01d4 72 }
73
74 }
75 fclose ($fp);
1d461a18 76 @unlink($filename);
d61a01d4 77 rename($filetmp,$filename);
78 }
79}
80
81//deletes event from file
82function 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
107function 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
91e0dccc 129?>