Add import feature
[ldapsaisie.git] / public_html / includes / class / class.LSioFormatDriver.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 /**
24  * Driver to manage ioFormat file of LSldapObject import/export
25  *
26  * @author Benjamin Renard <brenard@easter-eggs.com>
27  */
28 class LSioFormatDriver {
29
30   protected $options=array();
31
32   /**
33    * Constructor
34    *
35    * @param[in] array $options Driver's options
36    *
37    * @retval void
38    **/
39   function __construct($options) {
40     $this -> options = $options;
41   }
42
43   /**
44    * Load file
45    *
46    * @param[in] string $file The file path to load
47    *
48    * @retval boolean True if file is loaded, false otherwise
49    **/
50   function loadFile($path) {
51     return False;
52   }
53
54   /**
55    * Check if loaded file data are valid
56    *
57    * @retval boolean True if loaded file data are valid, false otherwise
58    **/
59   function isValid() {
60     return False;
61   }
62
63   /**
64    * Retreive all object data contained by the loaded file
65    *
66    * The objects are returned in array :
67    *
68    *  array (
69    *    array ( // Object 1
70    *      '[field1]' => '[value1]',
71    *      '[field2]' => '[value2]',
72    *      [...]
73    *    ),
74    *    array ( // Object 2
75    *      '[field1]' => '[value1]',
76    *      '[field2]' => '[value2]',
77    *      [...]
78    *    ),
79    *  )
80    *
81    * @retval array The objects contained by the loaded file
82    **/
83   function getAll() {
84     return array();
85   }
86
87   /**
88    * Retreive fields names of the loaded file
89    *
90    * The fields names are returned in array :
91    *
92    *  array (
93    *    '[field1]',
94    *    '[field2]',
95    *    [...]
96    *  )
97    *
98    * @retval array The fields names of the loaded file
99    **/
100   function getFieldNames() {
101     return array();
102   }
103
104   /**
105    * Retreive all objects data of the loaded file formated
106    *
107    * This method format objects data using ioFormat configuration
108    * given as parameters.
109    *
110    * @param[in] $fields Array of file's fields name mapping with object attribute
111    * @param[in] $generated_fields Array of object attribute to generate using other object data
112    *
113    * @retval array All objects data of the loaded file formated
114    **/
115   function getAllFormated($fields,$generated_fields) {
116     if (!is_array($fields)) return False;
117     if (!is_array($generated_fields)) $generated_fields=array();
118     $all=$this -> getAll();
119     if (!is_array($all)) return False;
120     $retall=array();
121     foreach($all as $one) {
122       $retone=array();
123       foreach($fields as $key => $attr) {
124         if (!isset($one[$key])) continue;
125         if (!isset($retone[$attr])) $retone[$attr]=array();
126         $retone[$attr][]=$one[$key];
127       }
128       if (is_array($generated_fields)) {
129         foreach ($generated_fields as $attr => $format) {
130           $value=getFData($format,$retone);
131           if (!empty($value)) {
132             $retone[$attr]=array($value);
133           }
134         }
135       }
136       $retall[]=$retone;
137     }
138
139     return $retall;
140   }
141
142 }