/**
  * Returns a valid and unused vCard id
  *
  * @return	string	$vcard_id	Valid vCard id
  */
 private function generate_vcard_id()
 {
     $vcard_id = null;
     for ($number = 0; $number <= 25; $number++) {
         if ($number == 8 || $number == 17) {
             $vcard_id .= '-';
         } else {
             $vcard_id .= $this->vcard_id_chars[mt_rand(0, count($this->vcard_id_chars) - 1)];
         }
     }
     try {
         $carddav = new carddav_backend($this->url);
         $carddav->set_auth($this->username, $this->password);
         $result = $carddav->query($this->url . $vcard_id . $this->url_vcard_extension, 'GET');
         if ($result['http_code'] !== 404) {
             $vcard_id = $this->generate_vcard_id();
         }
         return $vcard_id;
     } catch (Exception $e) {
         throw new Exception($e->getMessage(), self::EXCEPTION_COULD_NOT_GENERATE_NEW_VCARD_ID);
     }
 }
 /**
  * Returns a valid and unused vCard id
  *
  * @return	string	Valid vCard id
  */
 private function generate_vcard_id()
 {
     $id = null;
     for ($number = 0; $number <= 25; $number++) {
         if ($number == 8 || $number == 17) {
             $id .= '-';
         } else {
             $id .= $this->vcard_id_chars[mt_rand(0, count($this->vcard_id_chars) - 1)];
         }
     }
     $this->current_id = $id;
     $carddav = new carddav_backend($this->url);
     $carddav->set_auth($this->username, $this->password);
     if ($carddav->query($this->url . $id . $this->ext, 'GET', null, null, true)) {
         return $this->generate_vcard_id();
     } else {
         return $id;
     }
 }