31 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
32 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
33 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
34 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
55 public $errors = array();
80 if (defined(
"ADHERENT_USE_SPIP") && (ADHERENT_USE_SPIP == 1))
95 if (defined(
'ADHERENT_SPIP_SERVEUR') && defined(
'ADHERENT_SPIP_USER') && defined(
'ADHERENT_SPIP_PASS') && defined(
'ADHERENT_SPIP_DB'))
97 if (ADHERENT_SPIP_SERVEUR !=
'' && ADHERENT_SPIP_USER !=
'' && ADHERENT_SPIP_PASS !=
'' && ADHERENT_SPIP_DB !=
'')
113 $resource =
getDoliDBInstance(
'mysql', ADHERENT_SPIP_SERVEUR, ADHERENT_SPIP_USER, ADHERENT_SPIP_PASS, ADHERENT_SPIP_DB, ADHERENT_SPIP_PORT);
120 dol_syslog(
'Error when connecting to SPIP '.ADHERENT_SPIP_SERVEUR.
' '.ADHERENT_SPIP_USER.
' '.ADHERENT_SPIP_PASS.
' '.ADHERENT_SPIP_DB, LOG_ERR);
148 $conf->global->ADHERENT_MAILMAN_ADMINPW
151 $curl_url = str_replace($patterns, $replace, $url);
154 $ch = curl_init($curl_url);
156 curl_setopt($ch, CURLOPT_RETURNTRANSFER,
true);
157 curl_setopt($ch, CURLOPT_FAILONERROR,
true);
158 @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
159 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT);
160 curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT);
161 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,
false);
162 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,
false);
164 $result = curl_exec($ch);
168 if ($result ===
false || curl_errno($ch) > 0)
170 $this->error = curl_errno($ch).
' '.curl_error($ch);
171 dol_syslog(
'Error using curl '.$this->error, LOG_ERR);
199 require_once DOL_DOCUMENT_ROOT.
'/core/lib/security2.lib.php';
201 $htpass = crypt($object->pass,
makesalt());
202 $query =
"INSERT INTO spip_auteurs (nom, email, login, pass, htpass, alea_futur, statut) VALUES(\"".dolGetFirstLastname($object->firstname, $object->lastname).
"\",\"".$object->email.
"\",\"".$object->login.
"\",\"$mdpass\",\"$htpass\",FLOOR(32000*RAND()),\"1comite\")";
204 $result = $mydb->query($query);
211 }
else $this->error = $mydb->lasterror();
212 }
else $this->error =
'Failed to connect to SPIP';
213 }
else $this->error =
'BadSPIPConfiguration';
214 }
else $this->error =
'SPIPNotEnabled';
239 $query =
"DELETE FROM spip_auteurs WHERE login='".$object->login.
"'";
241 $result = $mydb->query($query);
248 }
else $this->error = $mydb->lasterror();
249 }
else $this->error =
'Failed to connect to SPIP';
250 }
else $this->error =
'BadSPIPConfiguration';
251 }
else $this->error =
'SPIPNotEnabled';
274 $query =
"SELECT login FROM spip_auteurs WHERE login='".$object->login.
"'";
276 $result = $mydb->query($query);
280 if ($mydb->num_rows($result))
283 $mydb->close($result);
287 $mydb->close($result);
291 $this->error = $mydb->lasterror();
294 }
else $this->error =
'Failed to connect to SPIP';
295 }
else $this->error =
'BadSPIPConfiguration';
296 }
else $this->error =
'SPIPNotEnabled';
312 global $conf, $langs, $user;
314 dol_syslog(get_class($this).
"::add_to_mailman");
316 $this->mladded_ok = array();
317 $this->mladded_ko = array();
319 if (!function_exists(
"curl_init"))
321 $langs->load(
"errors");
322 $this->error = $langs->trans(
"ErrorFunctionNotAvailableInPHP",
"curl_init");
326 if ($conf->adherent->enabled)
328 if (!empty($conf->global->ADHERENT_MAILMAN_URL))
330 if ($listes ==
'' && !empty($conf->global->ADHERENT_MAILMAN_LISTS)) $lists = explode(
',', $conf->global->ADHERENT_MAILMAN_LISTS);
331 else $lists = explode(
',', $listes);
335 foreach ($lists as $list)
338 $tmp = explode(
':', $list);
342 if ($object->element ==
'member' && $tmp[0] ==
'TYPE' && $object->type != $tmp[1])
344 dol_syslog(
"We ignore list ".$list.
" because object member type ".$object->type.
" does not match ".$tmp[1], LOG_DEBUG);
347 if ($object->element ==
'member' && $tmp[0] ==
'CATEG' && !in_array($tmp[1], $categstatic->containing($object->id,
'member',
'label')))
349 dol_syslog(
"We ignore list ".$list.
" because object member is not into category ".$tmp[1], LOG_DEBUG);
355 $result = $this->
callMailman($object, $conf->global->ADHERENT_MAILMAN_URL, $list);
357 if ($result ===
false)
359 $this->mladded_ko[$list] = $object->email;
361 }
else $this->mladded_ok[$list] = $object->email;
363 return count($lists);
365 $this->error =
"ADHERENT_MAILMAN_URL not defined";
383 global $conf, $langs, $user;
385 dol_syslog(get_class($this).
"::del_to_mailman");
387 $this->mlremoved_ok = array();
388 $this->mlremoved_ko = array();
390 if (!function_exists(
"curl_init"))
392 $langs->load(
"errors");
393 $this->error = $langs->trans(
"ErrorFunctionNotAvailableInPHP",
"curl_init");
397 if ($conf->adherent->enabled)
399 if (!empty($conf->global->ADHERENT_MAILMAN_UNSUB_URL))
401 if ($listes ==
'' && !empty($conf->global->ADHERENT_MAILMAN_LISTS)) $lists = explode(
',', $conf->global->ADHERENT_MAILMAN_LISTS);
402 else $lists = explode(
',', $listes);
406 foreach ($lists as $list)
409 $tmp = explode(
':', $list);
413 if ($object->element ==
'member' && $tmp[0] ==
'TYPE' && $object->type != $tmp[1])
415 dol_syslog(
"We ignore list ".$list.
" because object member type ".$object->type.
" does not match ".$tmp[1], LOG_DEBUG);
418 if ($object->element ==
'member' && $tmp[0] ==
'CATEG' && !in_array($tmp[1], $categstatic->containing($object->id,
'member',
'label')))
420 dol_syslog(
"We ignore list ".$list.
" because object member is not into category ".$tmp[1], LOG_DEBUG);
426 $result = $this->
callMailman($object, $conf->global->ADHERENT_MAILMAN_UNSUB_URL, $list);
428 if ($result ===
false)
430 $this->mlremoved_ko[$list] = $object->email;
432 }
else $this->mlremoved_ok[$list] = $object->email;
434 return count($lists);
436 $this->error =
"ADHERENT_MAILMAN_UNSUB_URL not defined";
dol_hash($chain, $type= '0')
Returns a hash of a string.
getDoliDBInstance($type, $host, $user, $pass, $name, $port)
Return a DoliDB instance (database handler).
__construct($db)
Constructor.
connectSpip()
Function used to connect to SPIP.
del_to_mailman($object, $listes= '')
Unsubscribe an email from all mailing-lists Used when a user is resiliated.
if(!function_exists('dol_loginfunction')) makesalt($type=CRYPT_SALT_LENGTH)
Fonction pour initialiser un salt pour la fonction crypt.
isSpipEnabled()
Function used to check if SPIP is enabled on the system.
$conf db
API class for accounts.
Class to manage categories.
callMailman($object, $url, $list)
Function used to connect to Mailman.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
add_to_spip($object)
Fonction qui donne les droits redacteurs dans spip.
checkSpipConfig()
Function used to check if the SPIP config is correct.
del_to_spip($object)
Fonction qui enleve les droits redacteurs dans spip.
is_in_spip($object)
Fonction qui dit si cet utilisateur est un redacteur existant dans spip.
add_to_mailman($object, $listes= '')
Subscribe an email to all mailing-lists.
Class to manage mailman and spip.