示例#1
0
/**
 * 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;
}
示例#2
0
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');
}
示例#3
0
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;
}