Skip to content

Commit 3e72b51

Browse files
author
ArtyomBorisevich
committed
[upd] upd recurring events
1 parent a1f475e commit 3e72b51

File tree

4 files changed

+46
-39
lines changed

4 files changed

+46
-39
lines changed

basic.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</div>
3333
<script>
3434
scheduler.setLoadMode("day");
35-
scheduler.init("scheduler_here", new Date(),"month");
35+
scheduler.init("scheduler_here", new Date(),"week");
3636
scheduler.load("data/api.php");
3737

3838
var dp = scheduler.createDataProcessor({

data/api_recurring.php

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,21 @@ function create($db, $event){
2222
`start_date`=?,
2323
`end_date`=?,
2424
`text`=?,
25-
26-
`event_pid`=?,
27-
`event_length`=?,
28-
`rec_type`=?";
25+
`duration`=?,
26+
`rrule`=?,
27+
`recurring_event_id`=?,
28+
`original_start`=?,
29+
`deleted`=?";
2930
$queryParams = [
3031
$event["start_date"],
3132
$event["end_date"],
3233
$event["text"],
3334
// recurring events columns
34-
$event["event_pid"] ? $event["event_pid"] : 0,
35-
$event["event_length"] ? $event["event_length"] : 0,
36-
$event["rec_type"]
35+
$event["duration"] ? $event["duration"] : null,
36+
$event["rrule"] ? $event["rrule"] : null,
37+
$event["recurring_event_id"] ? $event["recurring_event_id"] : null,
38+
$event["original_start"] ? $event["original_start"] : null,
39+
$event["deleted"] = array_key_exists("deleted", $event) ? $event["deleted"] : null,
3740
];
3841

3942
$query = $db->prepare($queryText);
@@ -47,25 +50,29 @@ function update($db, $event, $id){
4750
`start_date`=?,
4851
`end_date`=?,
4952
`text`=?,
50-
`event_pid`=?,
51-
`event_length`=?,
52-
`rec_type`=?
53+
`duration`=?,
54+
`rrule`=?,
55+
`recurring_event_id`=?,
56+
`original_start`=?,
57+
`deleted`=?
5358
WHERE `id`=?";
5459

5560
$queryParams = [
5661
$event["start_date"],
5762
$event["end_date"],
5863
$event["text"],
5964

60-
$event["event_pid"] ? $event["event_pid"] : 0,
61-
$event["event_length"] ? $event["event_length"] : 0,
62-
$event["rec_type"],//!
65+
$event["duration"] ? $event["duration"] : null,
66+
$event["rrule"] ? $event["rrule"] : null,
67+
$event["recurring_event_id"] ? $event["recurring_event_id"] : null,
68+
$event["original_start"] ? $event["original_start"] : null,
69+
$event["deleted"] ? $event["deleted"] : null,
6370
$id
6471
];
65-
if ($event["rec_type"] && $event["rec_type"] != "none") {
66-
//all modified occurrences must be deleted when you update recurring series
67-
//https://docs.dhtmlx.com/scheduler/server_integration.html#savingrecurringevents
68-
$subQueryText = "DELETE FROM `recurring_events` WHERE `event_pid`=? ;";
72+
if ($event["rrule"] && $event["recurring_event_id"] == null) {
73+
//all modified occurrences must be deleted when you update recurring series
74+
//https://docs.dhtmlx.com/scheduler/server_integration.html#recurringevents
75+
$subQueryText = "DELETE FROM `events` WHERE `recurring_event_id`=? ;";
6976
$subQuery = $db->prepare($subQueryText);
7077
$subQuery->execute([$id]);
7178
}
@@ -82,26 +89,24 @@ function delete($db, $id){
8289
$subQuery->execute([$id]);
8390
$event = $subQuery->fetch();
8491

85-
if ($event["event_pid"]) {
92+
if ($event["recurring_event_id"]) {
8693
// deleting a modified occurrence from a recurring series
8794
// If an event with the event_pid value was deleted - it needs updating
8895
// with rec_type==none instead of deleting.
89-
$subQueryText="UPDATE `recurring_events` SET `rec_type`='none' WHERE `id`=?;";
96+
$subQueryText="UPDATE `recurring_events` SET `deleted`= 1 WHERE `id`=?;";
9097
$subQuery = $db->prepare($subQueryText);
9198
$subQuery->execute([$id]);
92-
93-
}else{
94-
if ($event["rec_type"] && $event["rec_type"] != "none") {//!
95-
// if a recurring series deleted, delete all modified occurrences of the series
96-
$subQueryText = "DELETE FROM `recurring_events` WHERE `event_pid`=? ;";
97-
$subQuery = $db->prepare($subQueryText);
98-
$subQuery->execute([$id]);
99+
}else{
100+
if ($event["rrule"]) {
101+
// if a recurring series deleted, delete all modified occurrences
102+
// of the series
103+
$subQueryText = "DELETE FROM `recurring_events` WHERE `recurring_event_id`=? ;";
104+
$subQuery = $db->prepare($subQueryText);
105+
$subQuery->execute([$id]);
99106
}
100-
101107
/*
102108
end of recurring events data processing
103109
*/
104-
105110
$queryText = "DELETE FROM `recurring_events` WHERE `id`=? ;";
106111
$query = $db->prepare($queryText);
107112
$query->execute([$id]);
@@ -128,9 +133,9 @@ function delete($db, $id){
128133
$databaseId = create($db, $body);
129134
$result["tid"] = $databaseId;
130135
// delete a single occurrence from recurring series
131-
if ($body["rec_type"] === "none") {
132-
$result["action"] = "deleted";//!
133-
}
136+
if (isset($body["deleted"]) && $body["deleted"]) {
137+
$result["action"] = "deleted";
138+
}
134139
} elseif($action == "updated") {
135140
update($db, $body, $id);
136141
} elseif($action == "deleted") {

mysql_dump.sql

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ CREATE TABLE `events` (
1212

1313
DROP TABLE IF EXISTS `recurring_events`;
1414
CREATE TABLE `recurring_events` (
15-
`id` int(11) AUTO_INCREMENT,
15+
`id` bigint(20) unsigned AUTO_INCREMENT,
16+
`text` varchar(255) DEFAULT NULL,
1617
`start_date` datetime NOT NULL,
1718
`end_date` datetime NOT NULL,
18-
`text` varchar(255) DEFAULT NULL,
19-
`event_pid` int(11) DEFAULT 0,
20-
`event_length` bigint(20) unsigned DEFAULT 0,
21-
`rec_type` varchar(25) DEFAULT '""',
19+
`duration` bigint(20) unsigned DEFAULT NULL,
20+
`rrule` varchar(255) DEFAULT NULL,
21+
`recurring_event_id` varchar(255) DEFAULT NULL,
22+
`original_start` varchar(255) DEFAULT NULL,
23+
`deleted` BOOLEAN DEFAULT NULL,
2224
PRIMARY KEY (`id`)
2325
) DEFAULT CHARSET=utf8;

recurring.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@
3535
recurring: true
3636
});
3737
scheduler.setLoadMode("day");
38-
scheduler.init("scheduler_here", new Date(), "month");
38+
scheduler.init("scheduler_here", new Date(), "week");
3939
scheduler.load("data/api_recurring.php");
4040

41-
var dp = scheduler.createDataProcessor({
41+
const dp = scheduler.createDataProcessor({
4242
url: "data/api_recurring.php",
4343
mode: "JSON"
4444
});

0 commit comments

Comments
 (0)