Overview
Comment:Modernisation du code: suppression des _POST et passage au système d'erreurs des formulaires
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: 143ddfa442ac96f8fd606b885ab01e094761a0e2
User & Date: bohwaz on 2017-08-03 02:07:03
Other Links: branch diff | manifest | tags
Context
2017-08-03
04:21
Cohérence avec SQLite3 en ligne de commande: utilisation de .load au lieu de .import check-in: 26b4188c11 user: bohwaz tags: dev
02:07
Modernisation du code: suppression des _POST et passage au système d'erreurs des formulaires check-in: 143ddfa442 user: bohwaz tags: dev
01:40
Modernisation code catégories check-in: 2989f0c0e4 user: bohwaz tags: dev
Changes

Modified src/templates/admin/membres/action.tpl from [6f7340ac70] to [c6dae71e1a].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
..
49
50
51
52
53
54
55

56
57
58
59
60
61
62
{include file="admin/_head.tpl" title="Action collective sur les membres" current="membres"}

{if $error}
    <p class="error">
        {$error}
    </p>
{/if}

<form method="post" action="{$self_url}">
    {foreach from=$selected item="id"}
        <input type="hidden" name="selected[]" value="{$id}" />
    {/foreach}

    </fieldset>
................................................................................
                </select>
            </dd>
        </dl>
    </fieldset>

    <p class="submit">
        {csrf_field key="membres_action"}

        <input type="submit" name="move_ok" value="Enregistrer &rarr;" />
    </p>

    {elseif $action == 'delete'}
    <fieldset>
        <legend>Supprimer les membres sélectionnés ?</legend>
        <h3 class="warning">
            Êtes-vous sûr de vouloir supprimer les {$nb_selected} membres sélectionnés ?
................................................................................
            partie de l'association dans une catégorie «&nbsp;Anciens membres&nbsp;», plutôt
            que de les effacer complètement.
        </p>
    </fieldset>

    <p class="submit">
        {csrf_field key="membres_action"}

        <input type="submit" name="delete_ok" value="Oui, supprimer ces membres &rarr;" />
    </p>
    {/if}

</form>

{include file="admin/_foot.tpl"}


<
<
|
<
<







 







>
|







 







>
|






1
2


3


4
5
6
7
8
9
10
..
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
..
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{include file="admin/_head.tpl" title="Action collective sur les membres" current="membres"}



{form_errors}



<form method="post" action="{$self_url}">
    {foreach from=$selected item="id"}
        <input type="hidden" name="selected[]" value="{$id}" />
    {/foreach}

    </fieldset>
................................................................................
                </select>
            </dd>
        </dl>
    </fieldset>

    <p class="submit">
        {csrf_field key="membres_action"}
        <input type="hidden" name="action" value="move" />
        <input type="submit" name="confirm" value="Enregistrer &rarr;" />
    </p>

    {elseif $action == 'delete'}
    <fieldset>
        <legend>Supprimer les membres sélectionnés ?</legend>
        <h3 class="warning">
            Êtes-vous sûr de vouloir supprimer les {$nb_selected} membres sélectionnés ?
................................................................................
            partie de l'association dans une catégorie «&nbsp;Anciens membres&nbsp;», plutôt
            que de les effacer complètement.
        </p>
    </fieldset>

    <p class="submit">
        {csrf_field key="membres_action"}
        <input type="hidden" name="action" value="delete" />
        <input type="submit" name="confirm" value="Oui, supprimer ces membres &rarr;" />
    </p>
    {/if}

</form>

{include file="admin/_foot.tpl"}

Modified src/templates/admin/membres/import.tpl from [e21d9b42f1] to [673573742c].

1
2
3
4

5
6



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{include file="admin/_head.tpl" title="Import & export des membres" current="membres" js=1}

{if $error}
    <p class="error">

        {$error}
    </p>



{elseif $ok}
    <p class="confirm">
        L'import s'est bien déroulé.
    </p>
{/if}

<ul class="actions">
    <li class="current"><a href="{$www_url}admin/membres/import.php">Importer</a></li>
    <li><a href="{$www_url}admin/membres/import.php?export">Exporter en CSV</a></li>
</ul>

<form method="post" action="{$self_url}" enctype="multipart/form-data">

    <fieldset>
        <legend>Importer depuis un fichier</legend>
        <dl>
            <dt><label for="f_file">Fichier à importer</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
            <dd><input type="file" name="upload" id="f_file" required="required" /></dd>


