Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/tasks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/controller/taskscontroller.php')
-rw-r--r--lib/controller/taskscontroller.php51
1 files changed, 46 insertions, 5 deletions
diff --git a/lib/controller/taskscontroller.php b/lib/controller/taskscontroller.php
index c4b6f1c0..6d77aed6 100644
--- a/lib/controller/taskscontroller.php
+++ b/lib/controller/taskscontroller.php
@@ -356,6 +356,8 @@ class TasksController extends Controller {
if ($type == false){
unset($vtodo->VALARM);
+ $vtodo->setDateTime('LAST-MODIFIED', 'now', \Sabre\VObject\Property\DateTime::UTC);
+ $vtodo->setDateTime('DTSTAMP', 'now', \Sabre\VObject\Property\DateTime::UTC);
\OC_Calendar_Object::edit($taskId, $vcalendar->serialize());
}
elseif (in_array($type,$types)) {
@@ -369,21 +371,60 @@ class TasksController extends Controller {
} else {
unset($valarm->TRIGGER);
}
- $triggervalue = '';
+ $tv = '';
+ $related = null;
if ($type == 'DATE-TIME') {
$date = new \DateTime('@'.$this->params('date'));
- $triggervalue = $date->format('Ymd\THis\Z');
+ $tv = $date->format('Ymd\THis\Z');
} elseif ($type == 'DURATION') {
- // TODO
- $triggervalue = '-PT5M';
+ $invert = $this->params('invert');
+ $related= $this->params('related');
+ $week = (int)$this->params('week');
+ $day = (int)$this->params('day');
+ $hour = (int)$this->params('hour');
+ $minute = (int)$this->params('minute');
+ $second = (int)$this->params('second');
+
+ // Create duration string
+ if($week || $day || $hour || $minute || $second) {
+ if ($invert){
+ $tv.='-';
+ }
+ $tv.='P';
+ if ($week){
+ $tv.=$week.'W';
+ }
+ if ($day){
+ $tv.=$day.'D';
+ }
+ $tv.='T';
+ if ($hour){
+ $tv.=$hour.'H';
+ }
+ if ($minute){
+ $tv.=$minute.'M';
+ }
+ if ($second){
+ $tv.=$second.'S';
+ }
+ }else{
+ $tv = 'PT0S';
+ }
}
- $valarm->addProperty('TRIGGER', $triggervalue, array('VALUE' => $type));
+ if($related == 'END'){
+ $valarm->addProperty('TRIGGER', $tv, array('VALUE' => $type, 'RELATED' => $related));
+ } else {
+ $valarm->addProperty('TRIGGER', $tv, array('VALUE' => $type));
+ }
+ $vtodo->setDateTime('LAST-MODIFIED', 'now', \Sabre\VObject\Property\DateTime::UTC);
+ $vtodo->setDateTime('DTSTAMP', 'now', \Sabre\VObject\Property\DateTime::UTC);
\OC_Calendar_Object::edit($taskId, $vcalendar->serialize());
} catch (\Exception $e) {
}
}
+
return $response;
}