1: <?php
2: /**
3: * Kronolith_Calendar_External defines an API for single timeobject calendars.
4: *
5: * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
6: *
7: * See the enclosed file COPYING for license information (GPL). If you
8: * did not receive this file, see http://www.horde.org/licenses/gpl.
9: *
10: * @author Jan Schneider <jan@horde.org>
11: * @package Kronolith
12: */
13: class Kronolith_Calendar_External extends Kronolith_Calendar
14: {
15: /**
16: * The application of this timeobject source.
17: *
18: * @var string
19: */
20: protected $_api;
21:
22: /**
23: * The ID of this timeobject source.
24: *
25: * @var string
26: */
27: protected $_id;
28:
29: /**
30: * The name of this timeobject source.
31: *
32: * @var string
33: */
34: protected $_name;
35:
36: /**
37: * Constructor.
38: *
39: * @param array $params A hash with any parameters that this calendar
40: * might need.
41: * Required parameters:
42: * - share: The share of this calendar.
43: */
44: public function __construct($params = array())
45: {
46: if (!isset($params['name'])) {
47: throw new BadMethodCallException('name parameter is missing');
48: }
49: if (!isset($params['id'])) {
50: throw new BadMethodCallException('id parameter is missing');
51: }
52: if (!isset($params['api'])) {
53: throw new BadMethodCallException('api parameter is missing');
54: }
55: parent::__construct($params);
56: }
57:
58: /**
59: * Returns the name of this calendar.
60: *
61: * @return string This calendar's name.
62: */
63: public function name()
64: {
65: return $this->_name;
66: }
67:
68: /**
69: * Whether this calendar is supposed to be displayed in lists.
70: *
71: * @return boolean True if this calendar should be displayed.
72: */
73: public function display()
74: {
75: return empty($GLOBALS['conf']['share']['hidden']) ||
76: in_array($this->_api . '/' . $this->_id, $GLOBALS['display_external_calendars']);
77: }
78:
79: /**
80: * Returns the application of this calendar.
81: *
82: * @return string This calendar's timeobject application.
83: */
84: public function api()
85: {
86: return $this->_api;
87: }
88:
89: /**
90: * Returns a hash representing this calendar.
91: *
92: * @return array A simple hash.
93: */
94: public function toHash()
95: {
96: $hash = parent::toHash();
97: $hash['api'] = $GLOBALS['registry']->get('name', $GLOBALS['registry']->hasInterface($this->api()));
98: $hash['show'] = in_array($this->_api . '/' . $this->_id, $GLOBALS['display_external_calendars']);
99: return $hash;
100: }
101: }
102: