mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 14:33:49 +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>
|
||||
|
||||
<listitem><para>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 <emphasis>LSldapObject</emphasis> 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
|
||||
<listitem><para>Création du fichier de classe <emphasis>(optionel)</emphasis>
|
||||
: Ce fichier contient la déclaration de la classe PHP correspondant au type de
|
||||
LSobject. Cette classe étend la classe <emphasis>LSldapObject</emphasis> 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.</para>
|
||||
<para>Les fichiers des classes sont contenus dans le dossier
|
||||
<emphasis>/includes/class/</emphasis> et portent les noms composés de la
|
||||
manière suivante :
|
||||
<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
|
||||
de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier.
|
||||
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>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem><simpara>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
|
|||
</listitem>
|
||||
|
||||
<listitem><simpara>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 <emphasis>LSgroup</emphasis>. Il faudra ensuite
|
||||
déclarer ces relations dans la configuration des types d'LSobjects : Pour plus
|
||||
de détails, reportez-vous à <link linkend="config-LSobject-LSrelation">la
|
||||
section concernée</link>.</simpara>
|
||||
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 à
|
||||
<link linkend="config-LSobject-LSrelation">la 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>
|
||||
|
||||
</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)) {
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue