diff --git a/doc/install/install.docbook b/doc/install/install.docbook index b72ad00e..bbbdb2a8 100644 --- a/doc/install/install.docbook +++ b/doc/install/install.docbook @@ -234,21 +234,19 @@ du dossier d'installation, c'est à dire dans notre exemple - Création du fichier de classe : Ce fichier contient la - déclaration de la classe PHP correspondant au type de LSobject. Cette classe - étend la classe LSldapObject qui contient pour ainsi dire - toute les méthodes et proprités nécessaires pour les types de LSobject simples - (sans &LSrelation;). Les fichiers des classes sont contenus dans le dossier + Création du fichier de classe (optionel) + : Ce fichier contient la déclaration de la classe PHP correspondant au type de + LSobject. Cette classe étend la classe LSldapObject qui + contient pour ainsi dire toute les méthodes et proprités nécessaires pour les + types de LSobject simples. Si votre type de LSobject nécessite des méthodes ou + propriétés particulières, vous pouvez implémenter cette classe. À défaut, une + classe vierge d'adaptation sera automatiquement déclarée. + Les fichiers des classes sont contenus dans le dossier /includes/class/ et portent les noms composés de la manière suivante : class.LSobjects.[nom du type d'LSobject].php - Le plus simple pour cette étape est de copier un des fichiers d'exemple afin - de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier. - Pour cela, le fichier de classe du type LSpeople est le - plus simple car il ne contient que le strict minimum. Pour un fichier de classe - ayant des &LSrelations; à gérer, le fichier de classe LSgroup - contient déjà les méthodes nécéssaires pour gérer ces cas. - + + Configurer vos LSobject : Cette partie est certainement la plus longue et consiste à déclarer l'ensemble des informations relatives aux @@ -261,12 +259,14 @@ du dossier d'installation, c'est à dire dans notre exemple Configurer si nécessaire les relations entre les objets - appelés &LSrelations;. Cette opération consiste dans un premier temps à écrire - les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le - fichier de classe du type LSgroup. Il faudra ensuite - déclarer ces relations dans la configuration des types d'LSobjects : Pour plus - de détails, reportez-vous à la - section concernée. + appelés &LSrelations;. Les relations les plus simples (via un attribut de liaison) + pourront être implémentées à l'aide d'un simple paramètrage. Pour des relations, + plus complexes, il sera possible d'implémenter des méthodes personnalisées pour + les gérer. Pour plus de détails, reportez-vous à + la section concernée. + Pour avoir un exemple de fichier de classe PHP implémentant des + methodes de gestion de &LSrelations; complexes, vous pouvez consulter le fichier + de classe LSgroup. diff --git a/src/includes/class/class.LSobjects.LScompany.php b/src/includes/class/class.LSobjects.LScompany.php deleted file mode 100644 index 203f531e..00000000 --- a/src/includes/class/class.LSobjects.LScompany.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -class LScompany extends LSldapObject { - // ~ -} diff --git a/src/includes/class/class.LSobjects.LSpeople.php b/src/includes/class/class.LSobjects.LSpeople.php deleted file mode 100644 index 1b10e951..00000000 --- a/src/includes/class/class.LSobjects.LSpeople.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -class LSpeople extends LSldapObject { - // ~ -} diff --git a/src/includes/class/class.LSsession.php b/src/includes/class/class.LSsession.php index 162ef034..eb11917b 100644 --- a/src/includes/class/class.LSsession.php +++ b/src/includes/class/class.LSsession.php @@ -445,48 +445,52 @@ class LSsession { if(class_exists($object)) { return true; } - $error = 0; - self :: loadLSclass('LSldapObject'); + $error = false; + // Load LSldapObject class + if (!self :: loadLSclass('LSldapObject')) { + self :: log_error("loadLSobject($object): fail to load LSldapObject class"); + $error = true; + } // Check LSobject type name - if (!LSldapObject :: isValidTypeName($object)) { + elseif (!LSldapObject :: isValidTypeName($object)) { self :: log_error("loadLSobject($object): invalid LSobject type name"); - $error = 1; + $error = true; } - elseif (!self :: loadLSclass($object,'LSobjects')) { - self :: log_error("loadLSobject($object): Fail to load LSldapObject class"); - $error = 1; - } - elseif (!self :: includeFile( LS_OBJECTS_DIR . 'config.LSobjects.'.$object.'.php' )) { + // Load config file + elseif (!self :: includeFile( LS_OBJECTS_DIR . 'config.LSobjects.'.$object.'.php' ) || !isset($GLOBALS['LSobjects'][$object])) { self :: log_error("loadLSobject($object): Fail to include 'config.LSobjects.$object.php' file"); - $error = 1; + $error = true; } - else { - if (!LSconfig :: set("LSobjects.$object",$GLOBALS['LSobjects'][$object])) { - self :: log_error("loadLSobject($object): Fail to LSconfig :: set('LSobjects.$object', \$GLOBALS['LSobjects'][$object])"); - $error = 1; - } - else if (isset($GLOBALS['LSobjects'][$object]['LSaddons'])){ - if (is_array($GLOBALS['LSobjects'][$object]['LSaddons'])) { - foreach ($GLOBALS['LSobjects'][$object]['LSaddons'] as $addon) { - if (!self :: loadLSaddon($addon)) { - self :: log_error("loadLSobject($object): Fail to load LSaddon '$addon'"); - $error = 1; - } - } - } - else { - if (!self :: loadLSaddon($GLOBALS['LSobjects'][$object]['LSaddons'])) { - self :: log_error("loadLSobject($object): Fail to load LSaddon '".$GLOBALS['LSobjects'][$object]['LSaddons']."'"); - $error = 1; - } + // Check config file + elseif (!isset($GLOBALS['LSobjects'][$object]) || !is_array($GLOBALS['LSobjects'][$object])) { + self :: log_error("loadLSobject($object): \$GLOBALS['LSobjects'][$object] is not declared after loaded config file (or is not an array)."); + $error = true; + } + // Set LSobject type configuration + elseif (!LSconfig :: set("LSobjects.$object", $GLOBALS['LSobjects'][$object])) { + self :: log_error("loadLSobject($object): Fail to LSconfig :: set('LSobjects.$object', \$GLOBALS['LSobjects'][$object])"); + $error = true; + } + // Load LSaddons used by this LSobject type (if configured) + else if (isset($GLOBALS['LSobjects'][$object]['LSaddons'])) { + if (!is_array($GLOBALS['LSobjects'][$object]['LSaddons'])) + $GLOBALS['LSobjects'][$object]['LSaddons'] = array($GLOBALS['LSobjects'][$object]['LSaddons']); + foreach ($GLOBALS['LSobjects'][$object]['LSaddons'] as $addon) { + if (!self :: loadLSaddon($addon)) { + self :: log_error("loadLSobject($object): Fail to load LSaddon '$addon'"); + $error = true; } } } - if ($error && $warn) { - LSerror :: addErrorCode('LSsession_04',$object); - return; + // Load or declare corresponding PHP class (if no previous error occured) + if (!$error && !self :: loadLSclass($object, 'LSobjects')) { + self :: log_debug("loadLSobject($object): Fail to load $object class. Implement simple one."); + eval("class $object extends LSldapObject {};"); } - return true; + // Warn on error (is enabled) + if ($error && $warn) + LSerror :: addErrorCode('LSsession_04', $object); + return !$error; } /**