Files
server/usr/share/psa-pear/pear/php/Horde/OpenXchange/EventsAndTasks.php
2026-01-07 20:52:11 +01:00

128 lines
3.4 KiB
PHP

<?php
/**
* Copyright 2014-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @author Jan Schneider <jan@horde.org>
* @category Horde
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package OpenXchange
*/
/**
* Horde_OpenXchange_EventsAndTasks is the base class for the events and tasks
* storage of an Open-Xchange server.
*
* @author Jan Schneider <jan@horde.org>
* @category Horde
* @copyright 2014-2017 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package OpenXchange
*/
abstract class Horde_OpenXchange_EventsAndTasks extends Horde_OpenXchange_Base
{
/**
* Column IDs mapped to column names.
*
* @var array
*/
protected $_columns = array(
1 => 'id',
20 => 'folder_id',
100 => 'categories',
101 => 'private',
200 => 'title',
201 => 'start',
202 => 'end',
203 => 'description',
204 => 'alarm',
209 => 'recur_type',
212 => 'recur_days',
213 => 'recur_day_in_month',
214 => 'recur_month',
215 => 'recur_interval',
216 => 'recur_end',
220 => 'attendees',
221 => 'users',
222 => 'recur_count',
223 => 'uid',
);
/**
* Returns a list of events or tasks.
*
* @param integer $folder A folder ID. If empty, returns objects of all
* visible resources.
* @param Horde_Date $start Start date, defaults to epoch.
* @param Horde_Date $end End date, defaults to maximum date possible.
*
* @return array List of object hashes.
* @throws Horde_OpenXchange_Exception.
*/
protected function _listObjects($folder = null, $start = null, $end = null)
{
$this->_login();
$data = array(
'session' => $this->_session,
'columns' => implode(',', array_keys($this->_columns)),
'start' => $start ? $start->timestamp() * 1000 : 0,
'end' => $end ? $end->timestamp() * 1000 : PHP_INT_MAX,
// Doesn't work for some reason.
'recurrence_master' => true,
);
if ($folder) {
$data['folder'] = $folder;
}
$response = $this->_request(
'GET',
$this->_folderType,
array('action' => 'all'),
$data
);
$events = array();
foreach ($response['data'] as $event) {
$map = array();
foreach (array_values($this->_columns) as $key => $column) {
$map[$column] = $event[$key];
}
$events[] = $map;
}
return $events;
}
/**
* Returns an event or task.
*
* @param integer $folder A folder ID.
* @param integer $id An object ID.
*
* @return array The object hash.
* @throws Horde_OpenXchange_Exception.
*/
protected function _getObject($folder, $id)
{
$this->_login();
$data = array(
'session' => $this->_session,
'id' => $id,
'folder' => $folder,
);
$response = $this->_request(
'GET',
$this->_folderType,
array('action' => 'get'),
$data
);
return $response['data'];
}
}