<?php
// file for outlook italian version
// based on Outlook_CSV_-_English - modified fields names and birthday treatment
// by Simone Capra - capra@erweb.it - http://www.erweb.it


// This file defines a set of functions and an associative array.
// The key of the array corresponds to a header in the source
// export 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 export_conv
    {
        var $currentrecord = array(); //used for buffering to allow uid lines to go first
        var $id;
        var $type = 'csv';


        var $export = array(
            'title'               => 'Posizione',
            'n_prefix'            => 'Titolo',
            'n_given'             => 'Nome',
            'n_middle'            => 'Secondo nome',
            'n_family'            => 'Cognome',
            'n_suffix'            => 'Titolo straniero',
            'org_name'            => 'Societ',
            'org_unit'            => 'Reparto',
            'adr_one_street'      => 'Via (uff.)',
            'address2'            => 'Via (uff.) 2',
            'address3'            => 'Via (uff.) 3',
            'adr_one_locality'    => 'Citt (uff.)',
            'adr_one_region'      => 'Provincia (uff.)',
            'adr_one_postalcode'  => 'CAP (uff.)',
            'adr_one_countryname' => 'Paese (uff.)',
            'adr_two_street'      => 'Via (ab.)',
            'adr_two_locality'    => 'Citt (ab.)',
            'adr_two_region'      => 'Provincia (ab.)',
            'adr_two_postalcode'  => 'CAP (ab.)',
            'adr_two_countryname' => 'Paese (ab.)',
            'tel_fax'             => 'Fax (uff.)',
            'tel_work'            => 'Ufficio',
            'tel_msg'             => 'Telefono assistente',
            'tel_car'             => 'Telefono auto',
            'tel_isdn'            => 'ISDN',
            'tel_home'            => 'Abitazione',
            'tel_cell'            => 'Cellulare',
            'tel_pager'           => 'Pager',
            'ophone'              => 'Business Phone 2',
            'bday'                => 'Compleanno',
            'email'               => 'Indirizzo posta elettronica',
            'email_home'          => 'Indirizzo posta elettronica 2',
            'url'                 => 'Pagina Web',
            'note'                => 'Notes'
        );

        // This will store the contacts object
        var $contacts = '';

        function export_start_file($buffer,$ncat_id='')
        {
            $this->id=-1;
            if ($ncat_id)
            {
                $filter = 'tid=n,cat_id='.$ncat_id;
            }
            else
            {
                $filter = 'tid=n';
            }
            $this->contacts = CreateObject('phpgwapi.contacts');

            $tmp = $this->contacts->read('','',array('id'=>'id'),'',$filter);
            for ($i=0;$i<count($tmp);$i++)
            {
                $this->ids[$i] = $tmp[$i]['id'];
            }
            // $ids is now an array of all id's for this user, e.g. $ids[0] = 21, etc...
            // $buffer is still empty
            return $buffer;
        }

        // Read each entry
        function export_start_record($buffer)
        {
            $this->id++;
            $top = $this->contacts->read_single_entry($this->ids[$this->id],$this->qfields);
            $this->currentrecord = $top[0];
            return $buffer;
        }

        // Read each attribute, populate buffer
        // name/value are the fields from the export array above
        function export_new_attrib($buffer,$name,$value)
        {
            if ($this->export[$name])
            {
                if($name=='bday'){
                    list($m,$d,$y) = explode("/",$value );
                    $value = $d.'/'.$m.'/'.$y;
                }

                $buffer[$this->id][$this->export[$name]] = $value;
                //echo '<br>'.$this->id.' - '.$this->export[$name].': '.$buffer[$this->id][$this->export[$name]];
            }
            return $buffer;
        }

        // Tack on some extra values
        function export_end_record($buffer)
        {
            return $buffer;
        }

        function export_end_file($buffer)
        {
            // Build the header for the file (field list)
            reset($this->export);
            while (list($name,$value)=each($this->export))
            {
                $entries .= $value . ',';
            }
            $entries = substr($entries,0,-1);
            $entries .= "\r\n";

            // Now add all the data
            reset($this->ids);
            for ($i=0;$i<count($this->ids);$i++)
            {
                reset($this->export);
                while (list($name,$value)=each($this->export))
                {
                    $entries .= $buffer[$i][$value] . ',';
                }
                $entries = substr($entries,0,-1);
                $entries .= "\r\n";
            }
            $buffer = $entries;
            return $buffer;
        }
    }
?>
