- LSerror : Déclaration des messages d'erreurs avec la méthode statique
[ldapsaisie.git] / trunk / includes / addons / LSaddons.posix.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 // Messages d'erreur
24
25 // Support
26 LSerror :: defineError('POSIX_SUPPORT_01',
27   _("POSIX Support : La constante %{const} n'est pas définie.")
28 );
29
30 LSerror :: defineError('POSIX_SUPPORT_02',
31   _("POSIX Support : Impossible de charger LSaddons::FTP.")
32 );
33
34 // Autres erreurs
35 LSerror :: defineError('POSIX_01',
36   _("POSIX : L'attribut %{dependency} est introuvable. Impossible de générer l'attribut %{attr}.")
37 );
38       
39  /**
40   * Verification du support POSIX par ldapSaisie
41   * 
42   * @author Benjamin Renard <brenard@easter-eggs.com>
43   *
44   * @retval boolean true si Samba est pleinement supporté, false sinon
45   */
46   function LSaddon_posix_support() {
47     
48     $retval=true;
49     
50     // Dependance de librairie
51     if (!function_exists('createDirsByFTP')) {
52       if(!LSsession :: loadLSaddon('ftp')) {
53         LSerror :: addErrorCode('POSIX_SUPPORT_02');
54         $retval=false;
55       }
56     }
57
58     $MUST_DEFINE_CONST= array(
59       'LS_POSIX_UID_ATTR',
60       'LS_POSIX_UIDNUMBER_ATTR',
61       'LS_POSIX_GIDNUMBER_ATTR',
62       'LS_POSIX_UIDNUMBER_MIN_VAL',
63       'LS_POSIX_GIDNUMBER_MIN_VAL',
64       'LS_POSIX_HOMEDIRECTORY',
65       'LS_POSIX_HOMEDIRECTORY_FTP_HOST',
66       'LS_POSIX_HOMEDIRECTORY_FTP_PORT',
67       'LS_POSIX_HOMEDIRECTORY_FTP_USER',
68       'LS_POSIX_HOMEDIRECTORY_FTP_PWD',
69       'LS_POSIX_HOMEDIRECTORY_FTP_PATH'
70     );
71
72     foreach($MUST_DEFINE_CONST as $const) {
73       if ( (!defined($const)) || (constant($const) == "")) {
74         LSerror :: addErrorCode('POSIX_SUPPORT_O1',$const);
75         $retval=false;
76       }
77     }
78
79     return $retval;
80   }
81
82  /**
83   * Generation de uidNumber
84   * 
85   * @author Benjamin Renard <brenard@easter-eggs.com>
86   * 
87   * @param[in] $ldapObject L'objet ldap
88   *
89   * @retval integer uidNumber ou false si il y a un problème durant la génération
90   */
91   function generate_uidNumber($ldapObject) {
92
93     $objects = LSldap :: search (LS_POSIX_UIDNUMBER_ATTR.'=*');
94     $uidNumber = LS_POSIX_UIDNUMBER_MIN_VAL;
95
96     if (!is_array($objects))
97       return;
98
99     foreach($objects as $object) {
100       if($object['attrs'][LS_POSIX_UIDNUMBER_ATTR] > $uidNumber)
101         $uidNumber = $object['attrs'][LS_POSIX_UIDNUMBER_ATTR];
102     }
103
104     $uidNumber++;
105     return $uidNumber;
106
107   }
108
109  /**
110   * Generation de gidNumber
111   * 
112   * @author Benjamin Renard <brenard@easter-eggs.com>
113   * 
114   * @param[in] $ldapObject L'objet ldap
115   *
116   * @retval integer gidNumber ou false si il y a un problème durant la génération
117   */
118   function generate_gidNumber($ldapObject) {
119
120     $objects = LSldap :: search (LS_POSIX_GIDNUMBER_ATTR.'=*');
121     $gidNumber = LS_POSIX_GIDNUMBER_MIN_VAL;
122
123     if (!is_array($objects))
124       return;
125
126     foreach($objects as $object) {
127       if($object['attrs'][LS_POSIX_GIDNUMBER_ATTR] > $gidNumber)
128         $gidNumber = $object['attrs'][LS_POSIX_GIDNUMBER_ATTR];
129     }
130
131     $gidNumber++;
132     return $gidNumber;
133
134   }
135
136  /**
137   * Generation de homeDirectory
138   * 
139   * @author Benjamin Renard <brenard@easter-eggs.com>
140   * 
141   * @param[in] $ldapObject L'objet ldap
142   *
143   * @retval string homeDirectory ou false si il y a un problème durant la génération
144   */
145   function generate_homeDirectory($ldapObject) {
146     if ( get_class($ldapObject -> attrs[ LS_POSIX_UID_ATTR ]) != 'LSattribute' ) {
147       LSerror :: addErrorCode('POSIX_01',array('dependency' => 'uid', 'attr' => 'homeDirectory'));
148       return;
149     }
150     
151     $uid = $ldapObject -> attrs[ LS_POSIX_UID_ATTR ] -> getValue();
152     $home = LS_POSIX_HOMEDIRECTORY . $uid[0];
153     return $home;
154
155   }
156   
157  /**
158   * Generation de homeDirectory
159   * 
160   * @author Benjamin Renard <brenard@easter-eggs.com>
161   * 
162   * @param[in] $ldapObject L'objet ldap
163   *
164   * @retval string homeDirectory ou false si il y a un problème durant la génération
165   */
166   function createHomeDirectoryByFTP($ldapObject) {
167     $dir = getFData(LS_POSIX_HOMEDIRECTORY_FTP_PATH,$ldapObject,'getValue');
168     if (!createDirsByFTP(LS_POSIX_HOMEDIRECTORY_FTP_HOST,LS_POSIX_HOMEDIRECTORY_FTP_PORT,LS_POSIX_HOMEDIRECTORY_FTP_USER,LS_POSIX_HOMEDIRECTORY_FTP_PWD,$dir)) {
169       LSerror :: addErrorCode('POSIX_02');
170       return;
171     }
172     return true;
173   }
174
175 ?>