| 
<?php
/**
 * Test functionality of vCard classes
 * @author cpks
 * @license Public Domain
 * @version 1.0
 */
 require 'imc_vCard.php';
 define('SKIP_FAX', TRUE);
 if (SKIP_FAX) require 'imc_ptm.php';
 
 // Create a stand-alone vCard object from code
 // A vCard object can write (but not read!) a file.
 $vcard = new imc\vCard;
 // add a Name property
 $prop = new imc\PropertyN;
 $prop->suffix = 'Mr'; // was $vcard->setNameSuffix('Mr.'); etc.
 $prop->forename = 'Andreas';
 $prop->surname = 'Haberstroh';
 $vcard->addProp($prop);
 // add an Address property
 $prop = new imc\PropertyAdr; // or, new imc\PropertyAdr(array('TYPE' => 'DOM,HOME'));
 $prop->setTypeParam(array('DOM', 'HOME'));
 // set the address fields
 $prop->street = '341 N. Bitterbush St.';
 $prop->state = 'CA';
 $prop->locality = 'Orange';
 $prop->zip = '92868';
 $prop->country = 'USA';
 $vcard->addProp($prop);
 // add a FN ("file under") property
 $vcard->setFN('Andreas Haberstroh');
 // add a TELephone number
 $tel = new imc\customProperty('TEL', '714-532-9493', array('TYPE' => 'HOME'));
 $vcard->addProp($tel);
 $vcard->setVersion('3.0'); // required by the standard
 // write the vCard to file
 $vcard->writeFile('test_vcard.vcf');
 
 /*
 echo "<h1>vCard Object Usage</h1>\n<pre>\n";
 print_r($vcard);
 echo "</pre>\n";
 */
 
 // Demonstrate reading a vcard file. This might contain multiple vCard
 // objects. So we don't use a vCard, we use a ComponentSet. This will
 // construct and contain all the vCard objects we need.
 $vcard = new imc\ComponentSet;
 $vcard->readFile('sample.vcf');
 // Component Sets (and components) are Countable
 echo count($vcard), " vCards in sample.vcf:\n";
 // and Traversable
 foreach ($vcard as $vc) {
 // get all WORK contact details
 $iter = $vc->getPropertiesOfType('*', 'WORK');
 if (SKIP_FAX) {// if we want to drop fax values
 $inner = $iter;
 $iter = new imc\propertyTypeMask($inner, 'FAX');
 }
 // get the 'FN' value. This method can be used even for non-unique
 // values in fact.
 $person_name = $vc->getUniqueProperty('FN')->getValue();
 $colwidth = strlen($person_name) + 1;
 echo $person_name, ' ';
 $iter->rewind(); // standard to do this before first use
 if (!$iter->valid())
 echo "(no contact details)\n";
 else {
 echo $iter->current()->getValue() . PHP_EOL; // 1st contact detail
 // iterate over subsequent ones
 for ($iter->next(); $iter->valid(); $iter->next())
 echo str_repeat(' ', $colwidth), $iter->current()->getValue(), PHP_EOL;
 }
 }
 |