mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 22:43:47 +01:00
Auto declare simple PHP class for simple LSObject type
On LSsession::loadLSobject(), if PHP class file is not found, a simple one will be declare.
This commit is contained in:
parent
406b017023
commit
bbaa0a99df
4 changed files with 55 additions and 111 deletions
|
@ -234,21 +234,19 @@ du dossier d'installation, c'est à dire dans notre exemple
|
||||||
|
|
||||||
<orderedlist>
|
<orderedlist>
|
||||||
|
|
||||||
<listitem><para>Création du fichier de classe : Ce fichier contient la
|
<listitem><para>Création du fichier de classe <emphasis>(optionel)</emphasis>
|
||||||
déclaration de la classe PHP correspondant au type de LSobject. Cette classe
|
: Ce fichier contient la déclaration de la classe PHP correspondant au type de
|
||||||
étend la classe <emphasis>LSldapObject</emphasis> qui contient pour ainsi dire
|
LSobject. Cette classe étend la classe <emphasis>LSldapObject</emphasis> qui
|
||||||
toute les méthodes et proprités nécessaires pour les types de LSobject simples
|
contient pour ainsi dire toute les méthodes et proprités nécessaires pour les
|
||||||
(sans &LSrelation;). Les fichiers des classes sont contenus dans le dossier
|
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.</para>
|
||||||
|
<para>Les fichiers des classes sont contenus dans le dossier
|
||||||
<emphasis>/includes/class/</emphasis> et portent les noms composés de la
|
<emphasis>/includes/class/</emphasis> et portent les noms composés de la
|
||||||
manière suivante :
|
manière suivante :
|
||||||
<programlisting>class.LSobjects.[nom du type d'LSobject].php</programlisting>
|
<programlisting>class.LSobjects.[nom du type d'LSobject].php</programlisting>
|
||||||
Le plus simple pour cette étape est de copier un des fichiers d'exemple afin
|
</para>
|
||||||
de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier.
|
</listitem>
|
||||||
Pour cela, le fichier de classe du type <emphasis>LSpeople</emphasis> 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 <emphasis>LSgroup
|
|
||||||
</emphasis> contient déjà les méthodes nécéssaires pour gérer ces cas.
|
|
||||||
</para></listitem>
|
|
||||||
|
|
||||||
<listitem><simpara>Configurer vos LSobject : Cette partie est certainement la
|
<listitem><simpara>Configurer vos LSobject : Cette partie est certainement la
|
||||||
plus longue et consiste à déclarer l'ensemble des informations relatives aux
|
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
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem><simpara>Configurer si nécessaire les relations entre les objets
|
<listitem><simpara>Configurer si nécessaire les relations entre les objets
|
||||||
appelés &LSrelations;. Cette opération consiste dans un premier temps à écrire
|
appelés &LSrelations;. Les relations les plus simples (via un attribut de liaison)
|
||||||
les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le
|
pourront être implémentées à l'aide d'un simple paramètrage. Pour des relations,
|
||||||
fichier de classe du type <emphasis>LSgroup</emphasis>. Il faudra ensuite
|
plus complexes, il sera possible d'implémenter des méthodes personnalisées pour
|
||||||
déclarer ces relations dans la configuration des types d'LSobjects : Pour plus
|
les gérer. Pour plus de détails, reportez-vous à
|
||||||
de détails, reportez-vous à <link linkend="config-LSobject-LSrelation">la
|
<link linkend="config-LSobject-LSrelation">la section concernée</link>.</simpara>
|
||||||
section concernée</link>.</simpara>
|
<note><simpara>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 <emphasis>LSgroup</emphasis>.</simpara></note>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?php
|
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (C) 2007 Easter-eggs
|
|
||||||
* http://ldapsaisie.labs.libre-entreprise.org
|
|
||||||
*
|
|
||||||
* Author: See AUTHORS file in top-level directory.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
|
||||||
* as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Objet Ldap company
|
|
||||||
*
|
|
||||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
|
||||||
*/
|
|
||||||
class LScompany extends LSldapObject {
|
|
||||||
// ~
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?php
|
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (C) 2007 Easter-eggs
|
|
||||||
* http://ldapsaisie.labs.libre-entreprise.org
|
|
||||||
*
|
|
||||||
* Author: See AUTHORS file in top-level directory.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
|
||||||
* as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Objet Ldap people
|
|
||||||
*
|
|
||||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
|
||||||
*/
|
|
||||||
class LSpeople extends LSldapObject {
|
|
||||||
// ~
|
|
||||||
}
|
|
|
@ -445,48 +445,52 @@ class LSsession {
|
||||||
if(class_exists($object)) {
|
if(class_exists($object)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
$error = 0;
|
$error = false;
|
||||||
self :: loadLSclass('LSldapObject');
|
// Load LSldapObject class
|
||||||
|
if (!self :: loadLSclass('LSldapObject')) {
|
||||||
|
self :: log_error("loadLSobject($object): fail to load LSldapObject class");
|
||||||
|
$error = true;
|
||||||
|
}
|
||||||
// Check LSobject type name
|
// Check LSobject type name
|
||||||
if (!LSldapObject :: isValidTypeName($object)) {
|
elseif (!LSldapObject :: isValidTypeName($object)) {
|
||||||
self :: log_error("loadLSobject($object): invalid LSobject type name");
|
self :: log_error("loadLSobject($object): invalid LSobject type name");
|
||||||
$error = 1;
|
$error = true;
|
||||||
}
|
}
|
||||||
elseif (!self :: loadLSclass($object,'LSobjects')) {
|
// Load config file
|
||||||
self :: log_error("loadLSobject($object): Fail to load LSldapObject class");
|
elseif (!self :: includeFile( LS_OBJECTS_DIR . 'config.LSobjects.'.$object.'.php' ) || !isset($GLOBALS['LSobjects'][$object])) {
|
||||||
$error = 1;
|
|
||||||
}
|
|
||||||
elseif (!self :: includeFile( LS_OBJECTS_DIR . 'config.LSobjects.'.$object.'.php' )) {
|
|
||||||
self :: log_error("loadLSobject($object): Fail to include 'config.LSobjects.$object.php' file");
|
self :: log_error("loadLSobject($object): Fail to include 'config.LSobjects.$object.php' file");
|
||||||
$error = 1;
|
$error = true;
|
||||||
}
|
}
|
||||||
else {
|
// Check config file
|
||||||
if (!LSconfig :: set("LSobjects.$object",$GLOBALS['LSobjects'][$object])) {
|
elseif (!isset($GLOBALS['LSobjects'][$object]) || !is_array($GLOBALS['LSobjects'][$object])) {
|
||||||
self :: log_error("loadLSobject($object): Fail to LSconfig :: set('LSobjects.$object', \$GLOBALS['LSobjects'][$object])");
|
self :: log_error("loadLSobject($object): \$GLOBALS['LSobjects'][$object] is not declared after loaded config file (or is not an array).");
|
||||||
$error = 1;
|
$error = true;
|
||||||
}
|
}
|
||||||
else if (isset($GLOBALS['LSobjects'][$object]['LSaddons'])){
|
// Set LSobject type configuration
|
||||||
if (is_array($GLOBALS['LSobjects'][$object]['LSaddons'])) {
|
elseif (!LSconfig :: set("LSobjects.$object", $GLOBALS['LSobjects'][$object])) {
|
||||||
foreach ($GLOBALS['LSobjects'][$object]['LSaddons'] as $addon) {
|
self :: log_error("loadLSobject($object): Fail to LSconfig :: set('LSobjects.$object', \$GLOBALS['LSobjects'][$object])");
|
||||||
if (!self :: loadLSaddon($addon)) {
|
$error = true;
|
||||||
self :: log_error("loadLSobject($object): Fail to load LSaddon '$addon'");
|
}
|
||||||
$error = 1;
|
// 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']);
|
||||||
else {
|
foreach ($GLOBALS['LSobjects'][$object]['LSaddons'] as $addon) {
|
||||||
if (!self :: loadLSaddon($GLOBALS['LSobjects'][$object]['LSaddons'])) {
|
if (!self :: loadLSaddon($addon)) {
|
||||||
self :: log_error("loadLSobject($object): Fail to load LSaddon '".$GLOBALS['LSobjects'][$object]['LSaddons']."'");
|
self :: log_error("loadLSobject($object): Fail to load LSaddon '$addon'");
|
||||||
$error = 1;
|
$error = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($error && $warn) {
|
// Load or declare corresponding PHP class (if no previous error occured)
|
||||||
LSerror :: addErrorCode('LSsession_04',$object);
|
if (!$error && !self :: loadLSclass($object, 'LSobjects')) {
|
||||||
return;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue