<?php
// This file defines a set of functions and an associative array.
// The key of the array corresponds to a header in the source
// import file and the value of the array item will be used in
// the creation of the output file.
//
// An exported Outlook file looks like this:
//
// Title<tab>First Name<tab>Middle Name<tab>Last Name<tab>...
// <tab>Patrick<tab><tab>Walsh<tab>...
//
// Where the first line explains each optional field.  This is what
// will be looked up in the key.
//
// The array need not be in any order and any fields not defined will
// not be transferred.  If the val='+', the value will be appended to
// the previous field and any text after the '+' will be appended 
// before the value.  For example, the following would add a comma and
// a space between LastName and FirstName and store it in FullName:
//
//	array("LastName" => "FullName","FirstName" => "+, ");
//
// Also start with a '#' symbol and a comma separated list will be
// turned into a number of the same entries.

	class import_conv
	{
		var $currentrecord; //used for buffering to allow uid lines to go first

		var $import = array(
			"Title" => "title", 
			"First Name" => "n_given",
			"Middle Name" => "n_middle",
			"Last Name" => "n_family",
			"Suffix" => "n_suffix",
			"Company" => "org_name",  //objectclass: organization
			"Department" => "org_unit", //objectclass: organizationalPerson
			"Job Title" => "title", //objectclass: organizationalPerson
			"Business Street" => "address2",
			"Business Street 2" => "",
			"Business Street 3" => "",
			"Business City" => "",
			"Business State" => "",
			"Business Postal Code" => "",
			"Business Country" => "",
			"Home Street" => "adr_street",
			"Home City" => "adr_locality",
			"Home State" => "adr_region",
			"Home Postal Code" => "adr_postalcode",
			"Home Country" => "adr_countryname",
			"Home Street 2" => "",
			"Home Street 3" => "",
			"Other Street" => "",
			"Other City" => "",
			"Other State" => "",
			"Other Postal Code" => "",
			"Other Country" => "",
			"Assistant's Phone" => "",
			"Business Fax" => "c_tel",
			"Business Phone" => "b_tel",
			"Business Phone 2" => "ophone",
			"Callback" => "",
			"Car Phone" => "",
			"Company Main Phone" => "",
			"Home Fax" => "",
			"Home Phone" => "a.tel",
			"Home Phone 2" => "", //This will make another homePhone entry
			"ISDN" => "",
			"Mobile Phone" => "mphone", //newPilotPerson
			"Other Fax" => "",
			"Other Phone" => "",
			"Pager" => "pager",
			"Primary Phone" => "",
			"Radio Phone" => "",
			"TTY/TDD Phone" => "",
			"Telex" => "", //organization
			"Account" => "",
			"Anniversary" => "",
			"Assistant's Name" => "", //newPilotPerson
			"Billing Information" => "",
			"Birthday" => "bday",
			"Categories" => "", 
			"Children" => "",
			"Directory Server" => "",
			"E-mail Address" => "d_email",
			"E-mail Display Name" => "",
			"E-mail 2 Address" => "",
			"E-mail 2 Display Name" => "",
			"E-mail 3 Address" => "", //add another...
			"E-mail 3 Display Name" => "",
			"Gender" => "",
			"Government ID Number" => "",
			"Hobby" => "",
			"Initials" => "",
			"Internet Free Busy" => "",
			"Keywords" => "",
			"Language" => "",
			"Location" => "",
			"Manager's Name" => "",
			"Mileage" => "",
			"Notes" => "note",
			"Office Location" => "",
			"Organizational ID Number" => "",
			"PO Box" => "postOfficeBox",
			"Priority" => "",
			"Private Profession" => "",
			"Referred By" => "",
			"Sensitivity" => "",
			"Spouse" => "",
			"User 1" => "",
			"User 2" => "",
			"User 3" => "",
			"User 4" => "",
			"Web Page" => ""
		);

		function import_start_file($buffer,$j="",$k="") {
			$buffer="";
			return $buffer;
		}

		function import_end_file($buffer) {
			return $buffer;
		}

		function import_start_record($buffer) {
			$top="";

			$this->currentrecord = $top;
			return $buffer;
		}

		function import_end_record($buffer,$private="private") {
			global $phpgw_info;
			$row=0;
			$i=0;
			$lines = split("##",$this->currentrecord);

			# Commence the ugly parsing of csv into sql
			for ($i=0;$i<count($lines)-1;$i++) {
				list($name, $value) = split("%%",$lines[$i]);
				$row++;
				if ($row==1) {
					if (!empty($name) && !empty($value)) {
						if (count($lines)>2) {
							$thisname=$name.",";
							$thisvalu="'".$value."',";
						} else {
							$thisname=$name.") ";
							$thisvalu="'".$value."');";
						}
					} else {
						$thisname="";
						$thisvalu="";
					}
					$namelist = $namelist."\nINSERT INTO phpgw_addressbook (owner,".$thisname;
					$valulist = $valulist."VALUES ('".$phpgw_info["user"]["account_id"]."',".$thisvalu;
				} elseif ($row==count($lines)-1) {
					if (!empty($name) && !empty($value)) {
						$thisname=$name.") ";
						$thisvalu="'".$value."');";
					} else {
						$thisname="";
						$thisvalu="";
					}
					$namelist = $namelist.$thisname;
					$valulist = $valulist.$thisvalu;
				} else {
					if (!empty($name) && !empty($value)) {
						$thisname=$name.",";
						$thisvalu="'".$value."',";
					} else {
						$thisname=",";
						$thisvalu=",";
					}
					$namelist = $namelist.$thisname;
					$valulist = $valulist.$thisvalu;
				}
			}

			return $buffer.$namelist.$valulist;
	}

		function import_new_attrib($buffer,$name,$value) {
			$value = str_replace("\n","<BR>",$value);
			$value = str_replace("\r","",$value);
			if ($value=="") { $value="NULL"; }
			$this->currentrecord .= $name."%%".$value."##";

			return $buffer;
		}
	}
?>