From eb0cb9a5ad93266da9bc1c206c1b4fbbf847a9ca Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Mon, 13 Jun 2016 19:59:17 +0200 Subject: [PATCH] exporting vcards works now --- php/module.contact.php | 171 ++++++++++++++++++++++++- resources/css/contactimporter-main.css | 8 +- resources/images/download.png | Bin 0 -> 224 bytes resources/images/download.xcf | Bin 0 -> 93773 bytes 4 files changed, 173 insertions(+), 6 deletions(-) create mode 100755 resources/images/download.png create mode 100755 resources/images/download.xcf diff --git a/php/module.contact.php b/php/module.contact.php index 132c72b..82eefa6 100644 --- a/php/module.contact.php +++ b/php/module.contact.php @@ -28,7 +28,7 @@ use JeroenDesloovere\VCard\VCardParser; class ContactModule extends Module { - private $DEBUG = false; // enable error_log debugging + private $DEBUG = true; // enable error_log debugging /** * @constructor @@ -244,6 +244,14 @@ class ContactModule extends Module { $GLOBALS["bus"]->addData($this->getResponseData()); } + private function getProp($props, $propname) { + $p = $this->getProperties(); + if(isset($props["props"][$propname])){ + return $props["props"][$propname]; + } + return ""; + } + private function exportContacts($actionType, $actionData) { // Get store id @@ -270,13 +278,129 @@ class ContactModule extends Module { $store = $GLOBALS["mapisession"]->openMessageStore(hex2bin($storeid)); if ($store) { for ($index = 0, $count = count($records); $index < $count; $index++) { + // define vcard + $vcard = new VCard(); + $message = mapi_msgstore_openentry($store, hex2bin($records[$index])); // get message properties. - $messageProps = mapi_getprops($message, array(PR_DISPLAY_NAME)); - file_put_contents($file, file_get_contents($file) . $messageProps[PR_DISPLAY_NAME]); + $properties = $GLOBALS['properties']->getContactProperties(); + $plaintext = true; + $messageProps = $GLOBALS['operations']->getMessageProps($store, $message, $properties, $plaintext); - // TODO: implement vcf + // define variables + $firstname = $this->getProp($messageProps, "given_name"); + $lastname = $this->getProp($messageProps, "surname"); + $additional = $this->getProp($messageProps, "middle_name"); + $prefix = $this->getProp($messageProps, "display_name_prefix"); + $suffix = ''; + + // add personal data + $vcard->addName($lastname, $firstname, $additional, $prefix, $suffix); + + $company = $this->getProp($messageProps, "company_name"); + if(!empty($company)) { + $vcard->addCompany($company); + } + + $jobtitle = $this->getProp($messageProps, "title"); + if(!empty($jobtitle)) { + $vcard->addJobtitle($jobtitle); + } + + // MAIL + $mail = $this->getProp($messageProps, "email_address_1"); + if(!empty($mail)) { + $vcard->addEmail($mail); + } + $mail = $this->getProp($messageProps, "email_address_2"); + if(!empty($mail)) { + $vcard->addEmail($mail); + } + $mail = $this->getProp($messageProps, "email_address_3"); + if(!empty($mail)) { + $vcard->addEmail($mail); + } + + // PHONE + $wphone = $this->getProp($messageProps, "business_telephone_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'WORK'); + } + $wphone = $this->getProp($messageProps, "home_telephone_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'HOME'); + } + $wphone = $this->getProp($messageProps, "cellular_telephone_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'CELL'); + } + $wphone = $this->getProp($messageProps, "business_fax_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'FAX'); + } + $wphone = $this->getProp($messageProps, "pager_telephone_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'PAGER'); + } + $wphone = $this->getProp($messageProps, "car_telephone_number"); + if(!empty($wphone)) { + $vcard->addPhoneNumber($wphone, 'CAR'); + } + + // ADDRESS + $addr = $this->getProp($messageProps, "business_address"); + if(!empty($addr)) { + $vcard->addAddress(null, null, $this->getProp($messageProps, "business_address_street"), $this->getProp($messageProps, "business_address_city"), $this->getProp($messageProps, "business_address_state"), $this->getProp($messageProps, "business_address_postal_code"), $this->getProp($messageProps, "business_address_country"), "WORK"); + } + $addr = $this->getProp($messageProps, "home_address"); + if(!empty($addr)) { + $vcard->addAddress(null, null, $this->getProp($messageProps, "home_address_street"), $this->getProp($messageProps, "home_address_city"), $this->getProp($messageProps, "home_address_state"), $this->getProp($messageProps, "home_address_postal_code"), $this->getProp($messageProps, "home_address_country"), "HOME"); + } + $addr = $this->getProp($messageProps, "other_address"); + if(!empty($addr)) { + $vcard->addAddress(null, null, $this->getProp($messageProps, "other_address_street"), $this->getProp($messageProps, "other_address_city"), $this->getProp($messageProps, "other_address_state"), $this->getProp($messageProps, "other_address_postal_code"), $this->getProp($messageProps, "other_address_country"), "OTHER"); + } + + // MISC + $url = $this->getProp($messageProps, "webpage"); + if(!empty($url)) { + $vcard->addURL($url); + } + + $bday = $this->getProp($messageProps, "birthday"); + if(!empty($bday)) { + $vcard->addBirthday(date("Y-m-d", $bday)); + } + + $notes = $this->getProp($messageProps, "body"); + if(!empty($notes)) { + $vcard->addNote($notes); + } + + $haspicture = $this->getProp($messageProps, "has_picture"); + if(!empty($haspicture) && $haspicture === true) { + $attachnum = -1; + if(isset($messageProps["attachments"]) && isset($messageProps["attachments"]["item"])) { + foreach($messageProps["attachments"]["item"] as $attachment) { + if($attachment["props"]["attachment_contactphoto"] == true) { + $attachnum = $attachment["props"]["attach_num"]; + break; + } + } + } + + if($attachnum >= 0) { + $attachment = $this->getAttachmentByAttachNum($message, $attachnum); // get first attachment only + $phototoken = $this->randomstring(16); + $tmpphoto = PLUGIN_CONTACTIMPORTER_TMP_UPLOAD . "photo_" . $phototoken . ".jpg"; + $this->storeSavedAttachment($tmpphoto, $attachment); + $vcard->addPhoto($tmpphoto, true); + unlink($tmpphoto); + } + } + // write combined vcf + file_put_contents($file, file_get_contents($file) . $vcard->getOutput()); } } else { return false; @@ -284,12 +408,49 @@ class ContactModule extends Module { $response['status'] = true; $response['download_token'] = $token; - $response['filename'] = "test.csv"; + $response['filename'] = count($records)."contacts.vcf"; $this->addActionData($actionType, $response); $GLOBALS["bus"]->addData($this->getResponseData()); } + /** + * Returns attachment based on specified attachNum, additionally it will also get embedded message + * if we want to get the inline image attachment. + * @param $message + * @param array $attachNum + * @return MAPIAttach embedded message attachment or attachment that is requested + */ + private function getAttachmentByAttachNum($message, $attachNum) + { + // open the attachment + $attachment = mapi_message_openattach($message, $attachNum); + + return $attachment; + } + + /** + * Function will open passed attachment and generate response for that attachment to send it to client. + * This should only be used to download attachment that is already saved in MAPIMessage. + * @param MAPIAttach $attachment attachment which will be dumped to client side + * @return Response response to sent to client including attachment data + */ + private function storeSavedAttachment($temppath, $attachment) { + // Check if the attachment is opened + if($attachment) { + // Open a stream to get the attachment data + $stream = mapi_openproperty($attachment, PR_ATTACH_DATA_BIN, IID_IStream, 0, 0); + $stat = mapi_stream_stat($stream); + + // Read the attachment content from the stream + $body = ''; + for($i = 0; $i < $stat['cb']; $i += BLOCK_SIZE) { + $body .= mapi_stream_read($stream, BLOCK_SIZE); + } + + file_put_contents($temppath, $body); + } + } private function replaceStringPropertyTags($store, $properties) { $newProperties = array(); diff --git a/resources/css/contactimporter-main.css b/resources/css/contactimporter-main.css index b92327f..97f1e5f 100644 --- a/resources/css/contactimporter-main.css +++ b/resources/css/contactimporter-main.css @@ -3,4 +3,10 @@ background-repeat: no-repeat; background-position: center; background-size: 18px!important; -} \ No newline at end of file +} + +.icon_contactimporter_export { + background: url(../images/download.png) no-repeat; + background-repeat: no-repeat; + background-position: center; +} diff --git a/resources/images/download.png b/resources/images/download.png new file mode 100755 index 0000000000000000000000000000000000000000..38a828115f79b5f70942577589b71ab86af6f3a5 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xawj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pIsjaN{SdHo4NN1#xyr;B5V#`(RM4)QiA@U%V*k8D?r zY1-bmgHPw7(3xO=l@6AREB>$b-5<@`JEu76oT1ywd^MXl^%^RBSLtn^a3U+nYxdSK zhBJ#bS|0E+^gQZeIPm1DsNO}!Zw0-68(O1RNPGHUdi-|DztiXK)7hu%8tz?h+vo(e On8DN4&t;ucLK6VmSxpZB literal 0 HcmV?d00001 diff --git a/resources/images/download.xcf b/resources/images/download.xcf new file mode 100755 index 0000000000000000000000000000000000000000..9a5b62c6c719e6dbcbe61eccdbd24838d52c18c6 GIT binary patch literal 93773 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 literal 0 HcmV?d00001