Permalink
Browse files

Fixed VCard import and handle photo URLs in VCF

  • Loading branch information...
1 parent fee3219 commit 3f7e9f939d0f0ab92ed49bc783292dd27f4a83af Bernhard Minks committed with splitbrain May 7, 2009
Showing with 40 additions and 9 deletions.
  1. +8 −0 entry.php
  2. +30 −9 import.php
  3. +2 −0 templates/import_entry.tpl
View
@@ -233,6 +233,14 @@ function _getUploadData(){
} else {
$smarty->assign('jpegError',$lang['err_wrongFileType']);
}
+ } elseif (preg_match('/http:\/\//', $_REQUEST["photo"])) {
+ $fd = fopen($_REQUEST["photo"], "rb");
+ $data = '';
+ while (!feof($fd)) {
+ $data .= fread($fd, 8192);
+ }
+ fclose($fd);
+ return $data;
} else {
$smarty->assign('jpegError',$lang['err_fileNotUploaded']);
}
View
@@ -69,47 +69,51 @@
function vcard_entry($vcf){
$entry = array();
+
$entry['name'] = $vcf['N'][0]['value'][0][0];
$entry['givenname'] = trim($vcf['N'][0]['value'][1][0].' '.$vcf['N'][0]['value'][2][0]);
$entry['title'] = $vcf['N'][0]['value'][3][0];
$entry['organization'] = $vcf['ORG'][0]['value'][0][0];
$entry['office'] = $vcf['ORG'][0]['value'][1][0];
$entry['note'] = $vcf['NOTE'][0]['value'][0][0];
$entry['url'] = $vcf['URL'][0]['value'][0][0];
+ $entry['photo'] = $vcf['PHOTO'][0]['value'][0][0];
$bday = $vcf['BDAY'][0]['value'][0][0];
$entry['birthday'] = substr($bday,0,4).'-'.substr($bday,4,2).'-'.substr($bday,6,2);
foreach((array) $vcf['TEL'] as $tel){
if( empty($entry['phone']) &&
- array_search('WORK',(array) $tel['param']['TYPE']) !== false &&
- array_search('VOICE',(array) $tel['param']['TYPE']) !== false){
+ (my_array_search('WORK',(array) $tel['param']['TYPE']) != false ||
+ my_array_search('VOICE',(array) $tel['param']['TYPE']) != false))
+ {
// Work phone
$entry['phone'] = $tel['value'][0][0];
}elseif(empty($entry['fax']) &&
- array_search('FAX',(array) $tel['param']['TYPE']) !== false){
+ my_array_search('FAX',(array) $tel['param']['TYPE']) !== false){
$entry['fax'] = $tel['value'][0][0];
}elseif(empty($entry['mobile']) &&
- array_search('CELL',(array) $tel['param']['TYPE']) !== false){
+ my_array_search('CELL',(array) $tel['param']['TYPE']) !== false){
$entry['mobile'] = $tel['value'][0][0];
}elseif(empty($entry['pager']) &&
- array_search('PAGER',(array) $tel['param']['TYPE']) !== false){
+ my_array_search('PAGER',(array) $tel['param']['TYPE']) !== false){
$entry['pager'] = $tel['value'][0][0];
}elseif(empty($entry['homephone']) &&
- array_search('HOME',(array) $tel['param']['TYPE']) !== false &&
- array_search('VOICE',(array) $tel['param']['TYPE']) !== false){
+ my_array_search('HOME',(array) $tel['param']['TYPE']) !== false &&
+ my_array_search('VOICE',(array) $tel['param']['TYPE']) !== false){
$entry['homephone'] = $tel['value'][0][0];
}
}
foreach((array) $vcf['EMAIL'] as $mail){
+ if (! in_array($mail['value'][0][0], (array)$entry['mail']))
$entry['mail'][] = $mail['value'][0][0];
}
foreach((array) $vcf['ADR'] as $adr){
- if(array_search('HOME',(array)$adr['param']['TYPE']) !== false){
+ if(my_array_search('HOME',(array)$adr['param']['TYPE']) !== false){
$entry['homestreet'] = $adr['value'][2][0]."\n". //str
$adr['value'][5][0]." ". //plz
$adr['value'][3][0]; //ort
- }elseif((array) array_search('WORK',(array)$adr['param']['TYPE']) !== false){
+ }elseif(my_array_search('WORK',(array)$adr['param']['TYPE']) !== false){
$entry['street'] = $adr['value'][2][0];
$entry['location'] = $adr['value'][3][0];
$entry['zip'] = $adr['value'][5][0];
@@ -121,5 +125,22 @@ function vcard_entry($vcf){
return $entry;
}
+function my_array_search ($needle, $haystack)
+{
+ foreach ($haystack as $value)
+ {
+ if ($value == $needle)
+ {
+ return true;
+ }
+ else if ($value == strtolower($needle))
+ {
+ return true;
+ }
+
+ }
+ return false;
+}
+
?>
@@ -23,6 +23,7 @@
<input type="hidden" name="entry[homephone]" value="{$entry.homephone|h}" />
<input type="hidden" name="entry[mobile]" value="{$entry.mobile|h}" />
<input type="hidden" name="entry[url]" value="{$entry.url|h}" />
+ <input type="hidden" name="photo" value="{$entry.photo|h}" />
{foreach from=$entry.mail item=mail}
<input type="hidden" name="entry[mail][]" value="{$mail|h}" />
{/foreach}
@@ -38,6 +39,7 @@
{else}
<input type="hidden" name="type" value="public" />
{/if}
+ <input type="submit" name="save" value="save" />
</form>
</td>
</tr>

0 comments on commit 3f7e9f9

Please sign in to comment.