/**
* Return a data handler for accessing data in the specified folder.
*
* @param mixed $folder The name of the folder or an instance
* representing the folder.
* @param string $object_type The type of data we want to access in the
* folder.
* @param int $data_version Format version of the object data.
*
* @return Horde_Kolab_Storage_Data The data object.
*/
public function getData($folder, $object_type = null, $data_version = 1)
{
if ($folder instanceof Horde_Kolab_Storage_Folder) {
$folder_key = $folder->getPath();
} else {
$folder_key = $folder;
}
$key = join('@', array($data_version, $object_type, $folder_key, $this->_master->getId()));
if (!isset($this->_data[$key])) {
if (!$folder instanceof Horde_Kolab_Storage_Folder) {
$folder = $this->getFolder($folder);
}
$this->_data[$key] = $this->_createData($folder, $this->_master, $this->_factory, $object_type, $data_version);
if (isset($this->_params['logger'])) {
$this->_data[$key] = new Horde_Kolab_Storage_Data_Decorator_Log($this->_data[$key], $this->_params['logger']);
}
$this->_query_set->addDataQuerySet($this->_data[$key]);
}
return $this->_data[$key];
}