From 324f3c4279ee0d1ff24e297535f5a62cc777ace1 Mon Sep 17 00:00:00 2001 From: rub Date: Sat, 1 Apr 2006 01:14:57 +0000 Subject: [NBM] Step 7: Add functionalities subscribe/unsubscribe: o reduce length of check_key o fix bugs o send mail on subscribe/unsubscribe o add and used $conf parameters o review keyword of languages o improve selection/check o can subscribe/unsubscribe with a link include on mail o fix bug mass_update collate git-svn-id: http://piwigo.org/svn/trunk@1116 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/functions.php | 2 +- .../include/functions_notification_by_mail.inc.php | 368 +++++++++++++++++++-- admin/notification_by_mail.php | 290 ++++++---------- 3 files changed, 438 insertions(+), 222 deletions(-) (limited to 'admin') diff --git a/admin/include/functions.php b/admin/include/functions.php index 7168e79d9..dc477f6d1 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -762,7 +762,7 @@ SHOW FULL COLUMNS FROM '.$tablename.' { $column.= " default '".$row['Default']."'"; } - if (isset($row['Collation'])) + if (isset($row['Collation']) and $row['Collation'] != 'NULL') { $column.= " collate '".$row['Collation']."'"; } diff --git a/admin/include/functions_notification_by_mail.inc.php b/admin/include/functions_notification_by_mail.inc.php index 31753c7de..d19085685 100644 --- a/admin/include/functions_notification_by_mail.inc.php +++ b/admin/include/functions_notification_by_mail.inc.php @@ -26,6 +26,9 @@ // | USA. | // +-----------------------------------------------------------------------+ +/* nbm_global_var */ +$env_nbm = array(); + /* * Search an available check_key * @@ -37,7 +40,7 @@ function find_available_check_key() { while (true) { - $key = generate_key(128); + $key = generate_key(16); $query = ' select count(*) @@ -65,6 +68,250 @@ function quote_check_key_list($check_key_list = array()) return array_map(create_function('$s', 'return \'\\\'\'.$s.\'\\\'\';'), $check_key_list); } +/* + * Execute all main queries to get list of user + * + * Type are the type of list 'subscribe', 'send' + * + * return array of users + */ +function get_user_notifications($action, $check_key_list = array(), $enabled_filter_value = '') +{ + global $conf; + + $data_users = array(); + + if (in_array($action, array('subscribe', 'send'))) + { + $quoted_check_key_list = quote_check_key_list($check_key_list); + if (count($quoted_check_key_list) != 0 ) + { + $query_and_check_key = ' and + check_key in ('.implode(",", $quoted_check_key_list).') '; + } + else + { + $query_and_check_key = ''; + } + + $query = ' +select + N.user_id, + N.check_key, + U.'.$conf['user_fields']['username'].' as username, + U.'.$conf['user_fields']['email'].' as mail_address, + N.enabled, + N.last_send +from + '.USER_MAIL_NOTIFICATION_TABLE.' as N, + '.USERS_TABLE.' as U +where + N.user_id = U.'.$conf['user_fields']['id']; + + if ($action == 'send') + { + // No mail empty and all users enabled + $query .= ' and + N.enabled = \'true\' and + U.'.$conf['user_fields']['email'].' is not null'; + } + + $query .= $query_and_check_key; + + if (isset($enabled_filter_value) and ($enabled_filter_value != '')) + { + $query .= ' and + N.enabled = \''.boolean_to_string($enabled_filter_value).'\''; + } + + $query .= ' +order by'; + + if ($action == 'send') + { + $query .= ' + last_send, username;'; + } + else + { + $query .= ' + username;'; + } + + $query .= ';'; + + $result = pwg_query($query); + if (!empty($result)) + { + while ($nbm_user = mysql_fetch_array($result)) + { + array_push($data_users, $nbm_user); + } + } + } + return $data_users; +} + +/* + * Begin of use nbm environment + * Prepare and save current environment and initialize data in order to send mail + * + * Return none + */ +function begin_users_env_nbm($is_to_send_mail = false) +{ + global $user, $lang, $lang_info, $conf, $env_nbm; + + // Save $user, $lang_info and $lang arrays (include/user.inc.php has been executed) + $env_nbm['save_user'] = $user; + $env_nbm['save_lang_info'] = $lang_info; + $env_nbm['save_lang'] = $lang; + // Last Language + $env_nbm['last_language'] = $user['language']; + + $env_nbm['is_to_send_mail'] = $is_to_send_mail; + + if ($is_to_send_mail) + { + // Init mail configuration + $env_nbm['send_as_name'] = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : $conf['gallery_title']); + $env_nbm['send_as_mail_address'] = get_webmaster_mail_address(); + $env_nbm['send_as_mail_formated'] = format_email($env_nbm['send_as_name'], $env_nbm['send_as_mail_address']); + // Init mail counter + $env_nbm['error_on_mail_count'] = 0; + $env_nbm['sent_mail_count'] = 0; + // Save sendmail message info and error in the original language + $env_nbm['msg_info'] = l10n('nbm_msg_mail_sent_to'); + $env_nbm['msg_error'] = l10n('nbm_msg_error_sending_email_to'); + } +} + +/* + * End of use nbm environment + * Restore environment + * + * Return none + */ +function end_users_env_nbm() +{ + global $user, $lang, $lang_info, $env_nbm; + + // Restore $user, $lang_info and $lang arrays (include/user.inc.php has been executed) + $user = $env_nbm['save_user']; + $lang_info = $env_nbm['save_lang_info']; + $lang = $env_nbm['save_lang']; +} + +/* + * Set user_id on nbm enviromnent + * + * Return none + */ +function set_user_id_on_env_nbm($user_id) +{ + global $user, $lang, $lang_info, $env_nbm; + + $user = array(); + $user['id'] = $user_id; + $user = array_merge($user, getuserdata($user['id'], true)); + + if ($env_nbm['last_language'] != $user['language']) + { + $env_nbm['last_language'] = $user['language']; + + // Re-Init language arrays + $lang_info = array(); + $lang = array(); + + // language files + include(get_language_filepath('common.lang.php')); + // No test admin because script is checked admin (user selected no) + // Translations are in admin file too + include(get_language_filepath('admin.lang.php')); + } +} + +/* + * Inc Counter success + * + * Return none + */ +function inc_mail_sent_success($nbm_user) +{ + global $page, $env_nbm; + + $env_nbm['sent_mail_count'] += 1; + array_push($page['infos'], sprintf($env_nbm['msg_info'], $nbm_user['username'], $nbm_user['mail_address'])); +} + +/* + * Inc Counter failed + * + * Return none + */ +function inc_mail_sent_failed($nbm_user) +{ + global $page, $env_nbm; + + $env_nbm['error_on_mail_count'] += 1; + array_push($page['errors'], sprintf($env_nbm['msg_error'], $nbm_user['username'], $nbm_user['mail_address'])); +} + +/* + * Display Counter Info + * + * Return none + */ +function display_counter_info() +{ + global $page, $env_nbm; + + if ($env_nbm['error_on_mail_count'] != 0) + { + array_push($page['errors'], sprintf(l10n('nbm_msg_no_mail_to_send'), $env_nbm['error_on_mail_count'])); + if ($env_nbm['sent_mail_count'] != 0) + array_push($page['infos'], sprintf(l10n('nbm_msg_n_mails_sent'), $env_nbm['sent_mail_count'])); + } + else + { + if ($env_nbm['sent_mail_count'] == 0) + array_push($page['infos'], l10n('nbm_no_mail_to_send')); + else + array_push($page['infos'], sprintf(l10n('nbm_msg_n_mails_sent'), $env_nbm['sent_mail_count'])); + } +} + +function get_mail_content_subscribe_unsubcribe($nbm_user) +{ + global $page, $env_nbm; + + $content = "\n\n\n"; + + if ( isset($page['root_path']) ) + { + $save_root_path = $page['root_path']; + } + + $page['root_path'] = 'http://'.$_SERVER['HTTP_HOST'].cookie_path(); + + $content .= "___________________________________________________\n\n"; + $content .= sprintf(l10n('nbm_content_unsubscribe_link'), add_url_params(get_root_url().'/nbm.php', array('unsubscribe' => $nbm_user['check_key'])))."\n"; + $content .= sprintf(l10n('nbm_content_subscribe_link'), add_url_params(get_root_url().'/nbm.php', array('subscribe' => $nbm_user['check_key'])))."\n"; + $content .= sprintf(l10n('nbm_content_subscribe_unsubscribe_contact'), $env_nbm['send_as_mail_address'])."\n"; + $content .= "___________________________________________________\n\n\n\n"; + + if (isset($save_root_path)) + { + $page['root_path'] = $save_root_path; + } + else + { + unset($page['root_path']); + } + + return $content; +} + /* * Subscribe or unsubscribe notification by mail * @@ -73,70 +320,121 @@ function quote_check_key_list($check_key_list = array()) * * @return updated data count */ -function do_subscribe_unsubcribe_notification_by_mail($is_subscribe = false, $check_key_list = array()) +function do_subscribe_unsubcribe_notification_by_mail($is_admin_request, $is_subscribe = false, $check_key_list = array()) { - global $page; + global $conf, $page, $env_nbm, $conf; $updated_data_count = 0; + $error_on_updated_data_count = 0; + if ($is_subscribe) { $msg_info = l10n('nbm_user_change_enabled_true'); + $msg_error = l10n('nbm_user_not_change_enabled_true'); } else { $msg_info = l10n('nbm_user_change_enabled_false'); + $msg_error = l10n('nbm_user_not_change_enabled_false'); } if (count($check_key_list) != 0) { - $quoted_check_key_list = quote_check_key_list($check_key_list); + $updates = array(); + $enabled_value = boolean_to_string($is_subscribe); + $data_users = get_user_notifications('subscribe', $check_key_list, !$is_subscribe); - $query = ' -select - N.check_key, U.username, U.mail_address -from - '.USER_MAIL_NOTIFICATION_TABLE.' as N, - '.USERS_TABLE.' as U -where - N.user_id = U.id and - N.enabled = \''.boolean_to_string(!$is_subscribe).'\' and - check_key in ('.implode(",", $quoted_check_key_list).') -order by - username;'; + // Begin nbm users environment + begin_users_env_nbm(true); - $result = pwg_query($query); - if (!empty($result)) + foreach ($data_users as $nbm_user) { - $updates = array(); - $enabled_value = boolean_to_string($is_subscribe); + if (($env_nbm['error_on_mail_count'] + $env_nbm['sent_mail_count']) >= $conf['nbm_max_mails_send']) + { + // Stop fill list on 'send', if the quota is override + array_push($page['errors'], sprintf(l10n('nbm_nbm_break_send_mail'), $conf['nbm_max_mails_send'])); + break; + } + + $do_update = true; + if ($nbm_user['mail_address'] != '') + { + // set env nbm user + set_user_id_on_env_nbm($nbm_user['user_id']); + + $message = ''; + + $subject = '['.$conf['gallery_title'].']: '.($is_subscribe ? l10n('nbm_object_subcribe'): l10n('nbm_object_unsubcribe')); + $message .= sprintf(l10n('nbm_content_hello'), $nbm_user['username']).",\n\n"; + + if ($is_subscribe) + { + $message .= l10n($is_admin_request ? 'nbm_content_subscribe_by_admin' : 'nbm_content_subscribe_by_himself'); + } + else + { + $message .= l10n($is_admin_request ? 'nbm_content_unsubscribe_by_admin' : 'nbm_content_unsubscribe_by_himself'); + } + + $message .= "\n\n"; + $message .= l10n('nbm_content_byebye')."\n ".$env_nbm['send_as_name']."\n\n"; + + $message .= get_mail_content_subscribe_unsubcribe($nbm_user); + + if (pwg_mail(format_email($nbm_user['username'], $nbm_user['mail_address']), $env_nbm['send_as_mail_formated'], $subject, $message)) + { + inc_mail_sent_success($nbm_user); + } + else + { + inc_mail_sent_failed($nbm_user); + $do_update = false; + } + } - while ($row = mysql_fetch_array($result)) + if ($do_update) { array_push ( $updates, array ( - 'check_key' => $row['check_key'], + 'check_key' => $nbm_user['check_key'], 'enabled' => $enabled_value ) ); $updated_data_count += 1; - array_push($page['infos'], sprintf($msg_info, $row['username'], $row['mail_address'])); + array_push($page['infos'], sprintf($msg_info, $nbm_user['username'], $nbm_user['mail_address'])); + } + else + { + $error_on_updated_data_count += 1; + array_push($page['errors'], sprintf($msg_error, $nbm_user['username'], $nbm_user['mail_address'])); } - mass_updates( - USER_MAIL_NOTIFICATION_TABLE, - array( - 'primary' => array('check_key'), - 'update' => array('enabled') - ), - $updates - ); } + + // Restore nbm environment + end_users_env_nbm(); + + display_counter_info(); + + mass_updates( + USER_MAIL_NOTIFICATION_TABLE, + array( + 'primary' => array('check_key'), + 'update' => array('enabled') + ), + $updates + ); + } array_push($page['infos'], sprintf(l10n('nbm_user_change_enabled_updated_data_count'), $updated_data_count)); + if ($error_on_updated_data_count != 0) + { + array_push($page['errors'], sprintf(l10n('nbm_user_change_enabled_error_on_updated_data_count'), $error_on_updated_data_count)); + } return $updated_data_count; } @@ -148,9 +446,9 @@ order by * * @return updated data count */ -function unsubcribe_notification_by_mail($check_key_list = array()) +function unsubcribe_notification_by_mail($is_admin_request, $check_key_list = array()) { - return do_subscribe_unsubcribe_notification_by_mail(false, $check_key_list); + return do_subscribe_unsubcribe_notification_by_mail($is_admin_request, false, $check_key_list); } /* @@ -160,9 +458,9 @@ function unsubcribe_notification_by_mail($check_key_list = array()) * * @return updated data count */ -function subcribe_notification_by_mail($check_key_list = array()) +function subcribe_notification_by_mail($is_admin_request, $check_key_list = array()) { - return do_subscribe_unsubcribe_notification_by_mail(true, $check_key_list); + return do_subscribe_unsubcribe_notification_by_mail($is_admin_request, true, $check_key_list); } ?> \ No newline at end of file diff --git a/admin/notification_by_mail.php b/admin/notification_by_mail.php index fdeafbe60..85f583848 100644 --- a/admin/notification_by_mail.php +++ b/admin/notification_by_mail.php @@ -73,69 +73,6 @@ function get_tab_status($mode) return $result; } -/* - * Execute all main queries to get list of user - * - * Type are the type of list 'subscribe', 'send' - * - * return array of users - */ -function get_user_notifications($action, $check_key_list = array()) -{ - global $conf; - - $data_users = array(); - - if (in_array($action, array('subscribe', 'send'))) - { - $quoted_check_key_list = quote_check_key_list($check_key_list); - if (count($quoted_check_key_list) != 0 ) - { - $query_and_check_key = ' and - check_key in ('.implode(",", $quoted_check_key_list).') '; - } - else - { - $query_and_check_key = ''; - } - - $query = ' -select - N.user_id, - N.check_key, - U.'.$conf['user_fields']['username'].' as username, - U.'.$conf['user_fields']['email'].' as mail_address, - N.enabled, - N.last_send -from - '.USER_MAIL_NOTIFICATION_TABLE.' as N, - '.USERS_TABLE.' as U -where - N.user_id = U.'.$conf['user_fields']['id']; - - if ($action == 'send') - { - $query .= ' and - N.enabled = \'true\' and - U.'.$conf['user_fields']['email'].' is not null'.$query_and_check_key; - } - - $query .= ' -order by - username;'; - - $result = pwg_query($query); - if (!empty($result)) - { - while ($nbm_user = mysql_fetch_array($result)) - { - array_push($data_users, $nbm_user); - } - } - } - return $data_users; -} - /* * Inserting News users */ @@ -194,7 +131,7 @@ order by ) ); - array_push($page['infos'], sprintf(l10n('nbm_User %s [%s] added.'), $nbm_user['username'], $nbm_user['mail_address'])); + array_push($page['infos'], sprintf(l10n('nbm_user_x_added'), $nbm_user['username'], $nbm_user['mail_address'])); } // Insert new nbm_users @@ -202,7 +139,8 @@ order by // Update field enabled with specific function do_subscribe_unsubcribe_notification_by_mail ( - ($conf['default_value_user_mail_notification_enabled'] == true ? true : false), + true, + $conf['nbm_default_value_user_enabled'], $check_key_list ); } @@ -212,12 +150,12 @@ order by * Send mail for notification to all users * Return list of "treated/selected" users */ -function do_action_send_mail_notification($action = 'list', $check_key_list = array(), $customize_mail_content = '') +function do_action_send_mail_notification($action = 'list_to_send', $check_key_list = array(), $customize_mail_content = '') { - global $conf, $page, $user, $lang_info, $lang; + global $conf, $page, $user, $lang_info, $lang, $env_nbm; $return_list = array(); - if (in_array($action, array('list', 'send'))) + if (in_array($action, array('list_to_send', 'send'))) { list($dbnow) = mysql_fetch_row(pwg_query('SELECT NOW();')); @@ -231,156 +169,133 @@ function do_action_send_mail_notification($action = 'list', $check_key_list = ar // disabled and null mail_address are not selected in the list $data_users = get_user_notifications('send', $check_key_list); - if (count($data_users) > 0) + // Check if exist news to list user or send mails + if (($conf['nbm_list_all_enabled_users_to_send'] == false) or ($is_action_send)) { - $error_on_mail_count = 0; - $sent_mail_count = 0; - // Save $user, $lang_info and $lang arrays (include/user.inc.php has been executed) - $sav_mailtousers_user = $user; - $sav_mailtousers_lang_info = $lang_info; - $sav_mailtousers_lang = $lang; - // Save message info and error in the original language - $msg_info = l10n('nbm_Mail sent to %s [%s].'); - $msg_error = l10n('nbm_Error when sending email to %s [%s].'); - // Last Language - $last_mailtousers_language = $user['language']; - - if ($is_action_send) - { - // Init mail configuration - $send_as_name = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : $conf['gallery_title']); - $send_as_mail_address = get_webmaster_mail_address(); - $send_as_mail_formated = format_email($send_as_name, $send_as_mail_address); - } - - foreach ($data_users as $nbm_user) + if (count($data_users) > 0) { - $user = array(); - $user['id'] = $nbm_user['user_id']; - $user = array_merge($user, getuserdata($user['id'], true)); + $datas = array(); - if ($last_mailtousers_language != $user['language']) - { - $last_mailtousers_language = $user['language']; - - // Re-Init language arrays - $lang_info = array(); - $lang = array(); + // Begin nbm users environment + begin_users_env_nbm($is_action_send); - // language files - include(get_language_filepath('common.lang.php')); - // No test admin because script is checked admin (user selected no) - // Translations are in admin file too - include(get_language_filepath('admin.lang.php')); - } - - if ($is_action_send) + foreach ($data_users as $nbm_user) { - $message = ''; - - if ($conf['nbm_send_detailed_content']) + if ((!$is_action_send) and (count($return_list) >= $conf['nbm_max_list_users_to_send'])) { - $news = news($nbm_user['last_send'], $dbnow); - $exist_data = count($news) > 0; + // Stop fill list on 'list_to_send', if the quota is override + array_push($page['infos'], sprintf(l10n('nbm_break_list_user'), $conf['nbm_max_list_users_to_send'])); + break; } - else + if (($is_action_send) and (count($return_list) >= $conf['nbm_max_mails_send'])) { - $exist_data = news_exists($nbm_user['last_send'], $dbnow); + // Stop fill list on 'send', if the quota is override + array_push($page['errors'], sprintf(l10n('nbm_nbm_break_send_mail'), $conf['nbm_max_mails_send'])); + break; } - if ($exist_data) - { - array_push($return_list, $nbm_user); + // set env nbm user + set_user_id_on_env_nbm($nbm_user['user_id']); - $subject = '['.$conf['gallery_title'].']: '.l10n('nbm_ContentObject'); - $message .= sprintf(l10n('nbm_ContentHello'), $nbm_user['username']).",\n\n"; - - if (!is_null($nbm_user['last_send'])) - $message .= sprintf(l10n('nbm_ContentNewElementsBetween'), $nbm_user['last_send'], $dbnow); - else - $message .= sprintf(l10n('nbm_ContentNewElements'), $dbnow); + if ($is_action_send) + { + $message = ''; if ($conf['nbm_send_detailed_content']) { - $message .= ":\n"; - - foreach ($news as $line) - { - $message .= ' o '.$line."\n"; - } - $message .= "\n"; + $news = news($nbm_user['last_send'], $dbnow); + $exist_data = count($news) > 0; } else { - $message .= ".\n"; + $exist_data = news_exists($nbm_user['last_send'], $dbnow); } - $message .= sprintf(l10n('nbm_ContentGoTo'), $conf['gallery_title'], $conf['gallery_url'])."\n\n"; - $message .= $customize_mail_content."\n\n"; - $message .= l10n('nbm_ContentByeBye')."\n ".$send_as_name."\n\n"; - $message .= "\n".sprintf(l10n('nbm_ContentUnsubscribe'), $send_as_mail_address)."\n\n"; - - if (pwg_mail(format_email($nbm_user['username'], $nbm_user['mail_address']), $send_as_mail_formated, $subject, $message)) + if ($exist_data) { - $sent_mail_count += 1; - array_push($page['infos'], sprintf($msg_info, $nbm_user['username'], $nbm_user['mail_address'])); + array_push($return_list, $nbm_user); - $data = array('user_id' => $user_notification['user_id'], - 'last_send' => $dbnow); - array_push($datas, $data); - } - else - { - $error_on_mail_count += 1; - array_push($page['errors'], sprintf($msg_error, $nbm_user['username'], $nbm_user['mail_address'])); + $subject = '['.$conf['gallery_title'].']: '.l10n('nbm_object_news'); + $message .= sprintf(l10n('nbm_content_hello'), $nbm_user['username']).",\n\n"; + + if (!is_null($nbm_user['last_send'])) + $message .= sprintf(l10n('nbm_content_new_elements_between'), $nbm_user['last_send'], $dbnow); + else + $message .= sprintf(l10n('nbm_content_new_elements'), $dbnow); + + if ($conf['nbm_send_detailed_content']) + { + $message .= ":\n"; + + foreach ($news as $line) + { + $message .= ' o '.$line."\n"; + } + $message .= "\n"; + } + else + { + $message .= ".\n"; + } + + $message .= sprintf(l10n('nbm_content_goto'), $conf['gallery_title'], $conf['gallery_url'])."\n\n"; + $message .= $customize_mail_content."\n\n"; + $message .= l10n('nbm_content_byebye')."\n ".$env_nbm['send_as_name']."\n\n"; + + $message .= get_mail_content_subscribe_unsubcribe($nbm_user); + + if (pwg_mail(format_email($nbm_user['username'], $nbm_user['mail_address']), $env_nbm['send_as_mail_formated'], $subject, $message)) + { + inc_mail_sent_success($nbm_user); + + $data = array('user_id' => $nbm_user['user_id'], + 'last_send' => $dbnow); + array_push($datas, $data); + } + else + { + inc_mail_sent_failed($nbm_user); + } } } - } - else - { - if (news_exists($nbm_user['last_send'], $dbnow)) + else { - array_push($return_list, $nbm_user); + if (news_exists($nbm_user['last_send'], $dbnow)) + { + array_push($return_list, $nbm_user); + } } } - } - - // Restore $user, $lang_info and $lang arrays (include/user.inc.php has been executed) - $user = $sav_mailtousers_user; - $lang_info = $sav_mailtousers_lang_info; - $lang = $sav_mailtousers_lang; - - if ($is_action_send) - { - mass_updates( - USER_MAIL_NOTIFICATION_TABLE, - array( - 'primary' => array('user_id'), - 'update' => array('last_send') - ), - $datas - ); + // Restore nbm environment + end_users_env_nbm(); - if ($error_on_mail_count != 0) + if ($is_action_send) { - array_push($page['errors'], sprintf(l10n('nbm_%d mails were not sent.'), $error_on_mail_count)); + mass_updates( + USER_MAIL_NOTIFICATION_TABLE, + array( + 'primary' => array('user_id'), + 'update' => array('last_send') + ), + $datas + ); + + display_counter_info(); } - else + } + else + { + if ($is_action_send) { - if ($sent_mail_count == 0) - array_push($page['infos'], l10n('nbm_No mail to send.')); - else - array_push($page['infos'], sprintf(l10n('nbm_%d mails were sent.'), $sent_mail_count)); + array_push($page['errors'], l10n('nbm_no_user_to send_notifications_by_mail')); } } } else { - if ($is_action_send) - { - array_push($page['errors'], l10n('nbm_No user to send notifications by mail.')); - } + // Quick List, don't check news + $return_list = $data_users; } } return $return_list; @@ -468,12 +383,12 @@ where { if (isset($_POST['falsify']) and isset($_POST['cat_true'])) { - unsubcribe_notification_by_mail($_POST['cat_true']); + unsubcribe_notification_by_mail(true, $_POST['cat_true']); } else if (isset($_POST['trueify']) and isset($_POST['cat_false'])) { - subcribe_notification_by_mail($_POST['cat_false']); + subcribe_notification_by_mail(true, $_POST['cat_false']); } break; } @@ -559,7 +474,10 @@ switch ($page['mode']) { $template->assign_block_vars( (get_boolean($nbm_user['enabled']) ? 'category_option_true' : 'category_option_false'), - array('SELECTED' => '', + array('SELECTED' => ( // Keep selected user where enabled are not changed when change has been notify + get_boolean($nbm_user['enabled']) ? (isset($_POST['falsify']) and isset($_POST['cat_true']) and in_array($nbm_user['check_key'], $_POST['cat_true'])) + : (isset($_POST['trueify']) and isset($_POST['cat_false']) and in_array($nbm_user['check_key'], $_POST['cat_false'])) + ) ? 'selected="selected"' : '', 'VALUE' => $nbm_user['check_key'], 'OPTION' => $nbm_user['username'].'['.$nbm_user['mail_address'].']' )); @@ -572,7 +490,7 @@ switch ($page['mode']) { $template->assign_block_vars($page['mode'], array()); - $data_users = do_action_send_mail_notification('list'); + $data_users = do_action_send_mail_notification('list_to_send'); if (count($data_users) == 0) { -- cgit v1.2.3