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)
accessforbidden();
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
/*
* Action
*/
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);
$var=True;

View File

@ -1,6 +1,7 @@
<?php
/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* 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
* it under the terms of the GNU General Public License as published by
@ -18,24 +19,25 @@
*/
/**
\file htdocs/interfaces.class.php
\ingroup core
\brief Fichier de la classe de gestion des triggers
\version $Id$
*/
* \file htdocs/interfaces.class.php
* \ingroup core
* \brief Fichier de la classe de gestion des triggers
* \version $Id$
*/
/**
\class Interfaces
\brief Classe de la gestion des triggers
*/
* \class Interfaces
* \brief Classe de la gestion des triggers
*/
class Interfaces
{
var $dir; // Directory with all trigger files
var $errors=array(); // Array for errors
var $dir; // Directory with all core trigger files
var $errors = array(); // Array for errors
var $pathoftriggers = array(); // Array for path of triggers
/**
/**
* \brief Constructeur.
* \param DB handler d'acces base
*/
@ -45,7 +47,7 @@ class Interfaces
$this->dir = DOL_DOCUMENT_ROOT . "/includes/triggers";
}
/**
/**
* \brief Fonction appelee lors du declenchement d'un evenement Dolibarr.
* Cette fonction declenche tous les triggers trouves actifs.
* \param action Code de l'evenement
@ -144,5 +146,31 @@ class Interfaces
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;
}
}
}
}
}
}
?>