diff --git a/README.md b/README.md index 72e52d5..9950c76 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,42 @@ # compteSPIP +CRUD sur un compte auteur : + +## Inscription / login +>content/connect.html + +## Modification +>content/editer_compte_spip.html +Utilise un tableau de saisie : +```php +$GLOBALS['comptespip_editer'] = [ + [ + 'saisie' => 'input', + 'options' => array( + 'nom' => 'nom', + 'label' => 'Votre Nom', + 'obligatoire' => 'oui', + //'fonction' => 'ma_super_fonction' + ) + ], + [ + 'saisie' => 'input', + 'options' => array( + 'nom' => 'email', + 'label' => 'Votre Email', + 'obligatoire' => 'oui', + ) + ] +]; +``` +Avec une options facultative en plus **fonction** qui permet de mettre à jour un champ via cette fonction et non pas comme un simple champ dans la table spip_auteurs +ex: +```php +function ma_super_fonction($id_auteur, $champ, $valeur){ + sql_updateq('spip_app_clients',[$champ => $valeur], 'id_auteur='.intval($id_auteur)); +} +``` +La gestion du mot de passe est deja géré, pas besoin de l'ajouter dans l'array des saisies + + + diff --git a/comptespip_fonctions.php b/comptespip_fonctions.php index 774b108..1b789c2 100644 --- a/comptespip_fonctions.php +++ b/comptespip_fonctions.php @@ -12,3 +12,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } + +function appclient($id_auteur, $champ, $valeur){ + sql_updateq('spip_auteurs',[$champ => $valeur, 'bio' => 'gagne'], 'id_auteur='.intval($id_auteur)); +} diff --git a/comptespip_options.php b/comptespip_options.php index 5d2f407..1c3babd 100644 --- a/comptespip_options.php +++ b/comptespip_options.php @@ -12,3 +12,23 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } + +$GLOBALS['comptespip_editer'] = [ + [ + 'saisie' => 'input', + 'options' => array( + 'nom' => 'nom', + 'label' => 'Votre Nom', + 'obligatoire' => 'oui', + //'fonction' => 'ma_super_fonction' + ) + ], + [ + 'saisie' => 'input', + 'options' => array( + 'nom' => 'email', + 'label' => 'Votre Email', + 'obligatoire' => 'oui', + ) + ] +]; diff --git a/content/editer_compte_spip.html b/content/editer_compte_spip.html new file mode 100644 index 0000000..88b6dd9 --- /dev/null +++ b/content/editer_compte_spip.html @@ -0,0 +1,6 @@ +
+

Editer compte SPIP

+
+ [(#FORMULAIRE_EDITER_COMPTE_SPIP{})] +
+
diff --git a/formulaires/editer_compte_spip.html b/formulaires/editer_compte_spip.html new file mode 100644 index 0000000..7010e1b --- /dev/null +++ b/formulaires/editer_compte_spip.html @@ -0,0 +1,29 @@ +
+ +[

(#ENV*{message_erreur})

] +[

(#ENV*{message_ok})

] + +
+ #ACTION_FORMULAIRE{#ENV{action}} + + #GENERER_SAISIES{#ENV{_saisies}} + +
+ Mot de passe + + [(#SAISIE{input,password} + {type=password} + {label="password"} + )] + [(#SAISIE{input,password_confirmation} + {type=password} + {label="password confirm"} + )] +
+ +
+ +
+
+ +
diff --git a/formulaires/editer_compte_spip.php b/formulaires/editer_compte_spip.php new file mode 100644 index 0000000..9a2ca42 --- /dev/null +++ b/formulaires/editer_compte_spip.php @@ -0,0 +1,105 @@ + 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 (!_request('password')){ + //$erreurs['password'] = _T('info_obligatoire'); + //} + //if (!_request('password_confirmation')){ + //$erreurs['password_confirmation'] = _T('info_obligatoire'); + //} + + // email + if (!$email = strval(_request('email'))) { + $erreurs['email'] = _T('info_obligatoire'); + } else { + include_spip('inc/filtres'); + if (!email_valide($email)) { + $erreurs['email'] = _T('info_email_invalide'); + } + } + + return $erreurs; +} + +function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redirect = ''){ + + $saisies = $GLOBALS['comptespip_editer']; + $id_auteur = session_get('id_auteur'); + $retour = []; + + if (!empty($saisies)) { + $set = []; + foreach ($saisies as $saisie) { + $champ = $saisie['options']['nom']; + $f = $saisie['options']['fonction']; + if (isset($f) and !empty($f)) { + $f($id_auteur, $champ, _request($champ)); + }else { + $set[$champ] = _request($champ); + } + } + if (count($set) > 0) { + include_spip('action/editer_auteur'); + $r = auteur_modifier($id_auteur, $set); + } + } + + // gestion du login et du password + if (_request('login')) { + $login = _request('login'); + } + if (_request('password')) { + $pass = _request('password'); + } + + $set_instituer = [ + 'pass' => $pass, + 'login' => $login + ]; + auteur_instituer($id_auteur, $set_instituer); + + + include_spip('inc/invalideur'); + suivre_invalideur("id='id_auteur/$id_auteur'"); + + if ($r) { + $retour['message_erreur'] = $r; + } else { + $retour['message_ok'] = _T('comptespip/modification_compte_ok'); + } + if ($redirect) { + $retour['redirect'] = $redirect; + } + + return $retour; +} diff --git a/paquet.xml b/paquet.xml index b12df23..1989619 100644 --- a/paquet.xml +++ b/paquet.xml @@ -15,6 +15,9 @@ GNU/GPL + + +