1: <?php
2: /**
3: * Kronolith_Calendar_Resource defines an API for single internal resource
4: * calendars.
5: *
6: * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
7: *
8: * See the enclosed file COPYING for license information (GPL). If you
9: * did not receive this file, see http://www.horde.org/licenses/gpl.
10: *
11: * @author Jan Schneider <jan@horde.org>
12: * @package Kronolith
13: */
14: class Kronolith_Calendar_Resource extends Kronolith_Calendar
15: {
16: /**
17: * The share of this calendar.
18: *
19: * @var Kronolith_Resource_Single
20: */
21: protected $_resource;
22:
23: /**
24: * Constructor.
25: *
26: * @param array $params A hash with any parameters that this calendar
27: * might need.
28: * Required parameters:
29: * - share: The share of this calendar.
30: */
31: public function __construct($params = array())
32: {
33: if (!isset($params['resource'])) {
34: throw new BadMethodCallException('resource parameter is missing.');
35: }
36: if (!($params['resource'] instanceof Kronolith_Resource_Single)) {
37: throw new InvalidArgumentException('resource parameter is not a Kronolith_Resource_Single object.');
38: }
39: parent::__construct($params);
40: }
41:
42: /**
43: * Returns the owner of this calendar.
44: *
45: * @return string This calendar's owner.
46: */
47: public function owner()
48: {
49: // @TODO: what to return here? Resources do not currently have owners.
50: return '';
51: }
52:
53: /**
54: * Returns the name of this calendar.
55: *
56: * @return string This calendar's name.
57: */
58: public function name()
59: {
60: return $this->_resource->get('name');
61: }
62:
63: /**
64: * Returns the description of this calendar.
65: *
66: * @return string This calendar's description.
67: */
68: public function description()
69: {
70: return $this->_resource->get('description');
71: }
72:
73: /**
74: * Encapsulates permissions checking.
75: *
76: * @param integer $permission The permission to check for.
77: * @param string $user The user to check permissions for. Defaults
78: * to the current user.
79: * @param string $creator An event creator, to check for creator
80: * permissions.
81: *
82: * @return boolean Whether the user has the permission on this calendar.
83: */
84: public function hasPermission($permission, $user = null, $creator = null)
85: {
86: return $this->_resource->hasPermission($user, $permission, $creator);
87: }
88:
89: /**
90: * Whether this calendar is supposed to be displayed in lists.
91: *
92: * @return boolean True if this calendar should be displayed.
93: */
94: public function display()
95: {
96: // @TODO Will have to revisit this when resource management is
97: // added to dynamic view.
98: return false;
99: }
100:
101: }
102: