Overview

Packages

  • Icalendar

Classes

  • Horde_Icalendar
  • Horde_Icalendar_Daylight
  • Horde_Icalendar_Exception
  • Horde_Icalendar_Standard
  • Horde_Icalendar_Translation
  • Horde_Icalendar_Valarm
  • Horde_Icalendar_Vcard
  • Horde_Icalendar_Vevent
  • Horde_Icalendar_Vfreebusy
  • Horde_Icalendar_Vjournal
  • Horde_Icalendar_Vnote
  • Horde_Icalendar_Vtimezone
  • Horde_Icalendar_Vtodo
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Class representing vCard entries.
  4:  *
  5:  * Copyright 2003-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information (LGPL). If you
  8:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  9:  *
 10:  * @author   Karsten Fourmont <karsten@horde.org>
 11:  * @category Horde
 12:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 13:  * @package  Icalendar
 14:  */
 15: class Horde_Icalendar_Vcard extends Horde_Icalendar
 16: {
 17:     // The following were shamelessly yoinked from Contact_Vcard_Build
 18:     // Part numbers for N components.
 19:     const N_FAMILY = 0;
 20:     const N_GIVEN = 1;
 21:     const N_ADDL = 2;
 22:     const N_PREFIX = 3;
 23:     const N_SUFFIX = 4;
 24: 
 25:     // Part numbers for ADR components.
 26:     const ADR_POB = 0;
 27:     const ADR_EXTEND = 1;
 28:     const ADR_STREET = 2;
 29:     const ADR_LOCALITY = 3;
 30:     const ADR_REGION = 4;
 31:     const ADR_POSTCODE = 5;
 32:     const ADR_COUNTRY = 6;
 33: 
 34:     // Part numbers for GEO components.
 35:     const GEO_LAT = 0;
 36:     const GEO_LON = 1;
 37: 
 38:     /**
 39:      * The component type of this class.
 40:      *
 41:      * @var string
 42:      */
 43:     public $type = 'vcard';
 44: 
 45:     /**
 46:      * Constructor.
 47:      */
 48:     public function __construct($version = '2.1')
 49:     {
 50:         parent::__construct($version);
 51:     }
 52: 
 53:     /**
 54:      * Sets the version of this component.
 55:      *
 56:      * @see $version
 57:      * @see $oldFormat
 58:      *
 59:      * @param string  A float-like version string.
 60:      */
 61:     public function setVersion($version)
 62:     {
 63:         $this->_oldFormat = $version < 3;
 64:         $this->_version = $version;
 65:     }
 66: 
 67:     /**
 68:      * Unlike vevent and vtodo, a vcard is normally not enclosed in an
 69:      * iCalendar container. (BEGIN..END)
 70:      *
 71:      * @return TODO
 72:      */
 73:     public function exportvCalendar()
 74:     {
 75:         $requiredAttributes['VERSION'] = $this->_version;
 76:         $requiredAttributes['N'] = ';;;;;;';
 77:         if ($this->_version == '3.0') {
 78:             $requiredAttributes['FN'] = '';
 79:         }
 80: 
 81:         foreach ($requiredAttributes as $name => $default_value) {
 82:             try {
 83:                 $this->getAttribute($name);
 84:             } catch (Horde_Icalendar_Exception $e) {
 85:                 $this->setAttribute($name, $default_value);
 86:             }
 87:         }
 88: 
 89:         return $this->_exportvData('VCARD');
 90:     }
 91: 
 92:     /**
 93:      * Returns the contents of the "N" tag as a printable Name:
 94:      * i.e. converts:
 95:      *
 96:      *   N:Duck;Dagobert;T;Professor;Sen.
 97:      * to
 98:      *   "Professor Dagobert T Duck Sen"
 99:      *
100:      * @return string  Full name of vcard "N" tag or null if no N tag.
101:      */
102:     public function printableName()
103:     {
104:         try {
105:             $name_parts = $this->getAttributeValues('N');
106:         } catch (Horde_Icalendar_Exception $e) {
107:             return null;
108:         }
109: 
110:         $name_arr = array();
111: 
112:         foreach (array(self::N_PREFIX, self::N_GIVEN, self::N_ADDL, self::N_FAMILY, self::N_SUFFIX) as $val) {
113:             if (!empty($name_parts[$val])) {
114:                 $name_arr[] = $name_parts[$val];
115:             }
116:         }
117: 
118:         return implode(' ', $name_arr);
119:     }
120: 
121:     /**
122:      * Static function to make a given email address rfc822 compliant.
123:      *
124:      * @param string $address  An email address.
125:      *
126:      * @return string  The RFC822-formatted email address.
127:      */
128:     static function getBareEmail($address)
129:     {
130:         return Horde_Mime_Address::bareAddress($address);
131:     }
132: 
133: }
134: 
API documentation generated by ApiGen