<
|
>
|
|
>
>
>
|





<
<
<
<
<







1
2

3
4
5
6
7
8
9
10
11
12
13
14
15





16
17
18
19
20
21
22
{include file="admin/_head.tpl" title="Import & export des membres" current="membres" js=1}


<ul class="actions">
    <li class="current"><a href="{$www_url}admin/membres/import.php">Importer</a></li>
    <li><a href="{$www_url}admin/membres/import.php?export">Exporter en CSV</a></li>
</ul>

{form_errors}

{if $ok}
    <p class="confirm">
        L'import s'est bien déroulé.
    </p>
{/if}






<form method="post" action="{$self_url}" enctype="multipart/form-data">

    <fieldset>
        <legend>Importer depuis un fichier</legend>
        <dl>
            <dt><label for="f_file">Fichier à importer</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
            <dd><input type="file" name="upload" id="f_file" required="required" /></dd>

Modified src/templates/admin/membres/message_collectif.tpl from [b82f35bae6] to [c3a52f70e1].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{include file="admin/_head.tpl" title="Envoyer un message collectif" current="membres/message_collectif"}

{if $error}
    <p class="error">
        {$error}
    </p>
{/if}

<form method="post" action="{$self_url}" onsubmit="return confirm('Envoyer vraiment ce message collectif ?');">
    <fieldset class="memberMessage">
        <legend>Message</legend>
        <dl>
            <dt>Expéditeur</dt>
            <dd>{$config.nom_asso} &lt;{$config.email_asso}&gt;</dd>


<
<
|
<
<







1
2


3


4
5
6
7
8
9
10
{include file="admin/_head.tpl" title="Envoyer un message collectif" current="membres/message_collectif"}



{form_errors}



<form method="post" action="{$self_url}" onsubmit="return confirm('Envoyer vraiment ce message collectif ?');">
    <fieldset class="memberMessage">
        <legend>Message</legend>
        <dl>
            <dt>Expéditeur</dt>
            <dd>{$config.nom_asso} &lt;{$config.email_asso}&gt;</dd>

Modified src/www/admin/membres/action.php from [42ab6e796b] to [572e76b6c5].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

37
38




39

40

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

if (empty($_POST['selected']))
{
    throw new UserException("Aucun membre sélectionné.");
}

foreach ($_POST['selected'] as &$id)
{
    $id = (int) $id;

    // On ne permet pas d'action collective sur l'utilisateur courant pour éviter les risques
    // d'erreur genre "oh je me suis supprimé du coup j'ai plus accès à rien"
    if ($id == $user->id)
    {
        throw new UserException("Il n'est pas possible de se modifier ou supprimer soi-même.");
    }
}

$error = false;

if (!empty($_POST['move_ok']))
{
    if (!Utils::CSRF_check('membres_action'))
    {
        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
        $_POST['move'] = true;
    }
    else
    {
        if (!empty($_POST['id_categorie']))

        {
            $membres->changeCategorie($_POST['id_categorie'], $_POST['selected']);




        }



        Utils::redirect('/admin/membres/');
    }
}
elseif (!empty($_POST['delete_ok']))
{
    if (!Utils::CSRF_check('membres_action'))
    {
        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
        $_POST['delete'] = true;
    }
    else
    {
        $membres->delete($_POST['selected']);

        Utils::redirect('/admin/membres/');
    }
}

$tpl->assign('selected', $_POST['selected']);
$tpl->assign('nb_selected', count($_POST['selected']));

if (!empty($_POST['move']))
{
    $cats = new Membres\Categories;

    $tpl->assign('membres_cats', $cats->listSimple());
    $tpl->assign('action', 'move');
}
elseif (!empty($_POST['delete']))
{
    $tpl->assign('action', 'delete');
}
else
{
    throw new UserException('Aucune action sélectionée.');
}

$tpl->assign('error', $error);

$tpl->display('admin/membres/action.tpl');







|




|











|

|

|
<
<
<
|
<
|
<
>
|
<
>
>
>
>
|
>
|
>



|
|
|
|
|
|
|
|
|
<
<




|
|

|




<

<
|
|
|
<
<
<
<
<
<
<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29



30

31

32
33

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53


54
55
56
57
58
59
60
61
62
63
64
65

66

67
68
69







70
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

if (!f('selected') || !is_array(f('selected')) || !count(f('selected')))
{
    throw new UserException("Aucun membre sélectionné.");
}

