'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', // groupware 'ics' => 'text/calendar', 'vcf' => 'text/x-vcard', // text 'txt' => 'text/plain', ); /** * Initializes the addon * * @param Sabre_DAV_Server $server * @return void */ public function initialize(Sabre_DAV_Server $server) { // Using a relatively low priority (200) to allow other extensions // to set the content-type first. $server->subscribeEvent('afterGetProperties',array($this,'afterGetProperties'),200); } /** * Handler for teh afterGetProperties event * * @param string $path * @param array $properties * @return void */ public function afterGetProperties($path, &$properties) { if (array_key_exists('{DAV:}getcontenttype', $properties[404])) { list(, $fileName) = Sabre_DAV_URLUtil::splitPath($path); $contentType = $this->getContentType($fileName); if ($contentType) { $properties[200]['{DAV:}getcontenttype'] = $contentType; unset($properties[404]['{DAV:}getcontenttype']); } } } /** * Simple method to return the contenttype * * @param string $fileName * @return string */ protected function getContentType($fileName) { // Just grabbing the extension $extension = strtolower(substr($fileName,strrpos($fileName,'.')+1)); if (isset($this->extensionMap[$extension])) return $this->extensionMap[$extension]; } }