mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Qual: Clean code by moving synchro with mailman into mailman trigger
New: A trigger can return an array of error strings instead of one error string.
This commit is contained in:
parent
e460aa335c
commit
c4bc10b8eb
|
|
@ -68,12 +68,14 @@ For developers:
|
|||
key to use a specific language file.
|
||||
- New: Make some changes to allow usage of several alternative $dolibarr_main_url_root variables.
|
||||
Fix also several bugs with old code.
|
||||
- Qual: All nowrap properties are now using CSS class nowrap.
|
||||
- Qual: All nowrap properties are now using CSS class nowrap.
|
||||
- Qual: Move hardcoded code of module mailmanspip into trigger.
|
||||
- New: Into POST forms, if you can add a parameter DOL_AUTOSET_COOKIE with a vlue that is list name,
|
||||
separated by a coma, of other POST parameters, Dolibarr will automatically save this parameters
|
||||
into user cookies.
|
||||
- New: Add hook addHomeSetup.
|
||||
- New: Add trigger CATEGORY_LINK and CATEGORY_UNLINK.
|
||||
- New: A trigger can return an array of error strings instead of one error string.
|
||||
|
||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
|
|
|||
|
|
@ -1419,8 +1419,7 @@ class Adherent extends CommonObject
|
|||
|
||||
|
||||
/**
|
||||
* Fonction qui ajoute l'adherent aux abonnements automatiques mailing-list, spip, etc.
|
||||
* TODO Move this into member creation trigger (trigger of mailmanspip module)
|
||||
* Function to add member into external tools mailing-list, spip, etc.
|
||||
*
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
|
|
@ -1439,7 +1438,7 @@ class Adherent extends CommonObject
|
|||
$result=$mailmanspip->add_to_mailman($this);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error=$mailmanspip->error;
|
||||
if (! empty($mailmanspip->error)) $this->errors[]=$mailmanspip->error;
|
||||
$err+=1;
|
||||
}
|
||||
foreach ($mailmanspip->mladded_ko as $tmplist => $tmpemail)
|
||||
|
|
@ -1460,7 +1459,7 @@ class Adherent extends CommonObject
|
|||
$result=$mailmanspip->add_to_spip($this);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error=$mailmanspip->error;
|
||||
$this->errors[]=$mailmanspip->error;
|
||||
$err+=1;
|
||||
}
|
||||
}
|
||||
|
|
@ -1476,8 +1475,7 @@ class Adherent extends CommonObject
|
|||
|
||||
|
||||
/**
|
||||
* Fonction qui supprime l'adherent des abonnements automatiques mailing-list, spip, etc.
|
||||
* TODO Move this into member deletion trigger (trigger of mailmanspip module)
|
||||
* Function to delete a member from external tools like mailing-list, spip, etc.
|
||||
*
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
|
|
@ -1496,7 +1494,7 @@ class Adherent extends CommonObject
|
|||
$result=$mailmanspip->del_to_mailman($this);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error=$mailmanspip->error;
|
||||
if (! empty($mailmanspip->error)) $this->errors[]=$mailmanspip->error;
|
||||
$err+=1;
|
||||
}
|
||||
|
||||
|
|
@ -1517,6 +1515,7 @@ class Adherent extends CommonObject
|
|||
$result=$mailmanspip->del_to_spip($this);
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->errors[]=$mailmanspip->error;
|
||||
$err+=1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -359,34 +359,6 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
|||
}
|
||||
}
|
||||
|
||||
// Rajoute l'utilisateur dans les divers abonnements (mailman, spip, etc...)
|
||||
// TODO Move this into update trigger MEMBER_MODIFY
|
||||
if (($object->oldcopy->email != $object->email) || ($object->oldcopy->typeid != $object->typeid))
|
||||
{
|
||||
if ($object->oldcopy->email != $object->email) // If email has changed we delete mailman subscription for old email
|
||||
{
|
||||
if ($object->oldcopy->del_to_abo() < 0)
|
||||
{
|
||||
if (! empty($object->oldcopy->error)) setEventMessage($langs->trans("ErrorFailedToRemoveToMailmanList").': '.$object->oldcopy->error, 'errors');
|
||||
setEventMessage($object->oldcopy->errors, 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessage($object->oldcopy->mesgs,'mesgs');
|
||||
}
|
||||
}
|
||||
// We add subscription if new email or new type (new type may means more mailing-list to subscribe)
|
||||
if ($object->add_to_abo() < 0)
|
||||
{
|
||||
if (! empty($object->error)) setEventMessage($langs->trans("ErrorFailedToAddToMailmanList").': '.$object->error, 'errors');
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessage($object->mesgs, 'mesgs');
|
||||
}
|
||||
}
|
||||
|
||||
$rowid=$object->id;
|
||||
$action='';
|
||||
|
||||
|
|
@ -601,15 +573,6 @@ if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm ==
|
|||
$errmsg.=$object->error;
|
||||
}
|
||||
}
|
||||
|
||||
// Add user to other systems (mailman, spip, etc...)
|
||||
// TODO Move this into trigger on validate action
|
||||
if (! $error && $object->add_to_abo() < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$error++;
|
||||
$errmsg.= $langs->trans("ErrorFailedToAddToMailmanList").': '.$object->error." ".join(',',$object->errors)."<br>\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -648,13 +611,6 @@ if ($user->rights->adherent->supprimer && $action == 'confirm_resign')
|
|||
{
|
||||
$errmsg.=$object->error;
|
||||
}
|
||||
|
||||
// supprime l'utilisateur des divers abonnements ..
|
||||
if ($object->del_to_abo() < 0)
|
||||
{
|
||||
// error
|
||||
$errmsg.=$langs->trans("FaildToRemoveFromMailmanList").': '.$object->error."<br>\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ $socid = GETPOST('socid','int');
|
|||
$id = GETPOST('id','int');
|
||||
$ref = GETPOST('ref');
|
||||
$type = GETPOST('type');
|
||||
$mesg = GETPOST('mesg');
|
||||
|
||||
$removecat = GETPOST('removecat','int');
|
||||
$parent=GETPOST('parent','int');
|
||||
|
|
@ -147,6 +146,11 @@ if (empty($reshook))
|
|||
$result=$cat->fetch($removecat);
|
||||
|
||||
$result=$cat->del_type($object,$elementtype);
|
||||
if ($result < 0)
|
||||
{
|
||||
setEventMessage($cat->error,'errors');
|
||||
setEventMessage($cat->errors,'errors');
|
||||
}
|
||||
}
|
||||
|
||||
// Add object into a category
|
||||
|
|
@ -191,12 +195,19 @@ if (empty($reshook))
|
|||
$result=$cat->add_type($object,$elementtype);
|
||||
if ($result >= 0)
|
||||
{
|
||||
$mesg='<div class="ok">'.$langs->trans("WasAddedSuccessfully",$cat->label).'</div>';
|
||||
setEventMessage($langs->trans("WasAddedSuccessfully",$cat->label));
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($cat->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') $mesg='<div class="error">'.$langs->trans("ObjectAlreadyLinkedToCategory").'</div>';
|
||||
else $mesg=$langs->trans("Error").' '.$cat->error;
|
||||
if ($cat->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
|
||||
{
|
||||
setEventMessage($langs->trans("ObjectAlreadyLinkedToCategory"),'warnings');
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessage($cat->error,'errors');
|
||||
setEventMessage($cat->errors,'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -308,8 +319,6 @@ if ($socid)
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
if ($soc->client) formCategory($db,$soc,2,$socid);
|
||||
|
||||
if ($soc->client && $soc->fournisseur) print '<br><br>';
|
||||
|
|
@ -368,8 +377,6 @@ else if ($id || $ref)
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
formCategory($db,$product,0);
|
||||
}
|
||||
|
||||
|
|
@ -449,8 +456,6 @@ else if ($id || $ref)
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
formCategory($db,$member,3);
|
||||
}
|
||||
if ($type == 4)
|
||||
|
|
@ -597,8 +602,6 @@ else if ($id || $ref)
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
formCategory($db,$object,4);
|
||||
}
|
||||
}
|
||||
|
|
@ -726,5 +729,6 @@ function formCategory($db,$object,$typeid,$socid=0)
|
|||
|
||||
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -384,12 +384,12 @@ class Categorie
|
|||
* Link an object to the category
|
||||
*
|
||||
* @param Object $obj Object to link to category
|
||||
* @param string $type Type of category (member, supplier, product, customer)
|
||||
* @param string $type Type of category (member, supplier, product, customer, contact)
|
||||
* @return int 1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked
|
||||
*/
|
||||
function add_type($obj,$type)
|
||||
{
|
||||
global $conf;
|
||||
global $user,$langs,$conf;
|
||||
|
||||
$error=0;
|
||||
|
||||
|
|
@ -407,10 +407,10 @@ class Categorie
|
|||
dol_syslog(get_class($this).'::add_type sql='.$sql);
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
if (!empty($conf->global->CATEGORIE_RECURSIV_ADD))
|
||||
if (! empty($conf->global->CATEGORIE_RECURSIV_ADD))
|
||||
{
|
||||
$sql = 'SELECT fk_parent FROM '.MAIN_DB_PREFIX.'categorie';
|
||||
$sql.= " WHERE rowid = '".$this->id."'";
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::add_type sql=".$sql);
|
||||
$resql=$this->db->query($sql);
|
||||
|
|
@ -435,13 +435,13 @@ class Categorie
|
|||
}
|
||||
|
||||
// Save object we want to link category to into category instance to provide information to trigger
|
||||
$this->linkto=$object;
|
||||
$this->linkto=$obj;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('CATEGORY_LINK',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=join(',',$this->errors); }
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=$interface->error; }
|
||||
// Fin appel triggers
|
||||
|
||||
if (! $error) return 1;
|
||||
|
|
@ -471,6 +471,8 @@ class Categorie
|
|||
*/
|
||||
function del_type($obj,$type)
|
||||
{
|
||||
global $user,$langs,$conf;
|
||||
|
||||
$error=0;
|
||||
|
||||
if ($type == 'company') $type='societe';
|
||||
|
|
@ -493,7 +495,7 @@ class Categorie
|
|||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('CATEGORY_UNLINK',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=join(',',$this->errors); }
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=$this->error; }
|
||||
// Fin appel triggers
|
||||
|
||||
if (! $error) return 1;
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ class Interfaces
|
|||
// Action KO
|
||||
$nbtotal++;
|
||||
$nbko++;
|
||||
$this->errors[]=$objMod->error;
|
||||
if (! empty($objMod->error)) $this->errors[]=$objMod->error;
|
||||
if (! empty($objMod->errors)) $this->errors=array_merge($this->errors,$objMod->errors);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ class InterfaceLdapsynchro
|
|||
if ($action == 'USER_CREATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -129,7 +129,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'USER_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -166,7 +166,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'USER_NEW_PASSWORD')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -207,7 +207,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'USER_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -226,7 +226,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'USER_SETINGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -264,7 +264,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'USER_REMOVEFROMGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -304,7 +304,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'GROUP_CREATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -327,7 +327,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'GROUP_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -364,7 +364,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'GROUP_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
if (! empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap')
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -385,7 +385,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'CONTACT_CREATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -404,7 +404,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'CONTACT_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -441,7 +441,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'CONTACT_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_CONTACT_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -462,7 +462,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_CREATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -481,7 +481,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_VALIDATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
// If status field is setup to be synchronized
|
||||
if (! empty($conf->global->LDAP_FIELD_MEMBER_STATUS))
|
||||
|
|
@ -505,7 +505,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_SUBSCRIPTION')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
// If subscriptions fields are setup to be synchronized
|
||||
if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE
|
||||
|
|
@ -533,7 +533,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
@ -570,7 +570,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_NEW_PASSWORD')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
// If password field is setup to be synchronized
|
||||
if ($conf->global->LDAP_FIELD_PASSWORD || $conf->global->LDAP_FIELD_PASSWORD_CRYPTED)
|
||||
|
|
@ -594,7 +594,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_RESILIATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
// If status field is setup to be synchronized
|
||||
if (! empty($conf->global->LDAP_FIELD_MEMBER_STATUS))
|
||||
|
|
@ -618,7 +618,7 @@ class InterfaceLdapsynchro
|
|||
elseif ($action == 'MEMBER_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
if (! empty($conf->global->LDAP_MEMBER_ACTIVE))
|
||||
{
|
||||
$ldap=new Ldap();
|
||||
$ldap->connect_bind();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,247 @@
|
|||
<?php
|
||||
/* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/triggers/interface_50_modMailmanspip_Mailmanspipsynchro.class.php
|
||||
* \ingroup core
|
||||
* \brief File to manage triggers Mailman and Spip
|
||||
*/
|
||||
require_once (DOL_DOCUMENT_ROOT."/mailmanspip/class/mailmanspip.class.php");
|
||||
require_once (DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php");
|
||||
|
||||
|
||||
/**
|
||||
* Class of triggers for MailmanSpip module
|
||||
*/
|
||||
class InterfaceMailmanSpipsynchro
|
||||
{
|
||||
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");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
function run_trigger($action,$object,$user,$langs,$conf)
|
||||
{
|
||||
if (empty($conf->mailmanspip->enabled)) return 0; // Module not active, we do nothing
|
||||
|
||||
if (! function_exists('ldap_connect'))
|
||||
{
|
||||
dol_syslog("Warning, module LDAP is enabled but LDAP functions not available in this PHP", LOG_WARNING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Users
|
||||
if ($action == 'USER_CREATE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
}
|
||||
elseif ($action == 'USER_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'USER_NEW_PASSWORD')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'USER_ENABLEDISABLE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'USER_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'USER_SETINGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'USER_REMOVEFROMGROUP')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
|
||||
elseif ($action == 'CATEGORY_LINK')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
// We add subscription if new email or new type (new type may means more mailing-list to subscribe)
|
||||
if ($object->linkto->add_to_abo() < 0)
|
||||
{
|
||||
$this->error=$object->linkto->error;
|
||||
$this->errors=$object->linkto->errors;
|
||||
$return=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return=1;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
elseif ($action == 'CATEGORY_UNLINK')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
if ($object->unlinkoff->del_to_abo() < 0)
|
||||
{
|
||||
$this->error=$object->unlinkoff->error;
|
||||
$this->errors=$object->unlinkoff->errors;
|
||||
$return=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return=1;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
// Members
|
||||
elseif ($action == 'MEMBER_VALIDATE' || $action == 'MEMBER_MODIFY')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
$return=0;
|
||||
// Add user into some linked tools (mailman, spip, etc...)
|
||||
if (($object->oldcopy->email != $object->email) || ($object->oldcopy->typeid != $object->typeid)) // TODO Do del/add also if type change
|
||||
{
|
||||
if ($object->oldcopy->email != $object->email) // If email has changed we delete mailman subscription for old email
|
||||
{
|
||||
if ($object->oldcopy->del_to_abo() < 0)
|
||||
{
|
||||
if (! empty($object->oldcopy->error)) $this->error=$object->oldcopy->error;
|
||||
$this->errors=$object->oldcopy->errors;
|
||||
$return=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return=1;
|
||||
}
|
||||
}
|
||||
// We add subscription if new email or new type (new type may means more mailing-list to subscribe)
|
||||
if ($object->add_to_abo() < 0)
|
||||
{
|
||||
if (! empty($object->error)) $this->error=$object->error;
|
||||
$this->errors=$object->errors;
|
||||
$return=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return=1;
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
elseif ($action == 'MEMBER_NEW_PASSWORD')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
}
|
||||
elseif ($action == 'MEMBER_RESILIATE' || $action == 'MEMBER_DELETE')
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
$return=0;
|
||||
// Remove from external tools (mailman, spip, etc...)
|
||||
if ($object->del_to_abo() < 0)
|
||||
{
|
||||
if (! empty($object->error)) $this->error=$object->error;
|
||||
$this->errors=$object->errors;
|
||||
$return=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return=1;
|
||||
}
|
||||
}
|
||||
|
||||
// If not found
|
||||
/*
|
||||
else
|
||||
{
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' was ran by ".__FILE__." but no handler found for this action.");
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Loading…
Reference in New Issue
Block a user