/** * Inscrire un nouvel auteur sur la base de son nom et son email * L'email est utilise pour reperer si il existe deja ou non * => identifiant par defaut * * @param string $statut * @param string $mail_complet * @param string $nom * @param array $options * login : login precalcule * id : id_rubrique fournit en second arg de #FORMULAIRE_INSCRIPTION * from : email de l'envoyeur pour l'envoi du mail d'inscription * force_nouveau : forcer le statut nouveau sur l'auteur inscrit, meme si il existait deja en base * @return array|string */ function action_inscrire_auteur_dist($statut, $mail_complet, $nom, $options = array()) { if (!is_array($options)) { $options = array('id' => $options); } if (function_exists('test_inscription')) { $f = 'test_inscription'; } else { $f = 'test_inscription_dist'; } $desc = $f($statut, $mail_complet, $nom, $options); // erreur ? if (!is_array($desc)) { return _T($desc); } include_spip('base/abstract_sql'); $res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email'])); // erreur ? if (!$res) { return _T('titre_probleme_technique'); } $row = sql_fetch($res); sql_free($res); if ($row) { if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) { $desc['id_auteur'] = $row['id_auteur']; $desc = inscription_nouveau($desc); } else { $desc = $row; } } else { // s'il n'existe pas deja, creer les identifiants $desc = inscription_nouveau($desc); } // erreur ? if (!is_array($desc)) { return $desc; } // generer le mot de passe (ou le refaire si compte inutilise) $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']); // attribuer un jeton pour confirmation par clic sur un lien $desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']); // charger de suite cette fonction, pour ses utilitaires $envoyer_inscription = charger_fonction("envoyer_inscription", ""); list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut, $options); $notifications = charger_fonction('notifications', 'inc'); notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head); // Notifications $notifications('inscription', $desc['id_auteur'], array('nom' => $desc['nom'], 'email' => $desc['email'])); return $desc; }
function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) and $r[1]) { include_spip('inc/texte'); # pour corriger_typo include_spip('action/inscrire_auteur'); $cookie = auteur_attribuer_jeton($r[1]['id_auteur']); $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => generer_url_public('spip_pass', "{$param}={$cookie}", true, false))); include_spip("inc/notifications"); notifications_envoyer_mails($email, $msg); return _T('pass_recevoir_mail'); } return _T('pass_erreur_probleme_technique'); }
function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) and $r[1]) { include_spip('inc/texte'); # pour corriger_typo include_spip('action/inscrire_auteur'); $cookie = auteur_attribuer_jeton($r[1]['id_auteur']); // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site include_spip('inc/filtres'); $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => url_absolue(generer_url_public('spip_pass', "{$param}={$cookie}"), $GLOBALS['meta']['adresse_site']))); include_spip("inc/notifications"); notifications_envoyer_mails($email, $msg); return _T('pass_recevoir_mail'); } return _T('pass_erreur_probleme_technique'); }
/** * Action sécurisée pour valider manuellement les membres du site * * On change le statut de l'auteur et on lui envoie un mail avec de quoi se loguer * * @return rien */ function action_valider_auteur_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $id_auteur = $securiser_action(); if (!$id_auteur or !autoriser('valider', 'auteur', $id_auteur)) { include_spip('inc/minipres'); $msg = _T('valider_inscription:permissions_insuffisantes'); die(minipres($msg)); } include_spip('base/abstract_sql'); // le statut à donné a été enregistré dans le champs « prefs » $statut = sql_getfetsel('prefs', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); include_spip('action/editer_objet'); if ($err = objet_modifier('auteur', $id_auteur, array('statut' => $statut))) { include_spip('inc/minipres'); die(minipres(_T('valider_inscription:erreur_validation'), $err)); } $desc = sql_fetsel('statut, id_auteur, login, email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); include_spip('action/inscrire_auteur'); // generer le mot de passe (ou le refaire si compte inutilise) $desc['pass'] = creer_pass_pour_auteur($id_auteur); // attribuer un jeton pour confirmation par clic sur un lien $desc['jeton'] = auteur_attribuer_jeton($id_auteur); // Si on doit lier l'auteur à une zone, il faut le faire ici, // parce que les visiteurs n'ont pas les autorisations nécessaires // lors de l'inscription if (test_plugin_actif('auteur2zone')) { include_spip('inc/config'); $config = lire_config('auteur2zone'); // Lier à la zone include_spip('action/editer_zone'); zone_lier($config['auteur_zone_auto'], 'auteur', $id_auteur); } $envoyer_inscription = charger_fonction('envoyer_inscription', ''); list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut); include_spip('inc/notifications'); notifications_envoyer_mails($desc['email'], $msg, $sujet, $from, $head); }
function inscrire_visiteur_candidatures_fraap($statut, $mail_complet, $nom, $prenom, $activite, $pass, $options = array()) { if (!is_array($options)) { $options = array('id' => $options); } include_spip('action/inscrire_auteur'); if (function_exists('test_inscription')) { $f = 'test_inscription'; } else { $f = 'test_inscription_dist'; } $desc = $f($statut, $mail_complet, $nom, $options); if (!is_array($desc)) { return _T($desc); } // ajouter les arguments restants $desc['prenom'] = $prenom; $desc['activite'] = $activite; $desc['pass'] = $pass; include_spip('base/abstract_sql'); $res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email'])); // erreur ? if (!$res) { return _T('titre_probleme_technique'); } $row = sql_fetch($res); sql_free($res); if ($row) { if (isset($options['force_nouveau']) and $options['force_nouveau'] == true) { $desc['id_auteur'] = $row['id_auteur']; $desc = inscription_nouveau($desc); } else { $desc = $row; } } else { // s'il n'existe pas deja, creer les identifiants $desc = inscription_nouveau($desc); } if (!is_array($desc)) { return $desc; } // le mot de passe a été saisi par le visiteur, // donc on ne fait rien ici // generer le mot de passe (ou le refaire si compte inutilise) // $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']); // attribuer un jeton pour confirmation par clic sur un lien $desc['jeton'] = auteur_attribuer_jeton($desc['id_auteur']); // ajouter la zone restreinte stages sql_insertq("spip_zones_liens", array('id_zone' => '1', "id_objet" => $desc['id_auteur'], "objet" => "auteur")); // charger de suite cette fonction, pour ses utilitaires $envoyer_inscription = charger_fonction("envoyer_inscription_fraap_candidatures", "action"); list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $prenom, $statut, $options); $notifications = charger_fonction('notifications', 'inc'); notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head); // Notifications $notifications('inscription', $desc['id_auteur'], array('nom' => $desc['nom'], 'email' => $desc['email'])); return $desc; }