Skip to content
Snippets Groups Projects
Commit c8338f45 authored by Marcos García de La Fuente's avatar Marcos García de La Fuente
Browse files

Refactored Dolibarr triggers:

Created a DolibarrTriggers abstract class.
Moved common variables out of construct class
Improved run_trigger method signature
parent 2564413a
Branches
No related tags found
No related merge requests found
Showing
with 301 additions and 1151 deletions
......@@ -23,6 +23,7 @@
* \brief Fichier de la classe de gestion des triggers
*/
require_once DOL_DOCUMENT_ROOT.'/htdocs/core/triggers/DolibarrTriggers.class.php';
/**
* Class to manage triggers
......
<?php
/*
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
abstract class DolibarrTriggers {
/**
* Database handler
* @var DoliDB
*/
protected $db;
/**
* Name of the trigger
* @var mixed|string
*/
public $name = '';
/**
* Description of the trigger
* @var string
*/
public $description = '';
/**
* Version of the trigger
* @var string
*/
public $version = self::VERSION_DEVELOPMENT;
/**
* Image of the trigger
* @var string
*/
public $picto = 'technic';
/**
* Category of the trigger
* @var string
*/
public $family = '';
const VERSION_DEVELOPMENT = 'development';
const VERSION_EXPERIMENTAL = 'experimental';
const VERSION_DOLIBARR = 'dolibarr';
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct(DoliDB $db) {
$this->db = $db;
if (!isset($this->name)) {
$this->name = preg_replace('/^Interface/i', '', get_class($this));
}
}
/**
* Returns the name of the trigger file
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Returns the description of trigger file
*
* @return string
*/
public function getDesc()
{
return $this->description;
}
/**
* Returns the version of the trigger file
*
* @return string Version of trigger file
*/
public function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == self::VERSION_DEVELOPMENT) {
return $langs->trans("Development");
} elseif ($this->version == self::VERSION_EXPERIMENTAL) {
return $langs->trans("Experimental");
} elseif ($this->version == self::VERSION_DOLIBARR) {
return DOL_VERSION;
} elseif ($this->version) {
return $this->version;
} else {
return $langs->trans("Unknown");
}
}
/**
* Function called when a Dolibarrr business event is done.
* All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers
*
* @param string $action Event action code
* @param Object $object Object
* @param User $user Object user
* @param Translate $langs Object langs
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
abstract function run_trigger($action, $object, User $user, Translate $langs, Conf $conf);
}
\ No newline at end of file
<?php
/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -26,67 +27,18 @@
/**
* Class of triggers for security events
*/
class InterfaceLogevents
class InterfaceLogevents extends DolibarrTriggers
{
var $db;
var $error;
public $picto = 'technic';
public $family = 'core';
public $description = "Triggers of this module allows to add security event records inside Dolibarr.";
public $version = self::VERSION_DOLIBARR;
var $date;
var $duree;
var $texte;
var $desc;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "core";
$this->description = "Triggers of this module allows to add security event records inside Dolibarr.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->picto = 'technic';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
/**
* Function called when a Dolibarrr business event is done.
......@@ -97,10 +49,9 @@ class InterfaceLogevents
* @param User $user Object user
* @param Translate $langs Object langs
* @param conf $conf Object conf
* @param string $entity Value for instance of data (Always 1 except if module MultiCompany is installed)
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf,$entity=1)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (! empty($conf->global->MAIN_LOGEVENTS_DISABLE_ALL)) return 0; // Log events is disabled (hidden features)
......
<?php
/* Copyright (C) 2011-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -25,67 +26,16 @@
/**
* Class of triggers for paypal module
*/
class InterfacePaypalWorkflow
class InterfacePaypalWorkflow extends DolibarrTriggers
{
var $db;
public $picto = 'paypal@paypal';
public $family = 'paypal';
public $description = "Triggers of this module allows to manage paypal workflow";
public $version = self::VERSION_DOLIBARR;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "paypal";
$this->description = "Triggers of this module allows to manage paypal workflow";
$this->version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' or version
$this->picto = 'paypal@paypal';
}
/**
* Renvoi nom du lot de triggers
*
* @return string Nom du lot de triggers
*/
function getName()
{
return $this->name;
}
/**
* Renvoi descriptif du lot de triggers
*
* @return string Descriptif du lot de triggers
*/
function getDesc()
{
return $this->description;
}
/**
* Renvoi version du lot de triggers
*
* @return string Version du lot de triggers
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'development') return $langs->trans("Development");
elseif ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
/**
* Fonction appelee lors du declenchement d'un evenement Dolibarr.
* D'autres fonctions run_trigger peuvent etre presentes dans core/triggers
* Function called when a Dolibarrr business event is done.
* All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers
*
* @param string $action Event action code
* @param Object $object Object
......@@ -94,7 +44,7 @@ class InterfacePaypalWorkflow
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
// Mettre ici le code a executer en reaction de l'action
// Les donnees de l'action sont stockees dans $object
......
<?php
/* Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -27,63 +28,12 @@
* Class of triggers for workflow module
*/
class InterfaceWorkflowManager
class InterfaceWorkflowManager extends DolibarrTriggers
{
var $db;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "core";
$this->description = "Triggers of this module allows to manage workflows";
$this->version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' or version
$this->picto = 'technic';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'development') return $langs->trans("Development");
elseif ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
public $picto = 'paypal@paypal';
public $family = 'core';
public $description = "Triggers of this module allows to manage workflows";
public $version = self::VERSION_DOLIBARR;
/**
* Function called when a Dolibarrr business event is done.
......@@ -96,7 +46,7 @@ class InterfaceWorkflowManager
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (empty($conf->workflow->enabled)) return 0; // Module not active, we do nothing
......
......@@ -3,6 +3,7 @@
* Copyright (C) 2009-2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Cedric GROSS <c.gross@kreiz-it.fr>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -28,68 +29,18 @@
/**
* Class of triggered functions for agenda module
*/
class InterfaceActionsAuto
class InterfaceActionsAuto extends DolibarrTriggers
{
var $db;
var $error;
public $family = 'agenda';
public $description = "Triggers of this module add actions in agenda according to setup made in agenda setup.";
public $version = self::VERSION_DOLIBARR;
public $picto = 'action';
var $date;
var $duree;
var $texte;
var $desc;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "agenda";
$this->description = "Triggers of this module add actions in agenda according to setup made in agenda setup.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->picto = 'action';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
/**
* Function called when a Dolibarrr business event is done.
* All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers
......@@ -111,7 +62,7 @@ class InterfaceActionsAuto
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
$key='MAIN_AGENDA_ACTIONAUTO_'.$action;
//dol_syslog("xxxxxxxxxxx".$key);
......
<?php
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -27,63 +28,12 @@ require_once (DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php");
/**
* Class of triggers for ldap module
*/
class InterfaceLdapsynchro
class InterfaceLdapsynchro extends DolibarrTriggers
{
var $db;
var $error;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "ldap";
$this->description = "Triggers of this module allows to synchronize Dolibarr toward a LDAP database.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->picto = 'technic';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
public $family = 'ldap';
public $description = "Triggers of this module allows to synchronize Dolibarr toward a LDAP database.";
public $version = self::VERSION_DOLIBARR;
public $picto = 'technic';
/**
* Function called when a Dolibarrr business event is done.
......@@ -96,7 +46,7 @@ class InterfaceLdapsynchro
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (empty($conf->ldap->enabled)) return 0; // Module not active, we do nothing
......
<?php
/* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -27,63 +28,12 @@ require_once (DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php");
/**
* Class of triggers for MailmanSpip module
*/
class InterfaceMailmanSpipsynchro
class InterfaceMailmanSpipsynchro extends DolibarrTriggers
{
var $db;
var $error;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "ldap";
$this->description = "Triggers of this module allows to synchronize Mailman an Spip.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->picto = 'technic';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
public $family = 'ldap';
public $description = "Triggers of this module allows to synchronize Mailman an Spip.";
public $version = self::VERSION_DOLIBARR;
public $picto = 'technic';
/**
* Function called when a Dolibarrr business event is done.
......@@ -96,7 +46,7 @@ class InterfaceMailmanSpipsynchro
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (empty($conf->mailmanspip->enabled)) return 0; // Module not active, we do nothing
......
<?php
/* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2013-2014 Marcos García <marcosgdf@gmail.com>
*
* 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
......@@ -27,9 +27,13 @@
/**
* Class of triggers for notification module
*/
class InterfaceNotification
class InterfaceNotification extends DolibarrTriggers
{
var $db;
public $family = 'notification';
public $description = "Triggers of this module send email notifications according to Notification module setup.";
public $version = self::VERSION_DOLIBARR;
public $picto = 'email';
var $listofmanagedevents=array(
'BILL_VALIDATE',
'ORDER_VALIDATE',
......@@ -40,58 +44,6 @@ class InterfaceNotification
'SHIPPING_VALIDATE'
);
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "notification";
$this->description = "Triggers of this module send email notifications according to Notification module setup.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->picto = 'email';
}
/**
* Return name of trigger file
*
* @return string Name of trigger file
*/
function getName()
{
return $this->name;
}
/**
* Return description of trigger file
*
* @return string Description of trigger file
*/
function getDesc()
{
return $this->description;
}
/**
* Return version of trigger file
*
* @return string Version of trigger file
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
/**
* Function called when a Dolibarrr business event is done.
* All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers
......@@ -103,7 +55,7 @@ class InterfaceNotification
* @param conf $conf Object conf
* @return int <0 if KO, 0 if no triggered ran, >0 if OK
*/
function run_trigger($action,$object,$user,$langs,$conf)
public function run_trigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (empty($conf->notification->enabled)) return 0; // Module not active, we do nothing
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment