source: spip-zone/_plugins_/newsletters/action/generer_newsletter.php @ 68171

Last change on this file since 68171 was 68171, checked in by cedric@…, 8 years ago

action fixer_newsletter qui fixe les elements volatiles de la newsletter
par exemple : images de local/ copiee dans IMG/nl/xx/
Lorsque la newsletter est publiee, on appelle cette action fixer_newsletter

+ un filtre newsletter_fixer_image utilisable depuis le squelette de newsletter (filtre unipotent)

File size: 2.2 KB
Line 
1<?php
2/**
3 * Plugin Newsletters
4 * (c) 2012 Cedric Morin
5 * Licence GNU/GPL
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9include_spip("inc/newsletters");
10
11function action_generer_newsletter_dist($id_newsletter = null, $force = false){
12        if (is_null($id_newsletter)){
13                $securiser_action = charger_fonction('securiser_action', 'inc');
14                $id_newsletter = $securiser_action();
15        }
16
17        include_spip('inc/autoriser');
18        if (autoriser('generer', 'newsletter', $id_newsletter)){
19                $row = sql_fetsel('*', 'spip_newsletters', 'id_newsletter=' . intval($id_newsletter));
20
21                // si cuite on ne genere pas, sauf si force
22                if (!$row['baked'] OR $force){
23                        $patron = $row['patron'];
24                        $date = intval($row['date_redac'])?$row['date_redac']:$row['date'];
25
26                        $set = array();
27                        $set['html_email'] = newsletters_recuperer_fond($id_newsletter, $patron, $date);
28                        if (trouver_fond("$patron.texte","newsletters"))
29                                $set['texte_email'] = newsletters_recuperer_fond($id_newsletter, "$patron.texte", $date);
30                        else
31                                $set['texte_email'] = newsletters_html2text($set['html_email']);
32
33                        $set['html_page'] = '';
34                        if (trouver_fond("$patron.page","newsletters"))
35                                $set['html_page'] = newsletters_recuperer_fond($id_newsletter, "$patron.page", $date);
36
37                        #header('Content-Type: text/plain; charset=utf-8');
38                        #echo($set['texte_email']);
39                        #die();
40
41                        include_spip("action/editer_objet");
42                        objet_modifier("newsletter",$id_newsletter,$set);
43
44                }
45        }
46}
47
48/**
49 * Recuperer un fond avec des liens internes public, et la bonne date
50 *
51 * @param int $id_newsletter
52 * @param string $patron
53 * @param null|string $date
54 * @return string
55 */
56function newsletters_recuperer_fond($id_newsletter, $patron, $date = null){
57
58        if (is_null($date))
59                $date = date('Y-m-d 00:00:00');
60
61        // on passe la globale lien_implicite_cible_public en true
62        // pour avoir les liens internes en public (en non prive d'apres le contexte)
63        // credit de l'astuce: denisb & rastapopoulos
64        $GLOBALS['lien_implicite_cible_public'] = true;
65
66        $texte = recuperer_fond(
67                "newsletters/$patron",
68                array(
69                        'date' => $date,
70                        'id_newsletter' => $id_newsletter,
71                )
72        );
73
74        // on revient a la config initiale
75        unset($GLOBALS['lien_implicite_cible_public']);
76
77        return $texte;
78}
Note: See TracBrowser for help on using the repository browser.