public static function getPrincipalByEmail($sEmail) { $sEmail = trim(str_ireplace("mailto:", "", $sEmail)); $oPrincipalBackend = Backend::Principal(); $mPrincipalPath = $oPrincipalBackend->searchPrincipals(\afterlogic\DAV\Constants::PRINCIPALS_PREFIX, array('{http://sabredav.org/ns}email-address' => $sEmail)); if (is_array($mPrincipalPath) && count($mPrincipalPath) === 0) { \afterlogic\DAV\Utils::CheckPrincipals($sEmail); $mPrincipalPath = $oPrincipalBackend->searchPrincipals(\afterlogic\DAV\Constants::PRINCIPALS_PREFIX, array('{http://sabredav.org/ns}email-address' => $sEmail)); if (is_array($mPrincipalPath) && count($mPrincipalPath) === 0) { throw new \Exception("Unknown email address"); } } $sPrincipal = null; foreach ($mPrincipalPath as $aPrincipal) { if ($aPrincipal === \afterlogic\DAV\Constants::PRINCIPALS_PREFIX . '/' . $sEmail) { $sPrincipal = $aPrincipal; break; } } if (!isset($sPrincipal)) { throw new \Exception("Unknown email address"); } return $oPrincipalBackend->getPrincipalByPath($sPrincipal); }
public static function getPrincipalByEmail($sEmail) { $sEmail = trim(str_ireplace("mailto:", "", $sEmail)); $aPrincipalsPath = Backend::Principal()->searchPrincipals(\Afterlogic\DAV\Constants::PRINCIPALS_PREFIX, array('{http://sabredav.org/ns}email-address' => $sEmail)); if (is_array($aPrincipalsPath) && count($aPrincipalsPath) === 0) { $aPrincipalsPath = Backend::Principal()->searchPrincipals(\Afterlogic\DAV\Constants::PRINCIPALS_PREFIX, array('{http://sabredav.org/ns}email-address' => $sEmail)); if (is_array($aPrincipalsPath) && count($aPrincipalsPath) === 0) { throw new \Exception("Unknown email address"); } } $aPrincipals = array_filter($aPrincipalsPath, function ($sPrincipalPath) use($sEmail) { return $sPrincipalPath === \Afterlogic\DAV\Constants::PRINCIPALS_PREFIX . '/' . $sEmail; }); if (count($aPrincipals) === 0) { throw new \Exception("Unknown email address"); } return Backend::Principal()->getPrincipalByPath($aPrincipals[0]); }
public function __construct($baseUri = '/') { $this->debugExceptions = false; self::$exposeVersion = false; $this->setBaseUri($baseUri); date_default_timezone_set('GMT'); if (\CApi::GetPDO()) { /* Authentication Plugin */ $this->addPlugin(new \Sabre\DAV\Auth\Plugin(Backend::Auth(), 'SabreDAV')); /* Logs Plugin */ $this->addPlugin(new Logs\Plugin()); /* DAV ACL Plugin */ $aclPlugin = new \Sabre\DAVACL\Plugin(); $aclPlugin->hideNodesFromListings = true; $aclPlugin->defaultUsernamePath = Constants::PRINCIPALS_PREFIX; $mAdminPrincipal = \CApi::GetConf('labs.dav.admin-principal', false); if ($mAdminPrincipal !== false) { $aclPlugin->adminPrincipals = array(Constants::PRINCIPALS_PREFIX . '/' . $mAdminPrincipal); } $this->addPlugin($aclPlugin); $bIsOwncloud = false; /* Directory tree */ $aTree = array($bIsOwncloud ? new CardDAV\AddressBookRoot(Backend::Principal(), Backend::getBackend('carddav-owncloud')) : new CardDAV\AddressBookRoot(Backend::Principal(), Backend::Carddav()), new CalDAV\CalendarRootNode(Backend::Principal(), Backend::Caldav()), new CardDAV\GAddressBooks('gab', Constants::GLOBAL_CONTACTS)); $this->oApiCapaManager = \CApi::Manager('capability'); /* Files folder */ if ($this->oApiCapaManager->isFilesSupported()) { $bErrorCreateDir = false; /* Public files folder */ $publicDir = \CApi::DataPath() . Constants::FILESTORAGE_PATH_ROOT; if (!file_exists($publicDir)) { if (!@mkdir($publicDir)) { $bErrorCreateDir = true; } } $publicDir .= Constants::FILESTORAGE_PATH_CORPORATE; if (!file_exists($publicDir)) { if (!@mkdir($publicDir)) { $bErrorCreateDir = true; } } $personalDir = \CApi::DataPath() . Constants::FILESTORAGE_PATH_ROOT . Constants::FILESTORAGE_PATH_PERSONAL; if (!file_exists($personalDir)) { if (!@mkdir($personalDir)) { $bErrorCreateDir = true; } } $sharedDir = \CApi::DataPath() . Constants::FILESTORAGE_PATH_ROOT . Constants::FILESTORAGE_PATH_SHARED; if (!file_exists($sharedDir)) { if (!@mkdir($sharedDir)) { $bErrorCreateDir = true; } } if ($bErrorCreateDir) { throw new \Sabre\DAV\Exception('Can\'t create directory in ' . \CApi::DataPath() . Constants::FILESTORAGE_PATH_ROOT, 500); } $aFilesTree = array(new FS\RootPersonal($personalDir)); if ($this->oApiCapaManager->isCollaborationSupported()) { array_push($aFilesTree, new FS\RootPublic($publicDir)); } if (\CApi::GetConf('labs.files-sharing', false)) { array_push($aFilesTree, new FS\RootShared($sharedDir)); } array_push($aTree, new \Sabre\DAV\SimpleCollection('files', $aFilesTree)); $this->addPlugin(new FS\Plugin()); // Automatically guess (some) contenttypes, based on extesion $this->addPlugin(new \Sabre\DAV\Browser\GuessContentType()); } $oPrincipalColl = new \Sabre\DAVACL\PrincipalCollection(Backend::Principal()); // $oPrincipalColl->disableListing = true; array_push($aTree, $oPrincipalColl); /* Initializing server */ parent::__construct($aTree); $this->httpResponse->setHeader("X-Server", Constants::DAV_SERVER_NAME); /* Reminders Plugin */ $this->addPlugin(new Reminders\Plugin(Backend::Reminders())); /* Contacts Plugin */ $this->addPlugin(new Contacts\Plugin()); if ($this->oApiCapaManager->isMobileSyncSupported()) { /* CalDAV Plugin */ $this->addPlugin(new \Sabre\CalDAV\Plugin()); /* CardDAV Plugin */ $this->addPlugin(new \Sabre\CardDAV\Plugin()); /* ICS Export Plugin */ $this->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); /* VCF Export Plugin */ $this->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); } /* Calendar Sharing Plugin */ $this->addPlugin(new \Sabre\CalDAV\SharingPlugin()); /* HTML Frontend Plugin */ if (\CApi::GetConf('labs.dav.use-browser-plugin', false) !== false) { $this->addPlugin(new \Sabre\DAV\Browser\Plugin(false, false)); } /* Locks Plugin */ // $this->addPlugin(new \Sabre\DAV\Locks\Plugin(new \Sabre\DAV\Locks\Backend\File(\CApi::DataPath() . '/locks.dat'))); $this->subscribeEvent('beforeGetProperties', array($this, 'beforeGetProperties'), 90); } }
public function __construct($baseUri = '/') { $this->debugExceptions = true; self::$exposeVersion = false; $this->setBaseUri($baseUri); date_default_timezone_set('GMT'); if (\CApi::GetPDO()) { /* Authentication Plugin */ $this->addPlugin(new \Afterlogic\DAV\Auth\Plugin(Backend::Auth(), 'SabreDAV')); /* Logs Plugin */ // $this->addPlugin(new Logs\Plugin()); /* DAV ACL Plugin */ $aclPlugin = new \Sabre\DAVACL\Plugin(); $aclPlugin->hideNodesFromListings = true; $aclPlugin->defaultUsernamePath = Constants::PRINCIPALS_PREFIX; $mAdminPrincipal = \CApi::GetConf('labs.dav.admin-principal', false); $aclPlugin->adminPrincipals = $mAdminPrincipal !== false ? array(Constants::PRINCIPALS_PREFIX . '/' . $mAdminPrincipal) : array(); $this->addPlugin($aclPlugin); $bIsOwncloud = false; /* Directory tree */ $aTree = array($bIsOwncloud ? new CardDAV\AddressBookRoot(Backend::Principal(), Backend::getBackend('carddav-owncloud')) : new CardDAV\AddressBookRoot(Backend::Principal(), Backend::Carddav()), new CalDAV\CalendarRoot(Backend::Principal(), Backend::Caldav()), new CardDAV\GAB\AddressBooks('gab', Constants::GLOBAL_CONTACTS)); $this->oApiCapaManager = \CApi::GetSystemManager('capability'); /* Files folder */ if ($this->oApiCapaManager->isFilesSupported()) { array_push($aTree, new \Afterlogic\DAV\FS\FilesRoot()); $this->addPlugin(new FS\Plugin()); // Automatically guess (some) contenttypes, based on extesion $this->addPlugin(new \Sabre\DAV\Browser\GuessContentType()); } $oPrincipalColl = new \Sabre\DAVACL\PrincipalCollection(Backend::Principal()); // $oPrincipalColl->disableListing = true; array_push($aTree, $oPrincipalColl); /* Initializing server */ parent::__construct($aTree); $this->httpResponse->setHeader("X-Server", Constants::DAV_SERVER_NAME); /* Reminders Plugin */ $this->addPlugin(new Reminders\Plugin(Backend::Reminders())); $this->addPlugin(new \Sabre\CalDAV\Schedule\Plugin()); $this->addPlugin(new \Sabre\CalDAV\Schedule\IMipPlugin('*****@*****.**')); /* Contacts Plugin */ $this->addPlugin(new Contacts\Plugin()); // if ($this->oApiCapaManager->isMobileSyncSupported()) { /* CalDAV Plugin */ $this->addPlugin(new \Sabre\CalDAV\Plugin()); /* CardDAV Plugin */ $this->addPlugin(new \Sabre\CardDAV\Plugin()); /* ICS Export Plugin */ $this->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); /* VCF Export Plugin */ $this->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); // } /* Calendar Sharing Plugin */ $this->addPlugin(new \Sabre\CalDAV\SharingPlugin()); /* DAV Sync Plugin */ $this->addPlugin(new \Sabre\DAV\Sync\Plugin()); /* HTML Frontend Plugin */ if (\CApi::GetConf('labs.dav.use-browser-plugin', false) !== false) { $this->addPlugin(new \Sabre\DAV\Browser\Plugin()); } /* Locks Plugin */ // $this->addPlugin(new \Sabre\DAV\Locks\Plugin()); $this->on('beforeGetProperties', array($this, 'beforeGetProperties'), 90); } }