18ed313c76b764d9bed0c2a41f895a6596aa3865
[ldapsaisie.git] / trunk / includes / class / class.LSerror.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  * Gestion des erreurs pour LdapSaisie
25  *
26  * Cette classe gère les retours d'erreurs.
27  *
28  * @author Benjamin Renard <brenard@easter-eggs.com>
29  */
30 class LSerror {
31
32   /**
33    * Ajoute une erreur
34    *
35    * @author Benjamin Renard <brenard@easter-eggs.com>
36    *
37    * @param[in] $code numeric Le code de l'erreur
38    * @param[in] $msg mixed Un tableau ou une chaine pour la construction du message d'erreur
39    *                       Tableau : '[clef]' => 'valeur' 
40    *                                    La clef sera utilisé dans le format de message d'erreur
41    *                                    dans le fichier 'error_code.php'.
42    *
43    * @retval void
44    */ 
45   static function addErrorCode($code=-1,$msg='') {
46     $_SESSION['LSerror'][] = array($code,$msg);
47   }
48   
49   /**
50    * Affiche les erreurs
51    *
52    * @author Benjamin Renard <brenard@easter-eggs.com>
53    *
54    * @param[in] $return boolean True pour que le texte d'erreurs soit retourné
55    * 
56    * @retval void
57    */
58   static function display($return=False) {
59     $errors = self::getErrors();
60     if ($errors) {
61       if ($return) {
62         return $errors;
63       }
64       $GLOBALS['Smarty'] -> assign('LSerrors',$errors);
65     }
66   }
67
68   /**
69    * Print errors and stop LdapSaisie
70    *
71    * @author Benjamin Renard <brenard@easter-eggs.com>
72    *
73    * @param[in] $code Error code (Goto : addErrorCode())
74    * @param[in] $msg Error msg (Goto : addErrorCode())
75    * 
76    * @retval void
77    */
78   static function stop($code=-1,$msg='') {
79     if(!empty($_SESSION['LSerror'])) {
80       print "<h1>"._('Errors')."</h1>\n";
81       print self::display(true);
82     }
83     print "<h1>"._('Stop')."</h1>\n";
84     exit (self::getError(array($code,$msg)));
85   }
86
87  /**
88   * Retourne le texte des erreurs
89   *
90   * @author Benjamin Renard <brenard@easter-eggs.com>
91   *
92   * @retvat string Le texte des erreurs
93   */
94   static function getErrors() {
95     if(!empty($_SESSION['LSerror'])) {
96       foreach ($_SESSION['LSerror'] as $error) {
97         $txt.=self::getError($error);
98       }
99       self::resetError();
100       return $txt;
101     }
102     return;
103   }
104   
105  /**
106   * Retourne le texte d'une erreur
107   *
108   * @author Benjamin Renard <brenard@easter-eggs.com>
109   *
110   * @retvat string Le texte des erreurs
111   */
112   static function getError($error) {
113     return "(Code ".$error[0].") ".getFData($GLOBALS['LSerror_code'][$error[0]]['msg'],$error[1])."<br />\n";
114   }
115   
116  /**
117   * Définir si il y a des erreurs
118   *
119   * @author Benjamin Renard <brenard@easter-eggs.com>
120   *
121   * @retvat boolean
122   */
123   static function errorsDefined() {
124     return !empty($_SESSION['LSerror']);
125   }
126   
127  /**
128   * Efface les erreurs sotckés
129   *
130   * @author Benjamin Renard <brenard@easter-eggs.com>
131   *
132   * @retvat void
133   */
134   static function resetError() {
135     unset ($_SESSION['LSerror']);
136   }
137 }
138
139 /*
140  * Error Codes
141  */
142 $GLOBALS['LSerror_code']['-1'] = array (
143   'msg' => _("Unknow error!")
144 );
145 $GLOBALS['LSerror_code'][0] = array (
146   'msg' => "%{msg}"
147 );
148
149 ?>