Beispiel #1
0
 /**
  * Authenticates the user - NOT EFFECTIVELY IMPLEMENTED
  * Normally some kind of password check would be done here.
  * Alternatively, the password could be ignored and an Apache
  * authentication via mod_auth_* could be done
  *
  * @param string        $username
  * @param string        $domain
  * @param string        $password
  *
  * @access public
  * @return boolean
  */
 public function Logon($username, $domain, $password)
 {
     $this->url = CARDDAV_PROTOCOL . '://' . CARDDAV_SERVER . ':' . CARDDAV_PORT . str_replace("%d", $domain, str_replace("%u", $username, CARDDAV_PATH));
     $this->default_url = CARDDAV_PROTOCOL . '://' . CARDDAV_SERVER . ':' . CARDDAV_PORT . str_replace("%d", $domain, str_replace("%u", $username, CARDDAV_DEFAULT_PATH));
     if (defined('CARDDAV_GAL_PATH')) {
         $this->gal_url = CARDDAV_PROTOCOL . '://' . CARDDAV_SERVER . ':' . CARDDAV_PORT . str_replace("%d", $domain, str_replace("%u", $username, CARDDAV_GAL_PATH));
     } else {
         $this->gal_url = false;
     }
     $this->server = new carddav_backend($this->url, CARDDAV_URL_VCARD_EXTENSION);
     $this->server->set_auth($username, $password);
     if ($connected = $this->server->check_connection()) {
         ZLog::Write(LOGLEVEL_DEBUG, sprintf("BackendCardDAV->Logon(): User '%s' is authenticated on '%s'", $username, $this->url));
         $this->username = $username;
         $this->domain = $domain;
         // Autodiscover all the addressbooks
         $this->discoverAddressbooks();
     } else {
         //TODO: get error message
         $error = '';
         ZLog::Write(LOGLEVEL_ERROR, sprintf("BackendCardDAV->Logon(): User '%s' failed to authenticate on '%s': %s", $username, $this->url, $error));
         $this->server = null;
     }
     return $connected;
 }
 /**
  * Deletes the CardDAV server contact
  *
  * @param  array $carddav_contact_ids CardDAV contact ids
  * @return mixed                      affected CardDAV contacts or false
  */
 private function carddav_delete($carddav_contact_ids)
 {
     $server = current(carddav::get_carddav_server($this->carddav_server_id));
     $carddav_backend = new carddav_backend($server['url']);
     if ($this->rc->decrypt($server['password']) == '%p') {
         $server['password'] = $this->rcpassword;
     }
     $carddav_backend->set_auth($server['username'], $this->rc->decrypt($server['password']), $server['authtype']);
     if ($carddav_backend->check_connection()) {
         foreach ($carddav_contact_ids as $carddav_contact_id) {
             $contact = $this->get_carddav_addressbook_contact($carddav_contact_id);
             $carddav_backend->delete($contact['vcard_id']);
             $this->counter++;
             if ($this->counter < count($carddav_contact_ids)) {
                 continue;
             }
             if ($this->counter > 1) {
                 $contact['vcard_id'] = false;
             }
             $this->carddav_addressbook_sync($server, $carddav_contact_id, $contact['vcard_id']);
         }
         return count($carddav_contact_ids);
     }
     return false;
 }