From: <jl...@us...> - 2009-06-30 19:54:13
|
Author: jlehrke Date: Tue Jun 30 21:53:46 2009 New Revision: 27339 URL: http://www.egroupware.org/viewvc/egroupware?rev=27339&view=rev Log: eGW coding standard Modified: branches/SyncML-1.2/addressbook/inc/class.addressbook_bo.inc.php branches/SyncML-1.2/addressbook/inc/class.addressbook_vcal.inc.php Modified: branches/SyncML-1.2/addressbook/inc/class.addressbook_bo.inc.php URL: http://www.egroupware.org/viewvc/egroupware/branches/SyncML-1.2/addressbook/inc/class.addressbook_bo.inc.php?rev=27339&r1=27338&r2=27339&view=diff ============================================================================== --- branches/SyncML-1.2/addressbook/inc/class.addressbook_bo.inc.php (original) +++ branches/SyncML-1.2/addressbook/inc/class.addressbook_bo.inc.php Tue Jun 30 21:53:46 2009 @@ -1448,8 +1448,7 @@ */ function find_contact($contact, $relax=false) { - if ($contact['id'] - && ($found = $this->read($contact['id']))) + if ($contact['id'] && ($found = $this->read($contact['id']))) { // We only do a simple consistency check if ((empty($found['n_family']) || $found['n_family'] == $contact['n_family']) @@ -1483,16 +1482,20 @@ $backend =& $this->get_backend(); // define filter for empty address one - foreach($addr_one_fields as $field) { - if (!($db_col = array_search($field, $backend->db_cols))) { + foreach ($addr_one_fields as $field) + { + if (!($db_col = array_search($field, $backend->db_cols))) + { $db_col = $field; } $no_addr_one[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; } // define filter for empty address two - foreach($addr_two_fields as $field) { - if (!($db_col = array_search($field, $backend->db_cols))) { + foreach ($addr_two_fields as $field) + { + if (!($db_col = array_search($field, $backend->db_cols))) + { $db_col = $field; } $no_addr_two[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; @@ -1502,17 +1505,23 @@ $criteria = array(); $empty_columns = array(); - foreach($columns_to_search as $field) { + foreach ($columns_to_search as $field) + { if (!isset($contact[$field]) || empty($contact[$field])) { // Not every device supports all fields - if (!in_array($field, $tolerance_fields)) { - if (!($db_col = array_search($field,$backend->db_cols))) { - $db_col = $field; - } + if (!in_array($field, $tolerance_fields)) + { + if (!($db_col = array_search($field, $backend->db_cols))) + { + $db_col = $field; + } $empty_columns[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; } - } else { - if (!$relax || !in_array($field, $tolerance_fields)) { + } + else + { + if (!$relax || !in_array($field, $tolerance_fields)) + { $criteria[$field] = $contact[$field]; } } @@ -1520,114 +1529,155 @@ $filter = $empty_columns; - if (!$relax) { + if (!$relax) + { // We use addresses only for strong matching - if ($this->all_empty($contact, $addr_one_fields)) { + if ($this->all_empty($contact, $addr_one_fields)) + { $filter = $filter + $no_addr_one; - } else { - foreach($addr_one_fields as $field) { - if (!isset($contact[$field]) || empty($contact[$field])) { - if (!($db_col = array_search($field,$backend->db_cols))) { - $db_col = $field; - } - $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; - } else { - $criteria[$field] = $contact[$field]; - } - } - } - - if ($this->all_empty($contact, $addr_two_fields)) { - $filter = $filter + $no_addr_two; - } else { - foreach($addr_two_fields as $field) { - if (!isset($contact[$field]) || empty($contact[$field])) { - if (!($db_col = array_search($field,$backend->db_cols))) { - $db_col = $field; - } - $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; - } else { - $criteria[$field] = $contact[$field]; - } - } - } - } - - Horde::logMessage("Addressbook find step 1:\n" . print_r($criteria, true) . - "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); - - // first try full match - if($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter)) { - $result = $foundContacts[0]['id']; - } - - // No need for more searches for relaxed matching - if (!$relax && !$result && !$this->all_empty($contact, $addr_one_fields) && $this->all_empty($contact, $addr_two_fields)) { - // try given address and ignore the second one in EGW - $filter = array_diff($filter, $no_addr_two); - - Horde::logMessage("Addressbook find step 2:\n" . print_r($criteria, true) . - "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); - if($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter)) { - $result = $foundContacts[0]['id']; - } else { - // try address as home address -- some devices don't qualify addresses - $filter = $empty_columns; - foreach ($addr_two_fields as $key => $field) { - if (isset($criteria[$addr_one_fields[$key]])) { - $criteria[$field] = $criteria[$addr_one_fields[$key]]; - unset($criteria[$addr_one_fields[$key]]); - } else { - if (!($db_col = array_search($field,$backend->db_cols))) { + } + else + { + foreach ($addr_one_fields as $field) + { + if (!isset($contact[$field]) || empty($contact[$field])) + { + if (!($db_col = array_search($field, $backend->db_cols))) + { $db_col = $field; } $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; } + else + { + $criteria[$field] = $contact[$field]; + } + } + } + + if ($this->all_empty($contact, $addr_two_fields)) + { + $filter = $filter + $no_addr_two; + } + else + { + foreach ($addr_two_fields as $field) + { + if (!isset($contact[$field]) || empty($contact[$field])) + { + if (!($db_col = array_search($field, $backend->db_cols))) + { + $db_col = $field; + } + $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; + } + else + { + $criteria[$field] = $contact[$field]; + } + } + } + } + + Horde::logMessage("Addressbook find step 1:\n" . print_r($criteria, true) . + "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); + + // first try full match + if (($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter))) + { + $result = $foundContacts[0]['id']; + } + + // No need for more searches for relaxed matching + if (!$relax && !$result && !$this->all_empty($contact, $addr_one_fields) + && $this->all_empty($contact, $addr_two_fields)) + { + // try given address and ignore the second one in EGW + $filter = array_diff($filter, $no_addr_two); + + Horde::logMessage("Addressbook find step 2:\n" . print_r($criteria, true) . + "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); + if (($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter))) + { + $result = $foundContacts[0]['id']; + } + else + { + // try address as home address -- some devices don't qualify addresses + $filter = $empty_columns; + foreach ($addr_two_fields as $key => $field) + { + if (isset($criteria[$addr_one_fields[$key]])) + { + $criteria[$field] = $criteria[$addr_one_fields[$key]]; + unset($criteria[$addr_one_fields[$key]]); + } + else + { + if (!($db_col = array_search($field,$backend->db_cols))) + { + $db_col = $field; + } + $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; + } } $filter = $filter + $no_addr_one; Horde::logMessage("Addressbook find step 3:\n" . print_r($criteria, true) . - "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); - if($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter)) { + "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); + if (($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter))) + { $result = $foundContacts[0]['id']; } } - } elseif(!$relax && !$result) { // No more searches for relaxed matching - // try again after address swap + } + elseif (!$relax && !$result) + { // No more searches for relaxed matching, try again after address swap $filter = $empty_columns; - foreach ($addr_one_fields as $key => $field) { + foreach ($addr_one_fields as $key => $field) + { $_temp_set = false; - if (isset($criteria[$field])) { + if (isset($criteria[$field])) + { $_temp = $criteria[$field]; $_temp_set = true; unset($criteria[$field]); } - if (isset($criteria[$addr_two_fields[$key]])) { + if (isset($criteria[$addr_two_fields[$key]])) + { $criteria[$field] = $criteria[$addr_two_fields[$key]]; unset($criteria[$addr_two_fields[$key]]); - } else { - if (!($db_col = array_search($field,$backend->db_cols))) { - $db_col = $field; - } + } + else + { + if (!($db_col = array_search($field,$backend->db_cols))) + { + $db_col = $field; + } $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; } - if ($_temp_set) { + if ($_temp_set) + { $criteria[$addr_two_fields[$key]] = $_temp; - } else { - if (!($db_col = array_search($addr_two_fields[$key],$backend->db_cols))) { - $db_col = $field; - } + } + else + { + if (!($db_col = array_search($addr_two_fields[$key],$backend->db_cols))) + { + $db_col = $field; + } $filter[] = "(" . $db_col . " IS NULL OR " . $db_col . " = '')"; } } Horde::logMessage("Addressbook find step 4:\n" . print_r($criteria, true) . "filter:\n" . print_r($filter, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); - if($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter)) { + if(($foundContacts = parent::search($criteria, true, '', '', '', False, 'AND', false, $filter))) + { $result = $foundContacts[0]['id']; } } Modified: branches/SyncML-1.2/addressbook/inc/class.addressbook_vcal.inc.php URL: http://www.egroupware.org/viewvc/egroupware/branches/SyncML-1.2/addressbook/inc/class.addressbook_vcal.inc.php?rev=27339&r1=27338&r2=27339&view=diff ============================================================================== --- branches/SyncML-1.2/addressbook/inc/class.addressbook_vcal.inc.php (original) +++ branches/SyncML-1.2/addressbook/inc/class.addressbook_vcal.inc.php Tue Jun 30 21:53:46 2009 @@ -54,15 +54,16 @@ * @param array $_clientProperties client properties */ function __construct($contact_app='addressbook', $_contentType='text/x-vcard', &$_clientProperties = array()) - { - parent::__construct($contact_app); + { + parent::__construct($contact_app); #Horde::logMessage("vCalAddressbook Constructor for $_contentType", __FILE__, __LINE__, PEAR_LOG_DEBUG); - switch($_contentType) { - case 'text/vcard': - $this->version = '3.0'; - break; - default: - $this->version = '2.1'; + switch($_contentType) + { + case 'text/vcard': + $this->version = '3.0'; + break; + default: + $this->version = '2.1'; break; } $this->clientProperties = $_clientProperties; @@ -78,7 +79,8 @@ */ function addVCard($_vcard, $_abID=null, $merge=false) { - if(!$contact = $this->vcardtoegw($_vcard)) { + if(!$contact = $this->vcardtoegw($_vcard)) + { return false; } @@ -120,18 +122,20 @@ $vCard =& new Horde_iCalendar_vcard($this->version); - if(!is_array($this->supportedFields)) { + if (!is_array($this->supportedFields)) + { $this->setSupportedFields(); } $sysCharSet = $GLOBALS['egw']->translation->charset(); - if(!($entry = $this->read($_id))) { + if (!($entry = $this->read($_id))) + { return false; } $this->fixup_contact($entry); - foreach($this->supportedFields as $vcardField => $databaseFields) + foreach ($this->supportedFields as $vcardField => $databaseFields) { $values = array(); $options = array(); @@ -140,31 +144,39 @@ $vcardFields = explode(';', $vcardField); $vcardField = $vcardFields[0]; $i = 1; - while (isset($vcardFields[$i])) { + while (isset($vcardFields[$i])) + { list($oname, $oval) = explode('=', $vcardFields[$i]); - if (!$oval && ($this->version == '3.0')) { + if (!$oval && ($this->version == '3.0')) + { // declare OPTION as TYPE=OPTION $options['TYPE'][] = $oname ; - } else { + } + else + { $options[$oname] = $oval; } $i++; } - if (is_array($options['TYPE'])) { + if (is_array($options['TYPE'])) + { $oval = implode(",", $options['TYPE']); unset($options['TYPE']); $options['TYPE'] = $oval; } - if (isset($this->clientProperties[$vcardField]['Size'])) { + if (isset($this->clientProperties[$vcardField]['Size'])) + { $size = $this->clientProperties[$vcardField]['Size']; $noTruncate = $this->clientProperties[$vcardField]['NoTruncate']; //Horde::logMessage("vCalAddressbook $vcardField Size: $size, NoTruncate: " . // ($noTruncate ? 'TRUE' : 'FALSE'), __FILE__, __LINE__, PEAR_LOG_DEBUG); - } else { + } + else + { $size = -1; $noTruncate = false; } - foreach($databaseFields as $databaseField) + foreach ($databaseFields as $databaseField) { $value = ""; @@ -183,10 +195,13 @@ case 'bday': if (!empty($value)) { - if ($size == 8) { + if ($size == 8) + { $value = str_replace('-','',$value); - } elseif (isset($options['TYPE']) && ( - $options['TYPE'] == 'BASIC')) { + } + elseif (isset($options['TYPE']) && ( + $options['TYPE'] == 'BASIC')) + { unset($options['TYPE']); // used by old SyncML implementations $value = str_replace('-','',$value).'T000000Z'; @@ -196,30 +211,38 @@ break; case 'jpegphoto': - if(!empty($value) && - (($size < 0) || (strlen($value) < $size))) { - if (!isset($options['TYPE'])) { + if (!empty($value) && + (($size < 0) || (strlen($value) < $size))) + { + if (!isset($options['TYPE'])) + { $options['TYPE'] = 'JPEG'; } - if (!isset($options['ENCODING'])) { + if (!isset($options['ENCODING'])) + { $options['ENCODING'] = 'BASE64'; } - $hasdata++; - } else { + $hasdata++; + } + else + { $value = ''; } break; case 'cat_id': - if (!empty($value)) { + if (!empty($value)) + { $values = &$this->get_categories($value); $values = (array) $GLOBALS['egw']->translation->convert($values, $sysCharSet, $_charset); $value = implode(',', $values); // just for the CHARSET recognition if(($extra_charset_attribute || $this->productName == 'kde') - && preg_match('/([\177-\377])/',$value)) { + && preg_match('/([\177-\377])/',$value)) + { $options['CHARSET'] = $_charset; // KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that - if ($this->productName == 'kde') { + if ($this->productName == 'kde') + { $options['ENCODING'] = 'QUOTED-PRINTABLE'; } } @@ -228,8 +251,10 @@ break; default: - if (($size > 0) && strlen(implode(',', $values) . $value) > $size) { - if ($noTruncate) { + if (($size > 0) && strlen(implode(',', $values) . $value) > $size) + { + if ($noTruncate) + { Horde::logMessage("vCalAddressbook $vcardField omitted due to maximum size $size", __FILE__, __LINE__, PEAR_LOG_WARNING); continue; @@ -237,41 +262,51 @@ // truncate the value to size $cursize = strlen(implode('', $values)); $left = $size - $cursize - count($databaseFields) + 1; - if ($left > 0) { + if ($left > 0) + { $value = substr($value, 0, $left); - } else { + } + else + { $value = ''; } Horde::logMessage("vCalAddressbook $vcardField truncated to maximum size $size", __FILE__, __LINE__, PEAR_LOG_INFO); } - if(!empty($value) // required field + if (!empty($value) // required field || in_array($vcardField,array('FN','ORG','N')) - || ($size >= 0 && !$noTruncate)) { + || ($size >= 0 && !$noTruncate)) + { $value = $GLOBALS['egw']->translation->convert(trim($value), $sysCharSet, $_charset); $values[] = $value; if(($extra_charset_attribute || $this->productName == 'kde') - && preg_match('/([\177-\377])/',$value)) { + && preg_match('/([\177-\377])/',$value)) + { $options['CHARSET'] = $_charset; // KAddressbook requires non-ascii chars to be qprint encoded, other clients eg. nokia phones have trouble with that - if ($this->productName == 'kde') { + if ($this->productName == 'kde') + { $options['ENCODING'] = 'QUOTED-PRINTABLE'; } } // protect the CardDAV - elseif(($extra_charset_attribute && preg_match('/([\000-\012\015\016\020-\037\075])/',$value))) + elseif (($extra_charset_attribute && preg_match('/([\000-\012\015\016\020-\037\075])/',$value))) { $options['ENCODING'] = 'QUOTED-PRINTABLE'; } if ($vcardField == 'TEL' && $entry['tel_prefer'] && - ($databaseField == $entry['tel_prefer'])) { - if ($options['TYPE']) { + ($databaseField == $entry['tel_prefer'])) + { + if ($options['TYPE']) + { $options['TYPE'] .= ','; } $options['TYPE'] .= 'PREF'; } $hasdata++; - } else { + } + else + { $values[] = ''; } break; @@ -300,8 +335,10 @@ { $result = false; - if($contact = $this->vcardtoegw($_vcard)) { - if ($contentID) { + if (($contact = $this->vcardtoegw($_vcard))) + { + if ($contentID) + { $contact['contact_id'] = $contentID; } $result = $this->find_contact($contact, $relax); @@ -312,28 +349,34 @@ function setSupportedFields($_productManufacturer='', $_productName='') { $state = &$_SESSION['SyncML.state']; - if (isset($state)) { + if (isset($state)) + { $deviceInfo = $state->getClientDeviceInfo(); } // store product manufacturer and name, to be able to use it elsewhere - if ($_productManufacturer) { + if ($_productManufacturer) + { $this->productManufacturer = strtolower($_productManufacturer); $this->productName = strtolower($_productName); } - if(isset($deviceInfo) && is_array($deviceInfo)) { + if(isset($deviceInfo) && is_array($deviceInfo)) + { if(!isset($this->productManufacturer) || $this->productManufacturer == '' || - $this->productManufacturer == 'file') { + $this->productManufacturer == 'file') + { $this->productManufacturer = strtolower($deviceInfo['manufacturer']); } - if(!isset($this->productName) || $this->productName == '') { + if(!isset($this->productName) || $this->productName == '') + { $this->productName = strtolower($deviceInfo['model']); } } - Horde::logMessage('setSupportedFields(' . $this->productManufacturer . ', ' . $this->productName .')', __FILE__, __LINE__, PEAR_LOG_DEBUG); + Horde::logMessage('setSupportedFields(' . $this->productManufacturer . ', ' . $this->productName .')', + __FILE__, __LINE__, PEAR_LOG_DEBUG); /** * ToDo Lars: @@ -681,7 +724,7 @@ ); //error_log("Client: $_productManufacturer $_productName"); - switch($this->productManufacturer) + switch ($this->productManufacturer) { case 'funambol': case 'funambol inc.': @@ -707,7 +750,7 @@ case 'nexthaus corporation': case 'nexthaus corp': - switch($this->productName) + switch ($this->productName) { case 'syncje outlook edition': $this->supportedFields = $defaultFields[1]; @@ -720,7 +763,7 @@ break; case 'nokia': - switch($this->productName) + switch ($this->productName) { case 'e61': $this->supportedFields = $defaultFields[5]; @@ -750,7 +793,7 @@ // multisync does not provide anymore information then the manufacturer // we suppose multisync with evolution case 'the multisync project': - switch($this->productName) + switch ($this->productName) { default: $this->supportedFields = $defaultFields[0]; @@ -759,7 +802,7 @@ break; case 'siemens': - switch($this->productName) + switch ($this->productName) { case 'sx1': $this->supportedFields = $defaultFields[3]; @@ -773,7 +816,7 @@ case 'sonyericsson': case 'sony ericsson': - switch($this->productName) + switch ($this->productName) { case 'p910i': case 'd750i': @@ -784,10 +827,13 @@ $this->supportedFields = $defaultFields[13]; break; default: - if ($this->productName[0] == 'w') { + if ($this->productName[0] == 'w') + { error_log("unknown Sony Ericsson phone '$this->productName', assuming same as 'W760i'"); $this->supportedFields = $defaultFields[13]; - } else { + } + else + { error_log("unknown Sony Ericsson phone '$this->productName', assuming same as 'D750i'"); $this->supportedFields = $defaultFields[2]; } @@ -796,7 +842,7 @@ break; case 'synthesis ag': - switch($this->productName) + switch ($this->productName) { case 'sysync client pocketpc pro': case 'sysync client pocketpc std': @@ -823,7 +869,7 @@ break; case 'groupdav': // all GroupDAV access goes through here - switch($this->productName) + switch ($this->productName) { case 'kde': // KDE Addressbook $this->supportedFields = $defaultFields[1]; @@ -891,15 +937,18 @@ $container = false; $vCard = Horde_iCalendar::newComponent('vcard', $container); - if(!$vCard->parsevCalendar($_vcard, 'VCARD')) + if (!$vCard->parsevCalendar($_vcard, 'VCARD')) { return False; } $vcardValues = $vCard->getAllAttributes(); - if (isset($GLOBALS['egw_info']['user']['preferences']['syncml']['minimum_uid_length'])) { + if (isset($GLOBALS['egw_info']['user']['preferences']['syncml']['minimum_uid_length'])) + { $minimum_uid_length = $GLOBALS['egw_info']['user']['preferences']['syncml']['minimum_uid_length']; - } else { + } + else + { $minimum_uid_length = 8; } @@ -908,16 +957,17 @@ #error_log(print_r($vcardValues, true)); Horde::logMessage("vCalAddressbook vcardtoegw: " . print_r($vcardValues, true), __FILE__, __LINE__, PEAR_LOG_DEBUG); - $email = 0; - $tel = 1; - $cell = 1; - $url = 0; - $pref_tel = false; + $email = 0; + $tel = 1; + $cell = 1; + $url = 0; + $pref_tel = false; foreach($vcardValues as $key => $vcardRow) { $rowName = strtoupper($vcardRow['name']); - switch ($rowName) { + switch ($rowName) + { case 'EMAIL': $email++; break; @@ -925,97 +975,111 @@ $url++; break; } - if ($vcardRow['value'] == '' && implode('', $vcardRow['values']) == '') { + if ($vcardRow['value'] == '' && implode('', $vcardRow['values']) == '') + { unset($vcardRow); continue; } $rowTypes = array(); $vcardRow['uparams'] = array(); - foreach($vcardRow['params'] as $pname => $params) { + foreach ($vcardRow['params'] as $pname => $params) + { $pname = strtoupper($pname); $vcardRow['uparams'][$pname] = $params; } ksort($vcardRow['uparams']); - foreach($vcardRow['uparams'] as $pname => $params) - { - switch ($pname) { - case 'TYPE': - if (is_array($params)) { - $rowTypes = array(); - foreach($params as $param) { - $rowTypes[] = strtoupper($param); - } - sort($rowTypes); - } else { - $rowTypes[] = strtoupper($params); - } - foreach($rowTypes as $type) - { - switch ($type) { - case 'PAGER': - case 'FAX': - case 'VOICE': - case 'OTHER': - case 'CELL': - case 'WORK': - case 'HOME': - $rowName .= ';' . $type; - break; - case 'PREF': - if ($vcardRow['name'] == 'TEL') { - $pref_tel = $key; + foreach ($vcardRow['uparams'] as $pname => $params) + { + switch ($pname) + { + case 'TYPE': + if (is_array($params)) + { + $rowTypes = array(); + foreach ($params as $param) + { + $rowTypes[] = strtoupper($param); } - break; - case 'CAR': - case 'X-CUSTOMLABEL-CAR': - $rowName = 'TEL;CAR'; - break; - default: - break; - } - } - break; - //case 'INTERNET': - case 'PREF': - if (strtoupper($vcardRow['name']) == 'TEL') { - $pref_tel = $key; - } - break; - case 'FAX': - case 'PAGER': - case 'VOICE': - case 'OTHER': - case 'CELL': - case 'WORK': - case 'HOME': - $rowName .= ';' . $pname; - break; - case 'CAR': - case 'X-CUSTOMLABEL-CAR': - $rowName = 'TEL;CAR'; - break; - default: - break; - } - } - - if($rowName == 'EMAIL') { + sort($rowTypes); + } + else + { + $rowTypes[] = strtoupper($params); + } + foreach ($rowTypes as $type) + { + switch ($type) + { + case 'PAGER': + case 'FAX': + case 'VOICE': + case 'OTHER': + case 'CELL': + case 'WORK': + case 'HOME': + $rowName .= ';' . $type; + break; + case 'PREF': + if ($vcardRow['name'] == 'TEL') + { + $pref_tel = $key; + } + break; + case 'CAR': + case 'X-CUSTOMLABEL-CAR': + $rowName = 'TEL;CAR'; + break; + default: + break; + } + } + break; + //case 'INTERNET': + case 'PREF': + if (strtoupper($vcardRow['name']) == 'TEL') + { + $pref_tel = $key; + } + break; + case 'FAX': + case 'PAGER': + case 'VOICE': + case 'OTHER': + case 'CELL': + case 'WORK': + case 'HOME': + $rowName .= ';' . $pname; + break; + case 'CAR': + case 'X-CUSTOMLABEL-CAR': + $rowName = 'TEL;CAR'; + break; + default: + break; + } + } + + if($rowName == 'EMAIL') + { $rowName .= ';X-egw-Ref' . $email; } if(($rowName == 'TEL;CELL') || - ($rowName == 'TEL;CELL;VOICE')) { - $rowName = 'TEL;CELL;X-egw-Ref' . $cell++; + ($rowName == 'TEL;CELL;VOICE')) + { + $rowName = 'TEL;CELL;X-egw-Ref' . $cell++; } if(($rowName == 'TEL') || - ($rowName == 'TEL;VOICE')) { + ($rowName == 'TEL;VOICE')) + { $rowName = 'TEL;X-egw-Ref' . $tel++; } - if($rowName == 'URL') { + if($rowName == 'URL') + { $rowName = 'URL;X-egw-Ref' . $url; } @@ -1032,105 +1096,121 @@ $finalRowNames = array(); - foreach($rowNames as $rowName => $vcardKey) - { - switch($rowName) { - case 'ADR': - if(!isset($rowNames[$rowName . ';WORK'])) { - $finalRowNames[$rowName . ';WORK'] = $vcardKey; - } else if (!isset($rowNames[$rowName . ';HOME'])) { - $finalRowNames[$rowName . ';HOME'] = $vcardKey; - } - break; - case 'TEL;FAX': - if(!isset($rowNames['TEL;FAX;WORK']) - && !isset($finalRowNames['TEL;FAX;WORK'])) { - $finalRowNames['TEL;FAX;WORK'] = $vcardKey; - } else if (!isset($rowNames['TEL;FAX;HOME']) - && !isset($finalRowNames['TEL;FAX;HOME'])) { - $finalRowNames['TEL;FAX;HOME'] = $vcardKey; - } - break; - case 'TEL;VOICE;WORK': - $finalRowNames['TEL;WORK'] = $vcardKey; - break; - case 'TEL;HOME;VOICE': - $finalRowNames['TEL;HOME'] = $vcardKey; - break; - case 'TEL;OTHER;VOICE': - $finalRowNames['TEL;OTHER'] = $vcardKey; - break; - case 'TEL;CAR;VOICE': - case 'TEL;CAR;CELL': - case 'TEL;CAR;CELL;VOICE': - $finalRowNames['TEL;CAR'] = $vcardKey; - break; - case 'TEL;X-egw-Ref1': - if(!isset($rowNames['TEL;VOICE;WORK']) - && !isset($rowNames['TEL;WORK']) - && !isset($finalRowNames['TEL;WORK'])) { + foreach ($rowNames as $rowName => $vcardKey) + { + switch($rowName) + { + case 'ADR': + if (!isset($rowNames[$rowName . ';WORK'])) + { + $finalRowNames[$rowName . ';WORK'] = $vcardKey; + } + elseif (!isset($rowNames[$rowName . ';HOME'])) + { + $finalRowNames[$rowName . ';HOME'] = $vcardKey; + } + break; + case 'TEL;FAX': + if (!isset($rowNames['TEL;FAX;WORK']) + && !isset($finalRowNames['TEL;FAX;WORK'])) + { + $finalRowNames['TEL;FAX;WORK'] = $vcardKey; + } + elseif (!isset($rowNames['TEL;FAX;HOME']) + && !isset($finalRowNames['TEL;FAX;HOME'])) + { + $finalRowNames['TEL;FAX;HOME'] = $vcardKey; + } + break; + case 'TEL;VOICE;WORK': $finalRowNames['TEL;WORK'] = $vcardKey; break; - } - case 'TEL;X-egw-Ref2': - if(!isset($rowNames['TEL;HOME;VOICE']) - && !isset($rowNames['TEL;HOME']) - && !isset($finalRowNames['TEL;HOME'])) { + case 'TEL;HOME;VOICE': + $finalRowNames['TEL;HOME'] = $vcardKey; + break; + case 'TEL;OTHER;VOICE': + $finalRowNames['TEL;OTHER'] = $vcardKey; + break; + case 'TEL;CAR;VOICE': + case 'TEL;CAR;CELL': + case 'TEL;CAR;CELL;VOICE': + $finalRowNames['TEL;CAR'] = $vcardKey; + break; + case 'TEL;X-egw-Ref1': + if (!isset($rowNames['TEL;VOICE;WORK']) + && !isset($rowNames['TEL;WORK']) + && !isset($finalRowNames['TEL;WORK'])) + { + $finalRowNames['TEL;WORK'] = $vcardKey; + break; + } + case 'TEL;X-egw-Ref2': + if (!isset($rowNames['TEL;HOME;VOICE']) + && !isset($rowNames['TEL;HOME']) + && !isset($finalRowNames['TEL;HOME'])) + { $finalRowNames['TEL;HOME'] = $vcardKey; - } - break; - case 'TEL;CELL;X-egw-Ref1': - if(!isset($rowNames['TEL;CELL;WORK']) - && !isset($finalRowNames['TEL;CELL;WORK'])) { - $finalRowNames['TEL;CELL;WORK'] = $vcardKey; + } break; - } - case 'TEL;CELL;X-egw-Ref2': - if(!isset($rowNames['TEL;CELL;HOME']) - && !isset($finalRowNames['TEL;CELL;HOME'])) { - $finalRowNames['TEL;CELL;HOME'] = $vcardKey; + case 'TEL;CELL;X-egw-Ref1': + if (!isset($rowNames['TEL;CELL;WORK']) + && !isset($finalRowNames['TEL;CELL;WORK'])) + { + $finalRowNames['TEL;CELL;WORK'] = $vcardKey; + break; + } + case 'TEL;CELL;X-egw-Ref2': + if (!isset($rowNames['TEL;CELL;HOME']) + && !isset($finalRowNames['TEL;CELL;HOME'])) + { + $finalRowNames['TEL;CELL;HOME'] = $vcardKey; + break; + } + case 'TEL;CELL;X-egw-Ref3': + if (!isset($rowNames['TEL;CAR']) + && !isset($rowNames['TEL;CAR;VOICE']) + && !isset($rowNames['TEL;CAR;CELL']) + && !isset($rowNames['TEL;CAR;CELL;VOICE']) + && !isset($finalRowNames['TEL;CAR'])) + { + $finalRowNames['TEL;CAR'] = $vcardKey; + } break; - } - case 'TEL;CELL;X-egw-Ref3': - if(!isset($rowNames['TEL;CAR']) - && !isset($rowNames['TEL;CAR;VOICE']) - && !isset($rowNames['TEL;CAR;CELL']) - && !isset($rowNames['TEL;CAR;CELL;VOICE']) - && !isset($finalRowNames['TEL;CAR'])) { - $finalRowNames['TEL;CAR'] = $vcardKey; - } - break; - case 'EMAIL;X-egw-Ref1': - if(!isset($rowNames['EMAIL;WORK']) && - !isset($finalRowNames['EMAIL;WORK'])) { - $finalRowNames['EMAIL;WORK'] = $vcardKey; + case 'EMAIL;X-egw-Ref1': + if (!isset($rowNames['EMAIL;WORK']) && + !isset($finalRowNames['EMAIL;WORK'])) + { + $finalRowNames['EMAIL;WORK'] = $vcardKey; + break; + } + case 'EMAIL;X-egw-Ref2': + if (!isset($rowNames['EMAIL;HOME']) && + !isset($finalRowNames['EMAIL;HOME'])) + { + $finalRowNames['EMAIL;HOME'] = $vcardKey; + } break; - } - case 'EMAIL;X-egw-Ref2': - if(!isset($rowNames['EMAIL;HOME']) && - !isset($finalRowNames['EMAIL;HOME'])) { - $finalRowNames['EMAIL;HOME'] = $vcardKey; - } - break; - case 'URL;X-egw-Ref1': - if(!isset($rowNames['URL;WORK']) && - !isset($finalRowNames['URL;WORK'])) { - $finalRowNames['URL;WORK'] = $vcardKey; + case 'URL;X-egw-Ref1': + if (!isset($rowNames['URL;WORK']) && + !isset($finalRowNames['URL;WORK'])) + { + $finalRowNames['URL;WORK'] = $vcardKey; + break; + } + case 'URL;X-egw-Ref2': + if (!isset($rowNames['URL;HOME']) && + !isset($finalRowNames['URL;HOME'])) + { + $finalRowNames['URL;HOME'] = $vcardKey; + } break; - } - case 'URL;X-egw-Ref2': - if(!isset($rowNames['URL;HOME']) && - !isset($finalRowNames['URL;HOME'])) { - $finalRowNames['URL;HOME'] = $vcardKey; - } - break; - case 'VERSION': - break; - case 'X-EVOLUTION-ASSISTANT': - $finalRowNames['X-ASSISTANT'] = $vcardKey; - break; - default: - $finalRowNames[$rowName] = $vcardKey; + case 'VERSION': + break; + case 'X-EVOLUTION-ASSISTANT': + $finalRowNames['X-ASSISTANT'] = $vcardKey; + break; + default: + $finalRowNames[$rowName] = $vcardKey; break; } } @@ -1143,17 +1223,18 @@ foreach ($finalRowNames as $key => $vcardKey) { - if(isset($databaseFields[$key])) + if (isset($databaseFields[$key])) { $fieldNames = $databaseFields[$key]; - foreach($fieldNames as $fieldKey => $fieldName) - { - if(!empty($fieldName)) + foreach ($fieldNames as $fieldKey => $fieldName) + { + if (!empty($fieldName)) { $value = trim($vcardValues[$vcardKey]['values'][$fieldKey]); if ($pref_tel && (($vcardKey == $pref_tel) || - ($vcardValues[$vcardKey]['name'] == 'TEL') && - ($vcardValues[$vcardKey]['value'] == $vcardValues[$pref_tel]['value']))) { + ($vcardValues[$vcardKey]['name'] == 'TEL') && + ($vcardValues[$vcardKey]['value'] == $vcardValues[$pref_tel]['value']))) + { $contact['tel_prefer'] = $fieldName; } switch($fieldName) @@ -1162,7 +1243,7 @@ $contact[$fieldName] = $vcardValues[$vcardKey]['values']['year'] . '-' . $vcardValues[$vcardKey]['values']['month'] . '-' . $vcardValues[$vcardKey]['values']['mday']; - break; + break; case 'private': $contact[$fieldName] = (int) ( strtoupper($value) == 'PRIVATE'); @@ -1188,7 +1269,7 @@ } default: $contact[$fieldName] = $value; - break; + break; } } } @@ -1219,7 +1300,7 @@ { return false; } - foreach($ids as $id) + foreach ($ids as $id) { fwrite($fp,$this->getVCard($id)); } |