$id_auteur]; if (intval($id_auteur)) { $valeurs = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur)); if (lire_config('comptespip/modif_logo_auteur')) { $valeurs['_bigup_rechercher_fichiers'] = 'true'; $valeurs['logo'] = ''; } } $valeurs['alea'] = ''; $valeurs['password'] = ''; $valeurs['password_confirmation'] = ''; $valeurs['pass_longeur_mini'] = _PASS_LONGUEUR_MINI; return $valeurs; } function formulaires_editer_compte_spip_verifier_dist($id_auteur = 'new', $redirect = ''){ $id_auteur = comptespip_recupIdauteur($id_auteur); $erreurs = array(); $mode = lire_config('comptespip/statut'); if (!in_array($mode, ['6forum', '1comite', '0minirezo'])) { $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici'); } // mot de passe if (_request('password') != _request('password_confirmation')){ $erreurs['password_confirmation'] = _T('info_passes_identiques'); } //if ( strlen(_request('password')) > 0 and strlen(_request('password')) < _PASS_LONGUEUR_MINI ){ //$erreurs['password'] = _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)); //} // Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus if ($id_auteur === 'new') { if (!_request('password')){ $erreurs['password'] = _T('info_obligatoire'); } if (!_request('password_confirmation')){ $erreurs['password_confirmation'] = _T('info_obligatoire'); } } // email if (!$mail = strval(_request('email'))) { $erreurs['email'] = _T('info_obligatoire'); } else { include_spip('inc/filtres'); if (!email_valide($mail)) { $erreurs['email'] = _T('info_email_invalide'); } else { $unicite_email = lire_config('comptespip/unicite_email'); if ( $unicite_email !== "non") { include_spip('action/inscrire_auteur'); if (function_exists('test_inscription')) { $f = 'test_inscription'; } else { $f = 'test_inscription_dist'; } $declaration = $f($mode, $mail, _request('nom'), $id); if (is_string($declaration)) { $k = (strpos($declaration, 'mail') !== false) ? 'mail_inscription' : 'nom_inscription'; $erreurs[$k] = _T($declaration); } else { include_spip('base/abstract_sql'); if ($row = sql_fetsel( 'statut, id_auteur, login, email', 'spip_auteurs', [ 'email=' . sql_quote($declaration['email']), 'id_auteur!='.intval($id_auteur) ] )) { if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) { // irrecuperable $erreurs['message_erreur'] = _T('form_forum_access_refuse'); } else { if (($row['statut'] != 'nouveau') and empty($declaration['pass'])) { if (intval($row['statut']) > intval($mode)) { set_request('_upgrade_auteur', $row['id_auteur']); } else { // deja inscrit $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre'); } } } } } } } } return $erreurs; } function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redirect = ''){ $saisies = $GLOBALS['comptespip_editer']; $id_auteur = comptespip_recupIdauteur($id_auteur); $mode = lire_config('comptespip/statut'); $retour = []; include_spip('action/editer_auteur'); include_spip('inc/acces'); $password = _request('password'); $update = true; $set = []; if (!intval($id_auteur)) { $id_auteur = auteur_inserer(); $update = false; $search = [ ' ', "'", 'é' ]; $replace = [ '_', '_', 'e' ]; $login = strtolower(str_replace($search, $replace, _request('nom'))); $login .= '_'.$id_auteur; $set['login'] = $login; $set['statut'] = $mode; if (strlen($password) < 50) { include_spip('inc/acces'); include_spip('auth/sha256.inc'); $alea_actuel = creer_uniqid(); $pass = spip_sha256($alea_actuel . $password); $set['pass'] = $pass; $set['alea_actuel'] = $alea_actuel; $set['alea_futur'] = $alea_actuel; } else { $set['pass'] = $password; $set['alea_actuel'] = ""; $set['alea_futur'] = creer_uniqid(); } } else { if ($password) { // si le password fait moins de 50 caracteres, on peut penser que le javascript n'a pas fonctionné, on crypte alors le mdp if (strlen($password) < 50) { include_spip('inc/acces'); include_spip('auth/sha256.inc'); $alea_actuel = creer_uniqid(); $pass = spip_sha256($alea_actuel . $password); $set['pass'] = $pass; $set['alea_actuel'] = $alea_actuel; $set['alea_futur'] = $alea_actuel; } else { $set['pass'] = $password; $set['alea_actuel'] = ""; $set['alea_futur'] = creer_uniqid(); } } } if (!empty($saisies)) { foreach ($saisies as $saisie) { $champ = $saisie['options']['nom']; if (isset($f) and !empty($f)) { $f($id_auteur, $champ, _request($champ)); } else { $set[$champ] = _request($champ); } } if (count($set) > 0) { $r = sql_updateq('spip_auteurs', $set, 'id_auteur='.intval($id_auteur)); } } if ($update and lire_config('comptespip/modif_logo_auteur')) { comptespip_save_logo_auteur($id_auteur); } include_spip('inc/invalideur'); suivre_invalideur("id='id_auteur/$id_auteur'"); if (!$update and lire_config('comptespip/connexion_auto')) { // loguer le compte créé (on a vérifié par SMS) $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur)); include_spip('inc/auth'); auth_loger($auteur); if (lire_config('comptespip/page_redirection_connexion')) { $retour = parametre_url(generer_url_public(lire_config('comptespip/page_redirection_connexion'),'',true),'id_auteur',intval($id_auteur)); } return array('message_ok' => _T('form_forum_identifiant_mail'), 'redirect' => $retour); } if ($update) { $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur)); include_spip('inc/session'); actualiser_sessions($auteur); } if ($r) { $retour['message_ok'] = _T('comptespip:modification_compte_ok'); } else { $retour['message_erreur'] = _T('comptespip:erreur_edition_compte'); } if ($redirect) { $retour['redirect'] = $redirect; } return $retour; } function comptespip_save_logo_auteur($id_auteur){ include_spip('inc/joindre_document'); set_request('joindre_upload','ok'); $files = joindre_trouver_fichier_envoye(); if (is_array($files)) { include_spip('action/editer_logo'); logo_supprimer('auteur', $id_auteur, 'on'); include_spip('inc/autoriser'); autoriser_exception('modifier', 'auteur', $id_auteur); $ajouter_document = charger_fonction('ajouter_documents', 'action'); $ajouter_document('new', $files, "auteur", $id_auteur, 'logoon'); autoriser_exception('modifier', 'article', $id_auteur, false); } } /** * Récuperation du bon id_auteur, 2 possibilités * 1. Si le premier arg de la fonction chargé, id_auteur de l'ENV, * On vérifie donc si on a le droit via l'autorisation : adminstrer ccomptespip * 2. si le premier arg de la fonction est vide, alors on utilise id_auteur de la session, si pas connecté, renvoie 'new' * * @param $id_auteur, si pas renseigné : 'new' * * @return id_auteur */ function comptespip_recupIdauteur($id_auteur){ static $id; if ($id === null) { include_spip('inc/autoriser'); if (autoriser("administrer","comptespip") and intval($id_auteur)) { $id = intval($id_auteur); } else if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) { $id = $GLOBALS['visiteur_session']['id_auteur']; } else { $id = 'new'; } } return $id; }