bonjour,
Quand je récupère un fichier vcf à partir de nextcloud j'ai un problème
avec les "
TEL;TYPE="HOME,VOICE":12345678
Le numéro n'est pas récupéré à cause des "
La solution trouvée grâce à Marc
cat fichier.vcf | tr -d '"' > new_fichier.vcf
J'aimerais inclure cette commande dans le php
https://github.com/thomascube/vcfconvert
les fichiers :
-rw-rw-r-- 1 admin shared 26008 26 févr. 2019 Contact_Vcard_Parse.php
-rw-rw-r-- 1 admin shared 5617 27 déc. 02:49 index.php
-rw-rw-r-- 1 admin shared 7300 27 déc. 02:47 page.html
-rw-rw-r-- 1 admin shared 2129 26 févr. 2019 README.md
drwxrwsr-x 2 admin shared 4096 11 déc. 23:08 tmp
-rw-rw-r-- 1 admin shared 1259 26 févr. 2019 utils.php
-rw-rw-r-- 1 admin shared 35687 27 déc. 01:04 vcard_convert.php
-rw-rw-r-- 1 admin shared 5487 26 févr. 2019 vcf2csv_logo.jpg
-rw-rw-r-- 1 admin shared 3675 26 févr. 2019 vcfconvert.sh
# ./vcfconvert.sh help
Usage: convert [-hilmpv] [-d delimiter] [-b identifier] [-o output_file]
-f format file
-f Target format (ldif,ldap,csv,gmail,libdlusb)
-b LDAP identifier added to dn:
-l Generate just a list of DN objects (only works with -b)
-o Output file (write to stdout by default)
-d CSV col delimiter
-h Include header line in CSV output
-i Convert CSV output to ISO-8859-1 encoding
-m Only convert cards with an e-mail address
-p Only convert cards with phone numbers
-v Verbose output
Pas essayé : en ligne de commande.
J'ai mis les php sur mon serveur.
J'ai modifié index.php et page.html pour inclure les 2 modifications que
j'ai fait.
index.php
...
$conv = new vcard_convert(array(
'mailonly' => !empty($_POST['_mailonly']),
'phoneonly' => !empty($_POST['_phoneonly']),
'accesscode' => preg_replace('/[^1-9]/', '',
$_POST['_accesscode']),
'mobilephone' => !empty($_POST['_mobilephone']), <= ajouté
'nextcloudvcf' => !empty($_POST['_nextcloudvcf']), <=
ajouté
));
...
mobilephone C'est pour savoir si le fichier vient du smartphone ou de
nextcloud
Je m'en sers pour la catégorie des vcard.
nextcloudvcf c'est pour modifier les " des vcard quand le vcf vient de
nextcloud.
Je pense que cela fait double emploi. Je vais certainement l'enlever.
page.html
...
<td class="cell label">Groupe Mobile phone:</td>
<td class="cell">
<input type="checkbox" name="_mobilephone" id="checkmobilephone"
value="1"><label for="checkmobilephone"> vCards with mobile phone
(group)</label>
</td>
</tr><tr>
<td class="cell label">Nexctcloud VCF:</td>
<td class="cell">
<input type="checkbox" name="_nextcloudvcf" id="checknextcloudvcf"
value="1"><label for="checknextcloudvcf"> vCards with nextcloud
vcf</label>
</td>
</tr><tr>
...
C'est la page html qui s'affiche à l'écran.
vcard_convert.php
...
function normalize()
- avant
$vcard->categories = join(',',
(array)$card['CATEGORIES'][0]['value'][0]);
- après
if ($this->mobilephone)
{
$vcard->categories = join(',',
(array)$card['X-GROUP-MEMBERSHIP'][0]['value'][0]);
} else
{
$vcard->categories = join(',',
(array)$card['CATEGORIES'][0]['value'][0]);
}
...
J'ai ajouté le test pour savoir si le fichier vient du smartphone ou non
La catégorie avec le vcard qui vient de nextcloud c'est : CATEGORIES
exemple : CATEGORIES:Family
La catégorie avec le vcard qui vient du smartphone c'est :
X-GROUP-MEMBERSHIP
exemple : X-GROUP-MEMBERSHIP:Family
Pour cela c'est ok. Cela fonctionne, j'ai trouvé ce qu'il faut modifier.
Je pense avoir modifié correctement.
-------------------
Quand le vcf vient de Nextcloud, pour l'instant je fais cette commande
cat fichier.vcf | tr -d '"' > new_fichier.vcf
C'est pour enlever les " de, par exemple, TEL;TYPE="HOME,VOICE":12345678
qui vient du vcf de nextcloud.
(Merci à Marc)
J'aimerais bien inclure cela dans le programme vcfconvert
C'est dans le pgm vcard_convert.php
...
function normalize()
// extract phones
if (is_array($card['TEL']))
$this->parse_tel($card['TEL'], $vcard);
...
/**
* Helper method to parse an phone number node
*
* @access private
*/
function parse_tel(&$node, &$vcard)
...
C'est peut-être dans un autre pgm php que je pourrais inclure la modif.
Si quelqu'un a du courage pour jeter avec un ou 2 yeux ...
Merci
Anne