<?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.

  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 = array(); /* used for buffering to allow uid lines to go first */
		var $id;
		var $type = 'ldif';

		var $import = array(
			'title'            => 'title', 
			'givenName'        => 'first_name',
			'sn'               => 'last_name',
			'cn'               => '',
			'o'                => 'organization',
			'ou'               => 'departament',
			'streetaddress'    => 'addr_one_add1',
			'locality'         => 'addr_one_city',
			'st'               => 'addr_one_state',
			'postalcode'       => 'addr_one_postal_code',
			'countryname'      => 'addr_one_country',
			'telephonenumber'  => 'comm_phone_home',
			'homephone'        => 'comm_phone_work',
			'facsimiletelephonenumber' => 'comm_fax_work',
			// ophone will be an other field
			'xmozillaanyphone' => 'comm_phone_other',
			'cellphone'        => 'comm_mobile_cell',
			'description'      => 'note',
			'pagerphone'       => 'comm_pager',
			'mail'             => 'comm_email_work',
			'homeurl'          => 'comm_url',
			'xmozillauseconferenceserver' => '',
			'xmozillanickname' => '',
			'xmozillausehtmlmail' => '',
			'modifytimestamp'  => '',
			'objectclass'      => ''
		);

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

		function import_start_record($buffer)
		{
			$top=array();
			++$this->id;
			$this->currentrecord = $top;
			return $buffer;
		}

		function import_new_attrib($buffer,$name,$value)
		{
			/* chop leading space from value */
			$value = trim($value);
			$value = str_replace('\r','',$value);
			/* echo '<br>'.$name.' => '.$value; */
			$this->currentrecord += array($name => $value);

			return $buffer;
		}

		function import_end_record($buffer)
		{
			$buffer[$this->id]='';
			while ( list($name, $value) = each($this->currentrecord))
			{
				$buffer[$this->id][$name] = $value;
				/* echo '<br>'.$this->id.': '.$name.' => '.$value; */
			}
			return $buffer;
		}

		function import_end_file($buffer,$access='private',$cat_id=0)
		{
			$contacts = CreateObject('phpgwapi.contacts');
			/* echo '<br>'; */
			for ($i=1;$i<=count($buffer);$i++)
			{
				while ( list($name,$value) = @each($buffer[$i]) )
				{
					/* echo '<br>'.$i.': '.$name.' => '.$value; */
					$entry[$i][$name] = $value;
				}
				// this fields will become other fields or I must remove it?
				$entry[$i]['email_type']      = 'INTERNET';
				$entry[$i]['email_home_type'] = 'INTERNET';
				$entry[$i]['adr_one_type']    = 'intl';
				$entry[$i]['adr_two_type']    = 'intl';
				/* echo '<br>'; */
				$contacts->add($GLOBALS['phpgw_info']['user']['account_id'],$entry[$i],$access,$cat_id);
			}
			$num = $i - 1;
			return lang('Successfully imported x records into your addressbook.',$num);
		}
	}
?>
