Пример #1
0
 /**
  * Converts a vCard object to a new version.
  *
  * targetVersion must be one of:
  *   Document::VCARD21
  *   Document::VCARD30
  *   Document::VCARD40
  *
  * Currently only 3.0 and 4.0 as input and output versions.
  *
  * 2.1 has some minor support for the input version, it's incomplete at the
  * moment though.
  *
  * If input and output version are identical, a clone is returned.
  *
  * @param Component\VCard $input
  * @param int $targetVersion
  */
 public function convert(Component\VCard $input, $targetVersion)
 {
     $inputVersion = $input->getDocumentType();
     if ($inputVersion === $targetVersion) {
         return clone $input;
     }
     if (!in_array($inputVersion, array(Document::VCARD21, Document::VCARD30, Document::VCARD40))) {
         throw new \InvalidArgumentException('Only vCard 2.1, 3.0 and 4.0 are supported for the input data');
     }
     if (!in_array($targetVersion, array(Document::VCARD30, Document::VCARD40))) {
         throw new \InvalidArgumentException('You can only use vCard 3.0 or 4.0 for the target version');
     }
     $newVersion = $targetVersion === Document::VCARD40 ? '4.0' : '3.0';
     $output = new Component\VCard(array('VERSION' => $newVersion));
     foreach ($input->children as $property) {
         $this->convertProperty($input, $output, $property, $targetVersion);
     }
     return $output;
 }
Пример #2
0
 /**
  * Converts a vCard object to a new version.
  *
  * targetVersion must be one of:
  *   Document::VCARD21
  *   Document::VCARD30
  *   Document::VCARD40
  *
  * Currently only 3.0 and 4.0 as input and output versions.
  *
  * 2.1 has some minor support for the input version, it's incomplete at the
  * moment though.
  *
  * If input and output version are identical, a clone is returned.
  *
  * @param Component\VCard $input
  * @param int $targetVersion
  */
 function convert(Component\VCard $input, $targetVersion)
 {
     $inputVersion = $input->getDocumentType();
     if ($inputVersion === $targetVersion) {
         return clone $input;
     }
     if (!in_array($inputVersion, [Document::VCARD21, Document::VCARD30, Document::VCARD40])) {
         throw new \InvalidArgumentException('Only vCard 2.1, 3.0 and 4.0 are supported for the input data');
     }
     if (!in_array($targetVersion, [Document::VCARD30, Document::VCARD40])) {
         throw new \InvalidArgumentException('You can only use vCard 3.0 or 4.0 for the target version');
     }
     $newVersion = $targetVersion === Document::VCARD40 ? '4.0' : '3.0';
     $output = new Component\VCard(['VERSION' => $newVersion]);
     // We might have generated a default UID. Remove it!
     unset($output->UID);
     foreach ($input->children() as $property) {
         $this->convertProperty($input, $output, $property, $targetVersion);
     }
     return $output;
 }