mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2026-01-06 11:43:50 +00:00
Documentation, format class, no modification. (#7629)
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Filename.......: class_vcard.php
|
||||
* Author.........: Troy Wolf [troy@troywolf.com]
|
||||
* Last Modified..: 2005/07/14 13:30:00
|
||||
* Description....: A class to generate vCards for contact data.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A class to generate vCards for contact data.
|
||||
*
|
||||
* @author Troy Wolf [troy@troywolf.com]
|
||||
*/
|
||||
class vcard {
|
||||
var $log;
|
||||
var $data; //array of this vcard's contact data
|
||||
@@ -14,51 +21,54 @@ class vcard {
|
||||
var $card;
|
||||
|
||||
/**
|
||||
* Called when the object is created
|
||||
* Constructor for initializing the object.
|
||||
*
|
||||
* @access public
|
||||
* @return bool True on successful initialization.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->log = "New vcard() called<br />";
|
||||
$this->data = array(
|
||||
"display_name"=>null
|
||||
,"first_name"=>null
|
||||
,"last_name"=>null
|
||||
,"additional_name"=>null
|
||||
,"name_prefix"=>null
|
||||
,"name_suffix"=>null
|
||||
,"nickname"=>null
|
||||
,"title"=>null
|
||||
,"role"=>null
|
||||
,"department"=>null
|
||||
,"company"=>null
|
||||
,"work_po_box"=>null
|
||||
,"work_extended_address"=>null
|
||||
,"work_address"=>null
|
||||
,"work_city"=>null
|
||||
,"work_state"=>null
|
||||
,"work_postal_code"=>null
|
||||
,"work_country"=>null
|
||||
,"home_po_box"=>null
|
||||
,"home_extended_address"=>null
|
||||
,"home_address"=>null
|
||||
,"home_city"=>null
|
||||
,"home_state"=>null
|
||||
,"home_postal_code"=>null
|
||||
,"home_country"=>null
|
||||
,"voice_tel"=>null
|
||||
,"work_tel"=>null
|
||||
,"home_tel"=>null
|
||||
,"cell_tel"=>null
|
||||
,"fax_tel"=>null
|
||||
,"pager_tel"=>null
|
||||
,"email1"=>null
|
||||
,"email2"=>null
|
||||
,"url"=>null
|
||||
,"photo"=>null
|
||||
,"birthday"=>null
|
||||
,"timezone"=>null
|
||||
,"sort_string"=>null
|
||||
,"note"=>null
|
||||
);
|
||||
$this->log = "New vcard() called<br />";
|
||||
$this->data = [
|
||||
"display_name" => null
|
||||
, "first_name" => null
|
||||
, "last_name" => null
|
||||
, "additional_name" => null
|
||||
, "name_prefix" => null
|
||||
, "name_suffix" => null
|
||||
, "nickname" => null
|
||||
, "title" => null
|
||||
, "role" => null
|
||||
, "department" => null
|
||||
, "company" => null
|
||||
, "work_po_box" => null
|
||||
, "work_extended_address" => null
|
||||
, "work_address" => null
|
||||
, "work_city" => null
|
||||
, "work_state" => null
|
||||
, "work_postal_code" => null
|
||||
, "work_country" => null
|
||||
, "home_po_box" => null
|
||||
, "home_extended_address" => null
|
||||
, "home_address" => null
|
||||
, "home_city" => null
|
||||
, "home_state" => null
|
||||
, "home_postal_code" => null
|
||||
, "home_country" => null
|
||||
, "voice_tel" => null
|
||||
, "work_tel" => null
|
||||
, "home_tel" => null
|
||||
, "cell_tel" => null
|
||||
, "fax_tel" => null
|
||||
, "pager_tel" => null
|
||||
, "email1" => null
|
||||
, "email2" => null
|
||||
, "url" => null
|
||||
, "photo" => null
|
||||
, "birthday" => null
|
||||
, "timezone" => null
|
||||
, "sort_string" => null
|
||||
, "note" => null,
|
||||
];
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -66,109 +76,169 @@ class vcard {
|
||||
build() method checks all the values, builds appropriate defaults for
|
||||
missing values, generates the vcard data string.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Downloads the vCard data as a file.
|
||||
*
|
||||
* @access public
|
||||
* @return bool True on successful download, false otherwise.
|
||||
*/
|
||||
function download() {
|
||||
$this->log .= "vcard download() called<br />";
|
||||
if (!$this->card) {
|
||||
$this->build();
|
||||
}
|
||||
if (!$this->filename) {
|
||||
$this->filename = trim($this->data['display_name']);
|
||||
}
|
||||
$this->filename = str_replace(" ", "_", $this->filename);
|
||||
header("Content-type: text/directory");
|
||||
header("Content-Disposition: attachment; filename=" . $this->filename . ".vcf");
|
||||
header("Pragma: public");
|
||||
echo $this->card;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
download() method streams the vcard to the browser client.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Builds the vCard.
|
||||
*
|
||||
* @access public
|
||||
* @return string The built vCard as a string.
|
||||
*/
|
||||
function build() {
|
||||
$this->log .= "vcard build() called<br />";
|
||||
/*
|
||||
For many of the values, if they are not passed in, we set defaults or
|
||||
build them based on other values.
|
||||
*/
|
||||
if (!$this->class) { $this->class = "PUBLIC"; }
|
||||
if (!$this->data['display_name']) {
|
||||
$this->data['display_name'] = trim($this->data['first_name']." ".$this->data['last_name']);
|
||||
if (!$this->class) {
|
||||
$this->class = "PUBLIC";
|
||||
}
|
||||
if (!$this->data['display_name']) {
|
||||
$this->data['display_name'] = trim($this->data['first_name'] . " " . $this->data['last_name']);
|
||||
}
|
||||
if (!$this->data['sort_string']) {
|
||||
$this->data['sort_string'] = $this->data['last_name'];
|
||||
}
|
||||
if (!$this->data['sort_string']) {
|
||||
$this->data['sort_string'] = $this->data['company'];
|
||||
}
|
||||
if (!$this->data['timezone']) {
|
||||
$this->data['timezone'] = date("O");
|
||||
}
|
||||
if (!$this->revision_date) {
|
||||
$this->revision_date = date('Y-m-d H:i:s');
|
||||
}
|
||||
if (!$this->data['sort_string']) { $this->data['sort_string'] = $this->data['last_name']; }
|
||||
if (!$this->data['sort_string']) { $this->data['sort_string'] = $this->data['company']; }
|
||||
if (!$this->data['timezone']) { $this->data['timezone'] = date("O"); }
|
||||
if (!$this->revision_date) { $this->revision_date = date('Y-m-d H:i:s'); }
|
||||
|
||||
$this->card = "BEGIN:VCARD\r\n";
|
||||
$this->card .= "VERSION:3.0\r\n";
|
||||
//$this->card .= "CLASS:".$this->class."\r\n";
|
||||
//$this->card .= "PRODID:-//class_vcard from TroyWolf.com//NONSGML Version 1//EN\r\n";
|
||||
// $this->card .= "REV:".$this->revision_date."\r\n";
|
||||
$this->card .= "FN:".$this->data['display_name']."\r\n";
|
||||
$this->card .= "FN:" . $this->data['display_name'] . "\r\n";
|
||||
$this->card .= "N:";
|
||||
$this->card .= $this->data['last_name'].";";
|
||||
$this->card .= $this->data['last_name'] . ";";
|
||||
$this->card .= $this->data['first_name'];
|
||||
if (!empty($this->data['additional_name'])) {
|
||||
$this->card .= ";".$this->data['additional_name'];
|
||||
$this->card .= ";" . $this->data['additional_name'];
|
||||
}
|
||||
if (!empty($this->data['name_prefix'])) {
|
||||
$this->card .= ";".$this->data['name_prefix'];
|
||||
$this->card .= ";" . $this->data['name_prefix'];
|
||||
}
|
||||
if (!empty($this->data['name_suffix'])) {
|
||||
$this->card .= ";".$this->data['name_suffix'];
|
||||
$this->card .= ";" . $this->data['name_suffix'];
|
||||
}
|
||||
$this->card .= "\r\n";
|
||||
if ($this->data['nickname']) { $this->card .= "NICKNAME:".$this->data['contact_nickname']."\r\n"; }
|
||||
if ($this->data['title']) { $this->card .= "TITLE:".$this->data['title']."\r\n"; }
|
||||
if ($this->data['company']) { $this->card .= "ORG:".$this->data['company']; }
|
||||
if ($this->data['department']) { $this->card .= ";".$this->data['department']; }
|
||||
if ($this->data['nickname']) {
|
||||
$this->card .= "NICKNAME:" . $this->data['contact_nickname'] . "\r\n";
|
||||
}
|
||||
if ($this->data['title']) {
|
||||
$this->card .= "TITLE:" . $this->data['title'] . "\r\n";
|
||||
}
|
||||
if ($this->data['company']) {
|
||||
$this->card .= "ORG:" . $this->data['company'];
|
||||
}
|
||||
if ($this->data['department']) {
|
||||
$this->card .= ";" . $this->data['department'];
|
||||
}
|
||||
$this->card .= "\r\n";
|
||||
|
||||
$vcard_address_type_values = array('work','home','dom','intl','postal','parcel','pref');
|
||||
$vcard_address_type_values = ['work', 'home', 'dom', 'intl', 'postal', 'parcel', 'pref'];
|
||||
foreach ($vcard_address_type_values as $vcard_address_type_value) {
|
||||
if (!empty($this->data[$vcard_address_type_value.'_po_box'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_extended_address'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_address'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_city'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_state'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_postal_code'])
|
||||
|| !empty($this->data[$vcard_address_type_value.'_country'])) {
|
||||
$this->card .= "ADR;TYPE=".$vcard_address_type_value.":";
|
||||
if (!empty($this->data[$vcard_address_type_value.'_po_box'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_po_box'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_po_box'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_extended_address'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_address'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_city'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_state'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_postal_code'])
|
||||
|| !empty($this->data[$vcard_address_type_value . '_country'])) {
|
||||
$this->card .= "ADR;TYPE=" . $vcard_address_type_value . ":";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_po_box'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_po_box'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_extended_address'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_extended_address'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_extended_address'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_extended_address'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_address'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_address'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_address'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_address'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_city'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_city'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_city'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_city'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_state'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_state'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_state'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_state'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_postal_code'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_postal_code'].";";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_postal_code'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_postal_code'] . ";";
|
||||
}
|
||||
if (!empty($this->data[$vcard_address_type_value.'_country'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value.'_country']."";
|
||||
if (!empty($this->data[$vcard_address_type_value . '_country'])) {
|
||||
$this->card .= $this->data[$vcard_address_type_value . '_country'] . "";
|
||||
}
|
||||
$this->card .= "\r\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->data['email1']) { $this->card .= "EMAIL;PREF=1:".$this->data['email1']."\r\n"; }
|
||||
if ($this->data['email2']) { $this->card .= "EMAIL;PREF=2:".$this->data['email2']."\r\n"; }
|
||||
if ($this->data['voice_tel']) { $this->card .= "TEL;TYPE=voice:".$this->data['voice_tel']."\r\n"; }
|
||||
if ($this->data['work_tel']) { $this->card .= "TEL;TYPE=work:".$this->data['work_tel']."\r\n"; }
|
||||
if ($this->data['home_tel']) { $this->card .= "TEL;TYPE=home:".$this->data['home_tel']."\r\n"; }
|
||||
if ($this->data['cell_tel']) { $this->card .= "TEL;TYPE=cell:".$this->data['cell_tel']."\r\n"; }
|
||||
if ($this->data['fax_tel']) { $this->card .= "TEL;TYPE=fax:".$this->data['fax_tel']."\r\n"; }
|
||||
if ($this->data['pager_tel']) { $this->card .= "TEL;TYPE=pager:".$this->data['pager_tel']."\r\n"; }
|
||||
if ($this->data['url']) { $this->card .= "URL:".$this->data['url']."\r\n"; }
|
||||
if ($this->data['birthday']) { $this->card .= "BDAY:".$this->data['birthday']."\r\n"; }
|
||||
if ($this->data['role']) { $this->card .= "ROLE:".$this->data['role']."\r\n"; }
|
||||
if ($this->data['note']) { $this->card .= "NOTE:".$this->data['note']."\r\n"; }
|
||||
$this->card .= "TZ:".$this->data['timezone']."\r\n";
|
||||
if ($this->data['email1']) {
|
||||
$this->card .= "EMAIL;PREF=1:" . $this->data['email1'] . "\r\n";
|
||||
}
|
||||
if ($this->data['email2']) {
|
||||
$this->card .= "EMAIL;PREF=2:" . $this->data['email2'] . "\r\n";
|
||||
}
|
||||
if ($this->data['voice_tel']) {
|
||||
$this->card .= "TEL;TYPE=voice:" . $this->data['voice_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['work_tel']) {
|
||||
$this->card .= "TEL;TYPE=work:" . $this->data['work_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['home_tel']) {
|
||||
$this->card .= "TEL;TYPE=home:" . $this->data['home_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['cell_tel']) {
|
||||
$this->card .= "TEL;TYPE=cell:" . $this->data['cell_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['fax_tel']) {
|
||||
$this->card .= "TEL;TYPE=fax:" . $this->data['fax_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['pager_tel']) {
|
||||
$this->card .= "TEL;TYPE=pager:" . $this->data['pager_tel'] . "\r\n";
|
||||
}
|
||||
if ($this->data['url']) {
|
||||
$this->card .= "URL:" . $this->data['url'] . "\r\n";
|
||||
}
|
||||
if ($this->data['birthday']) {
|
||||
$this->card .= "BDAY:" . $this->data['birthday'] . "\r\n";
|
||||
}
|
||||
if ($this->data['role']) {
|
||||
$this->card .= "ROLE:" . $this->data['role'] . "\r\n";
|
||||
}
|
||||
if ($this->data['note']) {
|
||||
$this->card .= "NOTE:" . $this->data['note'] . "\r\n";
|
||||
}
|
||||
$this->card .= "TZ:" . $this->data['timezone'] . "\r\n";
|
||||
$this->card .= "END:VCARD";
|
||||
}
|
||||
|
||||
/*
|
||||
download() method streams the vcard to the browser client.
|
||||
*/
|
||||
function download() {
|
||||
$this->log .= "vcard download() called<br />";
|
||||
if (!$this->card) { $this->build(); }
|
||||
if (!$this->filename) { $this->filename = trim($this->data['display_name']); }
|
||||
$this->filename = str_replace(" ", "_", $this->filename);
|
||||
header("Content-type: text/directory");
|
||||
header("Content-Disposition: attachment; filename=".$this->filename.".vcf");
|
||||
header("Pragma: public");
|
||||
echo $this->card;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user