Files

48 lines
1.3 KiB
PHP
Executable File

#!/usr/bin/env php
<?php
if(!empty($argv[1])) {
$filepath = $argv[1];
if(file_exists($filepath)) {
$file = file_get_contents($filepath);
} else {
echo 'Taki plik nie istnieje' . PHP_EOL;
exit(1);
}
} else {
echo 'Musisz podać ścieżkę do pliku .vcf' . PHP_EOL;
exit(2);
}
$data = explode('END:VCARD', $file);
array_pop($data);
$output = [];
$keys = [];
foreach($data as $item) {
$exploded = explode("\n", $item);
foreach($exploded as $line) {
if(strpos($line, ':') !== false) {
$kv = explode(':', $line);
if(!in_array($kv[0], $keys, true) && !in_array($kv[0], ['BEGIN', 'PHOTO;ENCODING=BASE64;JPEG', 'VERSION', 'X-LAST_TIME_CONTACTED'], true)) {
$keys[] = $kv[0];
}
}
}
}
$allKeysEmptyArray = array_fill_keys($keys, null);
foreach($data as $item) {
$exploded = explode("\n", $item);
$contact = [];
foreach($exploded as $line) {
if(strpos($line, ':') !== false) {
$kv = explode(':', $line);
if(!in_array($kv[0], ['BEGIN', 'PHOTO;ENCODING=BASE64;JPEG', 'VERSION', 'X-LAST_TIME_CONTACTED'], true)) {
$contact[$kv[0]] = isset($kv[1]) ? $kv[1] : null;
}
}
}
$output[] = array_merge($allKeysEmptyArray, $contact);
}
echo json_encode($output);
exit(0);