Dotclear

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

Revision 1532, 43.4 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 ...
  • 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               $auth = &$core->auth;
392                   
393               $mode_combo = array(__('text') => 'text',
394                                   __('html') => 'html');
395               $date_combo = array(__('creation date') => 'post_creadt',
396                                   __('update date') => 'post_dt',
397                                   __('publication date') => 'post_upddt'
398                                   );
399
400               $sadmin = (($auth->isSuperAdmin()) ? true : false);
401
402               if (newsletterPlugin::isActive()) {
403                   
404                    $newsletter_settings = new newsletterSettings($core);
405                   
406                    // initialisation des variables
407                    $feditorname = $newsletter_settings->getEditorName();
408                    $feditoremail = $newsletter_settings->getEditorEmail();
409                    $fcaptcha = $newsletter_settings->getCaptcha();
410                    $fmode = $newsletter_settings->getSendMode();
411                    $f_use_default_format = $newsletter_settings->getUseDefaultFormat();
412                    $fmaxposts = $newsletter_settings->getMaxPosts();
413                    $fminposts = $newsletter_settings->getMinPosts();
414                    $f_view_content_post = $newsletter_settings->getViewContentPost();
415                    $f_size_content_post = $newsletter_settings->getSizeContentPost();
416                    $fautosend = $newsletter_settings->getAutosend();
417                    $f_check_notification = $newsletter_settings->getCheckNotification();
418                    $f_check_use_suspend = $newsletter_settings->getCheckUseSuspend();
419                    $f_order_date = $newsletter_settings->getOrderDate();
420
421                    $rs = $core->blog->getCategories(array('post_type'=>'post'));
422                    $categories = array('' => '', __('Uncategorized') => 'null');
423                    while ($rs->fetch()) {
424                         $categories[str_repeat('&nbsp;&nbsp;',$rs->level-1).'&bull; '.html::escapeHTML($rs->cat_title)] = $rs->cat_id;
425                    }
426                    $f_category = $newsletter_settings->getCategory();
427                    $f_check_subcategories = $newsletter_settings->getCheckSubCategories();
428
429                    // gestion des paramètres du plugin
430                    echo 
431                    '<form action="plugin.php?p=newsletter&amp;m=settings" method="post" id="settings">'.
432                         '<fieldset id="advanced">'.
433                              '<legend>'.__('Advanced Settings').'</legend>'.
434                              '<p class="field">'.
435                                   '<label for="feditorname" class="classic required" title="'.__('Required field').'">'.__('Editor name').'</label>'.
436                                   form::field('feditorname',50,255,html::escapeHTML($feditorname)).
437                              '</p>'.
438                              '<p class="field">'.
439                                   '<label for="feditoremail" class="classic required" title="'.__('Required field').'">'.__('Editor email').'</label>'.
440                                   form::field('feditoremail',50,255,html::escapeHTML($feditoremail)).
441                              '</p>'.
442                              '<p class="field">'.
443                                   '<label for="fcaptcha" class="classic">'.__('Captcha').'</label>'.
444                                   form::checkbox('fcaptcha',1,$fcaptcha).
445                              '</p>'.
446                              '<p class="field">'.
447                                   '<label for="fmode" class="classic">'.__('Default format for sending').'</label>'.
448                                   form::combo('fmode',$mode_combo,$fmode).
449                              '</p>'.
450                              '<p class="field">'.
451                                   '<label for="f_use_default_format" class="classic">'.__('Use default format for sending').'</label>'.
452                                   form::checkbox('f_use_default_format',1,$f_use_default_format).
453                              '</p>'.
454                              '<p class="field">'.
455                                   '<label for="fautosend" class="classic">'.__('Automatic send').'</label>'.
456                                   form::checkbox('fautosend',1,$fautosend).
457                              '</p>'.
458                              '<p class="field">'.
459                                   '<label for="f_check_notification" class="classic">'.__('Notification sending').'</label>'.
460                                   form::checkbox('f_check_notification',1,$f_check_notification).
461                              '</p>'.
462                              '<p class="field">'.
463                                   '<label for="fminposts" class="classic">'.__('Minimum posts').'</label>'.
464                                   form::field('fminposts',4,4,$fminposts).
465                              '</p>'.
466                              '<p class="field">'.
467                                   '<label for="fmaxposts" class="classic">'.__('Maximum posts').'</label>'.
468                                   form::field('fmaxposts',4,4,$fmaxposts).
469                              '</p>'.
470                              '<p class="field">'.
471                                   '<label for="f_view_content_post" class="classic">'.__('View contents posts').'</label>'.
472                                   form::checkbox('f_view_content_post',1,$f_view_content_post).
473                              '</p>'.
474                              '<p class="field">'.
475                                   '<label for="f_size_content_post" class="classic">'.__('Size contents posts').'</label>'.
476                                   form::field('f_size_content_post',4,4,$f_size_content_post).
477                              '</p>'.
478                              '<p class="field">'.
479                                   '<label for="f_category" class="classic">'.__('Category').'</label>'.
480                                   form::combo('f_category',$categories,$f_category).
481                              '</p>'.
482                              '<p class="field">'.
483                                   '<label for="f_check_subcategories" class="classic">'.__('Include sub-categories').'</label>'.
484                                   form::checkbox('f_check_subcategories',1,$f_check_subcategories).
485                              '</p>'.
486                              '<p class="field">'.
487                                   '<label for="f_check_use_suspend" class="classic">'.__('Use suspend option').'</label>'.
488                                   form::checkbox('f_check_use_suspend',1,$f_check_use_suspend).
489                              '</p>'.
490                              '<p class="field">'.
491                                   '<label for="f_order_date" class="classic">'.__('Date selection for sorting posts').'</label>'.
492                                   form::combo('f_order_date',$date_combo,$f_order_date).
493                              '</p>'.                           
494                         '</fieldset>'.
495                         // boutons du formulaire
496                         '<p>'.
497                              '<input type="submit" name="save" value="'.__('Save').'" /> '.
498                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
499                         '</p>'.
500                         '<p>'.
501                              form::hidden(array('p'),newsletterPlugin::pname()).
502                              form::hidden(array('op'),'settings').
503                              $core->formNonce().
504                         '</p>'.
505                    '</form>'.
506                    '';
507               } else {
508                    echo
509                    '<fieldset>'.
510                         '<p>'.
511                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
512                         '</p>'.
513                    '</fieldset>';
514               }
515               
516          } catch (Exception $e) { 
517               $core->error->add($e->getMessage()); 
518          }
519     }
520
521     /**
522     * paramétrage du plugin
523     */
524     public static function Messages()
525     {
526          global $core;
527          try {
528               $blog = &$core->blog;
529               $auth = &$core->auth;
530
531               $sadmin = (($auth->isSuperAdmin()) ? true : false);
532
533               if (newsletterPlugin::isActive()) {
534                    $newsletter_settings = new newsletterSettings($core);
535
536                    // newsletter
537                    $f_newsletter_subject = $newsletter_settings->getNewsletterSubject();
538                    $f_introductory_msg = $newsletter_settings->getIntroductoryMsg();
539                    $f_concluding_msg = $newsletter_settings->getConcludingMsg();
540                    $f_msg_presentation_form = $newsletter_settings->getMsgPresentationForm();
541                    $f_presentation_msg = $newsletter_settings->getPresentationMsg();
542                    $f_presentation_posts_msg = $newsletter_settings->getPresentationPostsMsg();
543
544                    // confirm
545                    $f_confirm_subject = $newsletter_settings->getConfirmSubject();
546                    $f_txt_intro_confirm = $newsletter_settings->getTxtIntroConfirm();
547                    $f_txtConfirm = $newsletter_settings->getTxtConfirm();
548                    $f_confirm_msg = $newsletter_settings->getConfirmMsg();
549                    $f_concluding_confirm_msg = $newsletter_settings->getConcludingConfirmMsg();
550
551                    // disable
552                    $f_disable_subject = $newsletter_settings->getDisableSubject();
553                    $f_txt_intro_disable = $newsletter_settings->getTxtIntroDisable();
554                    $f_txtDisable = $newsletter_settings->getTxtDisable();
555                    $f_disable_msg = $newsletter_settings->getDisableMsg();
556                    $f_concluding_disable_msg = $newsletter_settings->getConcludingDisableMsg();
557                    $f_txt_disabled_msg = $newsletter_settings->getTxtDisabledMsg();
558
559                    // enable
560                    $f_txt_intro_enable = $newsletter_settings->getTxtIntroEnable();
561                    $f_txtEnable = $newsletter_settings->getTxtEnable();
562                    $f_enable_subject = $newsletter_settings->getEnableSubject();
563                    $f_enable_msg = $newsletter_settings->getEnableMsg();
564                    $f_concluding_enable_msg = $newsletter_settings->getConcludingEnableMsg();
565                    $f_txt_enabled_msg = $newsletter_settings->getTxtEnabledMsg();
566
567                    // suspend
568                    $f_suspend_subject = $newsletter_settings->getSuspendSubject();
569                    $f_suspend_msg = $newsletter_settings->getSuspendMsg();
570                    $f_txt_suspended_msg = $newsletter_settings->getTxtSuspendedMsg();
571                    $f_concluding_suspend_msg = $newsletter_settings->getConcludingSuspendMsg();
572                    $f_txt_intro_suspend = $newsletter_settings->getTxtIntroSuspend();
573                    $f_txtSuspend = $newsletter_settings->getTxtSuspend();
574
575                    // changemode
576                    $f_change_mode_subject = $newsletter_settings->getChangeModeSubject();
577                    $f_header_changemode_msg = $newsletter_settings->getHeaderChangeModeMsg();
578                    $f_footer_changemode_msg = $newsletter_settings->getFooterChangeModeMsg();
579                    $f_changemode_msg = $newsletter_settings->getChangeModeMsg();
580
581                    // resume
582                    $f_resume_subject = $newsletter_settings->getResumeSubject();
583                    $f_header_resume_msg = $newsletter_settings->getHeaderResumeMsg();
584                    $f_footer_resume_msg = $newsletter_settings->getFooterResumeMsg();
585                   
586                    // subscribe
587                    $f_form_title_page = $newsletter_settings->getFormTitlePage();
588                    $f_txt_subscribed_msg = $newsletter_settings->getTxtSubscribedMsg();                 
589
590                    // gestion des paramètres du plugin
591                    echo 
592                    '<form action="plugin.php" method="post" id="messages">'.
593                   
594                         // boutons du formulaire
595                         '<fieldset>'.
596                         '<p>'.
597                         __('Update messages').
598                         '</p>'.
599                         '<p>'.
600                              '<input type="submit" name="save" value="'.__('Update').'" /> '.
601                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
602                         '</p>'.
603                         '</fieldset>'.
604                   
605                         '<fieldset id="define_newsletter">'.
606                              '<legend>'.__('Define message content Newsletter').'</legend>'.
607                              '<p>'.
608                                   '<label for="f_newsletter_subject">'.__('Subject of the Newsletter').'</label>'.
609                                   form::field('f_newsletter_subject',50,255,html::escapeHTML($f_newsletter_subject)).
610                              '</p>'.
611                              '<p>'.
612                                   '<label for="f_presentation_msg">'.__('Message presentation').'</label>'.
613                                   form::field('f_presentation_msg',50,255,html::escapeHTML($f_presentation_msg)).
614                              '</p>'.
615                              '<p>'.
616                                   '<label for="f_introductory_msg">'.__('Introductory message').' : </label>'.
617                                   form::textarea('f_introductory_msg',30,4,html::escapeHTML($f_introductory_msg)).
618                              '</p>'.
619                              '<p>'.
620                                   '<label for="f_presentation_posts_msg">'.__('Presentation message for posts').'</label>'.
621                                   form::field('f_presentation_posts_msg',50,255,html::escapeHTML($f_presentation_posts_msg)).
622                              '</p>'.
623                              '<p>'.
624                                   '<label for="f_concluding_msg">'.__('Concluding message').' : </label>'.
625                                   form::textarea('f_concluding_msg',30,4, html::escapeHTML($f_concluding_msg)).
626                              '</p>'.
627                         '</fieldset>'.
628                         '<fieldset id="define_confirm">'.
629                              '<legend>'.__('Define message content Confirm').'</legend>'.
630                              '<p>'.
631                                   '<label for="f_confirm_subject">'.__('Subject of the mail Confirm').'</label>'.
632                                   form::field('f_confirm_subject',50,255,html::escapeHTML($f_confirm_subject)).
633                              '</p>'.
634                              '<p>'.
635                                   '<label for="f_confirm_msg">'.__('Confirm message').'</label>'.
636                                   form::field('f_confirm_msg',50,255,html::escapeHTML($f_confirm_msg)).
637                              '</p>'.
638                              '<p>'.
639                                   '<label for="f_txt_intro_confirm">'.__('Introductory confirm message').'</label>'.
640                                   form::field('f_txt_intro_confirm',50,255,html::escapeHTML($f_txt_intro_confirm)).
641                              '</p>'.
642                              '<p>'.
643                                   '<label for="f_txtConfirm">'.__('Title confirmation link').'</label>'.
644                                   form::field('f_txtConfirm',50,255,html::escapeHTML($f_txtConfirm)).
645                              '</p>'.
646                              '<p>'.
647                                   '<label for="f_concluding_confirm_msg">'.__('Concluding confirm message').'</label>'.
648                                   form::field('f_concluding_confirm_msg',50,255,html::escapeHTML($f_concluding_confirm_msg)).
649                              '</p>'.
650                         '</fieldset>'.
651                         '<fieldset id="define_disable">'.
652                              '<legend>'.__('Define message content Disable').'</legend>'.
653                              '<p>'.
654                                   '<label for="f_txt_disabled_msg">'.__('Txt disabled msg').
655                                   form::field('f_txt_disabled_msg',50,255,html::escapeHTML($f_txt_disabled_msg)).
656                              '</p>'.
657                              '<p>'.
658                                   '<label for="f_disable_subject">'.__('Subject of the mail Disable').'</label>'.
659                                   form::field('f_disable_subject',50,255,html::escapeHTML($f_disable_subject)).
660                              '</p>'.
661                              '<p>'.
662                                   '<label for="f_disable_msg">'.__('Disable message').'</label>'.
663                                   form::field('f_disable_msg',50,255,html::escapeHTML($f_disable_msg)).
664                              '</p>'.
665                              '<p>'.
666                                   '<label for="f_txt_intro_disable">'.__('Introductory disable message').'</label>'.
667                                   form::field('f_txt_intro_disable',50,255,html::escapeHTML($f_txt_intro_disable)).
668                              '</p>'.
669                              '<p>'.
670                                   '<label for="f_txtDisable">'.__('Title disable link').'</label>'.
671                                   form::field('f_txtDisable',50,255,html::escapeHTML($f_txtDisable)).
672                              '</p>'.
673                              '<p>'.
674                                   '<label for="f_concluding_disable_msg">'.__('Concluding disable msg').'</label>'.
675                                   form::field('f_concluding_disable_msg',50,255,html::escapeHTML($f_concluding_disable_msg)).
676                              '</p>'.
677                         '</fieldset>'.                     
678                         '<fieldset id="define_enable">'.
679                              '<legend>'.__('Define message content Enable').'</legend>'.
680                              '<p>'.
681                                   '<label for="f_txt_enabled_msg">'.__('Texte enabled message').'</label>'.
682                                   form::field('f_txt_enabled_msg',50,255,html::escapeHTML($f_txt_enabled_msg)).
683                              '</p>'.
684                              '<p>'.
685                                   '<label for="f_enable_subject">'.__('Subject of the mail Enable').'</label>'.
686                                   form::field('f_enable_subject',50,255,html::escapeHTML($f_enable_subject)).
687                              '</p>'.
688                              '<p>'.
689                                   '<label for="f_enable_msg">'.__('Enable message').'</label>'.
690                                   form::field('f_enable_msg',50,255,html::escapeHTML($f_enable_msg)).
691                              '</p>'.
692                              '<p>'.
693                                   '<label for="f_txt_intro_enable">'.__('Introductory enable message').'</label>'.
694                                   form::field('f_txt_intro_enable',50,255,html::escapeHTML($f_txt_intro_enable)).
695                              '</p>'.
696                              '<p>'.
697                                   '<label for="f_txtEnable">'.__('Title enable link').'</label>'.
698                                   form::field('f_txtEnable',50,255,html::escapeHTML($f_txtEnable)).
699                              '</p>'.
700                              '<p>'.
701                                   '<label for="f_concluding_enable_msg">'.__('Concluging enable message').'</label>'.
702                                   form::field('f_concluding_enable_msg',50,255,html::escapeHTML($f_concluding_enable_msg)).
703                              '</p>'.
704                         '</fieldset>'. 
705                         '<fieldset id="define_suspend">'.
706                              '<legend>'.__('Define message content Suspend').'</legend>'.
707                              '<p>'.
708                                   '<label for="f_txt_suspended_msg">'.__('Txt suspended msg').'</label>'.
709                                   form::field('f_txt_suspended_msg',50,255,html::escapeHTML($f_txt_suspended_msg)).
710                              '</p>'.
711                              '<p>'.
712                                   '<label for="f_suspend_subject">'.__('Subject of the mail Suspend').'</label>'.
713                                   form::field('f_suspend_subject',50,255,html::escapeHTML($f_suspend_subject)).
714                              '</p>'.
715                              '<p>'.
716                                   '<label for="f_suspend_msg">'.__('Suspend message').'</label>'.
717                                   form::field('f_suspend_msg',50,255,html::escapeHTML($f_suspend_msg)).
718                              '</p>'.
719                              '<p>'.
720                                   '<label for="f_txt_intro_suspend">'.__('Introductory suspend message').'</label>'.
721                                   form::field('f_txt_intro_suspend',50,255,html::escapeHTML($f_txt_intro_suspend)).
722                              '</p>'.
723                              '<p>'.
724                                   '<label for="f_txtSuspend">'.__('Title suspend link').'</label>'.
725                                   form::field('f_txtSuspend',50,255,html::escapeHTML($f_txtSuspend)).
726                              '</p>'.
727                              '<p>'.
728                                   '<label for="f_concluding_suspend_msg">'.__('Concluding suspend message').'</label>'.
729                                   form::field('f_concluding_suspend_msg',50,255,html::escapeHTML($f_concluding_suspend_msg)).
730                              '</p>'.
731                         '</fieldset>'.
732                         '<fieldset id="define_changemode">'.
733                              '<legend>'.__('Define message content Changemode').'</legend>'.
734                              '<p>'.
735                                   '<label for="f_changemode_msg">'.__('Change mode message').'</label>'.
736                                   form::field('f_changemode_msg',50,255,html::escapeHTML($f_changemode_msg)).
737                              '</p>'.
738                              '<p>'.
739                                   '<label for="f_change_mode_subject">'.__('Subject of the mail Changing mode').'</label>'.
740                                   form::field('f_change_mode_subject',50,255,html::escapeHTML($f_change_mode_subject)).
741                              '</p>'.
742                              '<p>'.
743                                   '<label for="f_header_changemode_msg">'.__('Introductory change mode message').'</label>'.
744                                   form::field('f_header_changemode_msg',50,255,html::escapeHTML($f_header_changemode_msg)).
745                              '</p>'.
746                              '<p>'.
747                                   '<label for="f_footer_changemode_msg">'.__('Concludind change mode message').'</label>'.
748                                   form::field('f_footer_changemode_msg',50,255,html::escapeHTML($f_footer_changemode_msg)).
749                              '</p>'.
750                         '</fieldset>'.                     
751                         '<fieldset id="define_resume">'.
752                              '<legend>'.__('Define message content Resume').'</legend>'.
753                              '<p>'.
754                                   '<label for="f_resume_subject">'.__('Subject of the mail Resume').'</label>'.
755                                   form::field('f_resume_subject',50,255,html::escapeHTML($f_resume_subject)).
756                              '</p>'.
757                              '<p>'.
758                                   '<label for="f_header_resume_msg">'.__('Introductory resume message').'</label>'.
759                                   form::field('f_header_resume_msg',50,255,html::escapeHTML($f_header_resume_msg)).
760                              '</p>'.
761                              '<p>'.
762                                   '<label for="f_footer_resume_msg">'.__('Concluding resume message').'</label>'.
763                                   form::field('f_footer_resume_msg',50,255,html::escapeHTML($f_footer_resume_msg)).
764                              '</p>'.
765                         '</fieldset>'.                     
766                         '<fieldset id="define_subscribe">'.                         
767                              '<legend>'.__('Define formulary content Subscribe').'</legend>'.
768                              '<p>'.
769                                   '<label for="f_txt_subscribed_msg">'.__('Subcribed message').'</label>'.
770                                   form::field('f_txt_subscribed_msg',50,255,html::escapeHTML($f_txt_subscribed_msg)).
771                              '</p>'.
772                              '<p>'.
773                                   '<label for="f_form_title_page">'.__('Title page of the subscribe form').'</label>'.
774                                   form::field('f_form_title_page',50,255,html::escapeHTML($f_form_title_page)).
775                              '</p>'.
776                              '<p>'.
777                                   '<label for="f_msg_presentation_form">'.__('Message presentation form').' : </label>'.
778                                   form::textarea('f_msg_presentation_form',30,4,html::escapeHTML($f_msg_presentation_form)).
779                              '</p>'.
780                         '</fieldset>'.
781
782                         // boutons du formulaire
783                         '<fieldset>'.
784                         '<p>'.
785                         __('Update messages').
786                         '</p>'.                       
787                         '<p>'.
788                              '<input type="submit" name="save" value="'.__('Update').'" /> '.
789                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
790                         '</p>'.
791                         '</fieldset>'.
792                         '<p>'.
793                              form::hidden(array('p'),newsletterPlugin::pname()).
794                              form::hidden(array('op'),'messages').
795                              $core->formNonce().
796                         '</p>'.
797                         '</form>'.
798                    '';
799
800               } else {
801                    echo
802                    '<fieldset>'.
803                         '<p>'.
804                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
805                         '</p>'.
806                    '</fieldset>';
807               }
808
809          } catch (Exception $e) { 
810               $core->error->add($e->getMessage()); 
811          }
812
813     }
814
815
816     /**
817     * paramétrage des options de planification
818     */
819     public static function Planning()
820     {
821          // prise en compte du plugin installé
822          if (!newsletterCore::isInstalled()) {
823               return;
824          }
825
826          global $core;
827          try {
828               $blog = &$core->blog;
829               $auth = &$core->auth;
830
831               if (newsletterPlugin::isActive()) {
832
833                    $sadmin = (($auth->isSuperAdmin()) ? true : false);
834                    if ($sadmin) {
835                         
836                         // Utilisation de dcCron
837                         if (isset($blog->dcCron)) {
838                              $newsletter_cron=new newsletterCron($core);
839                              $newsletter_settings = new newsletterSettings($core);
840
841                              $f_check_schedule = $newsletter_settings->getCheckSchedule();
842                              $f_interval = ($newsletter_cron->getTaskInterval() ? $newsletter_cron->getTaskInterval() : 604800);
843                              $f_first_run = ($newsletter_cron->getFirstRun() ? $newsletter_cron->getFirstRun() : '');
844                             
845                              echo
846                              '<fieldset>'.
847                              '<legend>'.__('Planning newsletter').'</legend>'.
848                                   '<form action="plugin.php" method="post" name="planning">'.
849                                        '<p class="field">'.
850                                        '<label class="classic" for="f_interval">'.__('Interval time in seconds between 2 runs').
851                                        form::field('f_interval',20,20,$f_interval).
852                                        '</label></p>'.
853                                        '<p class="comments">'.
854                                        __('samples').' : ( 1 '.__('day').' = 86400s / 1 '.__('week').' = 604800s / 28 '.__('days').' =  2420000s )'.
855                                        '</p>'.
856                                        '<p class="field">'.
857                                        '<label for="f_first_run" class="classic">'.__('Date for the first run').'</label>'.
858                                        form::field('f_first_run',20,20,$f_first_run).
859                                        '</p>'.
860
861                                        // boutons du formulaire
862                                        '<p>'.
863                                             '<input type="submit" name="submit" value="'.(($f_check_schedule)?__('Unschedule'):__('Schedule')).'" /> '.
864                                             '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
865                                        '</p>'.
866                                        form::hidden(array('p'),newsletterPlugin::pname()).
867                                        form::hidden(array('op'),(($f_check_schedule)?'unschedule':'schedule')).
868                                        $core->formNonce().
869                                   '</form>'.
870                              '</fieldset>'.
871                              '';
872                             
873                              if ($f_check_schedule) {
874                                   
875                                   $f_task_state = $newsletter_cron->getState();
876                                   
877                                   echo
878                                   '<fieldset>'.
879                                   '<legend>'.__('Scheduled task').' : '.html::escapeHTML($newsletter_cron->getTaskName()).'</legend>'.
880                                   '<table summary="resume" class="minimal">'.
881                                   '<thead>'.
882                                   '<tr>'.
883                                        '<th>'.__('Name').'</th>'.
884                                        '<th>'.__('Value').'</th>'.
885                                   '</tr>'.
886                                   '</thead>'.
887                                   '<tbody id="classes-list">'.
888                                   '<tr class="line">'.
889                                   '<td>'.__('State').'</td>'.
890                                   '<td>'.html::escapeHTML(__($newsletter_cron->printState())).'</td>'.
891                                   '</tr>'.
892                                   '<tr class="line">'.
893                                   '<td>'.__('Interval').'</td>'.
894                                   '<td>'.html::escapeHTML($newsletter_cron->printTaskInterval()).'</td>'.
895                                   '</tr>'.
896                                   '<tr class="line">'.
897                                   '<td>'.__('Last run').'</td>'.
898                                   '<td>'.html::escapeHTML($newsletter_cron->printLastRunDate()).'</td>'.
899                                   '</tr>'.
900                                   '<tr class="line">'.
901                                   '<td>'.__('Next run').'</td>'.
902                                   '<td>'.html::escapeHTML($newsletter_cron->printNextRunDate()).'</td>'.
903                                   '</tr>'.
904                                   '<tr class="line">'.
905                                   '<td>'.__('Remaining Time').'</td>'.
906                                   '<td>'.html::escapeHTML($newsletter_cron->printRemainingTime()).'</td>'.
907                                   '</tr>'.
908                                   '</tbody>'.
909                                   '</table>'.                                                 
910
911                                   '<form action="plugin.php" method="post" name="taskplanning">'.
912
913                                   // boutons du formulaire
914                                   '<p>'.
915                                        '<input type="submit" name="submit" value="'.(($f_task_state)?__('Disable'):__('Enable')).'" /> '.
916                                   '</p>'.
917                                   form::hidden(array('p'),newsletterPlugin::pname()).
918                                   form::hidden(array('op'),(($f_task_state)?'disabletask':'enabletask')).
919                                   $core->formNonce().
920                                   '</form>'.
921                                   
922                                   '</fieldset>'.
923                                   '';
924                              }                       
925                         } else {
926                              echo
927                              '<fieldset>'.
928                                   '<legend>'.__('Planning newsletter').'</legend>'.
929                                   '<p>'.
930                                        '<label class="classic">'.__('Install the plugin dcCron for using planning').'</label>'.
931                                   '</p>'.
932                              '</fieldset>';
933                         }
934               
935                    }
936               } else {
937                    echo
938                    '<fieldset>'.
939                         '<p>'.
940                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
941                         '</p>'.
942                    '</fieldset>';
943               }
944
945          } catch (Exception $e) { 
946               $core->error->add($e->getMessage()); 
947          }
948
949     }
950
951     /**
952     * Maintenance du plugin
953     */
954     public static function Maintenance()
955     {
956          // prise en compte du plugin installé
957          if (!newsletterCore::isInstalled()) {
958               return;
959          }
960
961          global $core;
962          try {
963               $blog = &$core->blog;
964               $auth = &$core->auth;
965               $url = &$core->url;
966               $themes = &$core->themes;
967               $blogurl = &$blog->url;
968               $urlBase = http::concatURL($blogurl, $url->getBase('newsletter'));             
969
970               //$core->themes = new dcModules($core);
971               $core->themes = new dcThemes($core);
972               $core->themes->loadModules($blog->themes_path, NULL);
973               $theme = $blog->settings->theme;
974               //$theme = $themes->getModules($theme);
975               $bthemes = array();
976               foreach ($themes->getModules() as $k => $v)
977               {
978                    if (file_exists($blog->themes_path . '/' . $k . '/tpl/post.html'))
979                         $bthemes[html::escapeHTML($v['name'])] = $k;
980               }             
981
982               $sadmin = (($auth->isSuperAdmin()) ? true : false);
983               
984               // paramétrage de l'état d'activation du plugin
985               if (newsletterPlugin::isActive()) 
986                    $pactive = 'checked';
987               else 
988                    $pactive = '';
989
990               echo
991               '<fieldset>'.
992                    '<legend>'.__('Plugin state').'</legend>'.             
993                    '<form action="plugin.php" method="post" id="state">'.
994                         '<p class="field">'.
995                         '<label for="active" class="classic">'.__('Activate plugin').'</label>'.
996                         form::checkbox('active', 1, $pactive).
997                         '</p>'.
998                         '<p>'.
999                              '<input type="submit" value="'.__('Save').'" /> '.
1000                              '<input type="reset" value="'.__('Cancel').'" /> '.
1001                         '</p>'.
1002                         form::hidden(array('p'),newsletterPlugin::pname()).
1003                         form::hidden(array('op'),'state').
1004                         $core->formNonce().
1005                    '</form>'.
1006               '</fieldset>'.
1007               '';
1008
1009               if (newsletterPlugin::isActive()) {
1010                    echo
1011                    // export/import pour le blog
1012                    '<fieldset>'.
1013                    '<legend>'.__('Import/Export subscribers list').'</legend>'.
1014                         '<form action="plugin.php" method="post" id="export" name="export">'.
1015                              '<p>'.
1016                              '<label class="classic">'.
1017                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1018                              '</label>'.
1019                              '<br />'.
1020                              '<label class="classic">'.
1021                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1022                              '</label>'.
1023                              '</p>'.
1024                              '<p>'.
1025                              '<input type="submit" value="'.__('Export').'" />'.
1026                              '</p>'.
1027                              form::hidden(array('p'),newsletterPlugin::pname()).
1028                              form::hidden(array('op'),'export').
1029                              $core->formNonce().                                                   
1030                         '</form>'.
1031                         
1032                         '<form action="plugin.php" method="post" id="import" name="import">'.
1033                              '<p>'.
1034                              '<label class="classic">'.
1035                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1036                              '</label>'.
1037                              '<br />'.
1038                              '<label class="classic">'.
1039                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1040                              '</label>'.
1041                              '</p>'.
1042                              '<p>'.
1043                              '<input type="submit" value="'.__('Import').'" />'.
1044                              '</p>'.
1045                              form::hidden(array('p'),newsletterPlugin::pname()).
1046                              form::hidden(array('op'),'import').
1047                              $core->formNonce().                                                   
1048                         '</form>'.                         
1049                         
1050                    '</fieldset>'.
1051                    '';
1052
1053                    echo
1054                    // reprise d'une liste d'adresse email
1055                    '<fieldset>'.
1056                    '<legend>'.__('Importing a subscribers list from a file text in the current blog').'</legend>'.                   
1057                         '<form action="plugin.php" method="post" id="reprise" name="reprise" enctype="multipart/form-data">'.
1058                              '<p>'.
1059                              '<label class="classic required" title="'.__('Required field').'">'.
1060                              __('File to import :').' '.
1061                              '<input type="file" name="file_reprise" />'.
1062                              '</label>'.
1063                              '</p>'.
1064                              '<p>'.
1065                              '<label class="classic required" title="'.__('Required field').'">'.
1066                              __('Your password:').' '.
1067                              form::password(array('your_pwd'),20,255).'</label></p>'.                             
1068                              '<p>'.
1069                              '<input type="submit" value="'.__('Launch reprise').'" />'.
1070                              '</p>'.
1071                              form::hidden(array('p'),newsletterPlugin::pname()).
1072                              form::hidden(array('op'),'reprise').
1073                              $core->formNonce().
1074                         '</form>'.
1075                    '</fieldset>'.
1076                    '';
1077                   
1078                    echo
1079                    // adaptation du template
1080                         '<fieldset>'.
1081                         '<legend>'.__('Adapt the template for the theme').'</legend>'.
1082                              '<form action="plugin.php" method="post" id="adapt">'.
1083                                   '<p><label class="classic" for="fthemes">'.__('Theme name').' : '.
1084                                   form::combo('fthemes', $bthemes, $theme).
1085                                   '</label></p>'.
1086                                   '<p>'.
1087                                   '<input type="submit" value="'.__('Adapt').'" />'.
1088                                   '</p>'.
1089                                   '<p>'.
1090                                   '<a href="'.$urlBase.'/test'.'" target="_blank">'.__('Clic here to test the template.').'</a>'.
1091                                   '</p>'.
1092                                   form::hidden(array('p'),newsletterPlugin::pname()).
1093                                   form::hidden(array('op'),'adapt').
1094                                   $core->formNonce().
1095                              '</form>'.
1096                         '</fieldset>'.
1097                    '';
1098
1099                    echo
1100                    // Nettoyage de la base
1101                    '<fieldset>'.
1102                    '<legend>'.__('Erasing all informations about newsletter in database').'</legend>'.
1103                         '<form action="plugin.php" method="post" id="erasingnewsletter">'.
1104                              '<p>'.__('Be careful, please backup your database before erasing').
1105                              '</p>'.
1106                              '<p>'.
1107                              //'<input type="submit" value="'.__('Erasing').'" name="delete" class="delete" onclick="erasingnewsletterConfirm(); return false" />'.
1108                              '<input type="submit" value="'.__('Erasing').'" name="delete" class="delete"/>'.
1109                              '</p>'.
1110                              form::hidden(array('p'),newsletterPlugin::pname()).
1111                              form::hidden(array('op'),'erasingnewsletter').
1112                              $core->formNonce().
1113                         '</form>'.
1114                    '</fieldset>'.
1115                    '';
1116
1117               } else {
1118                    echo
1119                    '<fieldset>'.
1120                         '<p>'.
1121                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1122                         '</p>'.
1123                    '</fieldset>';
1124               }
1125
1126          } catch (Exception $e) { 
1127               $core->error->add($e->getMessage()); 
1128          }
1129     }
1130
1131     /**
1132     * formulaire d'ajout d'un abonné
1133     */
1134     public static function AddEdit()
1135     {
1136          // prise en compte du plugin installé
1137          if (!newsletterCore::isInstalled()) {
1138               return;
1139          }
1140
1141          global $core;
1142          try
1143          {
1144               $blog = &$core->blog;
1145               $settings = &$blog->settings;
1146               $allowed = true;
1147               $mode_combo = array(__('text') => 'text',
1148                                   __('html') => 'html');
1149
1150               $state_combo = array(__('pending') => 'pending',
1151                                   __('enabled') => 'enabled',
1152                                   __('suspended') => 'suspended',
1153                                   __('disabled') => 'disabled');
1154
1155               if (newsletterPlugin::isActive()) {
1156
1157                    // test si ajout ou édition
1158                    if (!empty($_GET['id']))
1159                    {
1160                         $id = (integer)$_GET['id'];
1161                         $datas = newsletterCore::get($id);
1162                         if ($datas == null) {
1163                              $allowed = false;
1164                         } else {
1165                              $email = $datas->f('email');
1166                              $subscribed = $datas->f('subscribed');
1167                              $lastsent = $datas->f('lastsent');
1168                              $modesend = $datas->f('modesend');
1169                              $regcode = $datas->f('regcode');
1170                              $state = $datas->f('state');
1171                              $form_title = __('Edit a subscriber');
1172                              $form_op = 'edit';
1173                              $form_libel = __('Update');
1174                              $form_id = '<input type="hidden" name="id" value="'.$id.'" />';
1175
1176                              if ($subscribed != null) 
1177                                   $subscribed = dt::dt2str($settings->date_format, $subscribed).' @'.dt::dt2str($settings->time_format, $subscribed);
1178                              else 
1179                                   $subscribed = __('Never');
1180                   
1181                              if ($lastsent != null) 
1182                                   $lastsent = dt::dt2str($settings->date_format, $lastsent).' @'.dt::dt2str($settings->time_format, $lastsent);
1183                              else 
1184                                   $lastsent = __('Never');
1185
1186                              $form_update =
1187                              '<p class="field">'.
1188                                   '<label for="fsubscribed" class="classic">'.__('Subscribed:').'</label>'.
1189                                   form::field('fsubscribed',50,255,$subscribed,'','',true).
1190                              '</p>'.
1191                              '<p class="field">'.
1192                                   '<label for="flastsent" class="classic">'.__('Last sent:').'</label>'.
1193                                   form::field('flastsent',50,255,$lastsent,'','',true).
1194                              '</p>'.
1195                              '<p class="field">'.
1196                                   '<label for="fmodesend" class="classic">'.__('Mode send').'</label>'.
1197                                   form::combo('fmodesend',$mode_combo,$modesend).
1198                              '</p>'.
1199                              '<p class="field">'.
1200                                   '<label for="fregcode" class="classic">'.__('Registration code:').'</label>'.
1201                                   form::field('fregcode',50,255,$regcode,'','',true).
1202                              '</p>'.
1203                              '<p class="field">'.
1204                                   '<label for "fstate" class="classic">'.__('Status:').'</label>'.
1205                                   form::combo('fstate',$state_combo,$state).
1206                              '</p>'.
1207                              '';
1208                         }
1209               
1210                    } else {
1211                         $id = -1;
1212                         $email = '';
1213                         $subscribed = '';
1214                         $lastsent = '';
1215                         $modesend = '';
1216                         $status = '';
1217                         $form_title = __('Add a subscriber');
1218                         $form_op = 'add';
1219                         $form_libel = __('Add');
1220                         $form_id = '';
1221                         $form_update = '';
1222                    }
1223
1224                    if (!$allowed) {
1225                         echo __('Not allowed.');
1226                    } else {
1227                         echo 
1228                         '<form action="plugin.php?p=newsletter&amp;m=subscribers" method="post" id="addedit">'.
1229                         '<fieldset id="addedit">'.
1230                              '<legend>'.$form_title.'</legend>'.
1231                                   '<p class="field">'.
1232                                        '<label for="femail" class="classic">'.__('Email:').'</label>'.
1233                                        form::field('femail',50,255, $email).
1234                                       
1235                                   '</p>'.
1236                                   $form_update.
1237                         '</fieldset>'. 
1238                         '<p>'.
1239                              '<input type="submit" value="'.$form_libel.'" />'.
1240                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
1241                              form::hidden(array('p'),newsletterPlugin::pname()).
1242                              form::hidden(array('op'),$form_op).
1243                              $form_id.
1244                              $core->formNonce().
1245                         '</p>'.
1246                         
1247                         '</form>'.
1248                         '';
1249                    }
1250               } else {
1251                    echo
1252                    '<fieldset>'.
1253                         '<p>'.
1254                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1255                         '</p>'.
1256                    '</fieldset>';
1257               }
1258
1259          } catch (Exception $e) { 
1260               $core->error->add($e->getMessage()); 
1261          }
1262     }
1263
1264
1265}
1266
1267?>
Note: See TracBrowser for help on using the repository browser.

Sites map