/** * 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; }
/** * 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 formulaires_inscription_traiter_dist($mode, $focus, $id=0) { $nom = _request('nom_inscription'); $mail_complet = _request('mail_inscription'); if (function_exists('test_inscription')) $f = 'test_inscription'; else $f = 'test_inscription_dist'; $desc = $f($mode, $mail_complet, $nom, $id); if (!is_array($desc)) { $desc = _T($desc); } else { include_spip('base/abstract_sql'); $res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email'])); if (!$res) $desc = _T('titre_probleme_technique'); else { $row = sql_fetch($res); // s'il n'existe pas deja, creer les identifiants $desc = $row ? $row : inscription_nouveau($desc); } } if (is_array($desc)) { // generer le mot de passe (ou le refaire si compte inutilise) $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']); // charger de suite cette fonction, pour ses utilitaires $envoyer_mail = charger_fonction('envoyer_mail','inc'); if (function_exists('envoyer_inscription')) $f = 'envoyer_inscription'; else $f = 'envoyer_inscription_dist'; list($sujet,$msg,$from,$head) = $f($desc, $nom, $mode, $id); if (!$envoyer_mail($mail_complet, $sujet, $msg, $from, $head)) $desc = _T('form_forum_probleme_mail'); // Notifications if (is_array($desc) and $notifications = charger_fonction('notifications', 'inc')) { $notifications('inscription', $desc['id_auteur'], array('nom' => $desc['nom'], 'email' => $desc['email']) ); } } return array('message_ok'=>is_string($desc) ? $desc : _T('form_forum_identifiant_mail')); }