begin process at 2012 05 31 10:10:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Script Vcard


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Script Vcard

mardi 21 novembre 2006 à 08:34:26 | Script Vcard

flopad

Bonjour tout le monde!

j'ai récupéré le script suivant qui permettrait de créer des fichiers au format Vcard. J'ai du mal à saisir le fonctionnement...Qq'un pourrait t-il m'aider à comprendre, mon but étant d'utiliser des données que je récupère dans une bdd pour créer ce fichier Vcard de contact.

MERCI BEAUCOUP!!

CODE :

<?

function encode($string) {
 return escape(quoted_printable_encode($string));
}

function escape($string) {
 return str_replace(";","\;",$string);
}

// taken from PHP documentation comments
function quoted_printable_encode($input, $line_max = 76) {
 $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
 $lines = preg_split("/(?:\r\n|\r|\n)/", $input);
 $eol = "\r\n";
 $linebreak = "=0D=0A";
 $escape = "=";
 $output = "";

 for ($j=0;$j<count($lines);$j++) {
  $line = $lines[$j];
  $linlen = strlen($line);
  $newline = "";
  for($i = 0; $i < $linlen; $i++) {
   $c = substr($line, $i, 1);
   $dec = ord($c);
   if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only
    $c = "=20";
   } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
    $h2 = floor($dec/16); $h1 = floor($dec%16);
    $c = $escape.$hex["$h2"].$hex["$h1"];
   }
   if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
    $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
    $newline = "    ";
   }
   $newline .= $c;
  } // end of for
  $output .= $newline;
  if ($j<count($lines)-1) $output .= $linebreak;
 }
 return trim($output);
}

class vCard {
 var $properties;
 var $filename;
 
 function setPhoneNumber($number, $type="") {
 // type may be PREF | WORK | HOME | VOICE | FAX | MSG | CELL | PAGER | BBS | CAR | MODEM | ISDN | VIDEO or any senseful combination, e.g. "PREF;WORK;VOICE"
  $key = "TEL";
  if ($type!="") $key .= ";".$type;
  $key.= ";ENCODING=QUOTED-PRINTABLE";
  $this->properties[$key] = quoted_printable_encode($number);
 }
 
 // UNTESTED !!!
 function setPhoto($type, $photo) { // $type = "GIF" | "JPEG"
  $this->properties["PHOTO;TYPE=$type;ENCODING=BASE64"] = base64_encode($photo);
 }
 
 function setFormattedName($name) {
  $this->properties["FN"] = quoted_printable_encode($name);
 }
 
 function setName($family="", $first="", $additional="", $prefix="", $suffix="") {
  $this->properties["N"] = "$family;$first;$additional;$prefix;$suffix";
  $this->filename = "$first%20$family.vcf";
  if ($this->properties["FN"]=="") $this->setFormattedName(trim("$prefix $first $additional $family $suffix"));
 }
 
 function setBirthday($date) { // $date format is YYYY-MM-DD
  $this->properties["BDAY"] = $date;
 }
 
 function setAddress($postoffice="", $extended="", $street="", $city="", $region="", $zip="", $country="", $type="HOME;POSTAL") {
 // $type may be DOM | INTL | POSTAL | PARCEL | HOME | WORK or any combination of these: e.g. "WORK;PARCEL;POSTAL"
  $key = "ADR";
  if ($type!="") $key.= ";$type";
  $key.= ";ENCODING=QUOTED-PRINTABLE";
  $this->properties[$key] = encode($name).";".encode($extended).";".encode($street).";".encode($city).";".encode($region).";".encode($zip).";".encode($country);
  
  if ($this->properties["LABEL;$type;ENCODING=QUOTED-PRINTABLE"] == "") {
   //$this->setLabel($postoffice, $extended, $street, $city, $region, $zip, $country, $type);
  }
 }
 
 function setLabel($postoffice="", $extended="", $street="", $city="", $region="", $zip="", $country="", $type="HOME;POSTAL") {
  $label = "";
  if ($postoffice!="") $label.= "$postoffice\r\n";
  if ($extended!="") $label.= "$extended\r\n";
  if ($street!="") $label.= "$street\r\n";
  if ($zip!="") $label.= "$zip ";
  if ($city!="") $label.= "$city\r\n";
  if ($region!="") $label.= "$region\r\n";
  if ($country!="") $country.= "$country\r\n";
  
  $this->properties["LABEL;$type;ENCODING=QUOTED-PRINTABLE"] = quoted_printable_encode($label);
 }
 
