diff options
Diffstat (limited to 'vendor/sabre/vobject/bin/mergeduplicates.php')
-rw-r--r-- | vendor/sabre/vobject/bin/mergeduplicates.php | 100 |
1 files changed, 38 insertions, 62 deletions
diff --git a/vendor/sabre/vobject/bin/mergeduplicates.php b/vendor/sabre/vobject/bin/mergeduplicates.php index 076524d36..e6cde73dd 100644 --- a/vendor/sabre/vobject/bin/mergeduplicates.php +++ b/vendor/sabre/vobject/bin/mergeduplicates.php @@ -6,8 +6,8 @@ namespace Sabre\VObject; // This sucks.. we have to try to find the composer autoloader. But chances // are, we can't find it this way. So we'll do our bestest $paths = [ - __DIR__ . '/../vendor/autoload.php', // In case vobject is cloned directly - __DIR__ . '/../../../autoload.php', // In case vobject is a composer dependency. + __DIR__.'/../vendor/autoload.php', // In case vobject is cloned directly + __DIR__.'/../../../autoload.php', // In case vobject is a composer dependency. ]; foreach ($paths as $path) { @@ -22,14 +22,12 @@ if (!class_exists('Sabre\\VObject\\Version')) { die(1); } -echo "sabre/vobject ", Version::VERSION, " duplicate contact merge tool\n"; +echo 'sabre/vobject ', Version::VERSION, " duplicate contact merge tool\n"; if ($argc < 3) { - echo "\n"; - echo "Usage: ", $argv[0], " input.vcf output.vcf [debug.log]\n"; + echo 'Usage: ', $argv[0], " input.vcf output.vcf [debug.log]\n"; die(1); - } $input = fopen($argv[1], 'r'); @@ -42,83 +40,72 @@ $splitter = new Splitter\VCard($input); // but not in others, we don't consider them for the sake of finding // differences. $ignoredProperties = [ - "PRODID", - "VERSION", - "REV", - "UID", - "X-ABLABEL", + 'PRODID', + 'VERSION', + 'REV', + 'UID', + 'X-ABLABEL', ]; - $collectedNames = []; $stats = [ - "Total vcards" => 0, - "No FN property" => 0, - "Ignored duplicates" => 0, - "Merged values" => 0, - "Error" => 0, - "Unique cards" => 0, - "Total written" => 0, + 'Total vcards' => 0, + 'No FN property' => 0, + 'Ignored duplicates' => 0, + 'Merged values' => 0, + 'Error' => 0, + 'Unique cards' => 0, + 'Total written' => 0, ]; -function writeStats() { - +function writeStats() +{ global $stats; foreach ($stats as $name => $value) { - echo str_pad($name, 23, " ", STR_PAD_RIGHT), str_pad($value, 6, " ", STR_PAD_LEFT), "\n"; + echo str_pad($name, 23, ' ', STR_PAD_RIGHT), str_pad($value, 6, ' ', STR_PAD_LEFT), "\n"; } // Moving cursor back a few lines. - echo "\033[" . count($stats) . "A"; - + echo "\033[".count($stats).'A'; } -function write($vcard) { - +function write($vcard) +{ global $stats, $output; - $stats["Total written"]++; - fwrite($output, $vcard->serialize() . "\n"); - + ++$stats['Total written']; + fwrite($output, $vcard->serialize()."\n"); } while ($vcard = $splitter->getNext()) { - - $stats["Total vcards"]++; + ++$stats['Total vcards']; writeStats(); - $fn = isset($vcard->FN) ? (string)$vcard->FN : null; + $fn = isset($vcard->FN) ? (string) $vcard->FN : null; if (empty($fn)) { - // Immediately write this vcard, we don't compare it. - $stats["No FN property"]++; - $stats['Unique cards']++; + ++$stats['No FN property']; + ++$stats['Unique cards']; write($vcard); $vcard->destroy(); continue; - } if (!isset($collectedNames[$fn])) { - $collectedNames[$fn] = $vcard; - $stats['Unique cards']++; + ++$stats['Unique cards']; continue; - } else { - // Starting comparison for all properties. We only check if properties // in the current vcard exactly appear in the earlier vcard as well. foreach ($vcard->children() as $newProp) { - if (in_array($newProp->name, $ignoredProperties)) { // We don't care about properties such as UID and REV. continue; } $ok = false; foreach ($collectedNames[$fn]->select($newProp->name) as $compareProp) { - if ($compareProp->serialize() === $newProp->serialize()) { $ok = true; break; @@ -126,14 +113,11 @@ while ($vcard = $splitter->getNext()) { } if (!$ok) { - - if ($newProp->name === 'EMAIL' || $newProp->name === 'TEL') { - + if ('EMAIL' === $newProp->name || 'TEL' === $newProp->name) { // We're going to make another attempt to find this // property, this time just by value. If we find it, we // consider it a success. foreach ($collectedNames[$fn]->select($newProp->name) as $compareProp) { - if ($compareProp->getValue() === $newProp->getValue()) { $ok = true; break; @@ -141,44 +125,36 @@ while ($vcard = $splitter->getNext()) { } if (!$ok) { - // Merging the new value in the old vcard. $collectedNames[$fn]->add(clone $newProp); $ok = true; - $stats['Merged values']++; - + ++$stats['Merged values']; } - } - } if (!$ok) { - // echo $newProp->serialize() . " does not appear in earlier vcard!\n"; - $stats['Error']++; - if ($debug) fwrite($debug, "Missing '" . $newProp->name . "' property in duplicate. Earlier vcard:\n" . $collectedNames[$fn]->serialize() . "\n\nLater:\n" . $vcard->serialize() . "\n\n"); - + ++$stats['Error']; + if ($debug) { + fwrite($debug, "Missing '".$newProp->name."' property in duplicate. Earlier vcard:\n".$collectedNames[$fn]->serialize()."\n\nLater:\n".$vcard->serialize()."\n\n"); + } + $vcard->destroy(); continue 2; } - } - } $vcard->destroy(); - $stats['Ignored duplicates']++; - + ++$stats['Ignored duplicates']; } foreach ($collectedNames as $vcard) { - // Overwriting any old PRODID - $vcard->PRODID = '-//Sabre//Sabre VObject ' . Version::VERSION . '//EN'; + $vcard->PRODID = '-//Sabre//Sabre VObject '.Version::VERSION.'//EN'; write($vcard); writeStats(); - } echo str_repeat("\n", count($stats)), "\nDone.\n"; |