Bonjour,

en commençant a travailler sur le plugin FusionInventory pour la 0.84
(on merge les différents plugin en 1 seul), on s'est rendu compte qu'on
risque d'avoir un très grand nombre de classes dans le dossier inc.

On en a discuté et on s'est dit que ca serait pratique et il me semble
que c'était prévu un peu plus tard, mais quitte à tout péter maintenant
pour la 0.84, on peut le faire de suite.


Donc on pourrait avoir la structure suivante : 

inc/computer.class.php (class Computer)
inc/computer/disk.class.php (class ComputerDisk)
...


Je joins un premier patch qui permet de charger les fichiers dans le
bon dossier (fonction __autoload).


Qu'en pensez-vous?

Je peux bosser sur ce chantier cette semaine si on se met d'accord
(création des dossier, déplacement et renommage des fichiers de
classes...)

David Durieux 
++
Index: inc/autoload.function.php
===================================================================
--- inc/autoload.function.php	(revision 16265)
+++ inc/autoload.function.php	(working copy)
@@ -112,10 +112,17 @@
    }
 
    $dir = GLPI_ROOT . "/inc/";
+   $dirinc = array();
+   $filename = '';
+   preg_match_all('/([A-Z])([a-z]+([_][A-Z]([a-z]+))?)/', $classname, $dirinc);
    if ($plug=isPluginItemType($classname)) {
       $plugname = strtolower($plug['plugin']);
       $dir      = GLPI_ROOT . "/plugins/$plugname/inc/";
       $item     = strtolower($plug['class']);
+      if(isset($dirinc[0][0])
+              AND $dirinc[0][0] == 'Plugin') {
+         unset($dirinc[0][0]);
+      }
       // Is the plugin activate ?
       // Command line usage of GLPI : need to do a real check plugin activation
       if (isCommandLine()) {
@@ -153,8 +160,8 @@
 
    // No errors for missing classes due to implementation
    if (!in_array($item,$CFG_GLPI['missingclasses'])){
-      if (file_exists("$dir$item.class.php")) {
-         include_once ("$dir$item.class.php");
+      if (file_exists("$dir".strtolower(implode("/", $dirinc[0])).".class.php")) {
+         include_once ("$dir".strtolower(implode("/", $dirinc[0])).".class.php");
          if (isset($_SESSION['glpi_use_mode'])
              && $_SESSION['glpi_use_mode'] == Session::DEBUG_MODE) {
             $DEBUG_AUTOLOAD[] = $classname;
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to