 function setEmail($address) {
  $this->properties["EMAIL;INTERNET"] = $address;
 }
 
 function setNote($note) {
  $this->properties["NOTE;ENCODING=QUOTED-PRINTABLE"] = quoted_printable_encode($note);
 }
 
 function setURL($url, $type="") {
 // $type may be WORK | HOME
  $key = "URL";
  if ($type!="") $key.= ";$type";
  $this->properties[$key] = $url;
 }
 
 function getVCard() {
  $text = "BEGIN:VCARD\r\n";
  $text.= "VERSION:2.1\r\n";
  foreach($this->properties as $key => $value) {
   $text.= "$key:$value\r\n";
  }
  $text.= "REV:".date("Y-m-d")."T".date("H:i:s")."Z\r\n";
  $text.= "MAILER:PHP vCard class by Kai Blankenhorn\r\n";
  $text.= "END:VCARD\r\n";
  return $text;
 }
 
 function getFileName() {
  return $this->filename;
 }
}


//  USAGE EXAMPLE

$v = new vCard();

$v->setPhoneNumber("+49 23 456789", "PREF;HOME;VOICE");
$v->setName("Mustermann", "Thomas", "", "Herr");
$v->setBirthday("1960-07-31");
$v->setAddress("", "", "Musterstrasse 20", "Musterstadt", "", "98765", "Deutschland");
$v->setEmail("thomas.mustermann@thomas-mustermann.de");
$v->setNote("You can take some notes here.\r\nMultiple lines are supported via \\r\\n.");
$v->setURL(" [ Lien ]", "WORK");

$output = $v->getVCard();
$filename = $v->getFileName();

Header("Content-Disposition: attachment; filename=$filename");
Header("Content-Length: ".strlen($output));
Header("Connection: close");
Header("Content-Type: text/x-vCard; name=$filename");

echo $output;
?>



Cette discussion est classée dans : function, type, key, properties, encode


Répondre à ce message

Sujets en rapport avec ce message

MIME TYPE [ par g_fuck ] SALUT ! POURKOI LA FUNCTION $imageType = mime_content_type($_FILES[$file]['tmp_name']); NE VEUX T'ELLE PAS MARCHER ? AU FAIT J'ESASI D'AVOIR LE MIM mail avec divers contenus [ par blueskycorporation ] J'aimerai pouvoir envoyer un mail, qui affiche soit un texte en html, soit un texte simple si le html n'est pas supporté. Si le texte s'affiche en htm Type d'un fichier [ par audayls ] Salut,    Avant lorsque je faisais un upload et que je n'acceptais que les images, j'utilisais la fonction "getimagesize". Mais après avoir fait quelq problème avec $_FILES [ par nicomilville ] Salut,J'ai un problème avec un code qui est censé uploader une image et mettre son chemin dans une base de donnée...Je n'ai aucune erreur...Mon code P Problème avec WAMP (mysql) [ par nicomilville ] Salut,J'ai un problème avec mysql depuis deux mois, j'avais déja posté un sujet mais je n'avais eu aucune réponses qui m'ont aidé a résoudre mon probl petites questions sur les bitwise [ par jdaviaud ] je souhaite réutiliser une classe utilisant les bitwises pour gérer des droits d'accès utilisateurs, cette classe fonctionnait bien avec mon ancien se php:probleme avec FileInfo et mime_content_type [ par armou ] slt j'ai un probleme avec un programme écrit en php que je veux déployer mais je me retrouve avec un message d'erreur qui dit :PHP5 on this system lac Utiliser une fonction membre de la classe comme callback [ par Evangun ] Bonjour,je n'arrive pas à spécifier une méthode de la classe courante comme fonction de callback.J'ai tenté plusieurs déclarations sans succès (je sui sécurité dans messages [ par m2rtech ] Bonjour, je suis actuellement victime depuis deux jours d'un individuqui laisse des messages de lien type : je souhaite contrer ce type de message en Problème sur listes déroulantes conditionnelles, je n'arrive pas à définir un "name" à la seconde liste [ par stark_2097 ] Salut à tousMe revoilà avec un nouveau problème.J'ai deux listes déroulantes alimentées par SQL que je nomme "conditionnelles" car le fait de choisir


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales