/**
* Exports a given Turba_Object as an iCalendar vCard.
*
- * @param Turba_Object $object A Turba_Object.
- * @param string $version The vcard version to produce.
+ * @param Turba_Object $object Turba_Object.
+ * @param string $version The vcard version to produce.
+ * @param array $fields Hash of field names and SyncML_Property
+ * properties with the requested fields.
*
* @static
*
* @return Horde_iCalendar_vcard A Horde_iCalendar_vcard object.
*/
- function tovCard($object, $version = '2.1')
+ function tovCard($object, $version = '2.1', $fields = null)
{
$hash = $object->getAttributes();
$vcard = new Horde_iCalendar_vcard($version);
switch ($key) {
case 'name':
+ if ($fields && !isset($fields['FN'])) {
+ break;
+ }
$vcard->setAttribute('FN', $val, Horde_Mime::is8bit($val) ? $charset : array());
$formattedname = true;
break;
case 'nickname':
case 'alias':
+ if ($fields && !isset($fields['NICKNAME'])) {
+ break;
+ }
$vcard->setAttribute('NICKNAME', $val,
Horde_Mime::is8bit($val) ? $charset : array());
break;
case 'homeAddress':
+ if ($fields &&
+ (!isset($fields['LABEL']) ||
+ (isset($fields['LABEL']->Params['TYPE']) &&
+ !isset($fields['LABEL']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('LABEL', $val, array('HOME' => null));
} else {
}
break;
case 'workAddress':
+ if ($fields &&
+ (!isset($fields['LABEL']) ||
+ (isset($fields['LABEL']->Params['TYPE']) &&
+ !isset($fields['LABEL']->Params['TYPE']->ValEnum['WORK'])))) {
+ break;
+ }
if ($version == '2.1') {
- $vcard->setAttribute('LABEL', $val, array('HOME' => null));
+ $vcard->setAttribute('LABEL', $val, array('WORK' => null));
} else {
$vcard->setAttribute('LABEL', $val, array('TYPE' => 'WORK'));
}
break;
case 'otherAddress':
+ if ($fields && !isset($fields['LABEL'])) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('LABEL', $val);
} else {
break;
case 'phone':
+ if ($fields && !isset($fields['TEL'])) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val);
} else {
}
break;
case 'homePhone':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('HOME' => null));
} else {
}
break;
case 'workPhone':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['WORK'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('WORK' => null));
} else {
}
break;
case 'cellPhone':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['CELL'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('CELL' => null));
} else {
}
break;
case 'homeCellPhone':
- if ($version == '2.1') {
- $vcard->setAttribute('TEL', $val, array('CELL' => null, 'HOME' => null));
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['CELL'])) {
+ if ($version == '2.1') {
+ $parameters['CELL'] = null;
+ } else {
+ $parameters['TYPE'] = 'CELL';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['HOME'])) {
+ if ($version == '2.1') {
+ $parameters['HOME'] = null;
+ } else {
+ $parameters['TYPE'] = 'HOME';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
} else {
- $vcard->setAttribute('TEL', $val, array('TYPE' => 'CELL', 'TYPE' => 'HOME'));
+ if ($version == '2.1') {
+ $parameters = array('CELL' => null, 'HOME' => null);
+ } else {
+ $parameters = array('TYPE' => 'CELL', 'TYPE' => 'HOME');
+ }
}
+ $vcard->setAttribute('TEL', $val, $parameters);
break;
case 'workCellPhone':
- if ($version == '2.1') {
- $vcard->setAttribute('TEL', $val, array('CELL' => null, 'WORK' => null));
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['CELL'])) {
+ if ($version == '2.1') {
+ $parameters['CELL'] = null;
+ } else {
+ $parameters['TYPE'] = 'CELL';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['WORK'])) {
+ if ($version == '2.1') {
+ $parameters['WORK'] = null;
+ } else {
+ $parameters['TYPE'] = 'WORK';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
} else {
- $vcard->setAttribute('TEL', $val, array('TYPE' => 'CELL', 'TYPE' => 'WORK'));
+ if ($version == '2.1') {
+ $parameters = array('CELL' => null, 'WORK' => null);
+ } else {
+ $parameters = array('TYPE' => 'CELL', 'TYPE' => 'WORK');
+ }
}
+ $vcard->setAttribute('TEL', $val, $parameters);
break;
case 'videoCall':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['VIDEO'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('VIDEO' => null));
} else {
}
break;
case 'homeVideoCall':
- if ($version == '2.1') {
- $vcard->setAttribute('TEL', $val, array('VIDEO' => null, 'HOME' => null));
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['VIDEO'])) {
+ if ($version == '2.1') {
+ $parameters['VIDEO'] = null;
+ } else {
+ $parameters['TYPE'] = 'VIDEO';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['HOME'])) {
+ if ($version == '2.1') {
+ $parameters['HOME'] = null;
+ } else {
+ $parameters['TYPE'] = 'HOME';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
} else {
- $vcard->setAttribute('TEL', $val, array('TYPE' => 'VIDEO', 'TYPE' => 'HOME'));
+ if ($version == '2.1') {
+ $parameters = array('VIDEO' => null, 'HOME' => null);
+ } else {
+ $parameters = array('TYPE' => 'VIDEO', 'TYPE' => 'HOME');
+ }
}
+ $vcard->setAttribute('TEL', $val, $parameters);
break;
case 'workVideoCall':
- if ($version == '2.1') {
- $vcard->setAttribute('TEL', $val, array('VIDEO' => null, 'WORK' => null));
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['VIDEO'])) {
+ if ($version == '2.1') {
+ $parameters['VIDEO'] = null;
+ } else {
+ $parameters['TYPE'] = 'VIDEO';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['WORK'])) {
+ if ($version == '2.1') {
+ $parameters['WORK'] = null;
+ } else {
+ $parameters['TYPE'] = 'WORK';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
} else {
- $vcard->setAttribute('TEL', $val, array('TYPE' => 'VIDEO', 'TYPE' => 'WORK'));
+ if ($version == '2.1') {
+ $parameters = array('VIDEO' => null, 'WORK' => null);
+ } else {
+ $parameters = array('TYPE' => 'VIDEO', 'TYPE' => 'WORK');
+ }
}
+ $vcard->setAttribute('TEL', $val, $parameters);
break;
case 'sip':
+ if ($fields && !isset($fields['X-SIP'])) {
+ break;
+ }
$vcard->setAttribute('X-SIP', $val);
break;
case 'ptt':
+ if ($fields &&
+ (!isset($fields['X-SIP']) ||
+ (isset($fields['X-SIP']->Params['TYPE']) &&
+ !isset($fields['X-SIP']->Params['TYPE']->ValEnum['POC'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('X-SIP', $val, array('POC' => null));
} else {
}
break;
case 'voip':
+ if ($fields &&
+ (!isset($fields['X-SIP']) ||
+ (isset($fields['X-SIP']->Params['TYPE']) &&
+ !isset($fields['X-SIP']->Params['TYPE']->ValEnum['VOIP'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('X-SIP', $val, array('VOIP' => null));
} else {
}
break;
case 'shareView':
+ if ($fields &&
+ (!isset($fields['X-SIP']) ||
+ (isset($fields['X-SIP']->Params['TYPE']) &&
+ !isset($fields['X-SIP']->Params['TYPE']->ValEnum['SWIS'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('X-SIP', $val, array('SWIS' => null));
} else {
break;
case 'instantMessenger':
+ if ($fields && !isset($fields['X-WV-ID'])) {
+ break;
+ }
$vcard->setAttribute('X-WV-ID', $val);
break;
case 'fax':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['FAX'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('FAX' => null));
} else {
}
break;
case 'homeFax':
- if ($version == '2.1') {
- $vcard->setAttribute('TEL', $val, array('FAX' => null, 'HOME' => null));
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['FAX'])) {
+ if ($version == '2.1') {
+ $parameters['FAX'] = null;
+ } else {
+ $parameters['TYPE'] = 'FAX';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['HOME'])) {
+ if ($version == '2.1') {
+ $parameters['HOME'] = null;
+ } else {
+ $parameters['TYPE'] = 'HOME';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
} else {
- $vcard->setAttribute('TEL', $val, array('TYPE' => 'FAX', 'TYPE' => 'HOME'));
+ if ($version == '2.1') {
+ $parameters = array('FAX' => null, 'HOME' => null);
+ } else {
+ $parameters = array('TYPE' => 'FAX', 'TYPE' => 'HOME');
+ }
}
+ $vcard->setAttribute('TEL', $val, $parameters);
break;
case 'workFax':
+ $parameters = array();
+ if ($fields) {
+ if (!isset($fields['TEL'])) {
+ break;
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['FAX'])) {
+ if ($version == '2.1') {
+ $parameters['FAX'] = null;
+ } else {
+ $parameters['TYPE'] = 'FAX';
+ }
+ }
+ if (!isset($fields['TEL']->Params['TYPE']) ||
+ isset($fields['TEL']->Params['TYPE']->ValEnum['WORK'])) {
+ if ($version == '2.1') {
+ $parameters['WORK'] = null;
+ } else {
+ $parameters['TYPE'] = 'WORK';
+ }
+ }
+ if (empty($parameters)) {
+ break;
+ }
+ } else {
+ if ($version == '2.1') {
+ $parameters = array('FAX' => null, 'WORK' => null);
+ } else {
+ $parameters = array('TYPE' => 'FAX', 'TYPE' => 'WORK');
+ }
+ }
+ $vcard->setAttribute('TEL', $val, $parameters);
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('FAX' => null, 'WORK' => null));
} else {
break;
case 'pager':
+ if ($fields &&
+ (!isset($fields['TEL']) ||
+ (isset($fields['TEL']->Params['TYPE']) &&
+ !isset($fields['TEL']->Params['TYPE']->ValEnum['PAGER'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('TEL', $val, array('PAGER' => null));
} else {
break;
case 'email':
+ if ($fields && !isset($fields['EMAIL'])) {
+ break;
+ }
$vcard->setAttribute('EMAIL',
Horde_iCalendar_vcard::getBareEmail($val));
break;
case 'homeEmail':
+ if ($fields &&
+ (!isset($fields['EMAIL']) ||
+ (isset($fields['EMAIL']->Params['TYPE']) &&
+ !isset($fields['EMAIL']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('EMAIL',
Horde_iCalendar_vcard::getBareEmail($val),
}
break;
case 'workEmail':
+ if ($fields &&
+ (!isset($fields['EMAIL']) ||
+ (isset($fields['EMAIL']->Params['TYPE']) &&
+ !isset($fields['EMAIL']->Params['TYPE']->ValEnum['WORK'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('EMAIL',
Horde_iCalendar_vcard::getBareEmail($val),
}
break;
case 'emails':
+ if ($fields && !isset($fields['EMAIL'])) {
+ break;
+ }
$emails = explode(',', $val);
foreach ($emails as $email) {
$vcard->setAttribute('EMAIL',
break;
case 'title':
+ if ($fields && !isset($fields['TITLE'])) {
+ break;
+ }
$vcard->setAttribute('TITLE', $val,
Horde_Mime::is8bit($val) ? $charset : array());
break;
case 'role':
+ if ($fields && !isset($fields['ROLE'])) {
+ break;
+ }
$vcard->setAttribute('ROLE', $val,
Horde_Mime::is8bit($val) ? $charset : array());
break;
case 'notes':
+ if ($fields && !isset($fields['NOTE'])) {
+ break;
+ }
$vcard->setAttribute('NOTE', $val,
Horde_Mime::is8bit($val) ? $charset : array());
break;
case 'businessCategory':
case 'category':
+ if ($fields && !isset($fields['CATEGORIES'])) {
+ break;
+ }
$vcard->setAttribute('CATEGORIES', $val);
break;
case 'anniversary':
- $vcard->setAttribute('X-ANNIVERSARY', $val);
+ if (!$fields || isset($fields['X-ANNIVERSARY'])) {
+ $vcard->setAttribute('X-ANNIVERSARY', $val);
+ }
break;
case 'spouse':
- $vcard->setAttribute('X-SPOUSE', $val);
+ if (!$fields || isset($fields['X-SPOUSE'])) {
+ $vcard->setAttribute('X-SPOUSE', $val);
+ }
break;
case 'children':
- $vcard->setAttribute('X-CHILDREN', $val);
+ if (!$fields || isset($fields['X-CHILDREN'])) {
+ $vcard->setAttribute('X-CHILDREN', $val);
+ }
break;
case 'website':
+ if ($fields && !isset($fields['URL'])) {
+ break;
+ }
$vcard->setAttribute('URL', $val);
break;
case 'homeWebsite':
+ if ($fields &&
+ (!isset($fields['URL']) ||
+ (isset($fields['URL']->Params['TYPE']) &&
+ !isset($fields['URL']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('URL', $val, array('HOME' => null));
} else {
}
break;
case 'workWebsite':
+ if ($fields &&
+ (!isset($fields['URL']) ||
+ (isset($fields['URL']->Params['TYPE']) &&
+ !isset($fields['URL']->Params['TYPE']->ValEnum['WORK'])))) {
+ break;
+ }
if ($version == '2.1') {
$vcard->setAttribute('URL', $val, array('WORK' => null));
} else {
break;
case 'birthday':
+ if ($fields && !isset($fields['BDAY'])) {
+ break;
+ }
$vcard->setAttribute('BDAY', $val);
break;
case 'timezone':
+ if ($fields && !isset($fields['TZ'])) {
+ break;
+ }
$vcard->setAttribute('TZ', $val, array('VALUE' => 'text'));
break;
case 'latitude':
+ if ($fields && !isset($fields['GEO'])) {
+ break;
+ }
if (isset($hash['longitude'])) {
$vcard->setAttribute('GEO',
array('latitude' => $val,
}
break;
case 'homeLatitude':
+ if ($fields &&
+ (!isset($fields['GEO']) ||
+ (isset($fields['GEO']->Params['TYPE']) &&
+ !isset($fields['GEO']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if (isset($hash['homeLongitude'])) {
if ($version == '2.1') {
$vcard->setAttribute('GEO',
}
break;
case 'workLatitude':
+ if ($fields &&
+ (!isset($fields['GEO']) ||
+ (isset($fields['GEO']->Params['TYPE']) &&
+ !isset($fields['GEO']->Params['TYPE']->ValEnum['HOME'])))) {
+ break;
+ }
if (isset($hash['workLongitude'])) {
if ($version == '2.1') {
$vcard->setAttribute('GEO',
case 'photo':
case 'logo':
+ $name = Horde_String::upper($key);
$params = array('ENCODING' => 'b');
if (isset($hash[$key . 'type'])) {
$params['TYPE'] = $hash[$key . 'type'];
}
- $vcard->setAttribute(Horde_String::upper($key),
+ if ($fields &&
+ (!isset($fields[$name]) ||
+ !isset($params['TYPE'])) ||
+ (isset($fields[$name]->Params['TYPE']) &&
+ !isset($fields[$name]->Params['TYPE']->ValEnum[$params['TYPE']]))) {
+ break;
+ }
+ $vcard->setAttribute($name,
base64_encode($val),
$params);
break;
$val = Horde_String::convertCharset($val, Horde_Nls::getCharset(), 'utf-8');
$a = Horde_String::convertCharset($a, Horde_Nls::getCharset(), 'utf-8');
}
- $vcard->setAttribute('N', $val, Horde_Mime::is8bit($val) ? $charset : array(), false, $a);
+ if (!$fields || isset($fields['N'])) {
+ $vcard->setAttribute('N', $val, Horde_Mime::is8bit($val) ? $charset : array(), false, $a);
+ }
- if (!$formattedname) {
+ if (!$formattedname && (!$fields || isset($fields['FN']))) {
$val = empty($hash['firstname']) ? $hash['lastname'] : $hash['firstname'] . ' ' . $hash['lastname'];
$vcard->setAttribute('FN', $val, Horde_Mime::is8bit($val) ? $charset : array());
}
if (array_key_exists('department', $hash)) {
$org[] = $hash['department'];
}
- if (count($org)) {
+ if (count($org) && (!$fields || isset($fields['ORG']))) {
$val = implode(';', $org);
if ($version != '2.1') {
$val = Horde_String::convertCharset($val, Horde_Nls::getCharset(), 'utf-8');
$vcard->setAttribute('ORG', $val, Horde_Mime::is8bit($val) ? $charset : array(), false, $org);
}
- if (array_key_exists('commonAddress', $hash) ||
- array_key_exists('commonStreet', $hash) ||
- array_key_exists('commonPOBox', $hash) ||
- array_key_exists('commonExtended', $hash) ||
- array_key_exists('commonCity', $hash) ||
- array_key_exists('commonProvince', $hash) ||
- array_key_exists('commonPostalCode', $hash) ||
- array_key_exists('commonCountry', $hash)) {
+ if ((!$fields || isset($fields['ADR'])) &&
+ (array_key_exists('commonAddress', $hash) ||
+ array_key_exists('commonStreet', $hash) ||
+ array_key_exists('commonPOBox', $hash) ||
+ array_key_exists('commonExtended', $hash) ||
+ array_key_exists('commonCity', $hash) ||
+ array_key_exists('commonProvince', $hash) ||
+ array_key_exists('commonPostalCode', $hash) ||
+ array_key_exists('commonCountry', $hash))) {
/* We can't know if this particular Turba source uses a single
* address field or multiple for
* street/city/province/postcode/country. Try to deal with
$vcard->setAttribute('ADR', $val, $params, true, $a);
}
- if (array_key_exists('homeAddress', $hash) ||
- array_key_exists('homeStreet', $hash) ||
- array_key_exists('homePOBox', $hash) ||
- array_key_exists('homeExtended', $hash) ||
- array_key_exists('homeCity', $hash) ||
- array_key_exists('homeProvince', $hash) ||
- array_key_exists('homePostalCode', $hash) ||
- array_key_exists('homeCountry', $hash)) {
+ if ((!$fields ||
+ (isset($fields['ADR']) &&
+ (!isset($fields['ADR']->Params['TYPE']) ||
+ isset($fields['ADR']->Params['TYPE']->ValEnum['HOME'])))) &&
+ (array_key_exists('homeAddress', $hash) ||
+ array_key_exists('homeStreet', $hash) ||
+ array_key_exists('homePOBox', $hash) ||
+ array_key_exists('homeExtended', $hash) ||
+ array_key_exists('homeCity', $hash) ||
+ array_key_exists('homeProvince', $hash) ||
+ array_key_exists('homePostalCode', $hash) ||
+ array_key_exists('homeCountry', $hash))) {
if (isset($hash['homeAddress']) && !isset($hash['homeStreet'])) {
$hash['homeStreet'] = $hash['homeAddress'];
}
$vcard->setAttribute('ADR', $val, $params, true, $a);
}
- if (array_key_exists('workAddress', $hash) ||
- array_key_exists('workStreet', $hash) ||
- array_key_exists('workPOBox', $hash) ||
- array_key_exists('workExtended', $hash) ||
- array_key_exists('workCity', $hash) ||
- array_key_exists('workProvince', $hash) ||
- array_key_exists('workPostalCode', $hash) ||
- array_key_exists('workCountry', $hash)) {
+ if ((!$fields ||
+ (isset($fields['ADR']) &&
+ (!isset($fields['ADR']->Params['TYPE']) ||
+ isset($fields['ADR']->Params['TYPE']->ValEnum['WORK'])))) &&
+ (array_key_exists('workAddress', $hash) ||
+ array_key_exists('workStreet', $hash) ||
+ array_key_exists('workPOBox', $hash) ||
+ array_key_exists('workExtended', $hash) ||
+ array_key_exists('workCity', $hash) ||
+ array_key_exists('workProvince', $hash) ||
+ array_key_exists('workPostalCode', $hash) ||
+ array_key_exists('workCountry', $hash))) {
if (isset($hash['workAddress']) && !isset($hash['workStreet'])) {
$hash['workStreet'] = $hash['workAddress'];
}