PHPackages                             waltertamboer/sabredav-module - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. waltertamboer/sabredav-module

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

waltertamboer/sabredav-module
=============================

A Zend Framework 2 module to work with SabreDav while respecting ZF2's application flow.

0106PHP

Since Jul 20Pushed 10y ago1 watchersCompare

[ Source](https://github.com/waltertamboer/SabreDavModule)[ Packagist](https://packagist.org/packages/waltertamboer/sabredav-module)[ RSS](/packages/waltertamboer-sabredav-module/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

SabreDavModule
==============

[](#sabredavmodule)

A Zend Framework 2 module to respect Zend Framework's application flow while working with SabreDav.

Getting started
---------------

[](#getting-started)

It's recommended to install this library via [Composer](https://getcomposer.org).

```
{
    "require": {
        "waltertamboer/sabredav-module": "dev-master"
    }
}
```

Next copy the configuration file from `vendor/waltertamboer/sabredav-module/config/sabredav.config.global.dist.php` to `config/autoload/sabredav.config.global.php`.

Configuration
-------------

[](#configuration)

The configuration file contains a `sabredav` key which is an array. Each entry in the array is considered an entry point for SabreDav. This way it becomes possible to split the CalDav, CardDav and WebDav url's from each other. A basic configuration looks like this:

```
'sabredav' => array(
    'dav' => array(
        'enabled' => true,
        'route' => 'my-route',
        'nodes' => array(
            // All nodes that are supported
        ),
        'plugins' => array(
            // All plugins that are supported
        ),
    ),
),

```

The key `dav` is important. It should match the name from the controller which will be explained later on. The array contains four entries: enabled, route, nodes and plugins.

- *enabled* simply indicates whether or not this entry point is enabled at the moment.
- *route* contains the name of the route that is used to call this entry point.
- *nodes* is a list with SabreDav nodes that are supported. This way one could only set CardDav for example.
- *plugins* is a list with SabreDav plugins that are supported.

### Nodes

[](#nodes)

It's possible to configure the server in such a way that one could create different entry points for CalDav, CardDav and WebDav. It's also possible to combine the three in one entry point. The default configuration file (as provided in the module) contains a setup where CalDav, CardDav and WebDav are combined.

Each node is an array with a `name` and an `options` element. The name should be a valid node services. The options array is used to pass additional parameters to the node service. Supported nodes are:

- caldav - Adds CalDav support to the server.
- carddav - Adds CardDav support to the server.
- directory - Adds WebDav support to the server.
- principal - Adds support for multiple users to the server.

### Plugins

[](#plugins)

Plugins can be used to add additional support to the SabreDav server. They simply correspond to the plugins that SabreDav offers.

Each plpugin is an array with a `name` and an `options` element. The name should be a valid plugin services. The options array is used to pass additional parameters to the plugin service. Supported plugins are:

- acl
- auth
- browser
- caldav
- carddav
- lock
- mount
- partial
- property
- schedule
- subscription
- sync

### Router

[](#router)

This module comes with a preset route called "sabredav-dav". It's possible to add additional routes in order to create a new entry point. It's important to set the route type to `SabreDavModule\\Mvc\\Router\\Http\\SabreDav` which simply acts as a catch-all route.

The controller name **MUST** start with `sabredavmodule.`. Everything that comes after the dot will be considered the name of the entry point. This string will be used to find the configuration in the `sabredav` configuration array.

```
'router' => array(
    'routes' => array(
        'sabredav-dav' => array(
            'type' => 'SabreDavModule\\Mvc\\Router\\Http\\SabreDav',
            'options' => array(
                'regex' => '/dav/(?.*)',
                'spec' => '/dav/%slug%',
                'defaults' => array(
                    'controller' => 'sabredavmodule.dav',
                    'action' => 'index',
                ),
            ),
        ),
    ),
),

```

Todo
----

[](#todo)

- This module is not unit tested yet.
- Once unit tests are written, Travis CI should be hooked up.
- Docblocks are missing
- The README file should contain badges showing the stability of the module.

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/0ee7f711ef4d45ada0ac92c7ab2f548055a7cfbe718da6c4bbb81b2f6693c528?d=identicon)[waltertamboer](/maintainers/waltertamboer)

---

Top Contributors

[![waltertamboer](https://avatars.githubusercontent.com/u/508054?v=4)](https://github.com/waltertamboer "waltertamboer (2 commits)")

### Embed Badge

![Health badge](/badges/waltertamboer-sabredav-module/health.svg)

```
[![Health](https://phpackages.com/badges/waltertamboer-sabredav-module/health.svg)](https://phpackages.com/packages/waltertamboer-sabredav-module)
```

###  Alternatives

[symfony/polyfill-intl-icu

Symfony polyfill for intl's ICU-related data and classes

2.6k251.4M96](/packages/symfony-polyfill-intl-icu)[vivait/string-generator-bundle

Generate random strings for IDs or keys using property annotations

1759.4k](/packages/vivait-string-generator-bundle)[withinboredom/time

Converting time to units

152.7k1](/packages/withinboredom-time)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
