/** * 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; }