Add possibility to move trigger in "/mymodule/inc/triggers/"
This commit is contained in:
parent
048f3dbe0f
commit
488479de5e
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user