Dotclear

source: plugins/newsletter/trunk/_admin.php @ 1532

Revision 1532, 4.5 KB checked in by kwon, 14 years ago (diff)

Newsletter 3.6.0rc1 :

  • closes #117 : retourne les billets des catégories filles
  • closes #156 : prise en compte de l'export / import
  • closes #233 : choix de la date de tri des billets
  • many others things ...
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3# This file is part of Newsletter, a plugin for Dotclear.
4#
5# Copyright (c) 2009 Benoit de Marne
6# benoit.de.marne@gmail.com
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11# -- END LICENSE BLOCK ------------------------------------
12
13// filtrage des droits
14if (!defined('DC_CONTEXT_ADMIN')) { return; }
15
16// intégration au menu d'administration
17$_menu['Plugins']->addItem(('Newsletter'), 'plugin.php?p='.newsletterPlugin::pname(), newsletterPlugin::urldatas().'/icon.png',
18    preg_match('/plugin.php\?p='.newsletterPlugin::pname().'(&.*)?$/', $_SERVER['REQUEST_URI']),
19    $core->auth->check('usage,admin', $core->blog->id));
20
21// ajout des comportements
22$core->addBehavior('pluginsBeforeDelete', array('dcBehaviorsNewsletter', 'pluginsBeforeDelete'));
23
24// envoi automatique
25$core->addBehavior('adminAfterPostCreate', array('dcBehaviorsNewsletter', 'adminAutosend'));
26$core->addBehavior('adminAfterPostUpdate', array('dcBehaviorsNewsletter', 'adminAutosend'));
27
28// ajout de l'import / export
29$core->addBehavior('exportFull',array('dcBehaviorsNewsletter','exportFull'));
30$core->addBehavior('exportSingle',array('dcBehaviorsNewsletter','exportSingle'));
31$core->addBehavior('importInit',array('dcBehaviorsNewsletter','importInit'));
32$core->addBehavior('importFull',array('dcBehaviorsNewsletter','importFull'));
33$core->addBehavior('importSingle',array('dcBehaviorsNewsletter','importSingle'));
34
35// chargement du widget
36require dirname(__FILE__).'/_widgets.php';
37
38// définition des comportements   
39class dcBehaviorsNewsletter
40{
41     /**
42     * avant suppression du plugin par le gestionnaire, on le déinstalle proprement
43     */
44     public static function pluginsBeforeDelete($plugin)
45     {
46          $name = (string) $plugin['name'];
47          if (strcmp($name, newsletterPlugin::pname()) == 0) {
48               require dirname(__FILE__).'/inc/class.newsletter.admin.php';
49               newsletterAdmin::uninstall();
50          }
51     }
52   
53     /**
54     * après création d'un billet dans l'admin
55     */
56     public static function adminAutosend($cur, $post_id)
57     {
58          newsletterCore::autosendNewsletter();
59     }
60
61
62     public static function exportFull($core,$exp)
63     {
64          $exp->exportTable('newsletter');
65     }
66
67     public static function exportSingle($core,$exp,$blog_id)
68     {
69          $exp->export('newsletter',
70               'SELECT subscriber_id, blog_id, email, regcode, state, subscribed, lastsent, modesend '.
71               'FROM '.$core->prefix.'newsletter N '.
72               "WHERE N.blog_id = '".$blog_id."'"
73          );
74     }
75
76     public static function importInit($bk,$core)
77     {
78          $bk->cur_newsletter = $core->con->openCursor($core->prefix.'newsletter');
79     }
80
81     public static function importSingle($line,$bk,$core)
82     {
83          if ($line->__name == 'newsletter') {
84               
85               $cur = $core->con->openCursor($core->prefix.'newsletter');
86               
87               $bk->cur_newsletter->subscriber_id = (integer) $line->subscriber_id;
88               $bk->cur_newsletter->blog_id       = (string) $core->blog_id;
89               $bk->cur_newsletter->email         = (string) $line->email;
90               $bk->cur_newsletter->regcode       = (string) $line->regcode;
91               $bk->cur_newsletter->state         = (string) $line->state;
92               $bk->cur_newsletter->subscribed    = (string) $line->subscribed;
93               $bk->cur_newsletter->lastsent      = (string) $line->lastsent;
94               $bk->cur_newsletter->modesend      = (string) $line->modesend;
95               
96               newsletterCore::add($bk->cur_newsletter->email, (string) $core->blog_id, $bk->cur_newsletter->regcode, $bk->cur_newsletter->modesend);
97
98               $subscriber = newsletterCore::getEmail($bk->cur_newsletter->email);
99               if ($subscriber != null) {
100                    newsletterCore::update($subscriber->subscriber_id, 
101                         $bk->cur_newsletter->email, 
102                         $bk->cur_newsletter->state, 
103                         $bk->cur_newsletter->regcode, 
104                         $bk->cur_newsletter->subscribed, 
105                         $bk->cur_newsletter->lastsent, 
106                         $bk->cur_newsletter->modesend
107                    );
108               }
109          }
110     }
111
112     public static function importFull($line,$bk,$core)
113     {
114          if ($line->__name == 'newsletter') {
115               
116               $bk->cur_newsletter->clean();
117               
118               $bk->cur_newsletter->subscriber_id = (integer) $line->subscriber_id;
119               $bk->cur_newsletter->blog_id       = (string) $line->blog_id;
120               $bk->cur_newsletter->email         = (string) $line->email;
121               $bk->cur_newsletter->regcode       = (string) $line->regcode;
122               $bk->cur_newsletter->state         = (string) $line->state;
123               $bk->cur_newsletter->subscribed    = (string) $line->subscribed;
124               $bk->cur_newsletter->lastsent      = (string) $line->lastsent;
125               $bk->cur_newsletter->modesend      = (string) $line->modesend;
126               
127               $bk->cur_newsletter->insert();
128          }
129     }
130
131
132}
133     
134?>
Note: See TracBrowser for help on using the repository browser.

Sites map