Dotclear

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

Revision 2685, 48.4 KB checked in by kwon, 13 years ago (diff)

Newsletter:

' closes #562
' delete really the mail from the database when clic on delete

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

Sites map