New: Nouvelle regle de nommage des triggers pour rendre dev plus simple
This commit is contained in:
parent
a7a3f52788
commit
696eb14515
@ -39,6 +39,13 @@ print_fiche_titre("Dolibarr",'','setup');
|
|||||||
|
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
|
print $langs->trans("Version").':';
|
||||||
|
print '<ul>';
|
||||||
|
print '<li>'.DOL_VERSION.'</li>';
|
||||||
|
print '</ul>';
|
||||||
|
|
||||||
|
print "<br>\n";
|
||||||
|
|
||||||
print $langs->trans("DolibarrLicense").':';
|
print $langs->trans("DolibarrLicense").':';
|
||||||
print '<ul>';
|
print '<ul>';
|
||||||
print '<li>GNU/GPL</li>';
|
print '<li>GNU/GPL</li>';
|
||||||
@ -108,7 +115,7 @@ if (eregi('^fr_',$langs->getDefaultLang()))
|
|||||||
print 'Vente / Support';
|
print 'Vente / Support';
|
||||||
print '<ul>';
|
print '<ul>';
|
||||||
print '<li>';
|
print '<li>';
|
||||||
print 'Contactez Rodolphe Quiédeville sur <a target="blank" href="http://www.dolibarr.com/">www.dolibarr.com</a>';
|
print 'Contactez Rodolphe Quiédeville sur <a target="blank" href="http://rodolphe.quiedeville.org">www.dolibarr.com</a>';
|
||||||
print '</li>';
|
print '</li>';
|
||||||
print '</ul>';
|
print '</ul>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require("./pre.inc.php");
|
require("./pre.inc.php");
|
||||||
|
include_once(DOL_DOCUMENT_ROOT ."/interfaces.class.php");
|
||||||
|
|
||||||
if (!$user->admin)
|
if (!$user->admin)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
@ -61,7 +62,7 @@ function Activate($value)
|
|||||||
if ($modName)
|
if ($modName)
|
||||||
{
|
{
|
||||||
$file = $modName . ".class.php";
|
$file = $modName . ".class.php";
|
||||||
include_once("../includes/modules/$file");
|
include_once("../includes/modules/".$file);
|
||||||
$objMod = new $modName($db);
|
$objMod = new $modName($db);
|
||||||
$objMod->init();
|
$objMod->init();
|
||||||
}
|
}
|
||||||
@ -88,7 +89,7 @@ function UnActivate($value)
|
|||||||
if ($modName)
|
if ($modName)
|
||||||
{
|
{
|
||||||
$file = $modName . ".class.php";
|
$file = $modName . ".class.php";
|
||||||
include_once("../includes/modules/$file");
|
include_once("../includes/modules/".$file);
|
||||||
$objMod = new $modName($db);
|
$objMod = new $modName($db);
|
||||||
$objMod->remove();
|
$objMod->remove();
|
||||||
}
|
}
|
||||||
@ -107,24 +108,26 @@ function UnActivate($value)
|
|||||||
|
|
||||||
llxHeader("","");
|
llxHeader("","");
|
||||||
|
|
||||||
|
$html = new Form($db);
|
||||||
|
|
||||||
print_fiche_titre($langs->trans("TriggersAvailable"),'','setup');
|
print_fiche_titre($langs->trans("TriggersAvailable"),'','setup');
|
||||||
|
|
||||||
|
print "<br>\n";
|
||||||
print $langs->trans("TriggersDesc")."<br>";
|
print $langs->trans("TriggersDesc")."<br>";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">\n";
|
print "<table class=\"noborder\" width=\"100%\">\n";
|
||||||
print "<tr class=\"liste_titre\">\n";
|
print "<tr class=\"liste_titre\">\n";
|
||||||
print " <td colspan=\"2\">".$langs->trans("File")."</td>\n";
|
print " <td colspan=\"2\">".$langs->trans("File")."</td>\n";
|
||||||
print " <td>".$langs->trans("Description")."</td>\n";
|
//print " <td>".$langs->trans("Description")."</td>\n";
|
||||||
print " <td align=\"center\">".$langs->trans("Version")."</td>\n";
|
print " <td align=\"center\">".$langs->trans("Version")."</td>\n";
|
||||||
print " <td align=\"center\">".$langs->trans("Activated")."</td>\n";
|
print " <td align=\"center\">".$langs->trans("Active")."</td>\n";
|
||||||
//print " <td align=\"center\">".$langs->trans("Action")."</td>\n";
|
|
||||||
print " <td align=\"center\"> </td>\n";
|
print " <td align=\"center\"> </td>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
// Define dir directory
|
||||||
$dir = DOL_DOCUMENT_ROOT . "/includes/triggers/";
|
$interfaces=new Interfaces($db);
|
||||||
|
$dir = $interfaces->dir;
|
||||||
|
|
||||||
$handle=opendir($dir);
|
$handle=opendir($dir);
|
||||||
$files = array();
|
$files = array();
|
||||||
@ -133,39 +136,38 @@ $orders = array();
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
while (($file = readdir($handle))!==false)
|
while (($file = readdir($handle))!==false)
|
||||||
{
|
{
|
||||||
if (is_readable($dir.$file) && ereg('^interface_(.*)\.class\.php',$file,$reg))
|
if (is_readable($dir.'/'.$file) && ereg('^interface_([^_]+)_(.+)\.class\.php',$file,$reg))
|
||||||
{
|
{
|
||||||
$modName = 'Interface'.ucfirst($reg[1]);
|
$modName = 'Interface'.ucfirst($reg[2]);
|
||||||
if ($modName)
|
//print "file=$file"; print "modName=$modName"; exit;
|
||||||
{
|
if (in_array($modName,$modules))
|
||||||
if (in_array($modName,$modules))
|
{
|
||||||
{
|
$langs->load("errors");
|
||||||
$langs->load("errors");
|
print '<div class="error">'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/").'</div>';
|
||||||
print '<div class="error">'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/").'</div>';
|
$objMod = new $modName($db);
|
||||||
$objMod = new $modName($db);
|
|
||||||
|
$modules[$i] = $modName;
|
||||||
$modules[$i] = $modName;
|
$files[$i] = $file;
|
||||||
$files[$i] = $file;
|
$orders[$i] = $objMod->family; // Tri par famille
|
||||||
$orders[$i] = "$objMod->family"; // Tri par famille
|
$i++;
|
||||||
$i++;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
include_once($dir.'/'.$file);
|
||||||
include_once($dir.$file);
|
$objMod = new $modName($db);
|
||||||
$objMod = new $modName($db);
|
|
||||||
|
$modules[$i] = $modName;
|
||||||
$modules[$i] = $modName;
|
$files[$i] = $file;
|
||||||
$files[$i] = $file;
|
$orders[$i] = $objMod->family; // Tri par famille
|
||||||
$orders[$i] = "$objMod->family"; // Tri par famille
|
$i++;
|
||||||
$i++;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
asort($orders);
|
asort($orders);
|
||||||
$var=True;
|
$var=True;
|
||||||
|
|
||||||
|
// Loop on each trigger
|
||||||
foreach ($orders as $key => $value)
|
foreach ($orders as $key => $value)
|
||||||
{
|
{
|
||||||
$tab=split('_',$value);
|
$tab=split('_',$value);
|
||||||
@ -180,46 +182,61 @@ foreach ($orders as $key => $value)
|
|||||||
$const_name = $objMod->const_name;
|
$const_name = $objMod->const_name;
|
||||||
|
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
|
|
||||||
|
// Define disabledbyname and disabledbymodule
|
||||||
|
$disabledbyname=0;
|
||||||
|
$disabledbymodule=1;
|
||||||
|
$module='';
|
||||||
|
if (eregi('NORUN$',$files[$key])) $disabledbyname=1;
|
||||||
|
if (eregi('^interface_([^_]+)_(.+)\.class\.php',$files[$key],$reg))
|
||||||
|
{
|
||||||
|
// Check if trigger file is for a particular module
|
||||||
|
$module=eregi_replace('^mod','',$reg[1]);
|
||||||
|
$constparam='MAIN_MODULE_'.strtoupper($module);
|
||||||
|
if (strtolower($reg[1]) == 'all') $disabledbymodule=0;
|
||||||
|
else if (empty($conf->global->$constparam)) $disabledbymodule=2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show line for trigger file
|
||||||
print "<tr $bc[$var]>\n";
|
print "<tr $bc[$var]>\n";
|
||||||
|
|
||||||
print '<td valign="top" width="14" align="center">';
|
print '<td valign="top" width="14" align="center">';
|
||||||
print $objMod->picto?img_object('',$objMod->picto):img_object('','generic');
|
print $objMod->picto?img_object('',$objMod->picto):img_object('','generic');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td valign="top">'.$files[$key]."</td>\n";
|
print '<td valign="top">'.$files[$key]."</td>\n";
|
||||||
print '<td valign="top">'.$objMod->getDesc()."</td>\n";
|
//print '<td valign="top">'.$objMod->getDesc()."</td>\n";
|
||||||
print "<td valign=\"top\" align=\"center\">".$objMod->getVersion()."</td>\n";
|
print "<td valign=\"top\" align=\"center\">".$objMod->getVersion()."</td>\n";
|
||||||
|
|
||||||
// \todo Activation trigger
|
// Etat trigger
|
||||||
print "<td valign=\"top\" align=\"center\">";
|
print "<td valign=\"top\" align=\"center\">";
|
||||||
$statut_trigger=1;
|
if ($disabledbyname > 0 || $disabledbymodule > 1)
|
||||||
if (eregi('NORUN$',$files[$key])) $statut_trigger=0;
|
|
||||||
|
|
||||||
if ($statut_trigger == 1)
|
|
||||||
{
|
|
||||||
print img_tick();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
print " ";
|
print " ";
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print img_tick();
|
||||||
|
}
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
/*
|
print '<td valign="top">';
|
||||||
print "<td valign=\"top\" align=\"center\">";
|
$text ='<b>'.$langs->trans("Description").':</b><br>';
|
||||||
if ($const_value == 1)
|
$text.=$objMod->getDesc().'<br>';
|
||||||
{
|
$text.='<br><b>'.$langs->trans("Status").':</b><br>';
|
||||||
// Module actif
|
if ($disabledbyname == 1)
|
||||||
print "<a href=\"modules.php?id=".$objMod->numero."&action=reset&value=" . $modName . "&spe=" . $_GET["spe"] . "\">" . $langs->trans("Disable") . "</a></td>\n";
|
{
|
||||||
}
|
$text.=$langs->trans("TriggerDisabledByName").'<br>';
|
||||||
else
|
if ($disabledbymodule == 2) $text.=$langs->trans("TriggerDisabledAsModuleDisabled",$module).'<br>';
|
||||||
{
|
}
|
||||||
// Module non actif
|
else
|
||||||
print "<a href=\"modules.php?id=".$objMod->numero."&action=set&value=" . $modName . "&spe=" . $_GET["spe"] . "\">" . $langs->trans("Activate") . "</a></td>\n";
|
{
|
||||||
}
|
if ($disabledbymodule == 0) $text.=$langs->trans("TriggerAlwaysActive").'<br>';
|
||||||
*/
|
if ($disabledbymodule == 1) $text.=$langs->trans("TriggerActiveAsModuleActive",$module).'<br>';
|
||||||
print "<td> </td>\n";
|
if ($disabledbymodule == 2) $text.=$langs->trans("TriggerDisabledAsModuleDisabled",$module).'<br>';
|
||||||
|
}
|
||||||
|
print $html->textwithhelp('',$text);
|
||||||
|
print "</td>\n";
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup webcalendar Module Webcalendar
|
/** \defgroup webcalendar Module Webcalendar
|
||||||
\brief Module to include Webcalendar into Dolibarr and
|
\brief Module to include Webcalendar GUI into Dolibarr menu and
|
||||||
add Dolibarr events directly inside a Webcalendar database.
|
add Dolibarr events directly inside a Webcalendar database.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -60,11 +60,11 @@ class modWebcalendar extends DolibarrModules
|
|||||||
$this->family = "projects";
|
$this->family = "projects";
|
||||||
// Module title used if translation string 'ModuleXXXName' not found (XXX is id value)
|
// Module title used if translation string 'ModuleXXXName' not found (XXX is id value)
|
||||||
$this->name = "Webcalendar";
|
$this->name = "Webcalendar";
|
||||||
// Module descriptoin used translation string 'ModuleXXXDesc' not found (XXX is id value)
|
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value)
|
||||||
$this->description = "Interfaçage avec le calendrier Webcalendar";
|
$this->description = "Interfaçage avec le calendrier Webcalendar";
|
||||||
// Possible values for version are: 'experimental' or 'dolibarr' or version
|
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
|
||||||
$this->version = 'dolibarr';
|
$this->version = 'dolibarr';
|
||||||
// Id used in llx_const table to manage module status (enabled/disabled)
|
// Key used in llx_const table to save module status enabled/disabled (XXX is id value)
|
||||||
$this->const_name = 'MAIN_MODULE_WEBCALENDAR';
|
$this->const_name = 'MAIN_MODULE_WEBCALENDAR';
|
||||||
// Where to store the module in setup page (0=common,1=interface,2=other)
|
// Where to store the module in setup page (0=common,1=interface,2=other)
|
||||||
$this->special = 1;
|
$this->special = 1;
|
||||||
|
|||||||
@ -1,8 +1,17 @@
|
|||||||
|
Directory content
|
||||||
|
--------------------------------------------------------
|
||||||
This directory contains all available Dolibarr triggers.
|
This directory contains all available Dolibarr triggers.
|
||||||
|
|
||||||
Name of some triggers ends with -NORUN. This means that they are not enabled and will
|
Trigger file name syntax is:
|
||||||
never be launched.
|
> interface_modModule_mytrigger.php[-NORUN]
|
||||||
If you want to use them, just rename the file name removing the -NORUN part in their name.
|
|
||||||
|
where:
|
||||||
|
> modModule is part of module descriptor file name found in includes/modules
|
||||||
|
directory or value 'all' if not enabled by a particular module.
|
||||||
|
> Mytrigger is name of the trigger. The PHP class inside the trigger file
|
||||||
|
would be named InterfaceMytrigger.
|
||||||
|
> -NORUN is optionnal and disable completely a trigger file if set. To use
|
||||||
|
a trigger with such a name, rename file to remove the -NORUN part.
|
||||||
|
|
||||||
|
|
||||||
$Id$
|
$Id$
|
||||||
@ -1,9 +1,20 @@
|
|||||||
Ce répertoire contient tous les triggers Dolibarr disponibles.
|
Directory content
|
||||||
|
--------------------------------------------------------
|
||||||
|
Ce répertoire contient tous les triggers Dolibarr.
|
||||||
|
|
||||||
Le nom de certain trigger se termine par -NORUN ce qui signigie que ceux-ci
|
La syntaxe d'un fichier Trigger est:
|
||||||
ne seront pas actifs et ne se seront jamais éxécutés.
|
> interface_modModule_mytrigger.php[-NORUN]
|
||||||
Si vous souhiatez les utiliser il suffit de rennommer ceux-ci en supprimant
|
|
||||||
la partie -NORUN de leur nom.
|
where:
|
||||||
|
> modModule est la partie du nom du descripteur de module trouve dans le
|
||||||
|
repertoire includes/modules pour lequel le trigger doit etre.
|
||||||
|
actiff ou la valeure 'all' si ne doit pas etre actif pour un
|
||||||
|
module particulier.
|
||||||
|
> Mytrigger est le nom du trigger. La classe PHP dans le fichier trigger
|
||||||
|
aura pour nom InterfaceMytrigger.
|
||||||
|
> -NORUN est optionnel et desactive le fichier trigger si defini. Pour
|
||||||
|
utiliser un tel fichier trigger, renommer le fichier afin
|
||||||
|
d'enlever la partie -NORUN.
|
||||||
|
|
||||||
|
|
||||||
$Id$
|
$Id$
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2005-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -16,17 +16,19 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_demo.class.php
|
\file htdocs/includes/triggers/interface_all_Demo.class.php
|
||||||
\ingroup core
|
\ingroup core
|
||||||
\brief Fichier de demo de personalisation des actions du workflow
|
\brief Fichier de demo de personalisation des actions du workflow
|
||||||
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
||||||
- Le nom du fichier doit etre interface_xxx.class.php
|
- Le nom du fichier doit etre: interface_modMymodule_Mytrigger.class.php
|
||||||
|
ou: interface_all_Mytrigger.class.php
|
||||||
- Le fichier doit rester stocké dans includes/triggers
|
- Le fichier doit rester stocké dans includes/triggers
|
||||||
- Le nom de la classe doit etre InterfaceXxx
|
- Le nom de la classe doit etre InterfaceMytrigger
|
||||||
|
- Le nom de la methode constructeur doit etre InterfaceMytrigger
|
||||||
|
- Le nom de la propriete name doit etre Mytrigger
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -47,10 +49,10 @@ class InterfaceDemo
|
|||||||
{
|
{
|
||||||
$this->db = $DB ;
|
$this->db = $DB ;
|
||||||
|
|
||||||
$this->name = "Demo";
|
$this->name = "Demo"; // Put here same value than in file and class name
|
||||||
$this->family = "demo";
|
$this->family = "demo";
|
||||||
$this->description = "Les triggers de ce composant sont des fonctions vierges. Elles n'ont aucun effet. Ce composant est fourni à des fins de tutorial.";
|
$this->description = "Les triggers de ce composant sont des fonctions vierges. Elles n'ont aucun effet. Ce composant est fourni à des fins de tutorial.";
|
||||||
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
$this->version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' or version
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,17 +16,12 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_ecotax.class.php
|
\file htdocs/includes/triggers/interface_modCommande_Ecotax.class.php
|
||||||
\ingroup core
|
\ingroup core
|
||||||
\brief Ecotax ajoute
|
\brief Ajout Ecotax sur produit d'un certaine categorie
|
||||||
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
|
||||||
- Le nom du fichier doit etre interface_xxx.class.php
|
|
||||||
- Le fichier doit rester stocké dans includes/triggers
|
|
||||||
- Le nom de la classe doit etre InterfaceXxx
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -16,22 +16,17 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_demo.class.php
|
\file htdocs/includes/triggers/interface_modCommande_fraisport.class.php
|
||||||
\ingroup core
|
\ingroup core
|
||||||
\brief Fichier de demo de personalisation des actions du workflow
|
\brief Fichier trigger pour ajout frais port
|
||||||
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
|
||||||
- Le nom du fichier doit etre interface_xxx.class.php
|
|
||||||
- Le fichier doit rester stocké dans includes/triggers
|
|
||||||
- Le nom de la classe doit etre InterfaceXxx
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\class InterfaceEditeur
|
\class InterfaceFraisport
|
||||||
\brief Classe des fonctions triggers des actions personalisées du workflow
|
\brief Classe des fonctions triggers des actions personalisées du workflow
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -48,7 +43,7 @@ class InterfaceFraisport
|
|||||||
{
|
{
|
||||||
$this->db = $DB ;
|
$this->db = $DB ;
|
||||||
|
|
||||||
$this->name = "Frais de port";
|
$this->name = "Fraisport";
|
||||||
$this->family = "facture";
|
$this->family = "facture";
|
||||||
$this->description = "Les triggers de ce composant calculent les frais de port.";
|
$this->description = "Les triggers de ce composant calculent les frais de port.";
|
||||||
$this->revision = explode(' ','$Revision$');
|
$this->revision = explode(' ','$Revision$');
|
||||||
@ -16,17 +16,12 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_demo.class.php
|
\file htdocs/includes/triggers/interface_modEditeur_editeur.class.php
|
||||||
\ingroup core
|
\ingroup core
|
||||||
\brief Fichier de demo de personalisation des actions du workflow
|
\brief Fichier de demo de personalisation des actions du workflow
|
||||||
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
|
||||||
- Le nom du fichier doit etre interface_xxx.class.php
|
|
||||||
- Le fichier doit rester stocké dans includes/triggers
|
|
||||||
- Le nom de la classe doit etre InterfaceXxx
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -50,7 +45,7 @@ class InterfaceEditeur
|
|||||||
|
|
||||||
$this->name = "Editeur";
|
$this->name = "Editeur";
|
||||||
$this->family = "editeur";
|
$this->family = "editeur";
|
||||||
$this->description = "Les triggers de ce composant s'appliquent sur les utilisateurs.";
|
$this->description = "Les triggers de ce composant tri les lignes commandes par stock_loc.";
|
||||||
$this->revision = explode(' ','$Revision$');
|
$this->revision = explode(' ','$Revision$');
|
||||||
$this->version = $this->revision[1];
|
$this->version = $this->revision[1];
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2005-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -16,11 +16,10 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_ldap.class.php
|
\file htdocs/includes/triggers/interface_modLdap_Ldapsynchro.class.php
|
||||||
\ingroup core
|
\ingroup core
|
||||||
\brief Fichier de gestion des triggers LDAP
|
\brief Fichier de gestion des triggers LDAP
|
||||||
*/
|
*/
|
||||||
@ -29,11 +28,11 @@ require_once (DOL_DOCUMENT_ROOT."/lib/ldap.class.php");
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\class InterfaceLdap
|
\class InterfaceLdapsynchro
|
||||||
\brief Classe des fonctions triggers des actions de synchro LDAP
|
\brief Classe des fonctions triggers des actions de synchro LDAP
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class InterfaceLdap
|
class InterfaceLdapsynchro
|
||||||
{
|
{
|
||||||
var $db;
|
var $db;
|
||||||
var $error;
|
var $error;
|
||||||
@ -43,11 +42,11 @@ class InterfaceLdap
|
|||||||
* \brief Constructeur.
|
* \brief Constructeur.
|
||||||
* \param DB Handler d'accès base
|
* \param DB Handler d'accès base
|
||||||
*/
|
*/
|
||||||
function InterfaceLdap($DB)
|
function InterfaceLdapsynchro($DB)
|
||||||
{
|
{
|
||||||
$this->db = $DB ;
|
$this->db = $DB ;
|
||||||
|
|
||||||
$this->name = "Ldap";
|
$this->name = "Ldapsynchro";
|
||||||
$this->family = "ldap";
|
$this->family = "ldap";
|
||||||
$this->description = "Les triggers de ce composant permettent d'effectuer les synchro de Dolibarr vers un annuaire LDAP.";
|
$this->description = "Les triggers de ce composant permettent d'effectuer les synchro de Dolibarr vers un annuaire LDAP.";
|
||||||
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -16,11 +16,10 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_notification.class.php
|
\file htdocs/includes/triggers/interface_modNotification_notification.class.php
|
||||||
\ingroup notification
|
\ingroup notification
|
||||||
\brief Fichier de gestion des notifications sur evenement Dolibarr
|
\brief Fichier de gestion des notifications sur evenement Dolibarr
|
||||||
*/
|
*/
|
||||||
@ -45,7 +44,7 @@ class InterfaceNotification
|
|||||||
|
|
||||||
$this->name = "Notification";
|
$this->name = "Notification";
|
||||||
$this->family = "notification";
|
$this->family = "notification";
|
||||||
$this->description = "Les triggers de ce composant sont les fonctions qui gèrent les notifications par mail du module Notification.";
|
$this->description = "Les triggers de ce composant envoie les notifications par mail selon configuration du module Notification.";
|
||||||
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,28 +16,23 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
* $Source$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\file htdocs/includes/triggers/interface_webcal.class.php
|
\file htdocs/includes/triggers/interface_modWebcalendar_webcalsynchro.class.php
|
||||||
\ingroup webcalendar
|
\ingroup webcalendar
|
||||||
\brief Fichier de demo de personalisation des actions du workflow
|
\brief Fichier de gestion des triggers webcalendar
|
||||||
\remarks Son propre fichier d'actions peut etre créé par recopie de celui-ci:
|
|
||||||
- Le nom du fichier doit etre interface_xxx.class.php
|
|
||||||
- Le fichier doit rester stocké dans includes/triggers
|
|
||||||
- Le nom de la classe doit etre InterfaceXxx
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/lib/webcal.class.php');
|
include_once(DOL_DOCUMENT_ROOT.'/lib/webcal.class.php');
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\class InterfaceWebCal
|
\class InterfaceWebcalsynchro
|
||||||
\brief Classe des fonctions triggers des actions webcalendar
|
\brief Classe des fonctions triggers des actions webcalendar
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class InterfaceWebCal
|
class InterfaceWebcalsynchro
|
||||||
{
|
{
|
||||||
var $db;
|
var $db;
|
||||||
var $error;
|
var $error;
|
||||||
@ -51,11 +46,11 @@ class InterfaceWebCal
|
|||||||
* \brief Constructeur.
|
* \brief Constructeur.
|
||||||
* \param DB Handler d'accès base
|
* \param DB Handler d'accès base
|
||||||
*/
|
*/
|
||||||
function InterfaceWebCal($DB)
|
function InterfaceWebcalsynchro($DB)
|
||||||
{
|
{
|
||||||
$this->db = $DB ;
|
$this->db = $DB ;
|
||||||
|
|
||||||
$this->name = "WebCal";
|
$this->name = "Webcalsynchro";
|
||||||
$this->family = "webcal";
|
$this->family = "webcal";
|
||||||
$this->description = "Les triggers de ce composant permettent d'insérer un évênement dans le calendrier webcalendar pour chaque grand évênement Dolibarr.";
|
$this->description = "Les triggers de ce composant permettent d'insérer un évênement dans le calendrier webcalendar pour chaque grand évênement Dolibarr.";
|
||||||
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
|
||||||
@ -54,67 +54,86 @@ class Interfaces
|
|||||||
* \param user Objet user
|
* \param user Objet user
|
||||||
* \param lang Objet lang
|
* \param lang Objet lang
|
||||||
* \param conf Objet conf
|
* \param conf Objet conf
|
||||||
* \return int Nb triggers déclenchés si pas d'erreurs, -Nb en erreur sinon.
|
* \return int Nb triggers ayant agit si pas d'erreurs, -Nb en erreur sinon.
|
||||||
*/
|
*/
|
||||||
function run_triggers($action,$object,$user,$lang,$conf)
|
function run_triggers($action,$object,$user,$lang,$conf)
|
||||||
{
|
{
|
||||||
|
|
||||||
$handle=opendir($this->dir);
|
$handle=opendir($this->dir);
|
||||||
$modules = array();
|
$modules = array();
|
||||||
$nbtotal = $nbok = $nbko = 0;
|
$nbfile = $nbtotal = $nbok = $nbko = 0;
|
||||||
|
|
||||||
while (($file = readdir($handle))!==false)
|
while (($file = readdir($handle))!==false)
|
||||||
{
|
{
|
||||||
if (is_readable($this->dir."/".$file) && eregi('interface_(.*).class.php$',$file,$reg))
|
if (is_readable($this->dir."/".$file) && eregi('^interface_([^_]+)_(.+)\.class\.php',$file,$reg))
|
||||||
{
|
{
|
||||||
$modName = "Interface".ucfirst($reg[1]);
|
$nbfile++;
|
||||||
|
|
||||||
|
$modName = "Interface".ucfirst($reg[2]);
|
||||||
//print "file=$file"; print "modName=$modName"; exit;
|
//print "file=$file"; print "modName=$modName"; exit;
|
||||||
if ($modName)
|
if (in_array($modName,$modules))
|
||||||
{
|
{
|
||||||
if (in_array($modName,$modules))
|
$langs->load("errors");
|
||||||
|
dolibarr_syslog("Interface::run_triggers ".$langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/"),LOG_ERR);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if trigger file is disabled by name
|
||||||
|
if (eregi('NORUN$',$file))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Check if trigger file is for a particular module
|
||||||
|
$qualified=true;
|
||||||
|
if (strtolower($reg[1]) != 'all')
|
||||||
|
{
|
||||||
|
$module=eregi_replace('^mod','',$reg[1]);
|
||||||
|
$constparam='MAIN_MODULE_'.strtoupper($module);
|
||||||
|
if (empty($conf->global->$constparam)) $qualified=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $qualified)
|
||||||
|
{
|
||||||
|
dolibarr_syslog("Interfaces::run_triggers Triggers for file '".$file."' need module to be enabled",LOG_INFO);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once($this->dir."/".$file);
|
||||||
|
$objMod = new $modName($this->db);
|
||||||
|
if ($objMod)
|
||||||
|
{
|
||||||
|
$modules[$i] = $modName;
|
||||||
|
//dolibarr_syslog("Interfaces::run_triggers Launch triggers for file '".$file."'",LOG_INFO);
|
||||||
|
$result=$objMod->run_trigger($action,$object,$user,$lang,$conf);
|
||||||
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$langs->load("errors");
|
// Action OK
|
||||||
dolibarr_syslog($langs->trans("ErrorDuplicateTrigger",$modName,"/htdocs/includes/triggers/"),LOG_ERR);
|
$nbtotal++;
|
||||||
|
$nbok++;
|
||||||
}
|
}
|
||||||
else
|
if ($result == 0)
|
||||||
{
|
{
|
||||||
include_once($this->dir."/".$file);
|
// Aucune action faite
|
||||||
$objMod = new $modName($this->db);
|
$nbtotal++;
|
||||||
if ($objMod)
|
|
||||||
{
|
|
||||||
$modules[$i] = $modName;
|
|
||||||
$result=$objMod->run_trigger($action,$object,$user,$lang,$conf);
|
|
||||||
if ($result > 0)
|
|
||||||
{
|
|
||||||
// Action OK
|
|
||||||
$nbtotal++;
|
|
||||||
$nbok++;
|
|
||||||
}
|
|
||||||
if ($result == 0)
|
|
||||||
{
|
|
||||||
// Aucune action faite
|
|
||||||
$nbtotal++;
|
|
||||||
}
|
|
||||||
if ($result < 0)
|
|
||||||
{
|
|
||||||
// Action KO
|
|
||||||
$nbtotal++;
|
|
||||||
$nbko++;
|
|
||||||
$this->errors[]=$objMod->error;
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
// Action KO
|
||||||
|
$nbtotal++;
|
||||||
|
$nbko++;
|
||||||
|
$this->errors[]=$objMod->error;
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($nbko)
|
if ($nbko)
|
||||||
{
|
{
|
||||||
dolibarr_syslog("Interfaces::run_triggers Found: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko);
|
dolibarr_syslog("Interfaces::run_triggers Files found: ".$nbfile.", Files launched: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko, LOG_ERR);
|
||||||
return -$nbko;
|
return -$nbko;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//dolibarr_syslog("Interfaces::run_triggers Files found: ".$nbfile.", Files launched: ".$nbtotal.", Done: ".$nbok.", Failed: ".$nbko, LOG_DEBUG);
|
||||||
return $nbok;
|
return $nbok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,6 +48,7 @@ MenuLimits=Limits and accuracy
|
|||||||
NotConfigured=Not configured
|
NotConfigured=Not configured
|
||||||
Setup=Setup
|
Setup=Setup
|
||||||
Activation=Activation
|
Activation=Activation
|
||||||
|
Active=Active
|
||||||
SetupShort=Setup
|
SetupShort=Setup
|
||||||
OtherOptions=Other options
|
OtherOptions=Other options
|
||||||
OtherSetup=Other setup
|
OtherSetup=Other setup
|
||||||
@ -480,6 +481,10 @@ CompanyFundationDesc=Edit on this page all known information of the company or f
|
|||||||
DisplayDesc=You can choose here all parameters related to the Dolibarr look and feel
|
DisplayDesc=You can choose here all parameters related to the Dolibarr look and feel
|
||||||
TriggersAvailable=Triggers available
|
TriggersAvailable=Triggers available
|
||||||
TriggersDesc=Triggers are files that, once copied into directory <b>htdocs/includes/triggers</b>, modify the behaviour of Dolibarr workflow. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
|
TriggersDesc=Triggers are files that, once copied into directory <b>htdocs/includes/triggers</b>, modify the behaviour of Dolibarr workflow. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...).
|
||||||
|
TriggerDisabledByName=Triggers in this file are disabled by <b>-NORUN</b> suffix in name.
|
||||||
|
TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module <b>%s</b> is disabled.
|
||||||
|
TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules.
|
||||||
|
TriggerActiveAsModuleActive=Triggers in this file are active as module <b>%s</b> is enabled.
|
||||||
GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password
|
GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password
|
||||||
DictionnaryDesc=Define here all reference datas. You can complete predefined value with yours
|
DictionnaryDesc=Define here all reference datas. You can complete predefined value with yours
|
||||||
ConstDesc=All other parameters not available in previous pages
|
ConstDesc=All other parameters not available in previous pages
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# Dolibarr language file - en_US - errors
|
# Dolibarr language file - en_US - errors
|
||||||
ErrorDuplicateTrigger=A trigger file named '<b>%s</b>' is already loaded. Remove duplicate trigger file in directory '<b>%s</b>'.
|
ErrorDuplicateTrigger=A trigger file with class nam '<b>%s</b>' is present sevaral times. Remove duplicate trigger file in directory '<b>%s</b>'.
|
||||||
ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
|
ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
|
||||||
ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
|
ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
|
||||||
ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.
|
ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.
|
||||||
|
|||||||
@ -48,6 +48,7 @@ MenuLimits=Limites et pr
|
|||||||
NotConfigured=Non configuré
|
NotConfigured=Non configuré
|
||||||
Setup=Configuration
|
Setup=Configuration
|
||||||
Activation=Activation
|
Activation=Activation
|
||||||
|
Active=Actif
|
||||||
SetupShort=Config
|
SetupShort=Config
|
||||||
OtherOptions=Autres options
|
OtherOptions=Autres options
|
||||||
OtherSetup=Divers
|
OtherSetup=Divers
|
||||||
@ -479,6 +480,10 @@ CompanyFundationDesc=
|
|||||||
DisplayDesc=Vous pouvez choisir ici tous les paramètres liés à l'apparence de Dolibarr
|
DisplayDesc=Vous pouvez choisir ici tous les paramètres liés à l'apparence de Dolibarr
|
||||||
TriggersAvailable=Triggers disponibles
|
TriggersAvailable=Triggers disponibles
|
||||||
TriggersDesc=Les triggers sont des fichiers qui, une fois déposés dans le répertoire <b>htdocs/includes/triggers</b>, modifient le comportement du workflow de Dolibarr. Ils réalisent des actions supplémentaires, déclenchées par les événements Dolibarr (création société, validation facture, clôture contrat...).
|
TriggersDesc=Les triggers sont des fichiers qui, une fois déposés dans le répertoire <b>htdocs/includes/triggers</b>, modifient le comportement du workflow de Dolibarr. Ils réalisent des actions supplémentaires, déclenchées par les événements Dolibarr (création société, validation facture, clôture contrat...).
|
||||||
|
TriggerDisabledByName=Triggers de ce fichier désactivés par le suffix <b>-NORUN</b> dans le nom du fichier.
|
||||||
|
TriggerDisabledAsModuleDisabled=Triggers de ce fichier désactivés car le module <b>%s</b> n'est pas actif.
|
||||||
|
TriggerAlwaysActive=Triggers de ce fichier toujours actifs, quelque soient les modules Dolibarr activés.
|
||||||
|
TriggerActiveAsModuleActive=Triggers de ce fichier actifs car le module <b>%s</b> est actif.
|
||||||
GeneratedPasswordDesc=Definissez ici quelle règle vous voulez utilisez pour générer les mots de passe quand vous demander à fabriquer un nouveau mot de passe
|
GeneratedPasswordDesc=Definissez ici quelle règle vous voulez utilisez pour générer les mots de passe quand vous demander à fabriquer un nouveau mot de passe
|
||||||
DictionnaryDesc=Definissez ici les données de référence. Vous pouvez compléter/modifier les données prédéfinies avec les votres
|
DictionnaryDesc=Definissez ici les données de référence. Vous pouvez compléter/modifier les données prédéfinies avec les votres
|
||||||
ConstDesc=Tout autre parametre non editable dans les pages précédentes
|
ConstDesc=Tout autre parametre non editable dans les pages précédentes
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# Dolibarr language file - fr_FR - errors
|
# Dolibarr language file - fr_FR - errors
|
||||||
ErrorDuplicateTrigger=Un fichier trigger du nom de '<b>%s</b>' est deja chargé. Supprimer le doublon du répertoire '<b>%s</b>'.
|
ErrorDuplicateTrigger=Un fichier trigger de classe '<b>%s</b>' est present plusieurs fois. Supprimer le doublon du répertoire '<b>%s</b>'.
|
||||||
ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
|
ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
|
||||||
ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme contact pour ce type.
|
ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme contact pour ce type.
|
||||||
ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que les mode de réglement de type <b>espèce</b>.
|
ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que les mode de réglement de type <b>espèce</b>.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user