Dotclear

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

Revision 2643, 48.0 KB checked in by kwon, 13 years ago (diff)

Newsletter 3.7.9 :

' closes #538 : ajoute une date unique de dernier envoi
' correction dans l'utilisation du tri des dates
' corrections dans les styles

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

Sites map