Beispiel #1
0
 /**
  * Parser factory
  *
  * Creates an instance of the correct parser class, based on the
  * parameter passed. For example, File_IMC::parse('vCard') creates
  * a new object to parse a vCard file.
  *
  * @param string Type of file to parse, vCard or vCalendar
  * @return object
  */
 function parse($format)
 {
     $filename = 'File/IMC/Parse/' . $format . '.php';
     $classname = 'File_IMC_Parse_' . $format;
     if (!file_exists($filename)) {
         return File_IMC::raiseError('No builder driver exists for format: ' . $format, FILE_IMC_ERROR_INVALID_DRIVER);
     }
     include_once $filename;
     if (!class_exists($classname)) {
         return File_IMC::raiseError('No parser driver exists for format: ' . $format, FILE_IMC_ERROR_INVALID_DRIVER);
     }
     $class = new $classname();
     return $class;
 }
 /**
  * build_vcard
  *
  * @param	array	Contact properties.
  * @return	object	VCard object.
  */
 function build_vcard($contactprops)
 {
     $vcard = File_IMC::build('vCard');
     $vcard->setVersion('2.1');
     $charset = 'UTF-8';
     //// GENERAL INFORMATION
     $vcard->setName($this->toUTF8(isset($contactprops[PR_SURNAME]) ? $contactprops[PR_SURNAME] : ''), $this->toUTF8(isset($contactprops[PR_GIVEN_NAME]) ? $contactprops[PR_GIVEN_NAME] : ''), $this->toUTF8(isset($contactprops[PR_MIDDLE_NAME]) ? $contactprops[PR_MIDDLE_NAME] : ''), $this->toUTF8(isset($contactprops[PR_DISPLAY_NAME_PREFIX]) ? $contactprops[PR_DISPLAY_NAME_PREFIX] : ''), '');
     $vcard->addParam('CHARSET', $charset);
     $vcard->setFormattedName($this->toUTF8(isset($contactprops[PR_DISPLAY_NAME]) ? $contactprops[PR_DISPLAY_NAME] : ''));
     $vcard->addParam('CHARSET', $charset);
     if (isset($contactprops[PR_BIRTHDAY])) {
         $vcard->setBirthday($this->toUTF8(date('Y-m-d', $contactprops[PR_BIRTHDAY])));
     }
     if (isset($contactprops[PR_PROFESSION])) {
         $vcard->setRole($this->toUTF8($contactprops[PR_PROFESSION]));
     }
     if (isset($contactprops[PR_NICKNAME])) {
         $vcard->addNickname($this->toUTF8($contactprops[PR_NICKNAME]));
     }
     if (isset($contactprops[PR_COMPANY_NAME])) {
         $vcard->addOrganization($this->toUTF8($contactprops[PR_COMPANY_NAME]));
     }
     //$this->toUTF8($contactprops[PR_DEPARTMENT_NAME] // how to append this as outlook does and prevent escaping of ';' ??
     if (isset($contactprops[PR_TITLE])) {
         $vcard->setTitle($this->toUTF8($contactprops[PR_TITLE]));
     }
     if (isset($this->specialprops["email1"]) && isset($contactprops[$this->specialprops["email1"]])) {
         $vcard->addEmail($this->toUTF8($contactprops[$this->specialprops["email1"]]));
     }
     if (isset($contactprops[PR_BUSINESS_HOME_PAGE])) {
         $vcard->setUrl($this->toUTF8($contactprops[PR_BUSINESS_HOME_PAGE]));
         $vcard->addParam('TYPE', 'WORK');
     }
     if (isset($contactprops[PR_COMMENT])) {
         $vcard->setNote($this->toUTF8($contactprops[PR_COMMENT]));
     }
     //// HOME ADDRESS
     $v1 = $v2 = $v3 = $v4 = $v5 = $v6 = '';
     if (isset($contactprops[PR_HOME_ADDRESS_POST_OFFICE_BOX])) {
         $v1 = $contactprops[PR_HOME_ADDRESS_POST_OFFICE_BOX];
     }
     if (isset($contactprops[PR_HOME_ADDRESS_STREET])) {
         $v2 = $contactprops[PR_HOME_ADDRESS_STREET];
     }
     if (isset($contactprops[PR_HOME_ADDRESS_CITY])) {
         $v3 = $contactprops[PR_HOME_ADDRESS_CITY];
     }
     if (isset($contactprops[PR_HOME_ADDRESS_STATE_OR_PROVINCE])) {
         $v4 = $contactprops[PR_HOME_ADDRESS_STATE_OR_PROVINCE];
     }
     if (isset($contactprops[PR_HOME_ADDRESS_POSTAL_CODE])) {
         $v5 = $contactprops[PR_HOME_ADDRESS_POSTAL_CODE];
     }
     if (isset($contactprops[PR_HOME_ADDRESS_COUNTRY])) {
         $v6 = $contactprops[PR_HOME_ADDRESS_COUNTRY];
     }
     if ($v1 != '' || $v2 != '' || $v3 != '' || $v4 != '' || $v5 != '' || $v6 != '') {
         $vcard->addAddress($this->toUTF8($v1), '', $this->toUTF8($v2), $this->toUTF8($v3), $this->toUTF8($v4), $this->toUTF8($v5), $this->toUTF8($v6));
         $vcard->addParam('TYPE', 'HOME');
     }
     //// WORK ADDRESS
     $v1 = $v2 = $v3 = $v4 = $v5 = $v6 = '';
     // business post office pox (where to get this from?)
     if (isset($this->specialprops["business_street"]) && isset($contactprops[$this->specialprops["business_street"]])) {
         $v2 = $contactprops[$this->specialprops["business_street"]];
     }
     if (isset($this->specialprops["business_city"]) && isset($contactprops[$this->specialprops["business_city"]])) {
         $v3 = $contactprops[$this->specialprops["business_city"]];
     }
     if (isset($this->specialprops["business_state"]) && isset($contactprops[$this->specialprops["business_state"]])) {
         $v4 = $contactprops[$this->specialprops["business_state"]];
     }
     if (isset($this->specialprops["business_postcode"]) && isset($contactprops[$this->specialprops["business_postcode"]])) {
         $v5 = $contactprops[$this->specialprops["business_postcode"]];
     }
     if (isset($this->specialprops["business_country"]) && isset($contactprops[$this->specialprops["business_country"]])) {
         $v6 = $contactprops[$this->specialprops["business_country"]];
     }
     if ($v1 != '' || $v2 != '' || $v3 != '' || $v4 != '' || $v5 != '' || $v6 != '') {
         $vcard->addAddress($this->toUTF8($v1), '', $this->toUTF8($v2), $this->toUTF8($v3), $this->toUTF8($v4), $this->toUTF8($v5), $this->toUTF8($v6));
         $vcard->addParam('TYPE', 'WORK');
     }
     //// PHONE NUMBERS
     if (isset($contactprops[PR_HOME_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_HOME_TELEPHONE_NUMBER]));
         $vcard->addParam('TYPE', 'HOME');
     }
     if (isset($contactprops[PR_BUSINESS_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_BUSINESS_TELEPHONE_NUMBER]));
         $vcard->addParam('TYPE', 'WORK');
     }
     if (isset($contactprops[PR_HOME2_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_HOME2_TELEPHONE_NUMBER]));
         $vcard->addParam('TYPE', 'HOME');
     }
     if (isset($contactprops[PR_BUSINESS2_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_BUSINESS2_TELEPHONE_NUMBER]));
         $vcard->addParam('TYPE', 'WORK');
     }
     if (isset($contactprops[PR_MOBILE_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_MOBILE_TELEPHONE_NUMBER]));
         $vcard->addParam('TYPE', 'CELL');
     }
     if (isset($contactprops[PR_HOME_FAX_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_HOME_FAX_NUMBER]));
         $vcard->addParam('TYPE', 'HOME');
         $vcard->addParam('TYPE', 'FAX');
     }
     if (isset($contactprops[PR_BUSINESS_FAX_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_BUSINESS_FAX_NUMBER]));
         $vcard->addParam('TYPE', 'WORK');
         $vcard->addParam('TYPE', 'FAX');
     }
     if (isset($contactprops[PR_OTHER_TELEPHONE_NUMBER])) {
         $vcard->addTelephone($this->toUTF8($contactprops[PR_OTHER_TELEPHONE_NUMBER]));
     }
     return $vcard;
 }