1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
<?php
/**
* $Horde: turba/lib/Driver/vbook.php,v 1.8.2.4 2008/02/15 16:44:06 chuck Exp $
*
* @package Horde
*/
/**
* Turba directory driver implementation for virtual address books.
*
* Copyright 2005-2008 The Horde Project (http://www.horde.org/)
*
* See the enclosed file LICENSE for license information (ASL). If you
* did not receive this file, see http://www.horde.org/licenses/asl.php.
*
* @author Michael Rubinsky <mrubinsk@horde.org>
* @since Turba 2.2
* @package Turba
*/
class Turba_Driver_vbook extends Turba_Driver {
/**
* Search type for this virtual address book.
*
* @var string
*/
var $searchType;
/**
* The search criteria that defines this virtual address book.
*
* @var array
*/
var $searchCriteria;
/**
* Return the owner to use when searching or creating contacts in
* this address book.
*
* @return string
*/
function _getContactOwner()
{
return $this->_driver->getContactOwner();
}
/**
* Deletes all contacts from an address book. Not implemented for
* virtual address books; just returns true so that the address
* book can be deleted.
*
* @return boolean True
*/
function deleteAll($sourceName = null)
{
return true;
}
/**
*/
function _init()
{
/* Grab a reference to the share for this vbook. */
$this->_share = &$this->_params['share'];
/* Load the underlying driver. */
$this->_driver = &Turba_Driver::singleton($this->_params['source']);
if (is_a($this->_driver, 'PEAR_Error')) {
return $this->_driver;
}
if (!empty($this->_params['criteria'])) {
$this->searchCriteria = $this->_params['criteria'];
} else {
$this->searchCriteria = array();
}
$this->searchType = count($this->searchCriteria) > 1 ? 'advanced' : 'basic';
return true;
}
/**
* Return all entries matching the combined searches represented by
* $criteria and the vitural address book's search criteria.
*
* @param array $criteria Array containing the search criteria.
* @param array $fields List of fields to return
*
* @return array Hash containing the search results.
*/
function _search($criteria, $fields)
{
/* Add the passed in search criteria to the vbook criteria
* (which need to be mapped from turba fields to
* driver-specific fields). */
$criteria['AND'][] = $this->makeSearch($this->searchCriteria, 'AND', array());
return $this->_driver->_search($criteria, $fields);
}
/**
* Reads the requested entries from the underlying source.
*
* @param string $key The primary key field to use.
* @param mixed $ids The ids of the contacts to load.
* @param string $owner Only return contacts owned by this user.
* @param array $fields List of fields to return.
*
* @return array Hash containing the search results.
*/
function _read($key, $ids, $owner, $fields)
{
return $this->_driver->_read($key, $ids, $owner, $fields);
}
/**
* Not supported for virtual address books.
*/
function _add($attributes)
{
return PEAR::raiseError(_("You cannot add new contacts to a virtual address book"));
}
/**
* Not supported for virtual address books.
*/
function _delete($object_key, $object_id)
{
return PEAR::raiseError(_("You cannot delete contacts from a virtual address book"));
}
/**
* Not supported for virtual address books.
*/
function _save($object_key, $object_id, $attributes)
{
return PEAR::raiseError(_("You cannot add an entry to a virtual address book."));
}
/**
* Check to see if the currently logged in user has requested permissions.
* Note that virtual address books are always readonly
*
* @param integer $perm The permissions to check against.
*
* @return boolean True or False.
*/
function hasPermission($perm)
{
if ($this->_share->hasPermission(Auth::getAuth(), $perm)) {
return $perm & (PERMS_SHOW | PERMS_READ);
}
return false;
}
}
|