Overview
Comment:Gestion d'une lettre d'infos
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 90c5975d8af57ab9cd4f5edc78431a0e20c89e7b
User & Date: bohwaz on 2012-05-21 13:17:55
Other Links: manifest | tags
Context
2012-05-21
13:39
Mise à jour de la BDD automatique check-in: 83c7888c7a user: bohwaz tags: trunk
13:17
Gestion d'une lettre d'infos check-in: 90c5975d8a user: bohwaz tags: trunk
03:59
Correction chemins libs + normalisation numéro téléphone check-in: 9e651ce677 user: bohwaz tags: trunk
Changes

Modified DB_SCHEMA from [74631e1ef8] to [05cda21da9].

44
45
46
47
48
49
50


51
52
53
54
55
56
57
    ville TEXT,
    pays TEXT,
    telephone TEXT,
    date_naissance TEXT,

    -- Pour le bordel
    notes TEXT,



    date_inscription TEXT DEFAULT CURRENT_DATE,
    date_connexion TEXT,

    -- Dernière cotisation enregistrée
    date_cotisation TEXT,








>
>







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    ville TEXT,
    pays TEXT,
    telephone TEXT,
    date_naissance TEXT,

    -- Pour le bordel
    notes TEXT,

    lettre_infos INTEGER DEFAULT 0,

    date_inscription TEXT DEFAULT CURRENT_DATE,
    date_connexion TEXT,

    -- Dernière cotisation enregistrée
    date_cotisation TEXT,

Modified include/class.membres.php from [2f7b12d913] to [eb2ffac5af].

204
205
206
207
208
209
210





211
212
213
214
215
216
217
            throw new UserException('Le mot de passe doit faire au moins 5 caractères.');
        }

        if (!empty($data['telephone']))
        {
            $data['telephone'] = preg_replace('![^\d\+]!', '', $data['telephone']);
        }






        return true;
    }

    public function add($data = array())
    {
        $this->_checkFields($data);







>
>
>
>
>







204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
            throw new UserException('Le mot de passe doit faire au moins 5 caractères.');
        }

        if (!empty($data['telephone']))
        {
            $data['telephone'] = preg_replace('![^\d\+]!', '', $data['telephone']);
        }

        if (isset($data['lettre_infos']))
        {
            $data['lettre_infos'] = (int) (bool) $data['lettre_infos'];
        }

        return true;
    }

    public function add($data = array())
    {
        $this->_checkFields($data);
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469





470
471
472


473
474
475
476
477
478
479
480
481
482
483

        $db = Garradin_DB::getInstance();
        $db->exec('UPDATE wiki_revisions SET id_auteur = 0 WHERE id_auteur IN ('.$membres.');');
        //$db->exec('DELETE FROM wiki_suivi WHERE id_membre IN ('.$membres.');');
        return $db->exec('DELETE FROM membres WHERE id IN ('.$membres.');');
    }

    public function sendMessageToCategory($dest, $sujet, $message)
    {
        $config = Garradin_Config::getInstance();

        $headers = array(
            'From'  =>  '"'.$config->get('nom_asso').'" <'.$config->get('email_asso').'>',
        );
        $message .= "\n\n--\n".$config->get('nom_asso')."\n".$config->get('site_asso');

        if ($dest == 0)
            $where = 'id_categorie NOT IN (SELECT id FROM membres_categories WHERE cacher = 1)';
        else
            $where = 'id_categorie = '.(int)$dest;






        $db = Garradin_DB::getInstance();
        $res = $db->query('SELECT email FROM membres WHERE '.$where.' ORDER BY id;');



        while ($row = $res->fetchArray(SQLITE3_ASSOC))
        {
            utils::mail($row['email'], $sujet, $message, $headers);
        }

        return true;
    }
}

?>







|












>
>
>
>
>



>
>











