Ejemplo n.º 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;
}
/**
 * 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);
}
Ejemplo n.º 3
0
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'));
}