2 include_once $gfplugins.'webcalendar/www/includes/init.php';
7 // First, check to see if this user should be able to delete this event.
9 // first see who has access to edit this entry
12 } else if ( $readonly == "Y" ) {
16 $sql = "SELECT webcal_entry.cal_id FROM webcal_entry, " .
17 "webcal_entry_user WHERE webcal_entry.cal_id = " .
18 "webcal_entry_user.cal_id AND webcal_entry.cal_id = $id " .
19 "AND (webcal_entry.cal_create_by = '$login' " .
20 "OR webcal_entry_user.cal_login = '$login')";
21 $res = dbi_query ( $sql );
23 $row = dbi_fetch_row ( $res );
24 if ( $row && $row[0] > 0 )
26 dbi_free_result ( $res );
31 // See who owns the event. Owner should be able to delete.
33 "SELECT cal_create_by FROM webcal_entry WHERE cal_id = $id" );
35 $row = dbi_fetch_row ( $res );
37 dbi_free_result ( $res );
40 if ( $owner == $login || $is_assistant && ( $user == $owner ) || $is_nonuser_admin && ( $user == $owner ) ) {
47 if ( $readonly == 'Y' )
51 $error = translate ( "You are not authorized" );
54 // Is this a repeating event?
55 $event_repeats = false;
56 $res = dbi_query ( "SELECT COUNT(cal_id) FROM webcal_entry_repeats " .
57 "WHERE cal_id = $id" );
59 $row = dbi_fetch_row ( $res );
61 $event_repeats = true;
62 dbi_free_result ( $res );
64 $override_repeat = false;
65 if ( ! empty ( $date ) && $event_repeats && ! empty ( $override ) ) {
66 $override_repeat = true;
69 if ( $id > 0 && empty ( $error ) ) {
70 if ( ! empty ( $date ) ) {
73 $res = dbi_query ( "SELECT cal_date FROM webcal_entry WHERE cal_id = $id" );
75 // date format is 19991231
76 $row = dbi_fetch_row ( $res );
81 // Only allow delete of webcal_entry & webcal_entry_repeats
82 // if owner or admin, not participant.
84 if ( $is_admin || $my_event ) {
85 // Email participants that the event was deleted
86 // First, get list of participants (with status Approved or
87 // Waiting on approval).
88 $sql = "SELECT cal_login FROM webcal_entry_user WHERE cal_id = $id " .
89 "AND cal_status IN ('A','W')";
90 $res = dbi_query ( $sql );
91 $partlogin = array ();
93 while ( $row = dbi_fetch_row ( $res ) ) {
94 if ( $row[0] != $login )
95 $partlogin[] = $row[0];
97 dbi_free_result($res);
99 $partlogin[] = $login ;
101 $sql = "SELECT cal_name, cal_date, cal_time " .
102 "FROM webcal_entry WHERE cal_id = $id";
103 $res = dbi_query($sql);
105 $row = dbi_fetch_row ( $res );
107 $eventdate = $row[1];
108 $eventtime = $row[2];
109 dbi_free_result ( $res );
112 for ( $i = 0; $i < count ( $partlogin ); $i++ ) {
114 // activity_log ( $id, $login, $partlogin[$i], $LOG_DELETE, "" );
116 $do_send = get_pref_setting ( $partlogin[$i], "EMAIL_EVENT_DELETED" );
117 $user_TZ = get_pref_setting ( $partlogin[$i], "TZ_OFFSET" );
118 $user_language = get_pref_setting ( $partlogin[$i], "LANGUAGE" );
119 user_load_variables ( $partlogin[$i], "temp" );
120 // Want date/time in user's timezone
121 if ( $eventtime != '-1' ) {
122 $eventtime += ( $user_TZ * 10000 );
123 if ( $eventtime < 0 ) {
124 $eventtime += 240000;
125 } else if ( $eventtime >= 240000 ) {
126 $eventtime -= 240000;
130 if ( /*$partlogin[$i] != $login &&*/ $do_send == "Y" && boss_must_be_notified ( $login, $partlogin[$i] ) &&
131 strlen ( $tempemail ) && $send_email != "N" ) {
132 if (($GLOBALS['LANGUAGE'] != $user_language) && ! empty ( $user_language ) && ( $user_language != 'none' )){
133 reset_language ( $user_language );
135 $msg = translate("Hello") . ", " . $tempfullname . ".\n\n" .
136 translate("An appointment has been canceled for you by") .
137 " " . $login_fullname . ".\n" .
138 translate("The subject was") . " \"" . $name . "\"\n" .
139 translate("Date") . ": " . date_to_str ($thisdate) . "\n";
140 if ( $eventtime != '-1' ) $msg .= translate("Time") . ": " . display_time ($eventtime, true);
142 if ( strlen ( $login_email ) )
143 $extra_hdrs = "From: $login_email\r\nX-Mailer: " .
144 translate($application_name);
146 $extra_hdrs = "From: $email_fallback_from\r\nX-Mailer: " .
147 translate($application_name);
149 translate($application_name) . " " .
150 translate("Notification") . ": " . $name,
151 utf8_deconde(html_to_8bits ($msg)), $extra_hdrs );
155 // Instead of deleting from the database... mark it as deleted
156 // by setting the status for each participant to "D" (instead
157 // of "A"/Accepted, "W"/Waiting-on-approval or "R"/Rejected)
158 if ( $override_repeat ) {
159 dbi_query ( "INSERT INTO webcal_entry_repeats_not ( cal_id, cal_date ) " .
160 "VALUES ( $id, $date )" );
161 // Should we log this to the activity log???
163 // If it's a repeating event, delete any event exceptions
164 // that were entered.
165 if ( $event_repeats ) {
166 $res = dbi_query ( "SELECT cal_id FROM webcal_entry " .
167 "WHERE cal_group_id = $id" );
169 $ex_events = array ();
170 while ( $row = dbi_fetch_row ( $res ) ) {
171 $ex_events[] = $row[0];
173 dbi_free_result ( $res );
174 for ( $i = 0; $i < count ( $ex_events ); $i++ ) {
175 $res = dbi_query ( "SELECT cal_login FROM " .
176 "webcal_entry_user WHERE cal_id = $ex_events[$i]" );
178 $delusers = array ();
179 while ( $row = dbi_fetch_row ( $res ) ) {
180 $delusers[] = $row[0];
182 dbi_free_result ( $res );
183 for ( $j = 0; $j < count ( $delusers ); $j++ ) {
185 activity_log ( $ex_events[$i], $login, $delusers[$j],
187 dbi_query ( "UPDATE webcal_entry_user SET cal_status = 'D' " .
188 "WHERE cal_id = $ex_events[$i] " .
189 "AND cal_login = '$delusers[$j]'" );
196 // Now, mark event as deleted for all users.
197 dbi_query ( "UPDATE webcal_entry_user SET cal_status = 'D' " .
198 "WHERE cal_id = $id" );
201 // Not the owner of the event and are not the admin.
202 // Just delete the event from this user's calendar.
203 // We could just set the status to 'D' instead of deleting.
204 // (but we would need to make some changes to edit_entry_handler.php
205 // to accomodate this).
206 dbi_query ( "DELETE FROM webcal_entry_user " .
207 "WHERE cal_id = $id AND cal_login = '$login'" );
208 activity_log ( $id, $login, $login, $LOG_REJECT, "" );
212 $ret = getValue ( "ret" );
213 if ( ! empty ( $ret ) && $ret == "list" ) {
214 $url = "list_unapproved.php";
215 if ( ! empty ( $user ) )
216 $url .= "?user=$user";
218 $url = get_preferred_view ( "", empty ( $user ) ? "" : "user=$user" );
221 if ( empty ( $error ) ) {
222 do_redirect ( $url );
228 <h2><?php etranslate("Error")?></h2>
230 <?php echo $error; ?>
233 <?php print_trailer(); ?>