455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495

        $db = Garradin_DB::getInstance();
        $db->exec('UPDATE wiki_revisions SET id_auteur = 0 WHERE id_auteur IN ('.$membres.');');
        //$db->exec('DELETE FROM wiki_suivi WHERE id_membre IN ('.$membres.');');
        return $db->exec('DELETE FROM membres WHERE id IN ('.$membres.');');
    }

    public function sendMessageToCategory($dest, $sujet, $message, $subscribed_only = false)
    {
        $config = Garradin_Config::getInstance();

        $headers = array(
            'From'  =>  '"'.$config->get('nom_asso').'" <'.$config->get('email_asso').'>',
        );
        $message .= "\n\n--\n".$config->get('nom_asso')."\n".$config->get('site_asso');

        if ($dest == 0)
            $where = 'id_categorie NOT IN (SELECT id FROM membres_categories WHERE cacher = 1)';
        else
            $where = 'id_categorie = '.(int)$dest;

        if ($subscribed_only)
        {
            $where .= ' AND lettre_infos = 1';
        }

        $db = Garradin_DB::getInstance();
        $res = $db->query('SELECT email FROM membres WHERE '.$where.' ORDER BY id;');

        $sujet = '['.$config->get('nom_asso').'] '.$sujet;

        while ($row = $res->fetchArray(SQLITE3_ASSOC))
        {
            utils::mail($row['email'], $sujet, $message, $headers);
        }

        return true;
    }
}

?>

Modified templates/admin/membres/ajouter.tpl from [0ec7e1dfb0] to [aaf37f23c6].

56
57
58
59
60
61
62




63
64
65
66
67
68
69
            <dd>
                <select name="id_categorie" id="f_cat">
                {foreach from=$membres_cats key="id" item="nom"}
                    <option value="{$id|escape}"{if $current_cat == $id} selected="selected"{/if}>{$nom|escape}</option>
                {/foreach}
                </select>
            </dd>




        </dl>
    </fieldset>
    {/if}

    <p class="submit">
        {csrf_field key="new_member"}
        <input type="submit" name="save" value="Enregistrer &rarr;" />







>
>
>
>







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
            <dd>
                <select name="id_categorie" id="f_cat">
                {foreach from=$membres_cats key="id" item="nom"}
                    <option value="{$id|escape}"{if $current_cat == $id} selected="selected"{/if}>{$nom|escape}</option>
                {/foreach}
                </select>
            </dd>
            <dt>
                <input type="checkbox" id="f_lettre" name="lettre_infos" value="1" {form_field name="lettre_infos" checked="1"} />
                <label for="f_lettre">Inscription à la lettre d'information</label>
            </dt>
        </dl>
    </fieldset>
    {/if}

    <p class="submit">
        {csrf_field key="new_member"}
        <input type="submit" name="save" value="Enregistrer &rarr;" />

Modified templates/admin/membres/message_collectif.tpl from [a703ad3fc0] to [8d90ca6329].

17
18
19
20
21
22
23




24

25
26
27
28
29
30
31
                <select name="dest">
                    <option value="0">Toutes les catégories qui ne sont pas cachées</option>
                {foreach from=$cats_liste key="id" item="nom"}
                    <option value="{$id|escape}">{$nom|escape} {if array_key_exists($id, $cats_cachees)}[cachée]{/if}</option>
                {/foreach}
                </select>
            </dd>




            <dt><label for="f_sujet">Sujet</label> <b title="(Champ obligatoire)">obligatoire</b></dt>

            <dd><input type="text" name="sujet" id="f_sujet" value="{form_field name=sujet}" /></dd>
            <dt><label for="f_message">Message</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
            <dd><textarea name="message" id="f_message" cols="72" rows="25">{form_field name=message}</textarea></dd>
        </dl>
    </fieldset>

    <p class="submit">







>
>
>
>

>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
                <select name="dest">
                    <option value="0">Toutes les catégories qui ne sont pas cachées</option>
                {foreach from=$cats_liste key="id" item="nom"}
                    <option value="{$id|escape}">{$nom|escape} {if array_key_exists($id, $cats_cachees)}[cachée]{/if}</option>
                {/foreach}
                </select>
            </dd>
            <dd>
                <input type="checkbox" id="f_subscribed" name="subscribed" value="1" {form_field name="subscribed" default="1" checked="1"} />
                <label for="f_subscribed">Seulement les membres inscrits à la lettre d'information</label>
            </dd>
            <dt><label for="f_sujet">Sujet</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
            <dd class="help">Sera automatiquement précédé de la mention [{$config.nom_asso|escape}]</dd>
            <dd><input type="text" name="sujet" id="f_sujet" value="{form_field name=sujet}" /></dd>
            <dt><label for="f_message">Message</label> <b title="(Champ obligatoire)">obligatoire</b></dt>
            <dd><textarea name="message" id="f_message" cols="72" rows="25">{form_field name=message}</textarea></dd>
        </dl>
    </fieldset>

    <p class="submit">

Modified templates/admin/membres/modifier.tpl from [0a0b07bdb8] to [4b897c0d4d].

65
66
67
68
69
70
71




