- // Always add a local backend
- $filename = sprintf('%s%s.abook', $data_dir, $username);
- $r = $abook->add_backend('local_file', Array('filename' => $filename,
- 'create' => true));
- if(!$r && $showerr) {
- printf(_("Error opening file %s"), $filename);
- exit;
+ // Always add a local backend. We use *either* file-based *or* a
+ // database addressbook. If $addrbook_dsn is set, the database
+ // backend is used. If not, addressbooks are stores in files.
+ if(isset($addrbook_dsn) && !empty($addrbook_dsn)) {
+ // Database
+ $r = $abook->add_backend('database', Array('dsn' => $addrbook_dsn,
+ 'owner' => $username,
+ 'table' => 'address'));
+ if(!$r && $showerr) {
+ printf(_("Error initializing addressbook database."));
+ exit;
+ }
+ } else {
+ // File
+ $filename = sprintf('%s%s.abook', $data_dir, $username);
+ $r = $abook->add_backend('local_file', Array('filename' => $filename,
+ 'create' => true));
+ if(!$r && $showerr) {
+ printf(_("Error opening file %s"), $filename);
+ exit;
+ }
+
+ }
+
+ // This would be for the global addressbook
+ if (isset($address_book_global_filename)) {
+ $r = $abook->add_backend('global_file');
+ if (!$r && $showerr) {
+ printf(_("Error initializing global addressbook."));
+ exit;
+ }