foreach (f('selected') as &$id)
{
    $id = (int) $id;

    // On ne permet pas d'action collective sur l'utilisateur courant pour éviter les risques
    // d'erreur genre "oh je me suis supprimé du coup j'ai plus accès à rien"
    if ($id == $user->id)
    {
        throw new UserException("Il n'est pas possible de se modifier ou supprimer soi-même.");
    }
}

$action = f('action') ?: (f('move') ? 'move' : (f('delete') ? 'delete' : ''));

if (!$action)
{
    throw new UserException('Aucune action sélectionnée.');



}



if ($action == 'move' && f('confirm'))
{

    $form->check('membres_action', [
        'selected' => 'required|array',
        'id_categorie' => 'required|numeric',
    ]);

    if (!$form->hasErrors())
    {
        $membres->changeCategorie(f('id_categorie'), f('selected'));
        Utils::redirect('/admin/membres/');
    }
}
elseif ($action == 'delete' && f('confirm'))
{
    $form->check('membres_action', [
        'selected' => 'required|array',
    ]);

    if (!$form->hasErrors())
    {
        $membres->delete(f('selected'));


        Utils::redirect('/admin/membres/');
    }
}

$tpl->assign('selected', f('selected'));
$tpl->assign('nb_selected', count(f('selected')));

if ($action == 'move')
{
    $cats = new Membres\Categories;

    $tpl->assign('membres_cats', $cats->listSimple());

}


$tpl->assign('action', $action);








$tpl->display('admin/membres/action.tpl');

Modified src/www/admin/membres/ajouter.php from [e68055f415] to [864047be64].

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
..
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ECRITURE);

$cats = new Membres\Categories;
$champs = $config->get('champs_membres');

$error = false;

if (f('save'))
{
    $form->check('new_member', [
        'passe' => 'confirmed',
        // FIXME: ajouter les règles pour les champs membres
    ]);

................................................................................
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}

$tpl->assign('error', $error);
$tpl->assign('passphrase', Utils::suggestPassword());
$tpl->assign('champs', $champs->getAll());

$tpl->assign('membres_cats', $cats->listSimple());
$tpl->assign('current_cat', f('id_categorie') ?: $config->get('categorie_membres'));

$tpl->display('admin/membres/ajouter.tpl');







<
<







 







<







4
5
6
7
8
9
10


11
12
13
14
15
16
17
..
42
43
44
45
46
47
48

49
50
51
52
53
54
55
require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ECRITURE);

$cats = new Membres\Categories;
$champs = $config->get('champs_membres');



if (f('save'))
{
    $form->check('new_member', [
        'passe' => 'confirmed',
        // FIXME: ajouter les règles pour les champs membres
    ]);

................................................................................
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}


$tpl->assign('passphrase', Utils::suggestPassword());
$tpl->assign('champs', $champs->getAll());

$tpl->assign('membres_cats', $cats->listSimple());
$tpl->assign('current_cat', f('id_categorie') ?: $config->get('categorie_membres'));

$tpl->display('admin/membres/ajouter.tpl');

Modified src/www/admin/membres/import.php from [058273a22b] to [cc287776b5].

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="Export membres - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"');
    $import->toCSV();
    exit;
}

$error = false;
$champs = $config->get('champs_membres')->getAll();
$champs->date_inscription = (object) ['title' => 'Date inscription', 'type' => 'date'];

