diff --git a/addressbook/parsecard.php b/addressbook/parsecard.php
new file mode 100644
index 0000000000..18e24e6fd6
--- /dev/null
+++ b/addressbook/parsecard.php
@@ -0,0 +1,308 @@
+ *
+ * -------------------------------------------- *
+ * This program is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU General Public License as published by the *
+ * Free Software Foundation; either version 2 of the License, or (at your *
+ * option) any later version. *
+ \**************************************************************************/
+
+ /* $Id$ */
+
+ $phpgw_info["flags"] = array("noheader" => True, "nonavbar" => True);
+ $phpgw_info["flags"]["currentapp"] = "addressbook";
+ include("../header.inc.php");
+
+
+// parse a vcard and fill the address book with it.
+function parsevcard($filename,$access)
+{
+ global $phpgw;
+ global $phpgw_info;
+
+ $vcard = fopen($filename, "r");
+ if (!$vcard) // Make sure we have a file to read.
+ {
+ fclose($vcard);
+ return FALSE;
+ }
+
+
+ // Keep runnig through this to support vcards
+ // with multiple entries.
+ while (!feof($vcard))
+ {
+ if(!empty($varray))
+ unset($varray);
+
+ // Make sure our file is a vcard.
+ // I should deal with empty line at the
+ // begining of the file. Those will fail here.
+ $vline = fgets($vcard,20);
+ $vline = strtolower($vline);
+ if(strcmp("begin:vcard", substr($vline, 0, strlen("begin:vcard")) ) != 0)
+ {
+ fclose($vcard);
+ return FALSE;
+ }
+
+ // Write the vcard into an array.
+ // You can have multiple vcards in one file.
+ // I only deal with halve of that. :)
+ // It will only return values from the 1st vcard.
+ $varray[0] = "begin";
+ $varray[1] = "vcard";
+ $i=2;
+ while(!feof($vcard) && strcmp("end:vcard", strtolower(substr($vline, 0, strlen("end:vcard"))) ) !=0 )
+ {
+ $vline = fgets($vcard,4096);
+ // Check for folded lines and escaped colons '\:'
+ $la = explode(":", $vline);
+
+
+//if (ereg("\:",$vline))
+//{
+// // Oh, no.... Horrible disaster....
+// // Yell.
+// echo "
";
+// echo "DANGER WILL ROBINSON!!!!!!!!!!
";
+// echo "This just broke. Really.
";
+// echo "
";
+//}
+
+
+ // DANGER Will Robinson!!!!!!!
+ // I don't check for escaped colons here.
+ // '\:' These would cause horrible disaster..
+ // Fix this situation. Check if the last character
+ // of the line is \ If it is, you've found one.
+ if (count($la) > 1)
+ {
+ $varray[$i] = strtolower($la[0]);
+ $i++;
+
+ for($j=1;$j<=count($la);$j++)
+ {
+ $varray[$i] .= $la[$j];
+ }
+ $i++;
+ }
+ else // This is the continuation of a folded line.
+ {
+ $varray[$i-1] .= $la[0];
+ }
+ }
+
+ fillab($varray,$access); // Add this entry to the addressbook before
+ // moving on to the next one.
+
+ } // while(!feof($vcard))
+
+ fclose($vcard);
+ return TRUE;
+}
+
+
+function fillab($varray,$access)
+{
+ global $phpgw;
+ global $phpgw_info;
+
+ $i=0;
+ while($i < count($varray)) // incremented by 2
+ {
+ $k = explode(";",$varray[$i]); // Key
+ $v = explode(";",$varray[$i+1]); // Values
+ for($h=0;$h 1)
+ {
+ $notes .= $v[0] . "\n";
+ for($j=1;$j";
+//echo "First Name: " . $firstname . "
";
+//echo "Last Name: " . $lastname . "
";
+//echo "Home Phone: " .$hphone . "
";
+//echo "Cell Phone: " . $mphone . "
";
+//echo "Work Phone: " . $wphone . "
";
+//echo "Fax: " . $fax . "
";
+//echo "Email: " . $email . "
";
+//echo "Organization: " . $company . "
";
+//echo "Address:
";
+//echo $address2 . "
" . $street ."
";
+//echo $city . " " . $state . " " . $zip . "
";
+//echo "Notes: " . $notes . "
";
+
+
+ if($phpgw_info["apps"]["timetrack"]["enabled"]) {
+ $sql = "insert into addressbook (ab_owner,ab_access,ab_firstname,ab_lastname,ab_title,ab_email,"
+ . "ab_hphone,ab_wphone,ab_fax,ab_pager,ab_mphone,ab_ophone,ab_street,ab_address2,ab_city,"
+ . "ab_state,ab_zip,ab_bday,"
+ . "ab_notes,ab_company_id) values ('" . $phpgw_info["user"]["account_id"] . "','$access','"
+ . addslashes($firstname). "','"
+ . addslashes($lastname) . "','"
+ . addslashes($title) . "','"
+ . addslashes($email) . "','"
+ . addslashes($hphone) . "','"
+ . addslashes($wphone) . "','"
+ . addslashes($fax) . "','"
+ . addslashes($pager) . "','"
+ . addslashes($mphone) . "','"
+ . addslashes($ophone) . "','"
+ . addslashes($street) . "','"
+ . addslashes($address2) . "','"
+ . addslashes($city) . "','"
+ . addslashes($state) . "','"
+ . addslashes($zip) . "','"
+ . addslashes($bday) . "','"
+ . addslashes($notes) . "','"
+ . addslashes($company). "')";
+ } else {
+ $sql = "insert into addressbook (ab_owner,ab_access,ab_firstname,ab_lastname,ab_title,ab_email,"
+ . "ab_hphone,ab_wphone,ab_fax,ab_pager,ab_mphone,ab_ophone,ab_street,ab_address2,ab_city,"
+ . "ab_state,ab_zip,ab_bday,"
+ . "ab_notes,ab_company) values ('" . $phpgw_info["user"]["account_id"] . "','$access','"
+ . addslashes($firstname). "','"
+ . addslashes($lastname) . "','"
+ . addslashes($title) . "','"
+ . addslashes($email) . "','"
+ . addslashes($hphone) . "','"
+ . addslashes($wphone) . "','"
+ . addslashes($fax) . "','"
+ . addslashes($pager) . "','"
+ . addslashes($mphone) . "','"
+ . addslashes($ophone) . "','"
+ . addslashes($street) . "','"
+ . addslashes($address2) . "','"
+ . addslashes($city) . "','"
+ . addslashes($state) . "','"
+ . addslashes($zip) . "','"
+ . addslashes($bday) . "','"
+ . addslashes($notes) . "','"
+ . addslashes($company). "')";
+ }
+ $phpgw->db->query($sql);
+}
+
+if($access == "group")
+ $access = $n_groups;
+//echo $access . "
";
+
+parsevcard($filename,$access);
+// Delete the temp file.
+unlink($filename);
+unlink($filename . ".info");
+Header("Location: " . $phpgw->link($phpgw_info["server"]["webserver_url"] . "/addressbook/",
+ "cd=14"));
+
+// End of php.
+?>