PEEL Shopping
Open source ecommerce : PEEL Shopping
newsletter.php
Go to the documentation of this file.
1 <?php
2 // This file should be in UTF8 without BOM - Accents examples: éèê
3 // +----------------------------------------------------------------------+
4 // | Copyright (c) 2004-2015 Advisto SAS, service PEEL - contact@peel.fr |
5 // +----------------------------------------------------------------------+
6 // | This file is part of PEEL Shopping 8.0.0, which is subject to an |
7 // | opensource GPL license: you are allowed to customize the code |
8 // | for your own needs, but must keep your changes under GPL |
9 // | More information: https://www.peel.fr/lire/licence-gpl-70.html |
10 // +----------------------------------------------------------------------+
11 // | Author: Advisto SAS, RCS 479 205 452, France, https://www.peel.fr/ |
12 // +----------------------------------------------------------------------+
13 // $Id: newsletter.php 47186 2015-10-05 14:54:56Z sdelaporte $
14 define('IN_PEEL_ADMIN', true);
15 include("../configuration.inc.php");
17 necessite_priv('admin_content');
18 
19 $GLOBALS['DOC_TITLE'] = $GLOBALS['STR_ADMIN_NEWSLETTERS_TITLE'];
20 include($GLOBALS['repertoire_modele'] . "/admin_haut.php");
21 
22 $frm = $_POST;
24 
25 switch (vb($_REQUEST['mode'])) {
26  case "ajout" :
28  break;
29 
30  case "modif" :
32  break;
33 
34  case "suppr" :
35  supprime_newsletter($_GET['id']);
37  break;
38 
39  case "insere" :
40  if (!verify_token($_SERVER['PHP_SELF'] . $frm['mode'] . $frm['id'])) {
41  $form_error_object->add('token', $GLOBALS['STR_INVALID_TOKEN']);
42  }
43  if (!$form_error_object->count()) {
44  insere_newsletter($_POST);
46  } else {
47  if ($form_error_object->has_error('token')) {
48  echo $form_error_object->text('token');
49  }
51  }
52  break;
53 
54  case "send" :
55  if (!verify_token($_SERVER['PHP_SELF'])) {
56  $form_error_object->add('token', $GLOBALS['STR_INVALID_TOKEN']);
57  }
58  if (!$form_error_object->count()) {
59  $limit = 1; // nombre de messages envoyés pas boucles.
60  if (!isset($debut)) {
61  $debut = 0;
62  } else {
63  $debut = intval($_GET['debut']);
64  }
65  $id = intval($_GET['id']);
66  send_newsletter($id, $debut, $limit, !empty($_GET['test']));
67  } elseif ($form_error_object->has_error('token')) {
68  echo $form_error_object->text('token');
69  }
71  break;
72 
73  case "maj" :
74  if (!verify_token($_SERVER['PHP_SELF'] . $frm['mode'] . $frm['id'])) {
75  $form_error_object->add('token', $GLOBALS['STR_INVALID_TOKEN']);
76  }
77  if (!$form_error_object->count()) {
78  maj_newsletter($_POST['id'], $_POST);
80  } else {
81  if ($form_error_object->has_error('token')) {
82  echo $form_error_object->text('token');
83  }
84  affiche_formulaire_modif_newsletter($_POST['id'], $frm);
85  }
86  break;
87 
88  default :
90  break;
91 }
92 
93 include($GLOBALS['repertoire_modele'] . "/admin_bas.php");
94 
106 {
107  /* Valeurs par défaut */
108  if(empty($frm)) {
109  $frm = array();
110  $frm['sujet'] = "";
111  $frm['message'] = "";
112  }
113  $frm['nouveau_mode'] = "insere";
114  $frm['id'] = "";
115  $frm['format'] = "html";
116  $frm['titre_bouton'] = $GLOBALS["STR_ADMIN_NEWSLETTERS_CREATE"];
117 
119 }
120 
129 {
130  if(empty($frm)){
131  // Pas de données venant de validation de formulaire, donc on charge le contenu de la base de données
132  /* Charge les informations du produit */
133  $qid = query("SELECT *
134  FROM peel_newsletter
135  WHERE id = " . intval($id) . " AND " . get_filter_site_cond('newsletter', null, true));
136  $frm = fetch_assoc($qid);
137  }
138  if (!empty($frm)) {
139  $frm['id'] = $id;
140  $frm["nouveau_mode"] = "maj";
141  $frm["titre_bouton"] = $GLOBALS['STR_ADMIN_FORM_SAVE_CHANGES'];
143  } else {
144  redirect_and_die(get_current_url(false).'?mode=ajout');
145  }
146 }
147 
155 {
156  $tpl = $GLOBALS['tplEngine']->createTemplate('admin_formulaire_newsletter.tpl');
157  $tpl->assign('action', get_current_url(false) . '?start=0');
158  $tpl->assign('form_token', get_form_token_input($_SERVER['PHP_SELF'] . $frm['nouveau_mode'] . intval($frm['id'])));
159  $tpl->assign('mode', $frm["nouveau_mode"]);
160  $tpl->assign('id', intval($frm['id']));
161  $tpl->assign('template_technical_code_options', get_email_template_options('technical_code', null, null, vb($frm['template_technical_code'])));
162  $tpl->assign('site_id_select_options', get_site_id_select_options(vb($frm['site_id'])));
163 
164  $tpl_langs = array();
165  foreach ($GLOBALS['admin_lang_codes'] as $this_lang) {
166  $tpl_langs[] = array('lng' => $this_lang,
167  'sujet' => vb($frm['sujet_' . $this_lang]),
168  'message_te' => getTextEditor('message_' . $this_lang, '100%', 500, vb($frm['message_' . $this_lang]))
169  );
170  }
171  $tpl->assign('langs', $tpl_langs);
172 
173  $tpl->assign('titre_bouton', $frm['titre_bouton']);
174  $tpl->assign('STR_ADMIN_WEBSITE', $GLOBALS['STR_ADMIN_WEBSITE']);
175  $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']);
176  $tpl->assign('STR_ADMIN_NEWSLETTERS_FORM_TITLE', $GLOBALS['STR_ADMIN_NEWSLETTERS_FORM_TITLE']);
177  $tpl->assign('STR_ADMIN_NEWSLETTERS_WARNING', $GLOBALS['STR_ADMIN_NEWSLETTERS_WARNING']);
178  $tpl->assign('STR_ADMIN_NEWSLETTERS_CHOOSE_TEMPLATE', $GLOBALS['STR_ADMIN_NEWSLETTERS_CHOOSE_TEMPLATE']);
179  $tpl->assign('STR_ADMIN_NEWSLETTERS_CHOOSE_TEMPLATE_INFO', $GLOBALS['STR_ADMIN_NEWSLETTERS_CHOOSE_TEMPLATE_INFO']);
180  $tpl->assign('STR_ADMIN_SUBJECT', $GLOBALS['STR_ADMIN_SUBJECT']);
181  $tpl->assign('STR_MESSAGE', $GLOBALS['STR_MESSAGE']);
182  echo $tpl->fetch();
183 }
184 
192 {
193  $qid = query("SELECT *
194  FROM peel_newsletter
195  WHERE id = " . intval($id) . " AND " . get_filter_site_cond('newsletter', null, true));
196  $n = fetch_assoc($qid);
197 
198  /* Efface le newsletter */
199  query("DELETE FROM peel_newsletter WHERE id=" . intval($id) . " AND " . get_filter_site_cond('newsletter', null, true));
200  echo $GLOBALS['tplEngine']->createTemplate('global_success.tpl', array('message' => sprintf($GLOBALS['STR_ADMIN_NEWSLETTERS_MSG_NEWSLETTER_DELETED'], $n['sujet_' . $_SESSION['session_langue']])))->fetch();
201 }
202 
210 {
211  $req = "INSERT INTO peel_newsletter (";
212  // Insertion de la nouvelle news en fonction des langues définit sur le site
213  foreach($GLOBALS['admin_lang_codes'] as $this_lang) {
214  $req .= "sujet_" . $this_lang . ", message_" . $this_lang . ",";
215  }
216  $req .= "date, format, statut, template_technical_code, site_id) VALUES (";
217  foreach($GLOBALS['admin_lang_codes'] as $this_lang) {
218  $req .= "'" . nohtml_real_escape_string($frm['sujet_' . $this_lang]) . "','" . real_escape_string($frm['message_' . $this_lang]) . "',";
219  }
220  $req .= " '" . date('Y-m-d H:i:s', time()) . "', 'html', 'envoi nok', '" . nohtml_real_escape_string($frm['template_technical_code']) . "', '" . nohtml_real_escape_string(get_site_id_sql_set_value($frm['site_id'])) . "')";
221 
222  $qid = query($req);
223 }
224 
233 {
234  $req = "UPDATE peel_newsletter SET ";
235  // Maj d'une news en fonction des langues définit sur le site
236  foreach($GLOBALS['admin_lang_codes'] as $this_lang) {
237  $req .= "sujet_" . $this_lang . " = '" . nohtml_real_escape_string($frm['sujet_' . $this_lang]) . "', message_" . $this_lang . " = '" . real_escape_string($frm['message_' . $this_lang]) . "',";
238  }
239  $req .= " format = 'html', date = '" . date('Y-m-d H:i:s', time()) . "', template_technical_code = '" . nohtml_real_escape_string($frm['template_technical_code']) . "', site_id = '" . nohtml_real_escape_string(get_site_id_sql_set_value($frm['site_id'])) . "'
240  WHERE id = '" . intval($id) . "' AND " . get_filter_site_cond('newsletter', null, true);
241  $qid = query($req);
242 }
243 
252 function send_newsletter($id, $debut, $limit, $test = false)
253 {
254  $sql_n = "SELECT *
255  FROM peel_newsletter
256  WHERE id = '" . intval($id) . "' AND " . get_filter_site_cond('newsletter', null, true);
257  $res_n = query($sql_n);
258  $news_infos = fetch_assoc($res_n);
259 
260  $format = $news_infos['format'];
261  // Récupération du technical_code du template associé à la newsletter
262  $template_technical_code = $news_infos['template_technical_code'];
263  // Stockage des messages et sujets, selon les langues disponibles sur le site
264  foreach($GLOBALS['admin_lang_codes'] as $this_lang) {
265  // Ajout des Custom template tag de la newsletter en fonction de la langue
266  $custom_template_tags[$this_lang] = null;
267  if (!empty($news_infos['message_' . $this_lang])) {
268  // Récupération du template email associé à la newsletter en fonction des langues disponibles
269  if (!empty($template_technical_code)) {
270  // On a un modèle, qui contient un tag NEWSLETTER : on récupère son HTML, et on remplace [NEWSLETTER] par le texte de la newsletter
271  $template_infos = getTextAndTitleFromEmailTemplateLang($template_technical_code, $this_lang);
272  $message[$this_lang] = $template_infos['text'];
273  $custom_template_tags[$this_lang]['NEWSLETTER'] = $news_infos['message_' . $this_lang];
274  } else {
275  $message[$this_lang] = $news_infos['message_' . $this_lang];
276  }
277  // Le sujet de la newsletter est prioritaire sur celui du template
278  $sujet[$this_lang] = $news_infos['sujet_' . $this_lang];
279  }
280  }
281  // Récupération de la liste des emails
282  if (!empty($message)) {
283  foreach(array_keys($message) as $this_lang) {
284  $sql_cond = "etat='1' AND email_bounce NOT LIKE '5.%' AND email!='' AND " . get_filter_site_cond('utilisateurs', 'u') . " AND ";
285  if (!$test) {
286  $sql_cond .= "newsletter='1' AND (lang='" . nohtml_real_escape_string($this_lang) . "' OR lang='')";
287  } else {
288  $sql_cond .= "priv LIKE '%admin%'";
289  $sujet[$this_lang] .= ' [envoyé aux administrateurs seulement]';
290  }
291  $sql_u = "SELECT *
292  FROM peel_utilisateurs u
293  WHERE " . $sql_cond;
294  // Le SQL suivant va permettre de récupérer des données utilisateurs pouvant servir dans des TAGS
295  // => il faut mettre tous les champs de la table utilisateurs, à appeler u
296  if (check_if_module_active('crons')) {
297  // Envoi de la newsletter dans la langue définie par l'utilisateur lors de son inscription ou modification de ces paramètres
298  // Les emails seront envoyés a posteriori avec un cron
299  // Si nous avons des tags à remplacer dans le contenue
300  $message[$this_lang] = template_tags_replace($message[$this_lang], $custom_template_tags[$this_lang], true, null, $this_lang);
301  program_cron_email($sql_u, $message[$this_lang], $sujet[$this_lang], $_SESSION['session_utilisateur']['email'], null, $this_lang);
302  query("UPDATE peel_newsletter
303  SET statut='envoi ok', date_envoi='" . date('Y-m-d H:i:s', time()) . "'
304  WHERE id='" . intval($news_infos['id']) . "' AND " . get_filter_site_cond('newsletter', null, true));
305  $newsletter_name_info = $id . ' (' . $this_lang . ') "' . $sujet[$this_lang] . '"';
306  if (!$test) {
307  $output = $GLOBALS['STR_ADMIN_NEWSLETTERS_MSG_SEND_SUBSCRIBERS'];
308  } else {
309  $output = $GLOBALS['STR_ADMIN_NEWSLETTERS_MSG_SEND_ADMINISTRATORS'];
310  }
311  echo $GLOBALS['tplEngine']->createTemplate('global_success.tpl', array('message' => sprintf($output, $newsletter_name_info)))->fetch();
312  } else {
313  $sql_u .= "
314  LIMIT " . intval($debut) . "," . intval($limit);
315  $res_u = query($sql_u);
316  // Envoi de la newsletter dans la langue définie par l'utilisateur lors de son inscription ou modification de ces paramètres
317  $i = 0;
318  while ($row = fetch_assoc($res_u)) {
319  if (send_email($row['email'], $sujet[$this_lang], $message[$this_lang], '', $custom_template_tags[$this_lang], $format, $GLOBALS['support'])) {
320  $result = 'OK';
321  } else {
322  $result = 'NOK';
323  }
324  if (!$test) {
325  $fc = String::fopen_utf8("sending.log", "ab");
326  $w = fwrite ($fc, "[" . $row['email'] . "]\t\t\t " . $result . "\n");
327  fclose($fc);
328  }
329  $i++;
330  }
331  if ($i >= $limit && $debut + $i < 250) {
332  // On continue à envoyer la newsletter
333  sleep(1);
334  send_newsletter($id, $debut + $i, min($limit, 250 - ($debut + $i)), $test);
335  } else {
336  query("UPDATE peel_newsletter
337  SET statut='envoi ok', date_envoi='" . date('Y-m-d H:i:s', time()) . "'
338  WHERE id='" . intval($news_infos['id']) . "' AND " . get_filter_site_cond('newsletter', null, true));
339  echo $GLOBALS['tplEngine']->createTemplate('global_success.tpl', array('message' => sprintf($GLOBALS['STR_ADMIN_NEWSLETTERS_MSG_SENT_OK'], $id, $sujet[$this_lang], $debut + $i)))->fetch();
340  }
341  }
342  }
343  }
344 }
345 
352 {
353  $tpl = $GLOBALS['tplEngine']->createTemplate('admin_liste_newsletter.tpl');
354  $tpl->assign('is_crons_module_active', check_if_module_active('crons'));
355  $tpl->assign('add_src', $GLOBALS['administrer_url'] . '/images/add.png');
356  $tpl->assign('add_href', get_current_url(false) . '?mode=ajout');
357  $tpl->assign('drop_src', $GLOBALS['administrer_url'] . '/images/b_drop.png');
358  $tpl->assign('mail_src', $GLOBALS['administrer_url'] . '/images/mail.gif');
359 
360  $result = query("SELECT *
361  FROM peel_newsletter
362  WHERE " . get_filter_site_cond('newsletter', null, true) . "
363  ORDER BY date DESC");
364  if (!(num_rows($result) == 0)) {
365  $tpl_results = array();
366  $i = 0;
367  while ($ligne = fetch_assoc($result)) {
368  $this_langs_array = array();
369  $titre = $ligne['sujet_' . $_SESSION['session_langue']];
370  foreach($GLOBALS['admin_lang_codes'] as $this_lang) {
371  // Ajout des Custom template tag de la newsletter en fonction de la langue
372  if (!empty($ligne['message_' . $this_lang])) {
373  $this_langs_array[] = $this_lang;
374  }
375  if (empty($titre)) {
376  $titre = $ligne['sujet_' . $this_lang];
377  }
378  }
379  $titre = '[' . String::strtoupper(implode(",", $this_langs_array)) . '] ' . $titre;
380  $sql_u = "SELECT email
381  FROM peel_utilisateurs
382  WHERE newsletter = '1' AND " . get_filter_site_cond('utilisateurs') . " AND etat='1' AND email_bounce NOT LIKE '5.%' AND email!='' AND lang IN ('" . implode("','", $this_langs_array) . "')";
383  $res_u = query($sql_u);
384  $subscribers_number = num_rows($res_u);
385  $tpl_results[] = array('tr_rollover' => tr_rollover($i, true),
386  'sujet' => $ligne['sujet_' . $_SESSION['session_langue']],
387  'statut' => $titre,
388  'drop_href' => get_current_url(false) . '?mode=suppr&id=' . $ligne['id'],
389  'edit_href' => get_current_url(false) . '?mode=modif&id=' . $ligne['id'],
390  'date' => get_formatted_date($ligne['date']),
391  'subscribers_number' => $subscribers_number,
392  'format' => $ligne['format'],
393  'statut' => $ligne['statut'],
394  'date_envoi' => $ligne['date_envoi'],
395  'mail_href' => get_current_url(false) . '?mode=send&id=' . $ligne['id'] . '&format=' . $ligne['format'] . '&token=' . get_form_token_input($_SERVER['PHP_SELF'], true, false),
396  'test_href' => get_current_url(false) . '?mode=send&id=' . $ligne['id'] . '&format=' . $ligne['format'] . '&test=test&token=' . get_form_token_input($_SERVER['PHP_SELF'], true, false),
397  'site_name' => get_site_name($ligne['site_id'])
398  );
399  $i++;
400  }
401  $tpl->assign('results', $tpl_results);
402  }
403  $tpl->assign('STR_ADMIN_WEBSITE', $GLOBALS['STR_ADMIN_WEBSITE']);
404  $tpl->assign('STR_ADMIN_NEWSLETTERS_TITLE', $GLOBALS['STR_ADMIN_NEWSLETTERS_TITLE']);
405  $tpl->assign('STR_ADMIN_NEWSLETTERS_CRON_ACTIVATED_EXPLAIN', $GLOBALS['STR_ADMIN_NEWSLETTERS_CRON_ACTIVATED_EXPLAIN']);
406  $tpl->assign('STR_ADMIN_NEWSLETTERS_CRON_DEACTIVATED_EXPLAIN', $GLOBALS['STR_ADMIN_NEWSLETTERS_CRON_DEACTIVATED_EXPLAIN']);
407  $tpl->assign('STR_ADMIN_NEWSLETTERS_CREATE', $GLOBALS['STR_ADMIN_NEWSLETTERS_CREATE']);
408  $tpl->assign('STR_ADMIN_ACTION', $GLOBALS['STR_ADMIN_ACTION']);
409  $tpl->assign('STR_ADMIN_NAME', $GLOBALS['STR_ADMIN_NAME']);
410  $tpl->assign('STR_ADMIN_CREATION_DATE', $GLOBALS['STR_ADMIN_CREATION_DATE']);
411  $tpl->assign('STR_ADMIN_NEWSLETTERS_SUBSCRIBERS_NUMBER', $GLOBALS['STR_ADMIN_NEWSLETTERS_SUBSCRIBERS_NUMBER']);
412  $tpl->assign('STR_ADMIN_FORMAT', $GLOBALS['STR_ADMIN_FORMAT']);
413  $tpl->assign('STR_STATUS', $GLOBALS['STR_STATUS']);
414  $tpl->assign('STR_ADMIN_NEWSLETTERS_LAST_SENDING', $GLOBALS['STR_ADMIN_NEWSLETTERS_LAST_SENDING']);
415  $tpl->assign('STR_ADMIN_NEWSLETTERS_SEND_TO_USERS', $GLOBALS['STR_ADMIN_NEWSLETTERS_SEND_TO_USERS']);
416  $tpl->assign('STR_ADMIN_NEWSLETTERS_SENDING_TEST', $GLOBALS['STR_ADMIN_NEWSLETTERS_SENDING_TEST']);
417  $tpl->assign('STR_ADMIN_DELETE_WARNING', $GLOBALS['STR_ADMIN_DELETE_WARNING']);
418  $tpl->assign('STR_DELETE', $GLOBALS['STR_DELETE']);
419  $tpl->assign('STR_ADMIN_NEWSLETTERS_UPDATE', $GLOBALS['STR_ADMIN_NEWSLETTERS_UPDATE']);
420  $tpl->assign('STR_ADMIN_NEWSLETTERS_SEND_CONFIRM', $GLOBALS['STR_ADMIN_NEWSLETTERS_SEND_CONFIRM']);
421  $tpl->assign('STR_ADMIN_NEWSLETTERS_SEND_ALL_USERS', $GLOBALS['STR_ADMIN_NEWSLETTERS_SEND_ALL_USERS']);
422  $tpl->assign('STR_ADMIN_DELETE_WARNING', $GLOBALS['STR_ADMIN_DELETE_WARNING']);
423  $tpl->assign('STR_ADMIN_NEWSLETTERS_NOTHING_FOUND', $GLOBALS['STR_ADMIN_NEWSLETTERS_NOTHING_FOUND']);
424  $tpl->assign('STR_ADMIN_NEWSLETTERS_TEST_SENDING_TO_ADMINISTRATORS', $GLOBALS['STR_ADMIN_NEWSLETTERS_TEST_SENDING_TO_ADMINISTRATORS']);
425  echo $tpl->fetch();
426 }
427 
static strtoupper($string)
Returns string with all alphabetic characters converted to uppercase.
Definition: String.php:154
get_site_name($site_ids, $skip_rights_check=false)
Retourne le nom d'un ou de plusieurs sites à partir de l'id.
Definition: fonctions.php:4763
getTextEditor($instance_name, $width, $height, $default_text, $default_path=null, $type_html_editor=0, $compter_char_max_if_enabled=255, $placeholder= '')
getTextEditor()
Definition: fonctions.php:4055
$result
get_current_url($with_get=true, $get_short_url=false, $take_away_get_args_array=null)
get_current_url()
Definition: fonctions.php:1743
$GLOBALS['DOC_TITLE']
Definition: newsletter.php:19
static fopen_utf8($filename, $mode, $force_filename_in_iso_8859=false, $try_filename_in_iso_8859_if_file_not_found=true)
Ouvre un fichier.
Definition: String.php:793
redirect_and_die($url, $permanent_redirection=false, $avoid_loop=false)
Redirige vers l'URL demandée et arrête le programme.
Definition: fonctions.php:1551
supprime_newsletter($id)
Supprime la newsletter spécifié par $id.
Definition: newsletter.php:191
affiche_formulaire_ajout_newsletter(&$frm)
FONCTIONS.
Definition: newsletter.php:105
$tpl_langs
get_site_id_select_options($selected_site_id=null, $selected_site_name=null, $display_first_option=null, $select_current_site_id_by_default=false)
Créer les options pour le select qui liste les noms de sites configurés en back office.
send_newsletter($id, $debut, $limit, $test=false)
Programmation de l'envoi de la newsletter.
Definition: newsletter.php:252
nohtml_real_escape_string($value, $allowed_tags=null)
Protège les données pour insertion dans MySQL ET supprime les tags HTML pour protéger de toute sorte ...
Definition: database.php:400
$frm
Definition: newsletter.php:22
maj_newsletter($id, $frm)
Met à jour le newsletter $id avec de nouvelles valeurs.
Definition: newsletter.php:232
if(!empty($_GET['id'])) if(isset($_POST['form_name'], $_POST['form_subject'], $_POST['form_text'], $_POST['form_lang'])&&empty($_GET['id'])) if(empty($_GET['id'])) $tpl
real_escape_string($value)
real_escape_string()
Definition: database.php:374
necessite_priv($priv, $demo_allowed=true, $configuration_modification=false)
Cette fonction vérifie si l'utilisateur a les privilèges de $priv.
Definition: fonctions.php:1575
get_filter_site_cond($table_technical_code, $table_alias=null, $use_strict_rights_if_in_admin=false, $specific_site_id=null, $exclude_public_items=false, $admin_force_multisite_if_allowed=false)
Retourne la condition SQL permettant de filtrer les données pour une table.
Definition: fonctions.php:4643
affiche_liste_newsletter()
affiche_liste_newsletter()
Definition: newsletter.php:351
query($query, $die_if_error=false, $database_object=null, $silent_if_error=false, $security_sql_filter=true)
The query() function is meant to be called anywhere you want to make a query.
Definition: database.php:158
$output
Definition: newsletter.php:19
vb(&$var, $default=null)
Variable blanche if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:97
if(strlen($date2)== '10') if($type== 'users-by-age'&&a_priv('admin_users', true)) elseif($type== 'forums-count'&&a_priv('admin_content', true)) elseif($type== 'forums-categories'&&a_priv('admin_content', true)) elseif($type== 'users-count'&&a_priv('admin_users', true)) elseif($type== 'product-categories'&&a_priv('admin_products', true)) elseif($type== 'users-by-sex'&&a_priv('admin_users', true)) elseif($type== 'users-by-country'&&a_priv('admin_users', true)) elseif($type== 'sales'&&a_priv('admin_sales', true))
Definition: chart-data.php:160
necessite_identification()
Si l'utilisateur n'est pas connecté à un compte, on affiche une page d'identification et arrête le sc...
Definition: fonctions.php:1596
num_rows($query_result)
num_rows()
Definition: database.php:321
if(!defined('IN_PEEL')) send_email($to, $mail_subject= '', $mail_content= '', $template_technical_code=null, $template_tags=null, $format=null, $sender=null, $html_add_structure=true, $html_correct_conformity=false, $html_convert_url_to_links=true, $reply_to=null, $attached_files_infos_array=null, $lang=null, $additional_infos_array=array(), $attachment_not_sent_by_email=false)
Envoi d'un email à un utilisateur.
Definition: emails.php:38
$form_error_object
Definition: newsletter.php:23
fetch_assoc($query_result)
fetch_assoc()
Definition: database.php:283
get_formatted_date($datetime_or_timestamp=null, $mode= 'short', $hour_minute=false)
Afficher une date formatée, en évitant les problèmes liés aux noms de mois sur les serveurs qui ne so...
Definition: format.php:440
affiche_formulaire_newsletter(&$frm)
affiche_formulaire_newsletter()
Definition: newsletter.php:154
affiche_formulaire_modif_newsletter($id, &$frm)
Affiche le formulaire de modification pour le newsletter sélectionné
Definition: newsletter.php:128
if(!function_exists('affiche_liste_produits_acommander')) if(!function_exists('affiche_liste_articles')) get_email_template_options($option_id_nature= 'id', $category_id=null, $lang=null, $value_select=null, $get_signature=null)
Fonction affichant la liste d'emails sur le compte utilisateur.
insere_newsletter($frm)
Ajoute le newsletter dans la table newsletter.
Definition: newsletter.php:209
getTextAndTitleFromEmailTemplateLang($template_technical_code, $template_lang, $template_technical_id=null)
getTextAndTitleFromEmailTemplateLang()
Definition: emails.php:331
get_form_token_input($name= 'general', $use_existing_token=true, $return_as_input_form=true)
get_form_token_input()
Definition: fonctions.php:94
get_site_id_sql_set_value($site_ids)
Retourne la valeur SQL d'un champ INT ou SET suivant que ce soit un entier ou un tableau.
Definition: fonctions.php:4747
$req
Definition: ipn.php:30
verify_token($name= 'general', $delay_in_minutes=60, $check_referer_if_set_by_server=true, $cancel_token=true, $minimum_wait_in_seconds_before_use=0)
Vérification de la validité d'un token Par défaut, un token est valide 1h, et utilisable 1 seule fois...
Definition: fonctions.php:118
$id
Definition: articles.php:22
check_if_module_active($module_name, $specific_file_name=null)
Renvoie si un module est présent et activé ou non - Peut être appelé avant ou après le chargement d'u...
template_tags_replace($text, $custom_template_tags=array(), $replace_only_custom_tags=false, $format=null, $lang=null, $avoid_load_urls=false)
Remplace les tags d'un texte au format [TAG] par les valeurs correspondantes.
Definition: format.php:599
if(defined('IN_PEEL_ADMIN')||IN_INSTALLATION) $_SESSION['session_langue']

This documentation for Open ecommerce PEEL Shopping and PEEL.fr has been generated by Doxygen on Thu Oct 15 2015 14:29:17 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.