source: spip-zone/_plugins_/newsletters/action/fixer_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: 1.6 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");
10include_spip("newsletters_fonctions");
11
12/**
13 * fixer les images dans IMG pour ne pas les perdre meme si on vide les cache des images
14 * ou si on supprime un doc joint, un logo etc...
15 *
16 *
17 * @param int|null $id_newsletter
18 * @return mixed
19 */
20function action_fixer_newsletter_dist($id_newsletter = null){
21        if (is_null($id_newsletter)){
22                $securiser_action = charger_fonction('securiser_action', 'inc');
23                $id_newsletter = $securiser_action();
24        }
25
26        include_spip('inc/autoriser');
27        if (autoriser('modifier', 'newsletter', $id_newsletter)){
28                $row = sql_fetsel('html_email,html_page,texte_email', 'spip_newsletters', 'id_newsletter=' . intval($id_newsletter));
29
30                // trouver toutes les images dans les 2 versions html
31                $images = array();
32                foreach (array($row['html_email'],$row['html_page']) as $champ){
33                        preg_match_all('/<img\s[^>]*(src=["\'])([^\'"]*)(["\'])/Uims', $champ, $matches, PREG_SET_ORDER);
34                        if ($matches AND count($matches)){
35                                foreach ($matches as $matche){
36                                        $src = $matche[2];
37                                        if (!isset($images[$src])){
38                                                if ($url = newsletter_fixer_image($src,$id_newsletter))
39                                                        $images[$src] = url_absolue($url);
40                                        }
41                                }
42                        }
43                }
44
45                foreach(array_keys($row) as $k){
46                        // remplacer les urls dans les differentes versions
47                        $row[$k] = str_replace(array_keys($images),array_values($images),$row[$k]);
48                }
49
50                include_spip("action/editer_objet");
51                objet_modifier("newsletter",$id_newsletter,$row);
52        }
53}
Note: See TracBrowser for help on using the repository browser.