nextcloud/apps/calendar/lib/repeat.php

141 lines
3.7 KiB
PHP
Raw Normal View History

2012-05-01 18:16:12 +04:00
<?php
/**
* Copyright (c) 2012 Georg Ehrke <ownclouddev@georgswebsite.de>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
/*
* This class manages the caching of repeating events
* Events will be cached for the current year ± 5 years
*/
class OC_Calendar_Repeat{
/*
* @brief returns the cache of an event
2012-05-18 13:48:18 +04:00
* @param (int) $id - id of the event
* @return (array)
2012-05-01 18:16:12 +04:00
*/
2012-05-18 13:48:18 +04:00
public static function get($id){
$stmt = OCP\DB::prepare('SELECT * FROM *PREFIX*calendar_repeat WHERE eventid = ?');
$result = $stmt->execute(array($id));
$return = array();
while($row = $result->fetchRow()){
$return[] = $row;
}
return $return;
}
/*
2012-05-13 01:16:11 +04:00
* @brief returns the cache of an event in a specific peroid
2012-05-18 13:48:18 +04:00
* @param (int) $id - id of the event
* @param (string) $from - start for period in UTC
* @param (string) $until - end for period in UTC
* @return (array)
2012-05-13 01:16:11 +04:00
*/
2012-05-18 13:48:18 +04:00
public static function get_inperiod($id, $from, $until){
2012-06-09 00:22:16 +04:00
$stmt = OCP\DB::prepare( 'SELECT * FROM *PREFIX*calendar_repeat WHERE eventid = ?'
.' AND ((startdate >= ? AND startdate <= ?)'
.' OR (enddate >= ? AND enddate <= ?)');
$result = $stmt->execute(array($id,
$from, $until,
$from, $until));
$return = array();
while($row = $result->fetchRow()){
$return[] = $row;
}
return $return;
2012-05-18 13:48:18 +04:00
}
2012-05-01 18:16:12 +04:00
/*
2012-05-13 01:16:11 +04:00
* @brief returns the cache of all repeating events of a calendar
* @param (int) $id - id of the calendar
* @return (array)
2012-05-01 18:16:12 +04:00
*/
public static function getcalendar($id){
2012-06-09 00:22:16 +04:00
$stmt = OCP\DB::prepare('SELECT * FROM *PREFIX*calendar_repeat WHERE calid = ?');
$result = $stmt->execute(array($id));
$return = array();
while($row = $result->fetchRow()){
$return[] = $row;
}
return $return;
}
/*
2012-05-13 01:16:11 +04:00
* @brief returns the cache of all repeating events of a calendar in a specific period
* @param (int) $id - id of the event
* @param (string) $from - start for period in UTC
* @param (string) $until - end for period in UTC
2012-06-09 00:22:16 +04:00
* @return (array)
2012-05-13 01:16:11 +04:00
*/
public static function getcalendar_inperiod($id, $from, $until){
2012-06-09 00:22:16 +04:00
$stmt = OCP\DB::prepare( 'SELECT * FROM *PREFIX*calendar_repeat WHERE calid = ?'
.' AND ((startdate >= ? AND startdate <= ?)'
.' OR (enddate >= ? AND enddate <= ?)');
$result = $stmt->execute(array($id,
$from, $until,
$from, $until));
$return = array();
while($row = $result->fetchRow()){
$return[] = $row;
}
return $return;
}
2012-05-01 18:16:12 +04:00
/*
* @brief generates the cache the first time
2012-06-09 00:22:16 +04:00
* @param (int) id - id of the event
* @return (bool)
2012-05-01 18:16:12 +04:00
*/
2012-06-01 13:30:54 +04:00
public static function generate($id){
2012-06-09 00:22:16 +04:00
$event = OC_Calendar_Object::find(id);
if($event['repeating'] == 0){
return false;
}
$object = OC_VObject::parse($event['calendardata']);
$start = new DateTime('first day of January', new DateTimeZone('UTC'));
$start->modify('-5 years');
$end = new DateTime('last day of December', new DateTimeZone('UTC'));
$end->modify('+5 years');
$object->expand($start, $end);
2012-06-01 13:30:54 +04:00
}
2012-05-13 01:16:11 +04:00
/*
* @brief generates the cache the first time for all repeating event of an calendar
*/
2012-06-01 13:30:54 +04:00
public static function generatecalendar($id){
}
2012-05-01 18:16:12 +04:00
/*
* @brief updates an event that is already cached
*/
2012-06-01 13:30:54 +04:00
public static function update($id){
}
2012-05-13 01:16:11 +04:00
/*
* @brief updates all repating events of a calendar that are already cached
*/
2012-06-01 13:30:54 +04:00
public static function updatecalendar($id){
}
2012-05-01 18:16:12 +04:00
/*
* @brief checks if an event is already cached
*/
2012-06-01 13:30:54 +04:00
public static function is_cached($id){
}
/*
* @brief checks if a whole calendar is already cached
*/
public static function is_calendar_cached($id){
}
2012-05-01 18:16:12 +04:00
/*
* @brief removes the cache of an event
*/
2012-06-01 13:30:54 +04:00
public static function clean($id){
}
2012-05-01 18:16:12 +04:00
/*
* @brief removes the cache of all events of a calendar
*/
2012-06-01 13:30:54 +04:00
public static function cleancalendar($id){
}
}