You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

123 lines
3.2 KiB

<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Formulaire de demande d'inscription au réseau de contribution de SPIP.
*
* @return array
* Tableau des champs postés pour l'affichage du formulaire.
*/
function formulaires_contribution_inscrire_charger_dist() {
// Initialisation des champs du formulaire
$valeurs = array(
'username' => '',
'email' => '',
'charte_approuvee' => ''
);
return $valeurs;
}
function formulaires_contribution_inscrire_verifier_dist() {
$erreurs = array();
// Acquérie le username et l'email saisis
$username = _request('username');
$email = _request('email');
// Vérifier la syntaxe de l'email
$verifier = charger_fonction('verifier', 'inc/');
if ($erreur = $verifier(_request('email'), 'email')) {
$erreurs['email'] = $erreur;
} else {
// Vérifier qu'une demande similaire n'est pas en cours
$erreur = false;
include_spip('inc/contrib_inscription');
$filtres = array('statut' => 'prop');
$inscriptions = inscription_repertorier($filtres);
foreach ($inscriptions as $_inscription) {
if ($username === $_inscription['username']) {
$erreur = true;
$erreurs['username'] = _T('contrib:inscription_username_nok_inscex_message', array('username' => $username));
}
if ($email === $_inscription['email']) {
$erreur = true;
$erreurs['email'] = _T('contrib:inscription_email_nok_inscex_message', array('email' => $email));
}
if ($erreur) {
break;
}
}
// Vérifier qu'un compte similaire n'existe pas déjà
if (!$erreur) {
include_spip('services/gitea');
$users = gitea_user_repertorier();
foreach ($users as $_user) {
$jamais_connecte = $_user['last_login'] === '1970-01-01T01:00:00+01:00';
if ($username === $_user['login']) {
$erreur = true;
$erreurs['username'] = _T('contrib:inscription_username_nok_userex_message', array('username' => $username));
if ($jamais_connecte) {
$erreurs['username'] .= ' ' . _T('contrib:inscription_jamais_connecte_message');
$jamais_connecte = false;
}
}
if ($email === $_user['email']) {
$erreur = true;
$erreurs['email'] = _T('contrib:inscription_email_nok_userex_message', array('email' => $email));
if ($jamais_connecte) {
$erreurs['email'] .= ' ' . _T('contrib:inscription_jamais_connecte_message');
}
}
if ($erreur) {
break;
}
}
}
}
if (!_request('charte_approuvee')) {
$erreurs['charte_approuvee'] = _T('contrib:inscription_charte_nok_message');
}
return $erreurs;
}
function formulaires_contribution_inscrire_traiter_dist() {
$retour = array();
// Récupération des saisies
$set['username'] = _request('username');
$set['email'] = _request('email');
$set['charte_approuvee'] = 'oui';
// Pour l'instant, on ouvre le compte pour commit et ticket.
$parametres = array(
'forge' => array(
'acces' => 'complet',
)
);
$set['parametres'] = serialize($parametres);
// On crée la demande avec l'état 'proposée'
include_spip('action/editer_objet');
$id = objet_inserer('inscription', null, $set);
if ($id) {
$retour['message_ok'] = _T('contrib:inscription_demande_ok_message');
} else {
$retour['message_erreur'] = _T('contrib:inscription_demande_nok_message');
}
return $retour;
}