Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists('contact_view')) { //access granted } else { echo "access denied"; exit; } if (count($_GET)>0) { //add multi-lingual support $language = new text; $text = $language->get(); //create the vcard object require_once "resources/classes/vcard.php"; $vcard = new vcard(); //get the contact id $contact_uuid = $_GET["id"]; //get the contact's information $sql = "select * from v_contacts "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and contact_uuid = '".$contact_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $contact_type = $row["contact_type"]; $contact_organization = escape($row["contact_organization"]); $contact_name_given = escape($row["contact_name_given"]); $contact_name_family = escape($row["contact_name_family"]); $contact_nickname = escape($row["contact_nickname"]); $contact_title = escape($row["contact_title"]); $contact_role = escape($row["contact_role"]); $contact_time_zone = escape($row["contact_time_zone"]); $contact_note = $row["contact_note"]; break; //limit to 1 row } unset ($prep_statement); $vcard->data['company'] = $contact_organization; $vcard->data['first_name'] = $contact_name_given; $vcard->data['last_name'] = $contact_name_family; //get the contact's primary (and a secondary, if available) email $sql = "select email_address from v_contact_emails "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and contact_uuid = '".$contact_uuid."' "; $sql .= "order by email_primary desc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $e = 0; foreach ($result as &$row) { $vcard->data['email'.$e] = escape($row["email_address"]); if (++$e == 2) { break; } //limit to 2 rows } unset ($prep_statement); //get the contact's primary url $sql = "select url_address from v_contact_urls "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and contact_uuid = '".$contact_uuid."' "; $sql .= "and url_primary = 1 "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $vcard->data['url'] = escape($row["url_address"]); break; //limit to 1 row } unset ($prep_statement); if ($_GET['type'] == "image" || $_GET['type'] == "html") { //don't add this to the QR code at this time } else { $vcard->data['display_name'] = $contact_name_given." ".$contact_name_family; $vcard->data['contact_nickname'] = $contact_nickname; $vcard->data['contact_title'] = $contact_title; $vcard->data['contact_role'] = $contact_role; $vcard->data['timezone'] = $contact_time_zone; $vcard->data['contact_note'] = $contact_note; } //get the contact's telephone numbers $sql = "select * from v_contact_phones "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and contact_uuid = '".$contact_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $phone_label = $row["phone_label"]; $phone_number = $row["phone_number"]; if ($phone_label == $text['option-work']) { $vcard_phone_type = 'work'; } else if ($phone_label == $text['option-home']) { $vcard_phone_type = 'home'; } else if ($phone_label == $text['option-mobile']) { $vcard_phone_type = 'cell'; } else if ($phone_label == $text['option-fax']) { $vcard_phone_type = 'fax'; } else if ($phone_label == $text['option-pager']) { $vcard_phone_type = 'pager'; } else { $vcard_phone_type = 'voice'; } if ($vcard_phone_type != '') { $vcard->data[$vcard_phone_type.'_tel'] = $phone_number; } } unset ($prep_statement); //get the contact's addresses if ($_GET['type'] == "image" || $_GET['type'] == "html") { //don't add this to the QR code at this time } else { $sql = "select * from v_contact_addresses "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and contact_uuid = '".$contact_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $address_type = escape($row["address_type"]); $address_street = escape($row["address_street"]); $address_extended = escape($row["address_extended"]); $address_locality = escape($row["address_locality"]); $address_region = escape($row["address_region"]); $address_postal_code = escape($row["address_postal_code"]); $address_country = escape($row["address_country"]); $address_latitude = $row["address_latitude"]; $address_longitude = $row["address_longitude"]; $address_type = strtolower(trim($address_type)); $vcard->data[$address_type.'_address'] = $address_street; $vcard->data[$address_type.'_extended_address'] = $address_extended; $vcard->data[$address_type.'_city'] = $address_locality; $vcard->data[$address_type.'_state'] = $address_region; $vcard->data[$address_type.'_postal_code'] = $address_postal_code; $vcard->data[$address_type.'_country'] = $address_country; } unset ($prep_statement); } //download the vcard if ($_GET['type'] == "download") { $vcard->download(); } //show the vcard in a text qr code if ($_GET['type'] == "text") { $vcard->build(); $content = $vcard->card; if ($qr_vcard) { $qr_vcard = $content; } else { echo $content; } } //show the vcard in an image qr code if ($_GET['type'] == "image" || $_GET['type'] == "html") { $vcard->build(); $content = $vcard->card; if (isset($_GET['debug'])) { echo "
";
				print_r($vcard->data);
				echo "
"; exit; } //include require_once $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/qr/qrcode.php"; //error correction level //QR_ERROR_CORRECT_LEVEL_L : $e = 0; //QR_ERROR_CORRECT_LEVEL_M : $e = 1; //QR_ERROR_CORRECT_LEVEL_Q : $e = 2; //QR_ERROR_CORRECT_LEVEL_H : $e = 3; //get the qr object $qr = QRCode::getMinimumQRCode($content, QR_ERROR_CORRECT_LEVEL_L); } //show the vcard as an png image if ($_GET['type'] == "image") { header("Content-type: image/png"); $im = $qr->createImage(5, 10); imagepng($im); imagedestroy($im); } //show the vcard in an html qr code if ($_GET['type'] == "html") { $qr->make(); $qr->printHTML(); } } /* //additional un accounted fields additional_name name_prefix name_suffix department work_po_box home_po_box home_extended_address home_address home_city home_state home_postal_code home_country pager_tel contact_email2 photo birthday sort_string */ ?>