Add possibility to move trigger in "/mymodule/inc/triggers/"

This commit is contained in:
Regis Houssin 2010-04-02 09:59:18 +00:00
parent 048f3dbe0f
commit 488479de5e
2 changed files with 81 additions and 85 deletions

View File

@ -28,81 +28,10 @@ include_once(DOL_DOCUMENT_ROOT ."/interfaces.class.php");
if (!$user->admin) if (!$user->admin)
accessforbidden(); accessforbidden();
/*
* Action
if ($_GET["action"] == 'set' && $user->admin)
{
Activate($_GET["value"]);
Header("Location: modules.php?spe=".$_GET["spe"]);
exit;
}
if ($_GET["action"] == 'reset' && $user->admin)
{
UnActivate($_GET["value"]);
Header("Location: modules.php?spe=".$_GET["spe"]);
exit;
}
/**
* \brief Active un module
* \param value Nom du module a activer
*/ */
function Activate($value)
{
global $db, $modules;
$modName = $value;
// Activation du module
if ($modName)
{
$file = $modName . ".class.php";
include_once("../includes/modules/".$file);
$objMod = new $modName($db);
$objMod->init();
}
// Activation des modules dont le module depend
for ($i = 0; $i < sizeof($objMod->depends); $i++)
{
Activate($objMod->depends[$i]);
}
}
/**
* \brief Desactive un module
* \param value Nom du module a desactiver
*/
function UnActivate($value)
{
global $db, $modules;
$modName = $value;
// Desactivation du module
if ($modName)
{
$file = $modName . ".class.php";
include_once("../includes/modules/".$file);
$objMod = new $modName($db);
$objMod->remove();
}
// Desactivation des modules qui dependent de lui
for ($i = 0; $i < sizeof($objMod->requiredby); $i++)
{
UnActivate($objMod->requiredby[$i]);
}
Header("Location: modules.php");
exit;
}
/* /*
@ -165,6 +94,45 @@ while (($file = readdir($handle))!==false)
} }
} }
} }
closedir($handle);
// Find external module triggers
$interfaces->getModulesTriggers();
foreach($interfaces->pathoftriggers as $dir)
{
$handle=opendir($dir);
while (($file = readdir($handle))!==false)
{
if (is_readable($dir.'/'.$file) && preg_match('/^interface_([^_]+)_(.+)\.class\.php/',$file,$reg))
{
$modName = 'Interface'.ucfirst($reg[2]);
//print "file=$file"; print "modName=$modName"; exit;
if (in_array($modName,$modules))
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/").'</div>';
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = $objMod->family; // Tri par famille
$i++;
}
else
{
include_once($dir.'/'.$file);
$objMod = new $modName($db);
$modules[$i] = $modName;
$files[$i] = $file;
$orders[$i] = $objMod->family; // Tri par famille
$i++;
}
}
}
closedir($handle);
}
asort($orders); asort($orders);
$var=True; $var=True;

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2010 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -18,24 +19,25 @@
*/ */
/** /**
\file htdocs/interfaces.class.php * \file htdocs/interfaces.class.php
\ingroup core * \ingroup core
\brief Fichier de la classe de gestion des triggers * \brief Fichier de la classe de gestion des triggers
\version $Id$ * \version $Id$
*/ */
/** /**
\class Interfaces * \class Interfaces
\brief Classe de la gestion des triggers * \brief Classe de la gestion des triggers
*/ */
class Interfaces class Interfaces
{ {
var $dir; // Directory with all trigger files var $dir; // Directory with all core trigger files
var $errors=array(); // Array for errors var $errors = array(); // Array for errors
var $pathoftriggers = array(); // Array for path of triggers
/** /**
* \brief Constructeur. * \brief Constructeur.
* \param DB handler d'acces base * \param DB handler d'acces base
*/ */
@ -45,7 +47,7 @@ class Interfaces
$this->dir = DOL_DOCUMENT_ROOT . "/includes/triggers"; $this->dir = DOL_DOCUMENT_ROOT . "/includes/triggers";
} }
/** /**
* \brief Fonction appelee lors du declenchement d'un evenement Dolibarr. * \brief Fonction appelee lors du declenchement d'un evenement Dolibarr.
* Cette fonction declenche tous les triggers trouves actifs. * Cette fonction declenche tous les triggers trouves actifs.
* \param action Code de l'evenement * \param action Code de l'evenement
@ -144,5 +146,31 @@ class Interfaces
return $nbok; return $nbok;
} }
} }
/**
* \brief Return list of modules contains triggers.
* \return array List of module name.
*/
function getModulesTriggers()
{
global $conf;
foreach($conf->global as $key => $value)
{
if (preg_match('/^MAIN_TRIGGER_/',$key))
{
if ($value)
{
if (preg_match('/^MAIN_TRIGGER_([[:alnum:]]*)$/',$key,$regs))
{
$modulename = strtolower($regs[1]);
$pathoftrigger = DOL_DOCUMENT_ROOT.'/'.$modulename.'/inc/triggers/';
$this->pathoftriggers[] = $pathoftrigger;
}
}
}
}
}
} }
?> ?>