72
73
74
75
76
77
78
            <dd>
                <select name="id_categorie" id="f_cat">
                {foreach from=$membres_cats key="id" item="nom"}
                    <option value="{$id|escape}"{if $current_cat == $id} selected="selected"{/if}>{$nom|escape}</option>
                {/foreach}
                </select>
            </dd>




        </dl>
    </fieldset>
    {/if}

    <p class="submit">
        {csrf_field key="edit_member_"|cat:$membre.id}
        <input type="submit" name="save" value="Enregistrer &rarr;" />







>
>
>
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
            <dd>
                <select name="id_categorie" id="f_cat">
                {foreach from=$membres_cats key="id" item="nom"}
                    <option value="{$id|escape}"{if $current_cat == $id} selected="selected"{/if}>{$nom|escape}</option>
                {/foreach}
                </select>
            </dd>
            <dt>
                <input type="checkbox" id="f_lettre" name="lettre_infos" value="1" {form_field name="lettre_infos" data=$membre checked="1"} />
                <label for="f_lettre">Inscription à la lettre d'information</label>
            </dt>
        </dl>
    </fieldset>
    {/if}

    <p class="submit">
        {csrf_field key="edit_member_"|cat:$membre.id}
        <input type="submit" name="save" value="Enregistrer &rarr;" />

Modified www/admin/membres/ajouter.php from [76e0ebba8d] to [3e2006d16f].

45
46
47
48
49
50
51

52
53
54
55
56
57
58
                'telephone'     =>  utils::post('telephone'),
                'code_postal'   =>  utils::post('code_postal'),
                'adresse'       =>  utils::post('adresse'),
                'ville'         =>  utils::post('ville'),
                'pays'          =>  utils::post('pays'),
                'date_naissance'=>  utils::post('date_naissance'),
                'notes'         =>  '',

            ));

            utils::redirect('/admin/membres/fiche.php?id='.(int)$id);
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();







>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
                'telephone'     =>  utils::post('telephone'),
                'code_postal'   =>  utils::post('code_postal'),
                'adresse'       =>  utils::post('adresse'),
                'ville'         =>  utils::post('ville'),
                'pays'          =>  utils::post('pays'),
                'date_naissance'=>  utils::post('date_naissance'),
                'notes'         =>  '',
                'lettre_infos'  =>  utils::post('lettre_infos'),
            ));

            utils::redirect('/admin/membres/fiche.php?id='.(int)$id);
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();

Modified www/admin/membres/message_collectif.php from [458b51cd2c] to [e49d7fe2d5].

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    elseif (!utils::post('message'))
    {
        $error = 'Le message ne peut rester vide.';
    }
    else
    {
        try {
            $membres->sendMessageToCategory(utils::post('dest'), utils::post('sujet'), utils::post('message'));
            utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    elseif (!utils::post('message'))
    {
        $error = 'Le message ne peut rester vide.';
    }
    else
    {
        try {
            $membres->sendMessageToCategory(utils::post('dest'), utils::post('sujet'), utils::post('message'), utils::post('subscribed'));
            utils::redirect('/admin/membres/?sent');
        }
        catch (UserException $e)
        {
            $error = $e->getMessage();
        }
    }

Modified www/admin/membres/modifier.php from [e95de77973] to [6d740824ff].

56
57
58
59
60
61
62

63
64
65
66
67
68
69
                'telephone'     =>  utils::post('telephone'),
                'code_postal'   =>  utils::post('code_postal'),
                'adresse'       =>  utils::post('adresse'),
                'ville'         =>  utils::post('ville'),
                'pays'          =>  utils::post('pays'),
                'date_naissance'=>  utils::post('date_naissance'),
                'notes'         =>  utils::post('notes'),

            );

            if ($user['droits']['membres'] == Garradin_Membres::DROIT_ADMIN)
            {
                $data['id_categorie'] = utils::post('id_categorie');
                $data['id'] = utils::post('id');
            }







>







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
                'telephone'     =>  utils::post('telephone'),
                'code_postal'   =>  utils::post('code_postal'),
                'adresse'       =>  utils::post('adresse'),
                'ville'         =>  utils::post('ville'),
                'pays'          =>  utils::post('pays'),
                'date_naissance'=>  utils::post('date_naissance'),
                'notes'         =>  utils::post('notes'),
                'lettre_infos'  =>  utils::post('lettre_infos'),
            );

            if ($user['droits']['membres'] == Garradin_Membres::DROIT_ADMIN)
            {
                $data['id_categorie'] = utils::post('id_categorie');
                $data['id'] = utils::post('id');
            }