14 define(
'IN_PEEL_ADMIN',
true);
15 include(
"../configuration.inc.php");
20 include(
$GLOBALS[
'repertoire_modele'] .
"/admin_haut.php");
25 switch (
vb($_REQUEST[
'mode'])) {
63 $debut = intval($_GET[
'debut']);
65 $id = intval($_GET[
'id']);
74 if (!
verify_token($_SERVER[
'PHP_SELF'] . $frm[
'mode'] . $frm[
'id'])) {
93 include(
$GLOBALS[
'repertoire_modele'] .
"/admin_bas.php");
111 $frm[
'message'] =
"";
113 $frm[
'nouveau_mode'] =
"insere";
115 $frm[
'format'] =
"html";
116 $frm[
'titre_bouton'] =
$GLOBALS[
"STR_ADMIN_NEWSLETTERS_CREATE"];
133 $qid =
query(
"SELECT *
140 $frm[
"nouveau_mode"] =
"maj";
141 $frm[
"titre_bouton"] =
$GLOBALS[
'STR_ADMIN_FORM_SAVE_CHANGES'];
156 $tpl =
$GLOBALS[
'tplEngine']->createTemplate(
'admin_formulaire_newsletter.tpl');
159 $tpl->assign(
'mode',
$frm[
"nouveau_mode"]);
160 $tpl->assign(
'id', intval(
$frm[
'id']));
165 foreach (
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
167 'sujet' =>
vb(
$frm[
'sujet_' . $this_lang]),
168 'message_te' =>
getTextEditor(
'message_' . $this_lang,
'100%', 500,
vb(
$frm[
'message_' . $this_lang]))
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']);
193 $qid =
query(
"SELECT *
200 echo
$GLOBALS[
'tplEngine']->createTemplate(
'global_success.tpl', array(
'message' => sprintf(
$GLOBALS[
'STR_ADMIN_NEWSLETTERS_MSG_NEWSLETTER_DELETED'], $n[
'sujet_' .
$_SESSION[
'session_langue']])))->fetch();
211 $req =
"INSERT INTO peel_newsletter (";
213 foreach(
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
214 $req .=
"sujet_" . $this_lang .
", message_" . $this_lang .
",";
216 $req .=
"date, format, statut, template_technical_code, site_id) VALUES (";
217 foreach(
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
234 $req =
"UPDATE peel_newsletter SET ";
236 foreach(
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
257 $res_n =
query($sql_n);
260 $format = $news_infos[
'format'];
262 $template_technical_code = $news_infos[
'template_technical_code'];
264 foreach(
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
266 $custom_template_tags[$this_lang] = null;
267 if (!empty($news_infos[
'message_' . $this_lang])) {
269 if (!empty($template_technical_code)) {
272 $message[$this_lang] = $template_infos[
'text'];
273 $custom_template_tags[$this_lang][
'NEWSLETTER'] = $news_infos[
'message_' . $this_lang];
275 $message[$this_lang] = $news_infos[
'message_' . $this_lang];
278 $sujet[$this_lang] = $news_infos[
'sujet_' . $this_lang];
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 ";
288 $sql_cond .=
"priv LIKE '%admin%'";
289 $sujet[$this_lang] .=
' [envoyé aux administrateurs seulement]';
292 FROM peel_utilisateurs u
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] .
'"';
311 echo
$GLOBALS[
'tplEngine']->createTemplate(
'global_success.tpl', array(
'message' => sprintf(
$output, $newsletter_name_info)))->fetch();
314 LIMIT " . intval($debut) .
"," . intval($limit);
315 $res_u =
query($sql_u);
319 if (
send_email($row[
'email'], $sujet[$this_lang], $message[$this_lang],
'', $custom_template_tags[$this_lang], $format,
$GLOBALS[
'support'])) {
326 $w = fwrite ($fc,
"[" . $row[
'email'] .
"]\t\t\t " .
$result .
"\n");
331 if (
$i >= $limit && $debut +
$i < 250) {
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();
353 $tpl =
$GLOBALS[
'tplEngine']->createTemplate(
'admin_liste_newsletter.tpl');
355 $tpl->assign(
'add_src',
$GLOBALS[
'administrer_url'] .
'/images/add.png');
357 $tpl->assign(
'drop_src',
$GLOBALS[
'administrer_url'] .
'/images/b_drop.png');
358 $tpl->assign(
'mail_src',
$GLOBALS[
'administrer_url'] .
'/images/mail.gif');
363 ORDER BY date DESC");
365 $tpl_results = array();
368 $this_langs_array = array();
369 $titre = $ligne[
'sujet_' .
$_SESSION[
'session_langue']];
370 foreach(
$GLOBALS[
'admin_lang_codes'] as $this_lang) {
372 if (!empty($ligne[
'message_' . $this_lang])) {
373 $this_langs_array[] = $this_lang;
376 $titre = $ligne[
'sujet_' . $this_lang];
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']],
388 'drop_href' =>
get_current_url(
false) .
'?mode=suppr&id=' . $ligne[
'id'],
389 'edit_href' =>
get_current_url(
false) .
'?mode=modif&id=' . $ligne[
'id'],
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),
401 $tpl->assign(
'results', $tpl_results);
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']);
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']);
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']);
static strtoupper($string)
Returns string with all alphabetic characters converted to uppercase.
get_site_name($site_ids, $skip_rights_check=false)
Retourne le nom d'un ou de plusieurs sites à partir de l'id.
getTextEditor($instance_name, $width, $height, $default_text, $default_path=null, $type_html_editor=0, $compter_char_max_if_enabled=255, $placeholder= '')
getTextEditor()
get_current_url($with_get=true, $get_short_url=false, $take_away_get_args_array=null)
get_current_url()
static fopen_utf8($filename, $mode, $force_filename_in_iso_8859=false, $try_filename_in_iso_8859_if_file_not_found=true)
Ouvre un fichier.
redirect_and_die($url, $permanent_redirection=false, $avoid_loop=false)
Redirige vers l'URL demandée et arrête le programme.
supprime_newsletter($id)
Supprime la newsletter spécifié par $id.
affiche_formulaire_ajout_newsletter(&$frm)
FONCTIONS.
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.
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 ...
maj_newsletter($id, $frm)
Met à jour le newsletter $id avec de nouvelles valeurs.
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()
necessite_priv($priv, $demo_allowed=true, $configuration_modification=false)
Cette fonction vérifie si l'utilisateur a les privilèges de $priv.
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.
affiche_liste_newsletter()
affiche_liste_newsletter()
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.
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))
necessite_identification()
Si l'utilisateur n'est pas connecté à un compte, on affiche une page d'identification et arrête le sc...
num_rows($query_result)
num_rows()
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.
fetch_assoc($query_result)
fetch_assoc()
affiche_formulaire_newsletter(&$frm)
affiche_formulaire_newsletter()
affiche_formulaire_modif_newsletter($id, &$frm)
Affiche le formulaire de modification pour le newsletter sélectionné
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.
getTextAndTitleFromEmailTemplateLang($template_technical_code, $template_lang, $template_technical_id=null)
getTextAndTitleFromEmailTemplateLang()
get_form_token_input($name= 'general', $use_existing_token=true, $return_as_input_form=true)
get_form_token_input()
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.
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...
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...
if(defined('IN_PEEL_ADMIN')||IN_INSTALLATION) $_SESSION['session_langue']