Dotclear

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

Revision 1534, 43.3 KB checked in by kwon, 14 years ago (diff)

Newsletter (closes #251 : correction planification impossible pour profil admin en multi-blog)

  • 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                    // Utilisation de dcCron
834                    if (isset($blog->dcCron)) {
835                         $newsletter_cron=new newsletterCron($core);
836                         $newsletter_settings = new newsletterSettings($core);
837
838                         $f_check_schedule = $newsletter_settings->getCheckSchedule();
839                         $f_interval = ($newsletter_cron->getTaskInterval() ? $newsletter_cron->getTaskInterval() : 604800);
840                         $f_first_run = ($newsletter_cron->getFirstRun() ? $newsletter_cron->getFirstRun() : '');
841                             
842                         echo
843                              '<fieldset>'.
844                              '<legend>'.__('Planning newsletter').'</legend>'.
845                                   '<form action="plugin.php" method="post" name="planning">'.
846                                        '<p class="field">'.
847                                        '<label class="classic" for="f_interval">'.__('Interval time in seconds between 2 runs').
848                                        form::field('f_interval',20,20,$f_interval).
849                                        '</label></p>'.
850                                        '<p class="comments">'.
851                                        __('samples').' : ( 1 '.__('day').' = 86400s / 1 '.__('week').' = 604800s / 28 '.__('days').' =  2420000s )'.
852                                        '</p>'.
853                                        '<p class="field">'.
854                                        '<label for="f_first_run" class="classic">'.__('Date for the first run').'</label>'.
855                                        form::field('f_first_run',20,20,$f_first_run).
856                                        '</p>'.
857
858                                        // boutons du formulaire
859                                        '<p>'.
860                                             '<input type="submit" name="submit" value="'.(($f_check_schedule)?__('Unschedule'):__('Schedule')).'" /> '.
861                                             '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
862                                        '</p>'.
863                                        form::hidden(array('p'),newsletterPlugin::pname()).
864                                        form::hidden(array('op'),(($f_check_schedule)?'unschedule':'schedule')).
865                                        $core->formNonce().
866                                   '</form>'.
867                              '</fieldset>'.
868                              '';
869                             
870                         if ($f_check_schedule) {
871                                   
872                              $f_task_state = $newsletter_cron->getState();
873                                   
874                              echo
875                                   '<fieldset>'.
876                                   '<legend>'.__('Scheduled task').' : '.html::escapeHTML($newsletter_cron->getTaskName()).'</legend>'.
877                                   '<table summary="resume" class="minimal">'.
878                                   '<thead>'.
879                                   '<tr>'.
880                                        '<th>'.__('Name').'</th>'.
881                                        '<th>'.__('Value').'</th>'.
882                                   '</tr>'.
883                                   '</thead>'.
884                                   '<tbody id="classes-list">'.
885                                   '<tr class="line">'.
886                                   '<td>'.__('State').'</td>'.
887                                   '<td>'.html::escapeHTML(__($newsletter_cron->printState())).'</td>'.
888                                   '</tr>'.
889                                   '<tr class="line">'.
890                                   '<td>'.__('Interval').'</td>'.
891                                   '<td>'.html::escapeHTML($newsletter_cron->printTaskInterval()).'</td>'.
892                                   '</tr>'.
893                                   '<tr class="line">'.
894                                   '<td>'.__('Last run').'</td>'.
895                                   '<td>'.html::escapeHTML($newsletter_cron->printLastRunDate()).'</td>'.
896                                   '</tr>'.
897                                   '<tr class="line">'.
898                                   '<td>'.__('Next run').'</td>'.
899                                   '<td>'.html::escapeHTML($newsletter_cron->printNextRunDate()).'</td>'.
900                                   '</tr>'.
901                                   '<tr class="line">'.
902                                   '<td>'.__('Remaining Time').'</td>'.
903                                   '<td>'.html::escapeHTML($newsletter_cron->printRemainingTime()).'</td>'.
904                                   '</tr>'.
905                                   '</tbody>'.
906                                   '</table>'.                                                 
907
908                                   '<form action="plugin.php" method="post" name="taskplanning">'.
909
910                                   // boutons du formulaire
911                                   '<p>'.
912                                        '<input type="submit" name="submit" value="'.(($f_task_state)?__('Disable'):__('Enable')).'" /> '.
913                                   '</p>'.
914                                   form::hidden(array('p'),newsletterPlugin::pname()).
915                                   form::hidden(array('op'),(($f_task_state)?'disabletask':'enabletask')).
916                                   $core->formNonce().
917                                   '</form>'.
918                                   
919                                   '</fieldset>'.
920                                   '';
921                         }                       
922                    } else {
923                         echo
924                              '<fieldset>'.
925                                   '<legend>'.__('Planning newsletter').'</legend>'.
926                                   '<p>'.
927                                        '<label class="classic">'.__('Install the plugin dcCron for using planning').'</label>'.
928                                   '</p>'.
929                              '</fieldset>';
930                    }
931               
932               } else {
933                    echo
934                    '<fieldset>'.
935                         '<p>'.
936                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
937                         '</p>'.
938                    '</fieldset>';
939               }
940          } catch (Exception $e) { 
941               $core->error->add($e->getMessage()); 
942          }
943
944     }
945
946     /**
947     * Maintenance du plugin
948     */
949     public static function Maintenance()
950     {
951          // prise en compte du plugin installé
952          if (!newsletterCore::isInstalled()) {
953               return;
954          }
955
956          global $core;
957          try {
958               $blog = &$core->blog;
959               $auth = &$core->auth;
960               $url = &$core->url;
961               $themes = &$core->themes;
962               $blogurl = &$blog->url;
963               $urlBase = http::concatURL($blogurl, $url->getBase('newsletter'));             
964
965               //$core->themes = new dcModules($core);
966               $core->themes = new dcThemes($core);
967               $core->themes->loadModules($blog->themes_path, NULL);
968               $theme = $blog->settings->theme;
969               //$theme = $themes->getModules($theme);
970               $bthemes = array();
971               foreach ($themes->getModules() as $k => $v)
972               {
973                    if (file_exists($blog->themes_path . '/' . $k . '/tpl/post.html'))
974                         $bthemes[html::escapeHTML($v['name'])] = $k;
975               }             
976
977               $sadmin = (($auth->isSuperAdmin()) ? true : false);
978               
979               // paramétrage de l'état d'activation du plugin
980               if (newsletterPlugin::isActive()) 
981                    $pactive = 'checked';
982               else 
983                    $pactive = '';
984
985               echo
986               '<fieldset>'.
987                    '<legend>'.__('Plugin state').'</legend>'.             
988                    '<form action="plugin.php" method="post" id="state">'.
989                         '<p class="field">'.
990                         '<label for="active" class="classic">'.__('Activate plugin').'</label>'.
991                         form::checkbox('active', 1, $pactive).
992                         '</p>'.
993                         '<p>'.
994                              '<input type="submit" value="'.__('Save').'" /> '.
995                              '<input type="reset" value="'.__('Cancel').'" /> '.
996                         '</p>'.
997                         form::hidden(array('p'),newsletterPlugin::pname()).
998                         form::hidden(array('op'),'state').
999                         $core->formNonce().
1000                    '</form>'.
1001               '</fieldset>'.
1002               '';
1003
1004               if (newsletterPlugin::isActive()) {
1005                    echo
1006                    // export/import pour le blog
1007                    '<fieldset>'.
1008                    '<legend>'.__('Import/Export subscribers list').'</legend>'.
1009                         '<form action="plugin.php" method="post" id="export" name="export">'.
1010                              '<p>'.
1011                              '<label class="classic">'.
1012                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1013                              '</label>'.
1014                              '<br />'.
1015                              '<label class="classic">'.
1016                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1017                              '</label>'.
1018                              '</p>'.
1019                              '<p>'.
1020                              '<input type="submit" value="'.__('Export').'" />'.
1021                              '</p>'.
1022                              form::hidden(array('p'),newsletterPlugin::pname()).
1023                              form::hidden(array('op'),'export').
1024                              $core->formNonce().                                                   
1025                         '</form>'.
1026                         
1027                         '<form action="plugin.php" method="post" id="import" name="import">'.
1028                              '<p>'.
1029                              '<label class="classic">'.
1030                              form::radio(array('type'),'blog',(!$sadmin) ? true : false).__('This blog only').
1031                              '</label>'.
1032                              '<br />'.
1033                              '<label class="classic">'.
1034                              form::radio(array('type'),'all',($sadmin) ? true : false,'','',(!$sadmin) ? true : false).__('All datas').
1035                              '</label>'.
1036                              '</p>'.
1037                              '<p>'.
1038                              '<input type="submit" value="'.__('Import').'" />'.
1039                              '</p>'.
1040                              form::hidden(array('p'),newsletterPlugin::pname()).
1041                              form::hidden(array('op'),'import').
1042                              $core->formNonce().                                                   
1043                         '</form>'.                         
1044                         
1045                    '</fieldset>'.
1046                    '';
1047
1048                    echo
1049                    // reprise d'une liste d'adresse email
1050                    '<fieldset>'.
1051                    '<legend>'.__('Importing a subscribers list from a file text in the current blog').'</legend>'.                   
1052                         '<form action="plugin.php" method="post" id="reprise" name="reprise" enctype="multipart/form-data">'.
1053                              '<p>'.
1054                              '<label class="classic required" title="'.__('Required field').'">'.
1055                              __('File to import :').' '.
1056                              '<input type="file" name="file_reprise" />'.
1057                              '</label>'.
1058                              '</p>'.
1059                              '<p>'.
1060                              '<label class="classic required" title="'.__('Required field').'">'.
1061                              __('Your password:').' '.
1062                              form::password(array('your_pwd'),20,255).'</label></p>'.                             
1063                              '<p>'.
1064                              '<input type="submit" value="'.__('Launch reprise').'" />'.
1065                              '</p>'.
1066                              form::hidden(array('p'),newsletterPlugin::pname()).
1067                              form::hidden(array('op'),'reprise').
1068                              $core->formNonce().
1069                         '</form>'.
1070                    '</fieldset>'.
1071                    '';
1072                   
1073                    echo
1074                    // adaptation du template
1075                         '<fieldset>'.
1076                         '<legend>'.__('Adapt the template for the theme').'</legend>'.
1077                              '<form action="plugin.php" method="post" id="adapt">'.
1078                                   '<p><label class="classic" for="fthemes">'.__('Theme name').' : '.
1079                                   form::combo('fthemes', $bthemes, $theme).
1080                                   '</label></p>'.
1081                                   '<p>'.
1082                                   '<input type="submit" value="'.__('Adapt').'" />'.
1083                                   '</p>'.
1084                                   '<p>'.
1085                                   '<a href="'.$urlBase.'/test'.'" target="_blank">'.__('Clic here to test the template.').'</a>'.
1086                                   '</p>'.
1087                                   form::hidden(array('p'),newsletterPlugin::pname()).
1088                                   form::hidden(array('op'),'adapt').
1089                                   $core->formNonce().
1090                              '</form>'.
1091                         '</fieldset>'.
1092                    '';
1093
1094                    echo
1095                    // Nettoyage de la base
1096                    '<fieldset>'.
1097                    '<legend>'.__('Erasing all informations about newsletter in database').'</legend>'.
1098                         '<form action="plugin.php" method="post" id="erasingnewsletter">'.
1099                              '<p>'.__('Be careful, please backup your database before erasing').
1100                              '</p>'.
1101                              '<p>'.
1102                              //'<input type="submit" value="'.__('Erasing').'" name="delete" class="delete" onclick="erasingnewsletterConfirm(); return false" />'.
1103                              '<input type="submit" value="'.__('Erasing').'" name="delete" class="delete"/>'.
1104                              '</p>'.
1105                              form::hidden(array('p'),newsletterPlugin::pname()).
1106                              form::hidden(array('op'),'erasingnewsletter').
1107                              $core->formNonce().
1108                         '</form>'.
1109                    '</fieldset>'.
1110                    '';
1111
1112               } else {
1113                    echo
1114                    '<fieldset>'.
1115                         '<p>'.
1116                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1117                         '</p>'.
1118                    '</fieldset>';
1119               }
1120
1121          } catch (Exception $e) { 
1122               $core->error->add($e->getMessage()); 
1123          }
1124     }
1125
1126     /**
1127     * formulaire d'ajout d'un abonné
1128     */
1129     public static function AddEdit()
1130     {
1131          // prise en compte du plugin installé
1132          if (!newsletterCore::isInstalled()) {
1133               return;
1134          }
1135
1136          global $core;
1137          try
1138          {
1139               $blog = &$core->blog;
1140               $settings = &$blog->settings;
1141               $allowed = true;
1142               $mode_combo = array(__('text') => 'text',
1143                                   __('html') => 'html');
1144
1145               $state_combo = array(__('pending') => 'pending',
1146                                   __('enabled') => 'enabled',
1147                                   __('suspended') => 'suspended',
1148                                   __('disabled') => 'disabled');
1149
1150               if (newsletterPlugin::isActive()) {
1151
1152                    // test si ajout ou édition
1153                    if (!empty($_GET['id']))
1154                    {
1155                         $id = (integer)$_GET['id'];
1156                         $datas = newsletterCore::get($id);
1157                         if ($datas == null) {
1158                              $allowed = false;
1159                         } else {
1160                              $email = $datas->f('email');
1161                              $subscribed = $datas->f('subscribed');
1162                              $lastsent = $datas->f('lastsent');
1163                              $modesend = $datas->f('modesend');
1164                              $regcode = $datas->f('regcode');
1165                              $state = $datas->f('state');
1166                              $form_title = __('Edit a subscriber');
1167                              $form_op = 'edit';
1168                              $form_libel = __('Update');
1169                              $form_id = '<input type="hidden" name="id" value="'.$id.'" />';
1170
1171                              if ($subscribed != null) 
1172                                   $subscribed = dt::dt2str($settings->date_format, $subscribed).' @'.dt::dt2str($settings->time_format, $subscribed);
1173                              else 
1174                                   $subscribed = __('Never');
1175                   
1176                              if ($lastsent != null) 
1177                                   $lastsent = dt::dt2str($settings->date_format, $lastsent).' @'.dt::dt2str($settings->time_format, $lastsent);
1178                              else 
1179                                   $lastsent = __('Never');
1180
1181                              $form_update =
1182                              '<p class="field">'.
1183                                   '<label for="fsubscribed" class="classic">'.__('Subscribed:').'</label>'.
1184                                   form::field('fsubscribed',50,255,$subscribed,'','',true).
1185                              '</p>'.
1186                              '<p class="field">'.
1187                                   '<label for="flastsent" class="classic">'.__('Last sent:').'</label>'.
1188                                   form::field('flastsent',50,255,$lastsent,'','',true).
1189                              '</p>'.
1190                              '<p class="field">'.
1191                                   '<label for="fmodesend" class="classic">'.__('Mode send').'</label>'.
1192                                   form::combo('fmodesend',$mode_combo,$modesend).
1193                              '</p>'.
1194                              '<p class="field">'.
1195                                   '<label for="fregcode" class="classic">'.__('Registration code:').'</label>'.
1196                                   form::field('fregcode',50,255,$regcode,'','',true).
1197                              '</p>'.
1198                              '<p class="field">'.
1199                                   '<label for "fstate" class="classic">'.__('Status:').'</label>'.
1200                                   form::combo('fstate',$state_combo,$state).
1201                              '</p>'.
1202                              '';
1203                         }
1204               
1205                    } else {
1206                         $id = -1;
1207                         $email = '';
1208                         $subscribed = '';
1209                         $lastsent = '';
1210                         $modesend = '';
1211                         $status = '';
1212                         $form_title = __('Add a subscriber');
1213                         $form_op = 'add';
1214                         $form_libel = __('Add');
1215                         $form_id = '';
1216                         $form_update = '';
1217                    }
1218
1219                    if (!$allowed) {
1220                         echo __('Not allowed.');
1221                    } else {
1222                         echo 
1223                         '<form action="plugin.php?p=newsletter&amp;m=subscribers" method="post" id="addedit">'.
1224                         '<fieldset id="addedit">'.
1225                              '<legend>'.$form_title.'</legend>'.
1226                                   '<p class="field">'.
1227                                        '<label for="femail" class="classic">'.__('Email:').'</label>'.
1228                                        form::field('femail',50,255, $email).
1229                                       
1230                                   '</p>'.
1231                                   $form_update.
1232                         '</fieldset>'. 
1233                         '<p>'.
1234                              '<input type="submit" value="'.$form_libel.'" />'.
1235                              '<input type="reset" name="reset" value="'.__('Cancel').'" /> '.
1236                              form::hidden(array('p'),newsletterPlugin::pname()).
1237                              form::hidden(array('op'),$form_op).
1238                              $form_id.
1239                              $core->formNonce().
1240                         '</p>'.
1241                         
1242                         '</form>'.
1243                         '';
1244                    }
1245               } else {
1246                    echo
1247                    '<fieldset>'.
1248                         '<p>'.
1249                              '<label class="classic">'.__('Activate the plugin in the Maintenance tab to view all options').'</label>'.
1250                         '</p>'.
1251                    '</fieldset>';
1252               }
1253
1254          } catch (Exception $e) { 
1255               $core->error->add($e->getMessage()); 
1256          }
1257     }
1258
1259
1260}
1261
1262?>
Note: See TracBrowser for help on using the repository browser.

Sites map