Dotclear

source: plugins/newsletter/trunk/inc/class.newsletter.admin.php @ 1538

Revision 1538, 43.2 KB checked in by kwon, 14 years ago (diff)

Newsletter 3.6.0rc4 :

  • corrige le choix du template pour la newsletter
  • corrige la selection des abonnes lors de l'envoi de la newsletter
  • Property svn:executable set to *
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/** ==================================================
14     administration
15================================================== */
16
17class newsletterAdmin
18{
19     /**
20     * désinstallation du plugin
21     */
22     public static function uninstall()
23     {
24          // suppression du schéma
25          global $core;
26          try {
27               // désactivation du plugin
28               newsletterPlugin::inactivate();
29               
30               // suppression des paramètres par défaut
31               newsletterPlugin::deleteSettings();
32               newsletterPlugin::delete_version();
33
34               $con = &$core->con;
35
36               $strReq =
37                    'DROP TABLE '.
38                    $core->prefix.newsletterPlugin::pname();
39
40               $rs = $con->execute($strReq);
41
42          } catch (Exception $e) { 
43               $core->error->add($e->getMessage()); 
44          }
45     }
46
47     /**
48     * export du contenu du schéma
49     */
50     public static function Export($onlyblog = true, $outfile = null)
51     {
52          global $core;
53          try {
54               $blog = &$core->blog;
55               $blogid = (string)$blog->id;
56
57               // générer le contenu du fichier à partir des données
58               if (isset($outfile)) {
59                    $filename = $outfile;
60               } else {
61                    if ($onlyblog) 
62                         $filename = $core->blog->public_path.'/'.$blogid.'-'.newsletterPlugin::pname().'.dat';
63                    else 
64                         $filename = $core->blog->public_path.'/'.newsletterPlugin::pname().'.dat';
65               }
66
67               $content = '';
68               $datas = newsletterCore::getRawDatas($onlyblog);
69               if (is_object($datas) !== FALSE) {
70                    $datas->moveStart();
71                    while ($datas->fetch())
72                    {
73                         $elems = array();
74
75                         // génération des élements de données
76                         $elems[] = $datas->subscriber_id;
77                         $elems[] = base64_encode($datas->blog_id);
78                         $elems[] = base64_encode($datas->email);
79                         $elems[] = base64_encode($datas->regcode);
80                         $elems[] = base64_encode($datas->state);
81                         $elems[] = base64_encode($datas->subscribed);
82                         $elems[] = base64_encode($datas->lastsent);
83                         $elems[] = base64_encode($datas->modesend);
84
85                         // génération de la ligne de données exportées(séparateur -> ;)
86                         $line = implode(";", $elems);
87                         $content .= "$line\n";
88                    }
89               }
90
91               // écrire le contenu dans le fichier
92               if(@file_put_contents($filename, $content)) {
93                    return $msg = __('Datas exported in file').' '.$filename;
94               } else {
95                    throw new Exception(__('Error during export'));
96               }
97               
98               
99          } catch (Exception $e) { 
100               $core->error->add($e->getMessage()); 
101          }
102     }
103
104     /**
105     * import du contenu du schéma
106     */
107     public static function Import($onlyblog = true, $infile = null)
108     {
109          global $core;
110
111          $blog = &$core->blog;
112          $blogid = (string)$blog->id;
113       
114          // lire le contenu du fichier à partir des données
115          if (isset($infile)) 
116               $filename = $infile;
117          else {
118               if ($onlyblog) 
119                    $filename = $core->blog->public_path.'/'.$blogid.'-'.newsletterPlugin::pname().'.dat';
120               else 
121                    $filename = $core->blog->public_path.'/'.newsletterPlugin::pname().'.dat';
122          }
123
124          // ouverture du fichier
125          $fh = @fopen($filename, "r");
126          if ($fh === FALSE) 
127               throw new Exception(__('File not readable').' '.$filename);
128          else {
129               // boucle de lecture sur les lignes du fichier
130               $err = false;
131               while (!feof($fh)) {
132                    // lecture d'une ligne du fichier
133                    $l = @fgetss($fh, 4096);
134                    if ($l != FALSE) {
135                         // sécurisation du contenu de la ligne et décomposition en élements (séparateur -> ;)
136                         $line = (string) html::clean((string) $l);
137                         $elems = explode(";", $line);
138
139                         // traitement des données lues
140                         $subscriber_id = $elems[0];
141                         $blog_id = base64_decode($elems[1]);
142                         $email = base64_decode($elems[2]);
143                         $regcode = base64_decode($elems[3]);
144                         $state = base64_decode($elems[4]);
145                         $subscribed = base64_decode($elems[5]);
146                         $lastsent = base64_decode($elems[6]);
147                         $modesend = base64_decode($elems[7]);
148
149                         newsletterCore::add($email, $blog_id, $regcode, $modesend);
150
151                         $subscriber = newsletterCore::getEmail($email);
152                         if ($subscriber != null) {
153                              //$core->error->add('id : '.$subscriber->subscriber_id);
154                              newsletterCore::update($subscriber->subscriber_id, $email, $state, $regcode, $subscribed, $lastsent, $modesend);
155                         }
156                    }
157               }
158
159               // fermeture du fichier
160               @fclose($fh);
161                   
162               if ($err) 
163                    throw new Exception(__('Error to import file').' '.$filename);
164               else 
165                    return $msg = __('Datas imported from file').' '.$filename;
166          }
167     }
168
169     /**
170     * import email addresses from a file
171     */
172     public static function importFromTextFile($infile = null)
173     {
174          global $core;
175          try {
176               $blog = &$core->blog;
177               $blogid = (string)$blog->id;
178               $counter=0;
179               $counter_ignore=0;
180               $counter_failed=0;
181               
182               $newsletter_settings = new newsletterSettings($core);
183               $modesend = $newsletter_settings->getSendMode();
184               
185               if (!empty($infile)){
186                   
187                    //$core->error->add('Traitement du fichier ' . $infile['name']);
188                    files::uploadStatus($infile);
189                    $filename = $infile['tmp_name'];
190               
191                    if(file_exists($filename) && is_readable($filename)) {
192
193                         // ouverture du fichier
194                         $fh = @fopen($filename, "r");
195     
196                         // boucle de lecture sur les lignes du fichier
197                         while (!feof($fh)) {
198                              // lecture d'une ligne du fichier
199                              $l = @fgetss($fh, 4096);
200                              if ($l != FALSE) {
201                                   $email = trim($l);
202                                   if (!text::isEmail($email)) {
203                                        $core->error->add(html::escapeHTML($email).' '.__('is not a valid email address.'));
204                                        $counter_failed++;
205                                   } else {
206                                        $regcode = newsletterTools::regcode();
207                                        if(newsletterCore::add($email, $blog_id, $regcode, $modesend))
208                                             $counter++;
209                                        else
210                                             $counter_ignore++;
211                                   }
212                              }
213                         }
214     
215                         // fermeture du fichier
216                         @fclose($fh);
217                         
218                         // message de retour
219                         if(0 == $counter || 1 == $counter) {
220                              $retour = $counter . ' ' . __('email inserted');
221                         } else {
222                              $retour = $counter . ' ' . __('emails inserted');
223                         }
224                         if(0 == $counter_ignore || 1 == $counter_ignore) {
225                              $retour .= ', ' . $counter_ignore . ' ' . __('email ignored');
226                         } else {
227                              $retour .= ', ' . $counter_ignore . ' ' . __('emails ignored');
228                         }
229                         if(1 == $counter_failed) {
230                              $retour .= ', ' . $counter_failed . ' ' . __('line incorrect');
231                         } else {
232                              $retour .= ', ' . $counter_failed . ' ' . __('lines incorrect');
233                         }                   
234                         
235                         return $retour;
236                    } else {
237                         throw new Exception(__('No file to read.'));
238                    }
239               } else {
240                    throw new Exception(__('No file to read.'));
241               }
242          } catch (Exception $e) { 
243               $core->error->add($e->getMessage()); 
244          }
245     }
246   
247     /**
248     * formulaire d'adaptation de template
249     */
250     public static function adapt($theme = null)
251     {
252          // prise en compte du plugin installé
253          if (!newsletterPlugin::isInstalled()) 
254               return;
255
256          if ($theme == null) 
257               echo __('No template to adapt.');
258          else {
259               global $core;
260               try {
261               
262                    $blog = &$core->blog;
263                    $settings = &$blog->settings;
264
265                    // fichier source
266                    //$sfile = 'post.html';
267                    $sfile = 'home.html';
268                    $source = $blog->themes_path.'/'.$theme.'/tpl/'.$sfile;
269
270                    // fichier de template
271                    $tfile = 'template.newsletter.html';
272                    $template = dirname(__FILE__).'/../default-templates/'.$tfile;
273                             
274                    // fichier destination
275                    $dest = $blog->themes_path.'/'.$theme.'/tpl/'.'subscribe.newsletter.html';
276                   
277                   
278                    if (!@file_exists($source)) {           // test d'existence de la source
279                         $msg = $sfile.' '.__('is not in your theme folder.').' ('.$blog->themes_path.')';
280                         $core->error->add($msg);
281                         return;
282                    } else if (!@file_exists($template)) {  // test d'existence du template source
283                         $msg = $tfile.' '.__('is not in the plugin folder.').' ('.dirname(__FILE__).')';
284                         $core->error->add($msg);
285                         return;
286                    } else if (!@is_readable($source)) {    // test si le fichier source est lisible
287                         $msg = $sfile.' '.__('is not readable.');
288                         $core->error->add($msg);
289                         return;
290                    } else {
291                         // lecture du contenu des fichiers template et source
292                         $tcontent = @file_get_contents($template);
293                         $scontent = @file_get_contents($source);
294                         
295                         // definition des remplacements
296                         switch ($theme) {
297                              case 'noviny':
298                              {
299                                   // traitement du theme particulier noviny
300                                   $patterns[0] = '/<div id=\"overview\" class=\"grid-l\">[\S\s]*<div id=\"extra\"/';
301                                   $replacements[0] = '<div class="grid-l">'. "\n" .'<div class="post">'. "\n" . $tcontent . "\n" .'</div>'. "\n" . '</div>'. "\n" .'<div id="extra"';
302                                   $patterns[1] = '/<title>.*<\/title>/';
303                                   $replacements[1] = '<title>{{tpl:NewsletterPageTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}</title>';
304                                   $patterns[2] = '/dc-home/';
305                                   $replacements[2] = 'dc-newsletter';
306                                   $patterns[3] = '/<meta name=\"dc.title\".*\/>/';
307                                   $replacements[3] = '<meta name="dc.title" content="{{tpl:NewsletterPageTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}" />';
308                                   $patterns[4] = '/<div id=\"lead\" class="grid-l home-lead">[\S\s]*<div id=\"meta\"/';
309                                   $replacements[4] = '<div id="lead" class="grid-l">'. "\n\t" .'<h2>{{tpl:NewsletterPageTitle encode_html="1"}}</h2>'. "\n\t" .'</div>'. "\n\t" . '<div id="meta"';
310                                   $patterns[5] = '/<div id=\"meta\" class=\"grid-s\">[\S\s]*{{tpl:include src=\"inc_meta.html\"}}/';
311                                   $replacements[5] = '<div id="meta" class="grid-s">'. "\n\t" .'{{tpl:include src="inc_meta.html"}}';
312                                   $patterns[6] = '/<h2 class=\"post-title\">{{tpl:NewsletterPageTitle encode_html=\"1\"}}<\/h2>/';
313                                   $replacements[6] = '';
314                                   break;
315                              }
316                              default:
317                              {
318                                   $patterns[0] = '/<tpl:Entries>[\S\s]*<\/tpl:Entries>/';
319                                   $replacements[0] = $tcontent;
320                                   $patterns[1] = '/<title>.*<\/title>/';
321                                   $replacements[1] = '<title>{{tpl:NewsletterPageTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}</title>';
322                                   $patterns[2] = '/dc-home/';
323                                   $replacements[2] = 'dc-newsletter';
324                                   $patterns[3] = '/<meta name=\"dc.title\".*\/>/';
325                                   $replacements[3] = '<meta name="dc.title" content="{{tpl:NewsletterPageTitle encode_html="1"}} - {{tpl:BlogName encode_html="1"}}" />';
326                                   $patterns[4] = '/<tpl:Entries no_content=\"1\">[\S\s]*<\/tpl:Entries>/';
327                                   $replacements[4] = '';
328                              }
329                         }
330
331
332                         $count = 0;
333                         $scontent = preg_replace($patterns, $replacements, $scontent, 1, $count);
334                         //$core->error->add('Nombre de remplacements : ' . $count);
335
336                         // suppression des lignes vides et des espaces de fin de ligne
337                         $a2 = array();
338                         $tok = strtok($scontent, "\n\r");
339                         while ($tok !== FALSE)
340                         {
341                              $l = rtrim($tok);
342                              if (strlen($l) > 0)
343                                  $a2[] = $l;
344                              $tok = strtok("\n\r");
345                         }
346                         $c2 = implode("\n", $a2);
347                         $scontent = $c2;
348
349                         // écriture du fichier de template
350                         if ((@file_exists($dest) && @is_writable($dest)) || @is_writable($blog->themes_path)) {
351                              $fp = @fopen($dest, 'w');
352                              @fputs($fp, $scontent);
353                              @fclose($fp);
354                              $msg = __('Template created.');
355                         } else {
356                              $msg = __('Unable to write file.');
357                         }
358
359                         //@file_put_contents($dest,$scontent);
360                         $msg = __('Template created.');
361
362                    }
363
364                    return $msg;
365               } catch (Exception $e) { 
366                    $core->error->add($e->getMessage()); 
367               }
368          }
369     }   
370}
371
372/** ==================================================
373     onglets de la partie d'administration
374================================================== */
375
376class tabsNewsletter
377{
378     /**
379     * paramétrage du plugin
380     */
381     public static function Settings()
382     {
383          // prise en compte du plugin installé
384          if (!newsletterCore::isInstalled()) {
385               return;
386          }
387
388          global $core;
389          try {
390               $blog = &$core->blog;
391                   
392               $mode_combo = array(__('text') => 'text',
393                                   __('html') => 'html');
394               $date_combo = array(__('creation date') => 'post_creadt',
395                                   __('update date') => 'post_dt',
396                                   __('publication date') => 'post_upddt'
397                                   );
398
399               if (newsletterPlugin::isActive()) {
400                   
401                    $newsletter_settings = new newsletterSettings($core);
402                   
403                    // initialisation des variables
404                    $feditorname = $newsletter_settings->getEditorName();
405                    $feditoremail = $newsletter_settings->getEditorEmail();
406                    $fcaptcha = $newsletter_settings->getCaptcha();
407                    $fmode = $newsletter_settings->getSendMode();
408                    $f_use_default_format = $newsletter_settings->getUseDefaultFormat();
409                    $fmaxposts = $newsletter_settings->getMaxPosts();
410                    $fminposts = $newsletter_settings->getMinPosts();
411                    $f_view_content_post = $newsletter_settings->getViewContentPost();
412                    $f_size_content_post = $newsletter_settings->getSizeContentPost();
413                    $fautosend = $newsletter_settings->getAutosend();
414                    $f_check_notification = $newsletter_settings->getCheckNotification();
415                    $f_check_use_suspend = $newsletter_settings->getCheckUseSuspend();
416                    $f_order_date = $newsletter_settings->getOrderDate();
417
418                    $rs = $core->blog->getCategories(array('post_type'=>'post'));
419                    $categories = array('' => '', __('Uncategorized') => 'null');
420                    while ($rs->fetch()) {
421                         $categories[str_repeat('&nbsp;&nbsp;',$rs->level-1).'&bull; '.html::escapeHTML($rs->cat_title)] = $rs->cat_id;
422                    }
423                    $f_category = $newsletter_settings->getCategory();
424                    $f_check_subcategories = $newsletter_settings->getCheckSubCategories();
425
426                    // gestion des paramètres du plugin
427                    echo 
428                    '<form action="plugin.php?p=newsletter&amp;m=settings" method="post" id="settings">'.
429                         '<fieldset id="advanced">'.
430                              '<legend>'.__('Advanced Settings').'</legend>'.
431                              '<p class="field">'.
432                                   '<label for="feditorname" class="classic required" title="'.__('Required field').'">'.__('Editor name').'</label>'.
433                                   form::field('feditorname',50,255,html::escapeHTML($feditorname)).
434                              '</p>'.
435                              '<p class="field">'.
436                                   '<label for="feditoremail" class="classic required" title="'.__('Required field').'">'.__('Editor email').'</label>'.
437                                   form::field('feditoremail',50,255,html::escapeHTML($feditoremail)).
438                              '</p>'.
439                              '<p class="field">'.
440                                   '<label for="fcaptcha" class="classic">'.__('Captcha').'</label>'.
441                                   form::checkbox('fcaptcha',1,$fcaptcha).
442                              '</p>'.
443                              '<p class="field">'.
444                                   '<label for="fmode" class="classic">'.__('Default format for sending').'</label>'.
445                                   form::combo('fmode',$mode_combo,$fmode).
446                              '</p>'.
447                              '<p class="field">'.
448                                   '<label for="f_use_default_format" class="classic">'.__('Use default format for sending').'</label>'.
449                                   form::checkbox('f_use_default_format',1,$f_use_default_format).
450                              '</p>'.
451                              '<p class="field">'.
452                                   '<label for="fautosend" class="classic">'.__('Automatic send').'</label>'.
453                                   form::checkbox('fautosend',1,$fautosend).
454                              '</p>'.
455                              '<p class="field">'.
456                                   '<label for="f_check_notification" class="classic">'.__('Notification sending').'</label>'.
457                                   form::checkbox('f_check_notification',1,$f_check_notification).
458                              '</p>'.
459                              '<p class="field">'.
460                                   '<label for="fminposts" class="classic">'.__('Minimum posts').'</label>'.
461                                   form::field('fminposts',4,4,$fminposts).
462                              '</p>'.
463                              '<p class="field">'.
464                                   '<label for="fmaxposts" class="classic">'.__('Maximum posts').'</label>'.
465                                   form::field('fmaxposts',4,4,$fmaxposts).
466                              '</p>'.
467                              '<p class="field">'.
468                                   '<label for="f_view_content_post" class="classic">'.__('View contents posts').'</label>'.
469                                   form::checkbox('f_view_content_post',1,$f_view_content_post).
470                              '</p>'.
471                              '<p class="field">'.
472                                   '<label for="f_size_content_post" class="classic">'.__('Size contents posts').'</label>'.
473                                   form::field('f_size_content_post',4,4,$f_size_content_post).
474                              '</p>'.
475                              '<p class="field">'.
476                                   '<label for="f_category" class="classic">'.__('Category').'</label>'.
477                                   form::combo('f_category',$categories,$f_category).
478                              '</p>'.
479                              '<p class="field">'.
480                                   '<label for="f_check_subcategories" class="classic">'.__('Include sub-categories').'</label>'.
481                                   form::checkbox('f_check_subcategories',1,$f_check_subcategories).
482                              '</p>'.
483                              '<p class="field">'.
484                                   '<label for="f_check_use_suspend" class="classic">'.__('Use suspend option').'</label>'.
485                                   form::checkbox('f_check_use_suspend',1,$f_check_use_suspend).
486                              '</p>'.
487                              '<p class="field">'.
488                                   '<label for="f_order_date" class="classic">'.__('Date selection for sorting posts').'</label>'.
489                                   form::combo('f_order_date',$date_combo,$f_order_date).
490                              '</p>'.                           
491                         '</fieldset>'.
492                         // boutons du formulaire
493                         '<p>'.
494                              '<input type="submit" name="save" value="'.__('Save').'" /> '.
495                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
496                         '</p>'.
497                         '<p>'.
498                              form::hidden(array('p'),newsletterPlugin::pname()).
499                              form::hidden(array('op'),'settings').
500                              $core->formNonce().
501                         '</p>'.
502                    '</form>'.
503                    '';
504               } else {
505                    echo
506                    '<fieldset>'.
507                         '<p>'.
508                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
509                         '</p>'.
510                    '</fieldset>';
511               }
512               
513          } catch (Exception $e) { 
514               $core->error->add($e->getMessage()); 
515          }
516     }
517
518     /**
519     * paramétrage du plugin
520     */
521     public static function Messages()
522     {
523          global $core;
524          try {
525               $blog = &$core->blog;
526
527               if (newsletterPlugin::isActive()) {
528                    $newsletter_settings = new newsletterSettings($core);
529
530                    // newsletter
531                    $f_newsletter_subject = $newsletter_settings->getNewsletterSubject();
532                    $f_introductory_msg = $newsletter_settings->getIntroductoryMsg();
533                    $f_concluding_msg = $newsletter_settings->getConcludingMsg();
534                    $f_msg_presentation_form = $newsletter_settings->getMsgPresentationForm();
535                    $f_presentation_msg = $newsletter_settings->getPresentationMsg();
536                    $f_presentation_posts_msg = $newsletter_settings->getPresentationPostsMsg();
537
538                    // confirm
539                    $f_confirm_subject = $newsletter_settings->getConfirmSubject();
540                    $f_txt_intro_confirm = $newsletter_settings->getTxtIntroConfirm();
541                    $f_txtConfirm = $newsletter_settings->getTxtConfirm();
542                    $f_confirm_msg = $newsletter_settings->getConfirmMsg();
543                    $f_concluding_confirm_msg = $newsletter_settings->getConcludingConfirmMsg();
544
545                    // disable
546                    $f_disable_subject = $newsletter_settings->getDisableSubject();
547                    $f_txt_intro_disable = $newsletter_settings->getTxtIntroDisable();
548                    $f_txtDisable = $newsletter_settings->getTxtDisable();
549                    $f_disable_msg = $newsletter_settings->getDisableMsg();
550                    $f_concluding_disable_msg = $newsletter_settings->getConcludingDisableMsg();
551                    $f_txt_disabled_msg = $newsletter_settings->getTxtDisabledMsg();
552
553                    // enable
554                    $f_txt_intro_enable = $newsletter_settings->getTxtIntroEnable();
555                    $f_txtEnable = $newsletter_settings->getTxtEnable();
556                    $f_enable_subject = $newsletter_settings->getEnableSubject();
557                    $f_enable_msg = $newsletter_settings->getEnableMsg();
558                    $f_concluding_enable_msg = $newsletter_settings->getConcludingEnableMsg();
559                    $f_txt_enabled_msg = $newsletter_settings->getTxtEnabledMsg();
560
561                    // suspend
562                    $f_suspend_subject = $newsletter_settings->getSuspendSubject();
563                    $f_suspend_msg = $newsletter_settings->getSuspendMsg();
564                    $f_txt_suspended_msg = $newsletter_settings->getTxtSuspendedMsg();
565                    $f_concluding_suspend_msg = $newsletter_settings->getConcludingSuspendMsg();
566                    $f_txt_intro_suspend = $newsletter_settings->getTxtIntroSuspend();
567                    $f_txtSuspend = $newsletter_settings->getTxtSuspend();
568
569                    // changemode
570                    $f_change_mode_subject = $newsletter_settings->getChangeModeSubject();
571                    $f_header_changemode_msg = $newsletter_settings->getHeaderChangeModeMsg();
572                    $f_footer_changemode_msg = $newsletter_settings->getFooterChangeModeMsg();
573                    $f_changemode_msg = $newsletter_settings->getChangeModeMsg();
574
575                    // resume
576                    $f_resume_subject = $newsletter_settings->getResumeSubject();
577                    $f_header_resume_msg = $newsletter_settings->getHeaderResumeMsg();
578                    $f_footer_resume_msg = $newsletter_settings->getFooterResumeMsg();
579                   
580                    // subscribe
581                    $f_form_title_page = $newsletter_settings->getFormTitlePage();
582                    $f_txt_subscribed_msg = $newsletter_settings->getTxtSubscribedMsg();                 
583
584                    // gestion des paramètres du plugin
585                    echo 
586                    '<form action="plugin.php" method="post" id="messages">'.
587                   
588                         // boutons du formulaire
589                         '<fieldset>'.
590                         '<p>'.
591                         __('Update messages').
592                         '</p>'.
593                         '<p>'.
594                              '<input type="submit" name="save" value="'.__('Update').'" /> '.
595                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
596                         '</p>'.
597                         '</fieldset>'.
598                   
599                         '<fieldset id="define_newsletter">'.
600                              '<legend>'.__('Define message content Newsletter').'</legend>'.
601                              '<p>'.
602                                   '<label for="f_newsletter_subject">'.__('Subject of the Newsletter').'</label>'.
603                                   form::field('f_newsletter_subject',50,255,html::escapeHTML($f_newsletter_subject)).
604                              '</p>'.
605                              '<p>'.
606                                   '<label for="f_presentation_msg">'.__('Message presentation').'</label>'.
607                                   form::field('f_presentation_msg',50,255,html::escapeHTML($f_presentation_msg)).
608                              '</p>'.
609                              '<p>'.
610                                   '<label for="f_introductory_msg">'.__('Introductory message').' : </label>'.
611                                   form::textarea('f_introductory_msg',30,4,html::escapeHTML($f_introductory_msg)).
612                              '</p>'.
613                              '<p>'.
614                                   '<label for="f_presentation_posts_msg">'.__('Presentation message for posts').'</label>'.
615                                   form::field('f_presentation_posts_msg',50,255,html::escapeHTML($f_presentation_posts_msg)).
616                              '</p>'.
617                              '<p>'.
618                                   '<label for="f_concluding_msg">'.__('Concluding message').' : </label>'.
619                                   form::textarea('f_concluding_msg',30,4, html::escapeHTML($f_concluding_msg)).
620                              '</p>'.
621                         '</fieldset>'.
622                         '<fieldset id="define_confirm">'.
623                              '<legend>'.__('Define message content Confirm').'</legend>'.
624                              '<p>'.
625                                   '<label for="f_confirm_subject">'.__('Subject of the mail Confirm').'</label>'.
626                                   form::field('f_confirm_subject',50,255,html::escapeHTML($f_confirm_subject)).
627                              '</p>'.
628                              '<p>'.
629                                   '<label for="f_confirm_msg">'.__('Confirm message').'</label>'.
630                                   form::field('f_confirm_msg',50,255,html::escapeHTML($f_confirm_msg)).
631                              '</p>'.
632                              '<p>'.
633                                   '<label for="f_txt_intro_confirm">'.__('Introductory confirm message').'</label>'.
634                                   form::field('f_txt_intro_confirm',50,255,html::escapeHTML($f_txt_intro_confirm)).
635                              '</p>'.
636                              '<p>'.
637                                   '<label for="f_txtConfirm">'.__('Title confirmation link').'</label>'.
638                                   form::field('f_txtConfirm',50,255,html::escapeHTML($f_txtConfirm)).
639                              '</p>'.
640                              '<p>'.
641                                   '<label for="f_concluding_confirm_msg">'.__('Concluding confirm message').'</label>'.
642                                   form::field('f_concluding_confirm_msg',50,255,html::escapeHTML($f_concluding_confirm_msg)).
643                              '</p>'.
644                         '</fieldset>'.
645                         '<fieldset id="define_disable">'.
646                              '<legend>'.__('Define message content Disable').'</legend>'.
647                              '<p>'.
648                                   '<label for="f_txt_disabled_msg">'.__('Txt disabled msg').
649                                   form::field('f_txt_disabled_msg',50,255,html::escapeHTML($f_txt_disabled_msg)).
650                              '</p>'.
651                              '<p>'.
652                                   '<label for="f_disable_subject">'.__('Subject of the mail Disable').'</label>'.
653                                   form::field('f_disable_subject',50,255,html::escapeHTML($f_disable_subject)).
654                              '</p>'.
655                              '<p>'.
656                                   '<label for="f_disable_msg">'.__('Disable message').'</label>'.
657                                   form::field('f_disable_msg',50,255,html::escapeHTML($f_disable_msg)).
658                              '</p>'.
659                              '<p>'.
660                                   '<label for="f_txt_intro_disable">'.__('Introductory disable message').'</label>'.
661                                   form::field('f_txt_intro_disable',50,255,html::escapeHTML($f_txt_intro_disable)).
662                              '</p>'.
663                              '<p>'.
664                                   '<label for="f_txtDisable">'.__('Title disable link').'</label>'.
665                                   form::field('f_txtDisable',50,255,html::escapeHTML($f_txtDisable)).
666                              '</p>'.
667                              '<p>'.
668                                   '<label for="f_concluding_disable_msg">'.__('Concluding disable msg').'</label>'.
669                                   form::field('f_concluding_disable_msg',50,255,html::escapeHTML($f_concluding_disable_msg)).
670                              '</p>'.
671                         '</fieldset>'.                     
672                         '<fieldset id="define_enable">'.
673                              '<legend>'.__('Define message content Enable').'</legend>'.
674                              '<p>'.
675                                   '<label for="f_txt_enabled_msg">'.__('Texte enabled message').'</label>'.
676                                   form::field('f_txt_enabled_msg',50,255,html::escapeHTML($f_txt_enabled_msg)).
677                              '</p>'.
678                              '<p>'.
679                                   '<label for="f_enable_subject">'.__('Subject of the mail Enable').'</label>'.
680                                   form::field('f_enable_subject',50,255,html::escapeHTML($f_enable_subject)).
681                              '</p>'.
682                              '<p>'.
683                                   '<label for="f_enable_msg">'.__('Enable message').'</label>'.
684                                   form::field('f_enable_msg',50,255,html::escapeHTML($f_enable_msg)).
685                              '</p>'.
686                              '<p>'.
687                                   '<label for="f_txt_intro_enable">'.__('Introductory enable message').'</label>'.
688                                   form::field('f_txt_intro_enable',50,255,html::escapeHTML($f_txt_intro_enable)).
689                              '</p>'.
690                              '<p>'.
691                                   '<label for="f_txtEnable">'.__('Title enable link').'</label>'.
692                                   form::field('f_txtEnable',50,255,html::escapeHTML($f_txtEnable)).
693                              '</p>'.
694                              '<p>'.
695                                   '<label for="f_concluding_enable_msg">'.__('Concluging enable message').'</label>'.
696                                   form::field('f_concluding_enable_msg',50,255,html::escapeHTML($f_concluding_enable_msg)).
697                              '</p>'.
698                         '</fieldset>'. 
699                         '<fieldset id="define_suspend">'.
700                              '<legend>'.__('Define message content Suspend').'</legend>'.
701                              '<p>'.
702                                   '<label for="f_txt_suspended_msg">'.__('Txt suspended msg').'</label>'.
703                                   form::field('f_txt_suspended_msg',50,255,html::escapeHTML($f_txt_suspended_msg)).
704                              '</p>'.
705                              '<p>'.
706                                   '<label for="f_suspend_subject">'.__('Subject of the mail Suspend').'</label>'.
707                                   form::field('f_suspend_subject',50,255,html::escapeHTML($f_suspend_subject)).
708                              '</p>'.
709                              '<p>'.
710                                   '<label for="f_suspend_msg">'.__('Suspend message').'</label>'.
711                                   form::field('f_suspend_msg',50,255,html::escapeHTML($f_suspend_msg)).
712                              '</p>'.
713                              '<p>'.
714                                   '<label for="f_txt_intro_suspend">'.__('Introductory suspend message').'</label>'.
715                                   form::field('f_txt_intro_suspend',50,255,html::escapeHTML($f_txt_intro_suspend)).
716                              '</p>'.
717                              '<p>'.
718                                   '<label for="f_txtSuspend">'.__('Title suspend link').'</label>'.
719                                   form::field('f_txtSuspend',50,255,html::escapeHTML($f_txtSuspend)).
720                              '</p>'.
721                              '<p>'.
722                                   '<label for="f_concluding_suspend_msg">'.__('Concluding suspend message').'</label>'.
723                                   form::field('f_concluding_suspend_msg',50,255,html::escapeHTML($f_concluding_suspend_msg)).
724                              '</p>'.
725                         '</fieldset>'.
726                         '<fieldset id="define_changemode">'.
727                              '<legend>'.__('Define message content Changemode').'</legend>'.
728                              '<p>'.
729                                   '<label for="f_changemode_msg">'.__('Change mode message').'</label>'.
730                                   form::field('f_changemode_msg',50,255,html::escapeHTML($f_changemode_msg)).
731                              '</p>'.
732                              '<p>'.
733                                   '<label for="f_change_mode_subject">'.__('Subject of the mail Changing mode').'</label>'.
734                                   form::field('f_change_mode_subject',50,255,html::escapeHTML($f_change_mode_subject)).
735                              '</p>'.
736                              '<p>'.
737                                   '<label for="f_header_changemode_msg">'.__('Introductory change mode message').'</label>'.
738                                   form::field('f_header_changemode_msg',50,255,html::escapeHTML($f_header_changemode_msg)).
739                              '</p>'.
740                              '<p>'.
741                                   '<label for="f_footer_changemode_msg">'.__('Concludind change mode message').'</label>'.
742                                   form::field('f_footer_changemode_msg',50,255,html::escapeHTML($f_footer_changemode_msg)).
743                              '</p>'.
744                         '</fieldset>'.                     
745                         '<fieldset id="define_resume">'.
746                              '<legend>'.__('Define message content Resume').'</legend>'.
747                              '<p>'.
748                                   '<label for="f_resume_subject">'.__('Subject of the mail Resume').'</label>'.
749                                   form::field('f_resume_subject',50,255,html::escapeHTML($f_resume_subject)).
750                              '</p>'.
751                              '<p>'.
752                                   '<label for="f_header_resume_msg">'.__('Introductory resume message').'</label>'.
753                                   form::field('f_header_resume_msg',50,255,html::escapeHTML($f_header_resume_msg)).
754                              '</p>'.
755                              '<p>'.
756                                   '<label for="f_footer_resume_msg">'.__('Concluding resume message').'</label>'.
757                                   form::field('f_footer_resume_msg',50,255,html::escapeHTML($f_footer_resume_msg)).
758                              '</p>'.
759                         '</fieldset>'.                     
760                         '<fieldset id="define_subscribe">'.                         
761                              '<legend>'.__('Define formulary content Subscribe').'</legend>'.
762                              '<p>'.
763                                   '<label for="f_txt_subscribed_msg">'.__('Subcribed message').'</label>'.
764                                   form::field('f_txt_subscribed_msg',50,255,html::escapeHTML($f_txt_subscribed_msg)).
765                              '</p>'.
766                              '<p>'.
767                                   '<label for="f_form_title_page">'.__('Title page of the subscribe form').'</label>'.
768                                   form::field('f_form_title_page',50,255,html::escapeHTML($f_form_title_page)).
769                              '</p>'.
770                              '<p>'.
771                                   '<label for="f_msg_presentation_form">'.__('Message presentation form').' : </label>'.
772                                   form::textarea('f_msg_presentation_form',30,4,html::escapeHTML($f_msg_presentation_form)).
773                              '</p>'.
774                         '</fieldset>'.
775
776                         // boutons du formulaire
777                         '<fieldset>'.
778                         '<p>'.
779                         __('Update messages').
780                         '</p>'.                       
781                         '<p>'.
782                              '<input type="submit" name="save" value="'.__('Update').'" /> '.
783                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
784                         '</p>'.
785                         '</fieldset>'.
786                         '<p>'.
787                              form::hidden(array('p'),newsletterPlugin::pname()).
788                              form::hidden(array('op'),'messages').
789                              $core->formNonce().
790                         '</p>'.
791                         '</form>'.
792                    '';
793
794               } else {
795                    echo
796                    '<fieldset>'.
797                         '<p>'.
798                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
799                         '</p>'.
800                    '</fieldset>';
801               }
802
803          } catch (Exception $e) { 
804               $core->error->add($e->getMessage()); 
805          }
806
807     }
808
809
810     /**
811     * paramétrage des options de planification
812     */
813     public static function Planning()
814     {
815          // prise en compte du plugin installé
816          if (!newsletterCore::isInstalled()) {
817               return;
818          }
819
820          global $core;
821          try {
822               $blog = &$core->blog;
823
824               if (newsletterPlugin::isActive()) {
825
826                    // Utilisation de dcCron
827                    if (isset($blog->dcCron)) {
828                         $newsletter_cron=new newsletterCron($core);
829                         $newsletter_settings = new newsletterSettings($core);
830
831                         $f_check_schedule = $newsletter_settings->getCheckSchedule();
832                         $f_interval = ($newsletter_cron->getTaskInterval() ? $newsletter_cron->getTaskInterval() : 604800);
833                         $f_first_run = ($newsletter_cron->getFirstRun() ? $newsletter_cron->getFirstRun() : '');
834                             
835                         echo
836                              '<fieldset>'.
837                              '<legend>'.__('Planning newsletter').'</legend>'.
838                                   '<form action="plugin.php" method="post" name="planning">'.
839                                        '<p class="field">'.
840                                        '<label class="classic" for="f_interval">'.__('Interval time in seconds between 2 runs').
841                                        form::field('f_interval',20,20,$f_interval).
842                                        '</label></p>'.
843                                        '<p class="comments">'.
844                                        __('samples').' : ( 1 '.__('day').' = 86400s / 1 '.__('week').' = 604800s / 28 '.__('days').' =  2420000s )'.
845                                        '</p>'.
846                                        '<p class="field">'.
847                                        '<label for="f_first_run" class="classic">'.__('Date for the first run').'</label>'.
848                                        form::field('f_first_run',20,20,$f_first_run).
849                                        '</p>'.
850
851                                        // boutons du formulaire
852                                        '<p>'.
853                                             '<input type="submit" name="submit" value="'.(($f_check_schedule)?__('Unschedule'):__('Schedule')).'" /> '.
854                                             '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
855                                        '</p>'.
856                                        form::hidden(array('p'),newsletterPlugin::pname()).
857                                        form::hidden(array('op'),(($f_check_schedule)?'unschedule':'schedule')).
858                                        $core->formNonce().
859                                   '</form>'.
860                              '</fieldset>'.
861                              '';
862                             
863                         if ($f_check_schedule) {
864                                   
865                              $f_task_state = $newsletter_cron->getState();
866                                   
867                              echo
868                                   '<fieldset>'.
869                                   '<legend>'.__('Scheduled task').' : '.html::escapeHTML($newsletter_cron->getTaskName()).'</legend>'.
870                                   '<table summary="resume" class="minimal">'.
871                                   '<thead>'.
872                                   '<tr>'.
873                                        '<th>'.__('Name').'</th>'.
874                                        '<th>'.__('Value').'</th>'.
875                                   '</tr>'.
876                                   '</thead>'.
877                                   '<tbody id="classes-list">'.
878                                   '<tr class="line">'.
879                                   '<td>'.__('State').'</td>'.
880                                   '<td>'.html::escapeHTML(__($newsletter_cron->printState())).'</td>'.
881                                   '</tr>'.
882                                   '<tr class="line">'.
883                                   '<td>'.__('Interval').'</td>'.
884                                   '<td>'.html::escapeHTML($newsletter_cron->printTaskInterval()).'</td>'.
885                                   '</tr>'.
886                                   '<tr class="line">'.
887                                   '<td>'.__('Last run').'</td>'.
888                                   '<td>'.html::escapeHTML($newsletter_cron->printLastRunDate()).'</td>'.
889                                   '</tr>'.
890                                   '<tr class="line">'.
891                                   '<td>'.__('Next run').'</td>'.
892                                   '<td>'.html::escapeHTML($newsletter_cron->printNextRunDate()).'</td>'.
893                                   '</tr>'.
894                                   '<tr class="line">'.
895                                   '<td>'.__('Remaining Time').'</td>'.
896                                   '<td>'.html::escapeHTML($newsletter_cron->printRemainingTime()).'</td>'.
897                                   '</tr>'.
898                                   '</tbody>'.
899                                   '</table>'.                                                 
900
901                                   '<form action="plugin.php" method="post" name="taskplanning">'.
902
903                                   // boutons du formulaire
904                                   '<p>'.
905                                        '<input type="submit" name="submit" value="'.(($f_task_state)?__('Disable'):__('Enable')).'" /> '.
906                                   '</p>'.
907                                   form::hidden(array('p'),newsletterPlugin::pname()).
908                                   form::hidden(array('op'),(($f_task_state)?'disabletask':'enabletask')).
909                                   $core->formNonce().
910                                   '</form>'.
911                                   
912                                   '</fieldset>'.
913                                   '';
914                         }                       
915                    } else {
916                         echo
917                              '<fieldset>'.
918                                   '<legend>'.__('Planning newsletter').'</legend>'.
919                                   '<p>'.
920                                        '<label class="classic">'.__('Install the plugin dcCron for using planning').'</label>'.
921                                   '</p>'.
922                              '</fieldset>';
923                    }
924               
925               } else {
926                    echo
927                    '<fieldset>'.
928                         '<p>'.
929                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
930                         '</p>'.
931                    '</fieldset>';
932               }
933          } catch (Exception $e) { 
934               $core->error->add($e->getMessage()); 
935          }
936
937     }
938
939     /**
940     * Maintenance du plugin
941     */
942     public static function Maintenance()
943     {
944          // prise en compte du plugin installé
945          if (!newsletterCore::isInstalled()) {
946               return;
947          }
948
949          global $core;
950          try {
951               $blog = &$core->blog;
952               $auth = &$core->auth;
953               $url = &$core->url;
954               $themes = &$core->themes;
955               $blogurl = &$blog->url;
956               $urlBase = http::concatURL($blogurl, $url->getBase('newsletter'));             
957
958               //$core->themes = new dcModules($core);
959               $core->themes = new dcThemes($core);
960               $core->themes->loadModules($blog->themes_path, NULL);
961               $theme = $blog->settings->theme;
962               //$theme = $themes->getModules($theme);
963               $bthemes = array();
964               foreach ($themes->getModules() as $k => $v)
965               {
966                    if (file_exists($blog->themes_path . '/' . $k . '/tpl/post.html'))
967                         $bthemes[html::escapeHTML($v['name'])] = $k;
968               }             
969
970               $sadmin = (($auth->isSuperAdmin()) ? true : false);
971               
972               // paramétrage de l'état d'activation du plugin
973               if (newsletterPlugin::isActive()) 
974                    $pactive = 'checked';
975               else 
976                    $pactive = '';
977
978               echo
979               '<fieldset>'.
980                    '<legend>'.__('Plugin state').'</legend>'.             
981                    '<form action="plugin.php" method="post" id="state">'.
982                         '<p class="field">'.
983                         '<label for="active" class="classic">'.__('Activate plugin').'</label>'.
984                         form::checkbox('active', 1, $pactive).
985                         '</p>'.
986                         '<p>'.
987                              '<input type="submit" value="'.__('Save').'" /> '.
988                              '<input type="reset" value="'.__('Cancel').'" /> '.
989                         '</p>'.
990                         form::hidden(array('p'),newsletterPlugin::pname()).
991                         form::hidden(array('op'),'state').
992                         $core->formNonce().
993                    '</form>'.
994               '</fieldset>'.
995               '';
996
997               if (newsletterPlugin::isActive()) {
998                    echo
999                    // export/import pour le blog
1000                    '<fieldset>'.
1001                    '<legend>'.__('Import/Export subscribers list').'</legend>'.
1002                         '<form action="plugin.php" method="post" id="export" name="export">'.
1003                              '<p>'.
1004                              '<label class="classic">'.
1005                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1006                              '</label>'.
1007                              '<br />'.
1008                              '<label class="classic">'.
1009                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1010                              '</label>'.
1011                              '</p>'.
1012                              '<p>'.
1013                              '<input type="submit" value="'.__('Export').'" />'.
1014                              '</p>'.
1015                              form::hidden(array('p'),newsletterPlugin::pname()).
1016                              form::hidden(array('op'),'export').
1017                              $core->formNonce().                                                   
1018                         '</form>'.
1019                         
1020                         '<form action="plugin.php" method="post" id="import" name="import">'.
1021                              '<p>'.
1022                              '<label class="classic">'.
1023                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1024                              '</label>'.
1025                              '<br />'.
1026                              '<label class="classic">'.
1027                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1028                              '</label>'.
1029                              '</p>'.
1030                              '<p>'.
1031                              '<input type="submit" value="'.__('Import').'" />'.
1032                              '</p>'.
1033                              form::hidden(array('p'),newsletterPlugin::pname()).
1034                              form::hidden(array('op'),'import').
1035                              $core->formNonce().                                                   
1036                         '</form>'.                         
1037                         
1038                    '</fieldset>'.
1039                    '';
1040
1041                    echo
1042                    // reprise d'une liste d'adresse email
1043                    '<fieldset>'.
1044                    '<legend>'.__('Importing a subscribers list from a file text in the current blog').'</legend>'.                   
1045                         '<form action="plugin.php" method="post" id="reprise" name="reprise" enctype="multipart/form-data">'.
1046                              '<p>'.
1047                              '<label class="classic required" title="'.__('Required field').'">'.
1048                              __('File to import :').' '.
1049                              '<input type="file" name="file_reprise" />'.
1050                              '</label>'.
1051                              '</p>'.
1052                              '<p>'.
1053                              '<label class="classic required" title="'.__('Required field').'">'.
1054                              __('Your password:').' '.
1055                              form::password(array('your_pwd'),20,255).'</label></p>'.                             
1056                              '<p>'.
1057                              '<input type="submit" value="'.__('Launch reprise').'" />'.
1058                              '</p>'.
1059                              form::hidden(array('p'),newsletterPlugin::pname()).
1060                              form::hidden(array('op'),'reprise').
1061                              $core->formNonce().
1062                         '</form>'.
1063                    '</fieldset>'.
1064                    '';
1065                   
1066                    if ($sadmin) {
1067                         echo
1068                         // adaptation du template
1069                         '<fieldset>'.
1070                         '<legend>'.__('Adapt the template for the theme').'</legend>'.
1071                              '<form action="plugin.php" method="post" id="adapt">'.
1072                                   '<p><label class="classic" for="fthemes">'.__('Theme name').' : '.
1073                                   form::combo('fthemes', $bthemes, $theme).
1074                                   '</label></p>'.
1075                                   '<p>'.
1076                                   '<input type="submit" value="'.__('Adapt').'" />'.
1077                                   '</p>'.
1078                                   '<p>'.
1079                                   '<a href="'.$urlBase.'/test'.'" target="_blank">'.__('Clic here to test the template.').'</a>'.
1080                                   '</p>'.
1081                                   form::hidden(array('p'),newsletterPlugin::pname()).
1082                                   form::hidden(array('op'),'adapt').
1083                                   $core->formNonce().
1084                              '</form>'.
1085                         '</fieldset>'.
1086                         '';
1087                    }
1088
1089                    if ($sadmin) {
1090                         echo
1091                         // Nettoyage de la base
1092                         '<fieldset>'.
1093                         '<legend>'.__('Erasing all informations about newsletter in database').'</legend>'.
1094                              '<form action="plugin.php" method="post" id="erasingnewsletter">'.
1095                                   '<p>'.__('Be careful, please backup your database before erasing').
1096                                   '</p>'.
1097                                   '<p>'.
1098                                   //'<input type="submit" value="'.__('Erasing').'" name="delete" class="delete" onclick="erasingnewsletterConfirm(); return false" />'.
1099                                   '<input type="submit" value="'.__('Erasing').'" name="delete" class="delete"/>'.
1100                                   '</p>'.
1101                                   form::hidden(array('p'),newsletterPlugin::pname()).
1102                                   form::hidden(array('op'),'erasingnewsletter').
1103                                   $core->formNonce().
1104                              '</form>'.
1105                         '</fieldset>'.
1106                         '';
1107                    }
1108
1109               } else {
1110                    echo
1111                    '<fieldset>'.
1112                         '<p>'.
1113                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1114                         '</p>'.
1115                    '</fieldset>';
1116               }
1117
1118          } catch (Exception $e) { 
1119               $core->error->add($e->getMessage()); 
1120          }
1121     }
1122
1123     /**
1124     * formulaire d'ajout d'un abonné
1125     */
1126     public static function AddEdit()
1127     {
1128          // prise en compte du plugin installé
1129          if (!newsletterCore::isInstalled()) {
1130               return;
1131          }
1132
1133          global $core;
1134          try
1135          {
1136               $blog = &$core->blog;
1137               $settings = &$blog->settings;
1138               $allowed = true;
1139               $mode_combo = array(__('text') => 'text',
1140                                   __('html') => 'html');
1141
1142               $state_combo = array(__('pending') => 'pending',
1143                                   __('enabled') => 'enabled',
1144                                   __('suspended') => 'suspended',
1145                                   __('disabled') => 'disabled');
1146
1147               if (newsletterPlugin::isActive()) {
1148
1149                    // test si ajout ou édition
1150                    if (!empty($_GET['id']))
1151                    {
1152                         $id = (integer)$_GET['id'];
1153                         $datas = newsletterCore::get($id);
1154                         if ($datas == null) {
1155                              $allowed = false;
1156                         } else {
1157                              $email = $datas->f('email');
1158                              $subscribed = $datas->f('subscribed');
1159                              $lastsent = $datas->f('lastsent');
1160                              $modesend = $datas->f('modesend');
1161                              $regcode = $datas->f('regcode');
1162                              $state = $datas->f('state');
1163                              $form_title = __('Edit a subscriber');
1164                              $form_op = 'edit';
1165                              $form_libel = __('Update');
1166                              $form_id = '<input type="hidden" name="id" value="'.$id.'" />';
1167
1168                              if ($subscribed != null) 
1169                                   $subscribed = dt::dt2str($settings->date_format, $subscribed).' @'.dt::dt2str($settings->time_format, $subscribed);
1170                              else 
1171                                   $subscribed = __('Never');
1172                   
1173                              if ($lastsent != null) 
1174                                   $lastsent = dt::dt2str($settings->date_format, $lastsent).' @'.dt::dt2str($settings->time_format, $lastsent);
1175                              else 
1176                                   $lastsent = __('Never');
1177
1178                              $form_update =
1179                              '<p class="field">'.
1180                                   '<label for="fsubscribed" class="classic">'.__('Subscribed:').'</label>'.
1181                                   form::field('fsubscribed',50,255,$subscribed,'','',true).
1182                              '</p>'.
1183                              '<p class="field">'.
1184                                   '<label for="flastsent" class="classic">'.__('Last sent:').'</label>'.
1185                                   form::field('flastsent',50,255,$lastsent,'','',true).
1186                              '</p>'.
1187                              '<p class="field">'.
1188                                   '<label for="fmodesend" class="classic">'.__('Mode send').'</label>'.
1189                                   form::combo('fmodesend',$mode_combo,$modesend).
1190                              '</p>'.
1191                              '<p class="field">'.
1192                                   '<label for="fregcode" class="classic">'.__('Registration code:').'</label>'.
1193                                   form::field('fregcode',50,255,$regcode,'','',true).
1194                              '</p>'.
1195                              '<p class="field">'.
1196                                   '<label for "fstate" class="classic">'.__('Status:').'</label>'.
1197                                   form::combo('fstate',$state_combo,$state).
1198                              '</p>'.
1199                              '';
1200                         }
1201               
1202                    } else {
1203                         $id = -1;
1204                         $email = '';
1205                         $subscribed = '';
1206                         $lastsent = '';
1207                         $modesend = '';
1208                         $status = '';
1209                         $form_title = __('Add a subscriber');
1210                         $form_op = 'add';
1211                         $form_libel = __('Add');
1212                         $form_id = '';
1213                         $form_update = '';
1214                    }
1215
1216                    if (!$allowed) {
1217                         echo __('Not allowed.');
1218                    } else {
1219                         echo 
1220                         '<form action="plugin.php?p=newsletter&amp;m=subscribers" method="post" id="addedit">'.
1221                         '<fieldset id="addedit">'.
1222                              '<legend>'.$form_title.'</legend>'.
1223                                   '<p class="field">'.
1224                                        '<label for="femail" class="classic">'.__('Email:').'</label>'.
1225                                        form::field('femail',50,255, $email).
1226                                       
1227                                   '</p>'.
1228                                   $form_update.
1229                         '</fieldset>'. 
1230                         '<p>'.
1231                              '<input type="submit" value="'.$form_libel.'" />'.
1232                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
1233                              form::hidden(array('p'),newsletterPlugin::pname()).
1234                              form::hidden(array('op'),$form_op).
1235                              $form_id.
1236                              $core->formNonce().
1237                         '</p>'.
1238                         
1239                         '</form>'.
1240                         '';
1241                    }
1242               } else {
1243                    echo
1244                    '<fieldset>'.
1245                         '<p>'.
1246                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1247                         '</p>'.
1248                    '</fieldset>';
1249               }
1250
1251          } catch (Exception $e) { 
1252               $core->error->add($e->getMessage()); 
1253          }
1254     }
1255
1256
1257}
1258
1259?>
Note: See TracBrowser for help on using the repository browser.

Sites map