Add import feature
[ldapsaisie.git] / public_html / includes / class / class.LSioFormatCSV.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23 require 'File/CSV/DataSource.php';
24 LSsession :: loadLSclass('LSioFormatDriver');
25
26 /**
27  * Driver to manage CSV ioFormat file of LSldapObject import/export
28  *
29  * @author Benjamin Renard <brenard@easter-eggs.com>
30  */
31 class LSioFormatCSV extends LSioFormatDriver {
32
33   // File_CSV_DataSource object
34   private $csv=false;
35
36   /**
37    * Load file
38    *
39    * @param[in] string $file The file path to load
40    *
41    * @retval boolean True if file is loaded, false otherwise
42    **/
43   public function loadFile($path) {
44     $this->csv=new File_CSV_DataSource;
45     if (is_array($this -> options)) {
46       foreach ($this -> options as $opt_key => $opt_val) {
47         if (isset($this->csv -> settings[$opt_key]))
48           $this->csv -> settings[$opt_key] = $opt_val;
49       }
50     }
51     if ($this->csv->load($path)) {
52       return True;
53     }
54     return false;
55   }
56
57   /**
58    * Check if loaded file data are valid
59    *
60    * @retval boolean True if loaded file data are valid, false otherwise
61    **/
62   public function isValid() {
63     if ($this -> csv && $this -> csv -> isSymmetric()) {
64       return True;
65     }
66     return False;
67   }
68
69   /**
70    * Retreive all object data contained by the loaded file
71    *
72    * The objects are returned in array :
73    *
74    *  array (
75    *    array ( // Object 1
76    *      '[field1]' => '[value1]',
77    *      '[field2]' => '[value2]',
78    *      [...]
79    *    ),
80    *    array ( // Object 2
81    *      '[field1]' => '[value1]',
82    *      '[field2]' => '[value2]',
83    *      [...]
84    *    ),
85    *  )
86    *
87    * @retval array The objects contained by the loaded file
88    **/
89   public function getAll() {
90     return $this -> csv -> connect();
91   }
92
93   /**
94    * Retreive fields names of the loaded file
95    *
96    * The fields names are returned in array :
97    *
98    *  array (
99    *    '[field1]',
100    *    '[field2]',
101    *    [...]
102    *  )
103    *
104    * @retval array The fields names of the loaded file
105    **/
106   public function getFieldNames() {
107     return $this -> csv -> getHeaders();
108   }
109 }