/**
 * @param int $namespace
 * @param int $namespace_id
 * @param string $uri
 * @param array $calendar
 * @return Sabre_CalDAV_Backend_Common
 * @throws Exception
 */
function wdcal_calendar_factory($namespace, $namespace_id, $uri, $calendar = null)
{
    switch ($namespace) {
        case CALDAV_NAMESPACE_PRIVATE:
            if ($uri == CALDAV_FRIENDICA_MINE || $uri == CALDAV_FRIENDICA_CONTACTS) {
                return Sabre_CalDAV_Backend_Friendica::getInstance();
            } else {
                return Sabre_CalDAV_Backend_Private::getInstance();
            }
    }
    throw new Exception("Calendar Namespace not found");
}