Ejemplo n.º 1
0
 private function GetVCardContent(array $contact)
 {
     $arVCardContact = array("TYPE" => "VCARD", "VERSION" => "3.0", "N" => $contact["LAST_NAME"] . ";" . $contact["NAME"] . ";" . $contact["SECOND_NAME"] . ";;", "FN" => $contact["NAME"] . ($contact["SECOND_NAME"] ? " " . $contact["SECOND_NAME"] : "") . " " . $contact["LAST_NAME"], "EMAIL" => array("VALUE" => $contact["EMAIL"], "PARAMETERS" => array("TYPE" => "INTERNET")), "REV" => date("Ymd\\THis\\Z", MakeTimeStamp($contact["TIMESTAMP_X"])), "UID" => $contact["ID"]);
     if (intval($contact["PERSONAL_BIRTHDAY"]) > 0) {
         $arVCardContact["BDAY"] = date("Y-m-d", MakeTimeStamp($contact["PERSONAL_BIRTHDAY"]));
     }
     if (strlen($contact["WORK_PHONE"]) > 0) {
         $arVCardContact["TEL"][] = array("VALUE" => $contact["WORK_PHONE"], "PARAMETERS" => array("TYPE" => "WORK"));
     }
     if (strlen($contact["PERSONAL_MOBILE"]) > 0) {
         $arVCardContact["TEL"][] = array("VALUE" => $contact["PERSONAL_MOBILE"], "PARAMETERS" => array("TYPE" => "CELL"));
     }
     if (strlen($contact["PERSONAL_PHONE"]) > 0) {
         $arVCardContact["TEL"][] = array("VALUE" => $contact["PERSONAL_PHONE"], "PARAMETERS" => array("TYPE" => "HOME"));
     }
     if (strlen($contact["WORK_COMPANY"]) > 0) {
         $arVCardContact["ORG"] = $contact["WORK_COMPANY"];
     }
     if (strlen($contact["WORK_POSITION"]) > 0) {
         $arVCardContact["TITLE"] = $contact["WORK_POSITION"];
     }
     if (strlen($contact["WORK_WWW"]) > 0) {
         $arVCardContact["URL"][] = array("VALUE" => $contact["WORK_WWW"], "PARAMETERS" => array("TYPE" => "WORK"));
     }
     if (strlen($contact["PERSONAL_WWW"]) > 0) {
         $arVCardContact["URL"][] = array("VALUE" => $contact["PERSONAL_WWW"], "PARAMETERS" => array("TYPE" => "HOME"));
     }
     if (strlen($contact["PERSONAL_STREET"]) > 0) {
         $arVCardContact["ADR"][] = array("VALUE" => ";;" . $contact["PERSONAL_STREET"] . ";" . $contact["PERSONAL_CITY"] . ";" . $contact["PERSONAL_STATE"] . ";" . $contact["PERSONAL_ZIP"] . ";" . GetCountryByID($contact["PERSONAL_COUNTRY"]) . "", "PARAMETERS" => array("TYPE" => "HOME"));
     }
     if (strlen($contact["WORK_STREET"]) > 0) {
         $arVCardContact["ADR"][] = array("VALUE" => ";;" . $contact["WORK_STREET"] . ";" . $contact["WORK_CITY"] . ";" . $contact["WORK_STATE"] . ";" . $contact["WORK_ZIP"] . ";" . GetCountryByID($contact["WORK_COUNTRY"]) . "", "PARAMETERS" => array("TYPE" => "WORK"));
     }
     if (intval($contact["PERSONAL_PHOTO"]) > 0) {
         $arTempFile = CFile::ResizeImageGet($contact["PERSONAL_PHOTO"], array("width" => \Bitrix\Main\Config\Option::get("dav", "vcard_image_width", 400), "height" => \Bitrix\Main\Config\Option::get("dav", "vcard_image_width", 400)), BX_RESIZE_IMAGE_PROPORTIONAL, false, false, false, \Bitrix\Main\Config\Option::get("dav", "vcard_image_quality", 60));
         if ($arTempFile) {
             $cnt = file_get_contents($_SERVER["DOCUMENT_ROOT"] . $arTempFile['src']);
             if (!empty($cnt)) {
                 $arImageTypes = array(IMAGETYPE_JPEG => 'JPEG', IMAGETYPE_GIF => 'GIF', IMAGETYPE_PNG => 'PNG');
                 $imageType = "JPEG";
                 if ($imageInfo = CFile::GetImageSize($_SERVER["DOCUMENT_ROOT"] . $arTempFile['src']) && isset($arImageTypes[$imageInfo[2]])) {
                     $imageType = $arImageTypes[$imageInfo[2]];
                 }
                 $arVCardContact["PHOTO"] = array("VALUE" => base64_encode($cnt), "PARAMETERS" => array("ENCODING" => "BASE64", "TYPE" => $imageType));
             }
         }
     }
     $cal = new CDavICalendarComponent($arVCardContact);
     return $cal->Render();
 }