if (Utils::post('import'))
{
    // FIXME
    if (false && !Utils::CSRF_check('membres_import'))
    {
        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
    }
    elseif (empty($_FILES['upload']['tmp_name']))
    {
        $error = 'Aucun fichier fourni.';
    }
    else
    {
        try
        {
            if (Utils::post('type') == 'galette')
            {
                $import->fromGalette($_FILES['upload']['tmp_name'], Utils::post('galette_translate'));
            }
            elseif (Utils::post('type') == 'garradin')
            {
                $import->fromCSV($_FILES['upload']['tmp_name']);
            }
            else
            {
                throw new UserException('Import inconnu.');
            }

            Utils::redirect('/admin/membres/import.php?ok');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }
}

$tpl->assign('error', $error);
$tpl->assign('ok', null !== qg('ok') ? true : false);

$tpl->assign('garradin_champs', $champs);
$tpl->assign('galette_champs', $import->galette_fields);
$tpl->assign('translate', Utils::post('galette_translate'));

$tpl->display('admin/membres/import.tpl');







<



|
|
|
|
|
|
|
|
|
<
<
<



|

|

|












|




<




|


11
12
13
14
15
16
17

18
19
20
21
22
23
24
25
26
27
28
29



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

55
56
57
58
59
60
61
{
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="Export membres - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"');
    $import->toCSV();
    exit;
}


$champs = $config->get('champs_membres')->getAll();
$champs->date_inscription = (object) ['title' => 'Date inscription', 'type' => 'date'];

if (f('import'))
{
    $form->check('membres_import', [
        'upload' => 'file|required',
        'type'   => 'required|in:galette,garradin',
        'galette_translate' => 'array',
    ]);

    if (!$form->hasErrors())



    {
        try
        {
            if (f('type') == 'galette')
            {
                $import->fromGalette($_FILES['upload']['tmp_name'], f('galette_translate'));
            }
            elseif (f('type') == 'garradin')
            {
                $import->fromCSV($_FILES['upload']['tmp_name']);
            }
            else
            {
                throw new UserException('Import inconnu.');
            }

            Utils::redirect('/admin/membres/import.php?ok');
        }
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}


$tpl->assign('ok', null !== qg('ok') ? true : false);

$tpl->assign('garradin_champs', $champs);
$tpl->assign('galette_champs', $import->galette_fields);
$tpl->assign('translate', f('galette_translate'));

$tpl->display('admin/membres/import.tpl');

Modified src/www/admin/membres/message.php from [a5ef4b0e94] to [2aee7f9dae].

20
21
22
23
24
25
26
27
28
29
30
31



32
33
34
35

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
}

if (empty($membre->email))
{
    throw new UserException('Ce membre n\'a pas d\'adresse email renseignée.');
}

$error = false;

if (!empty($_POST['save']))
{
    if (!Utils::CSRF_check('send_message_'.$id))



    {
        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
    }
    elseif (!Utils::post('sujet'))

    {
        $error = 'Le sujet ne peut rester vide.';
    }
    elseif (!Utils::post('message'))
    {
        $error = 'Le message ne peut rester vide.';
    }
    else
    {
        try {
            $membres->sendMessage($membre->email, Utils::post('sujet'),
                Utils::post('message'), (bool) Utils::post('copie'));

            Utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }
}

$cats = new Membres\Categories;

$tpl->assign('categorie', $cats->get($membre->id_categorie));
$tpl->assign('membre', $membre);
$tpl->assign('error', $error);

$tpl->display('admin/membres/message.tpl');







|
|
<
<
|
>
>
>
|
<
<
<
>

<
<
<
<
<
<
<
<

|
|





|








<


20
21
22
23
24
25
26
27
28


29
30
31
32
33



34
35








36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

53
54
}

if (empty($membre->email))
{
    throw new UserException('Ce membre n\'a pas d\'adresse email renseignée.');
}

if (f('save'))
{


    $form->check('send_message_' . $id, [
        'sujet' => 'required|string',
        'message' => 'required|string',
    ]);




    if (!$form->hasErrors())
    {








        try {
            $membres->sendMessage($membre->email, f('sujet'),
                f('message'), (bool) f('copie'));

            Utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}

$cats = new Membres\Categories;

$tpl->assign('categorie', $cats->get($membre->id_categorie));
$tpl->assign('membre', $membre);


$tpl->display('admin/membres/message.tpl');

Modified src/www/admin/membres/message_collectif.php from [96dd15d89a] to [9ac4678b30].

1
2
3
4
5
6
7
8
9
10
11
12
13



14

15
16

17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

$error = false;

if (!empty($_POST['save']))
{
    if (!Utils::CSRF_check('send_message_collectif'))
    {



        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';

    }
    elseif (!Utils::post('sujet'))

    {
        $error = 'Le sujet ne peut rester vide.';
    }
    elseif (!Utils::post('message'))
    {
        $error = 'Le message ne peut rester vide.';
    }
    else
    {
        try {
            $membres->sendMessageToCategory(Utils::post('dest'), Utils::post('sujet'), Utils::post('message'), (bool) Utils::post('subscribed'));

            Utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }
}

$cats = new Membres\Categories;

$tpl->assign('cats_liste', $cats->listSimple());
$tpl->assign('cats_cachees', $cats->listHidden());
$tpl->assign('error', $error);

$tpl->display('admin/membres/message_collectif.tpl');







|
|
<
<
|
<
>
>
>
|
>
|
<
>

<
<
<
<
<
<
<
<

<
>




|








<


1
2
3
4
5
6
7
8
9


10

11
12
13
14
15
16

17
18








19

20
21
22
23
24
25
26
27
28
29
30
31
32
33

34
35
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

if (f('save'))
{


    $form->check('send_message_collectif', [

        'sujet'      => 'required|string',
        'message'    => 'required|string',
        'dest'       => 'numeric',
        'subscribed' => 'boolean',
    ]);


    if (!$form->hasErrors())
    {








        try {

            $membres->sendMessageToCategory(f('dest'), f('sujet'), f('message'), (bool) f('subscribed'));
            Utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}

$cats = new Membres\Categories;

$tpl->assign('cats_liste', $cats->listSimple());
$tpl->assign('cats_cachees', $cats->listHidden());


$tpl->display('admin/membres/message_collectif.tpl');

Modified src/www/admin/membres/modifier.php from [7349c1a177] to [2e7de0086f].

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
..
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

if (($membre_cat->droit_membres == Membres::DROIT_ADMIN)
    && ($user->droits->membres < Membres::DROIT_ADMIN))
{
    throw new UserException("Seul un membre admin peut modifier un autre membre admin.");
}

$error = false;

if (f('save'))
{
    $form->check('edit_member_' . $id, [
        'passe' => 'confirmed',
        // FIXME: ajouter les règles pour les champs membres
    ]);

................................................................................
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}

$tpl->assign('error', $error);
$tpl->assign('passphrase', Utils::suggestPassword());
$tpl->assign('champs', $champs->getAll());

$tpl->assign('membres_cats', $cats->listSimple());
$tpl->assign('current_cat', f('id_categorie') ?: $membre->id_categorie);

$tpl->assign('can_change_id', $session->canAccess('membres', Membres::DROIT_ADMIN));

$tpl->assign('membre', $membre);

$tpl->display('admin/membres/modifier.tpl');







<
<







 







<











24
25
26
27
28
29
30


31
32
33
34
35
36
37
..
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80

if (($membre_cat->droit_membres == Membres::DROIT_ADMIN)
    && ($user->droits->membres < Membres::DROIT_ADMIN))
{
    throw new UserException("Seul un membre admin peut modifier un autre membre admin.");
}



if (f('save'))
{
    $form->check('edit_member_' . $id, [
        'passe' => 'confirmed',
        // FIXME: ajouter les règles pour les champs membres
    ]);

................................................................................
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}


$tpl->assign('passphrase', Utils::suggestPassword());
$tpl->assign('champs', $champs->getAll());

$tpl->assign('membres_cats', $cats->listSimple());
$tpl->assign('current_cat', f('id_categorie') ?: $membre->id_categorie);

$tpl->assign('can_change_id', $session->canAccess('membres', Membres::DROIT_ADMIN));

$tpl->assign('membre', $membre);

$tpl->display('admin/membres/modifier.tpl');

Modified src/www/admin/membres/supprimer.php from [e78880eacc] to [5dd74ed6f8].

1
2
3
4
5
6


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);



$membre = $membres->get(qg('id'));

if (!$membre)
{
    throw new UserException("Ce membre n'existe pas.");
}

$error = false;

if ($membre->id == $user->id)
{
    $error = "Il n'est pas possible de supprimer votre propre compte.";
}

if (Utils::post('delete') && !$error)

{
    if (!Utils::CSRF_check('delete_membre_'.$membre->id))
    {
        $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
    }
    else

    {
        try {
            $membres->delete($membre->id);
            Utils::redirect('/admin/membres/');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }
}

$tpl->assign('membre', $membre);
$tpl->assign('error', $error);

$tpl->display('admin/membres/supprimer.tpl');






>
>








<
<


|


<
>

|
|
<
<
<
>







|





<


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


17
18
19
20
21

22
23
24
25



26
27
28
29
30
31
32
33
34
35
36
37
38
39

40
41
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

qv(['id' => 'required|numeric']);

$membre = $membres->get(qg('id'));

if (!$membre)
{
    throw new UserException("Ce membre n'existe pas.");
}



if ($membre->id == $user->id)
{
    throw new UserException("Il n'est pas possible de supprimer votre propre compte.");
}


if (f('delete'))
{
    $form->check('delete_membre_'.$membre->id);




    if (!$form->hasErrors())
    {
        try {
            $membres->delete($membre->id);
            Utils::redirect('/admin/membres/');
        }
        catch (UserException $e)
        {
            $form->addError($e->getMessage());
        }
    }
}

$tpl->assign('membre', $membre);


$tpl->display('admin/membres/supprimer.tpl');