/** * Send an email to a group. * @see pwg_mail() * * @param int $group_id * @param array $args - as in pwg_mail() * o language_selected: filters users of the group by language [default value empty] * @param array $tpl - as in pwg_mail() * @return boolean */ function pwg_mail_group($group_id, $args = array(), $tpl = array()) { if (empty($group_id) or empty($args['content']) and empty($tpl)) { return false; } global $conf; $return = true; // get distinct languages of targeted users $query = ' SELECT DISTINCT language FROM ' . USER_GROUP_TABLE . ' AS ug INNER JOIN ' . USERS_TABLE . ' AS u ON ' . $conf['user_fields']['id'] . ' = ug.user_id INNER JOIN ' . USER_INFOS_TABLE . ' AS ui ON ui.user_id = ug.user_id WHERE group_id = ' . $group_id . ' AND ' . $conf['user_fields']['email'] . ' <> ""'; if (!empty($args['language_selected'])) { $query .= ' AND language = \'' . $args['language_selected'] . '\''; } $query .= ' ;'; $languages = array_from_query($query, 'language'); if (empty($languages)) { return $return; } foreach ($languages as $language) { // get subset of users in this group for a specific language $query = ' SELECT u.' . $conf['user_fields']['username'] . ' AS name, u.' . $conf['user_fields']['email'] . ' AS email FROM ' . USER_GROUP_TABLE . ' AS ug INNER JOIN ' . USERS_TABLE . ' AS u ON ' . $conf['user_fields']['id'] . ' = ug.user_id INNER JOIN ' . USER_INFOS_TABLE . ' AS ui ON ui.user_id = ug.user_id WHERE group_id = ' . $group_id . ' AND ' . $conf['user_fields']['email'] . ' <> "" AND language = \'' . $language . '\' ;'; $users = array_from_query($query); if (empty($users)) { continue; } switch_lang_to($language); $return &= pwg_mail(null, array_merge($args, array('Bcc' => $users)), $tpl); switch_lang_back(); } return $return; }
function save_profile_from_post($userdata, &$errors) { global $conf, $page; $errors = array(); if (!isset($_POST['validate'])) { return false; } $special_user = in_array($userdata['id'], array($conf['guest_id'], $conf['default_user_id'])); if ($special_user) { unset($_POST['username'], $_POST['mail_address'], $_POST['password'], $_POST['use_new_pwd'], $_POST['passwordConf'], $_POST['theme'], $_POST['language']); $_POST['theme'] = get_default_theme(); $_POST['language'] = get_default_language(); } if (!defined('IN_ADMIN')) { unset($_POST['username']); } if ($conf['allow_user_customization'] or defined('IN_ADMIN')) { $int_pattern = '/^\\d+$/'; if (empty($_POST['nb_image_page']) or !preg_match($int_pattern, $_POST['nb_image_page'])) { $errors[] = l10n('The number of photos per page must be a not null scalar'); } // periods must be integer values, they represents number of days if (!preg_match($int_pattern, $_POST['recent_period']) or $_POST['recent_period'] < 0) { $errors[] = l10n('Recent period must be a positive integer value'); } if (!in_array($_POST['language'], array_keys(get_languages()))) { die('Hacking attempt, incorrect language value'); } if (!in_array($_POST['theme'], array_keys(get_pwg_themes()))) { die('Hacking attempt, incorrect theme value'); } } if (isset($_POST['mail_address'])) { // if $_POST and $userdata have are same email // validate_mail_address allows, however, to check email $mail_error = validate_mail_address($userdata['id'], $_POST['mail_address']); if (!empty($mail_error)) { $errors[] = $mail_error; } } if (!empty($_POST['use_new_pwd'])) { // password must be the same as its confirmation if ($_POST['use_new_pwd'] != $_POST['passwordConf']) { $errors[] = l10n('The passwords do not match'); } if (!defined('IN_ADMIN')) { // changing password requires old password $query = ' SELECT ' . $conf['user_fields']['password'] . ' AS password FROM ' . USERS_TABLE . ' WHERE ' . $conf['user_fields']['id'] . ' = \'' . $userdata['id'] . '\' ;'; list($current_password) = pwg_db_fetch_row(pwg_query($query)); if (!$conf['password_verify']($_POST['password'], $current_password)) { $errors[] = l10n('Current password is wrong'); } } } if (count($errors) == 0) { // mass_updates function include_once PHPWG_ROOT_PATH . 'admin/include/functions.php'; if (isset($_POST['mail_address'])) { // update common user informations $fields = array($conf['user_fields']['email']); $data = array(); $data[$conf['user_fields']['id']] = $userdata['id']; $data[$conf['user_fields']['email']] = $_POST['mail_address']; // password is updated only if filled if (!empty($_POST['use_new_pwd'])) { $fields[] = $conf['user_fields']['password']; // password is hashed with function $conf['password_hash'] $data[$conf['user_fields']['password']] = $conf['password_hash']($_POST['use_new_pwd']); } // username is updated only if allowed if (!empty($_POST['username'])) { if ($_POST['username'] != $userdata['username'] and get_userid($_POST['username'])) { $page['errors'][] = l10n('this login is already used'); unset($_POST['redirect']); } else { $fields[] = $conf['user_fields']['username']; $data[$conf['user_fields']['username']] = $_POST['username']; // send email to the user if ($_POST['username'] != $userdata['username']) { include_once PHPWG_ROOT_PATH . 'include/functions_mail.inc.php'; switch_lang_to($userdata['language']); $keyargs_content = array(get_l10n_args('Hello', ''), get_l10n_args('Your username has been successfully changed to : %s', $_POST['username'])); pwg_mail($_POST['mail_address'], array('subject' => '[' . $conf['gallery_title'] . '] ' . l10n('Username modification'), 'content' => l10n_args($keyargs_content), 'content_format' => 'text/plain')); switch_lang_back(); } } } mass_updates(USERS_TABLE, array('primary' => array($conf['user_fields']['id']), 'update' => $fields), array($data)); } if ($conf['allow_user_customization'] or defined('IN_ADMIN')) { // update user "additional" informations (specific to Piwigo) $fields = array('nb_image_page', 'language', 'expand', 'show_nb_hits', 'recent_period', 'theme'); if ($conf['activate_comments']) { $fields[] = 'show_nb_comments'; } $data = array(); $data['user_id'] = $userdata['id']; foreach ($fields as $field) { if (isset($_POST[$field])) { $data[$field] = $_POST[$field]; } } mass_updates(USER_INFOS_TABLE, array('primary' => array('user_id'), 'update' => $fields), array($data)); } trigger_notify('save_profile_from_post', $userdata['id']); if (!empty($_POST['redirect'])) { redirect($_POST['redirect']); } } return true; }
/** * Add main toolbar to current page * @trigger loc_after_page_header */ function admintools_add_admin_controller() { global $MultiView, $conf, $template, $page, $user; $url_root = get_root_url(); $tpl_vars = array(); $tpl_vars['MULTIVIEW'] = $MultiView->get_data(); $tpl_vars['DELETE_CACHE'] = isset($conf['multiview_invalidate_cache']); $tpl_vars['U_SELF'] = $MultiView->get_clean_admin_url(true); if (($admin_lang = $MultiView->get_user_language()) !== false) { include_once PHPWG_ROOT_PATH . 'include/functions_mail.inc.php'; switch_lang_to($admin_lang); } $template->assign(array('ADMINTOOLS_PATH' => './plugins/' . ADMINTOOLS_ID . '/', 'ato' => $tpl_vars)); $template->set_filename('ato_admin_controller', realpath(ADMINTOOLS_PATH . 'template/admin_controller.tpl')); $template->parse('ato_admin_controller'); if ($MultiView->is_admin() && @$admin_lang !== false) { switch_lang_back(); } }
function set_user_on_env_nbm(&$nbm_user, $is_action_send) { global $user, $lang, $lang_info, $env_nbm; $user = build_user($nbm_user['user_id'], true); switch_lang_to($user['language']); if ($is_action_send) { $env_nbm['mail_template'] = get_mail_template($env_nbm['email_format']); $env_nbm['mail_template']->set_filename('notification_by_mail', 'notification_by_mail.tpl'); } }
/** * Send an email to a group. * @see pwg_mail() * * @param int $group_id * @param array $args - as in pwg_mail() * o language_selected: filters users of the group by language [default value empty] * @param array $tpl - as in pwg_mail() * @return boolean */ function pwg_mail_group($group_id, $args = array(), $tpl = array()) { if (empty($group_id) or empty($args['content']) and empty($tpl)) { return false; } global $conf; $return = true; // get distinct languages of targeted users $query = ' SELECT DISTINCT language FROM ' . USER_GROUP_TABLE . ' AS ug INNER JOIN ' . USERS_TABLE . ' AS u ON ' . $conf['user_fields']['id'] . ' = ug.user_id INNER JOIN ' . USER_INFOS_TABLE . ' AS ui ON ui.user_id = ug.user_id WHERE group_id = ' . $group_id . ' AND ' . $conf['user_fields']['email'] . ' <> ""'; if (!empty($args['language_selected'])) { $query .= ' AND language = \'' . $args['language_selected'] . '\''; } $query .= ' ;'; $languages = array_from_query($query, 'language'); if (empty($languages)) { return $return; } foreach ($languages as $language) { // get subset of users in this group for a specific language $query = ' SELECT ui.user_id, ui.status, u.' . $conf['user_fields']['username'] . ' AS name, u.' . $conf['user_fields']['email'] . ' AS email FROM ' . USER_GROUP_TABLE . ' AS ug INNER JOIN ' . USERS_TABLE . ' AS u ON ' . $conf['user_fields']['id'] . ' = ug.user_id INNER JOIN ' . USER_INFOS_TABLE . ' AS ui ON ui.user_id = ug.user_id WHERE group_id = ' . $group_id . ' AND ' . $conf['user_fields']['email'] . ' <> "" AND language = \'' . $language . '\' ;'; $users = array_from_query($query); if (empty($users)) { continue; } switch_lang_to($language); foreach ($users as $u) { $authkey = create_user_auth_key($u['user_id'], $u['status']); $user_tpl = $tpl; if ($authkey !== false) { $user_tpl['assign']['LINK'] = add_url_params($tpl['assign']['LINK'], array('auth' => $authkey['auth_key'])); if (isset($user_tpl['assign']['IMG']['link'])) { $user_tpl['assign']['IMG']['link'] = add_url_params($user_tpl['assign']['IMG']['link'], array('auth' => $authkey['auth_key'])); } } $user_args = $args; if ($authkey !== false) { $user_args['auth_key'] = $authkey['auth_key']; } $return &= pwg_mail($u['email'], $user_args, $user_tpl); } switch_lang_back(); } return $return; }
$usernames = array(); foreach ($users as $u) { $usernames[] = $u['username']; $authkey = create_user_auth_key($u['user_id'], $u['status']); $user_tpl = $tpl; if ($authkey !== false) { $user_tpl['assign']['LINK'] = add_url_params($tpl['assign']['LINK'], array('auth' => $authkey['auth_key'])); if (isset($user_tpl['assign']['IMG']['link'])) { $user_tpl['assign']['IMG']['link'] = add_url_params($user_tpl['assign']['IMG']['link'], array('auth' => $authkey['auth_key'])); } } $user_args = $args; if (isset($authkey)) { $user_args['auth_key'] = $authkey['auth_key']; } switch_lang_to($u['language']); pwg_mail($u['email'], $user_args, $user_tpl); switch_lang_back(); } $message = l10n_dec('%d mail was sent.', '%d mails were sent.', count($users)); $message .= ' (' . implode(', ', $usernames) . ')'; $page['infos'][] = $message; } elseif ('group' == $_POST['who'] and !empty($_POST['group'])) { check_input_parameter('group', $_POST, false, PATTERN_ID); pwg_mail_group($_POST['group'], $args, $tpl); $query = ' SELECT name FROM ' . GROUPS_TABLE . ' WHERE id = ' . $_POST['group'] . ' ;';
/** * Function called from UAM_admin.php to send notification email when user registration have been manually validated by admin * * @param : user id * */ function validation_mail($id) { global $conf; $conf_UAM = unserialize($conf['UserAdvManager']); include_once PHPWG_ROOT_PATH . 'include/functions_mail.inc.php'; $custom_txt = ""; $subject = ""; // We have to get the user's language in database // ---------------------------------------------- $query = ' SELECT user_id, language FROM ' . USER_INFOS_TABLE . ' WHERE user_id = ' . $id . ' ;'; $data = pwg_db_fetch_assoc(pwg_query($query)); // Check if user is already registered (profile changing) - If not (new registration), language is set to current gallery language // ------------------------------------------------------------------------------------------------------------------------------- if (empty($data)) { // And switch gallery to this language before using personalized and multilangual contents // --------------------------------------------------------------------------------------- $language = pwg_get_session_var('lang_switch', $user['language']); switch_lang_to($language); } else { // And switch gallery to this language before using personalized and multilangual contents // --------------------------------------------------------------------------------------- $language = $data['language']; // Usefull for debugging switch_lang_to($data['language']); load_language('plugin.lang', UAM_PATH); } // Retreive users email and user name from id // ------------------------------------------ $query = ' SELECT id, username, mail_address FROM ' . USERS_TABLE . ' WHERE id = ' . $id . ' ;'; $result = pwg_db_fetch_assoc(pwg_query($query)); if (isset($conf_UAM['ADMINVALIDATIONMAIL_SUBJECT']) and !empty($conf_UAM['ADMINVALIDATIONMAIL_SUBJECT'])) { // Management of Extension flags ([username], [mygallery]) // ------------------------------------------------------- $patterns[] = '#\\[username\\]#i'; $replacements[] = stripslashes($result['username']); $patterns[] = '#\\[mygallery\\]#i'; $replacements[] = $conf['gallery_title']; if (function_exists('get_user_language_desc')) { $subject = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM['ADMINVALIDATIONMAIL_SUBJECT'])) . "\n\n"; } else { $subject = l10n(preg_replace($patterns, $replacements, $conf_UAM['ADMINVALIDATIONMAIL_SUBJECT'])) . "\n\n"; } } if (isset($conf_UAM['ADMINVALIDATIONMAIL']) and !empty($conf_UAM['ADMINVALIDATIONMAIL'])) { // Management of Extension flags ([username], [mygallery], [myurl]) // ---------------------------------------------------------------- $patterns[] = '#\\[username\\]#i'; $replacements[] = stripslashes($result['username']); $patterns[] = '#\\[mygallery\\]#i'; $replacements[] = $conf['gallery_title']; $patterns[] = '#\\[myurl\\]#i'; $replacements[] = get_gallery_home_url(); if (function_exists('get_user_language_desc')) { $custom_txt = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM['ADMINVALIDATIONMAIL'])) . "\n\n"; } else { $custom_txt = l10n(preg_replace($patterns, $replacements, $conf_UAM['ADMINVALIDATIONMAIL'])) . "\n\n"; } } $infos = array(get_l10n_args('UAM_User: %s', stripslashes($result['username'])), get_l10n_args('Email: %s', $result['mail_address']), get_l10n_args('', '')); // Sending the email with subject and contents // ------------------------------------------- // Adding gallery URL at the end of the email if (isset($conf_UAM['ADD_GALLERY_URL_TO_EMAILS']) and $conf_UAM['ADD_GALLERY_URL_TO_EMAILS'] == 'true') { $content = l10n_args($infos) . "\n\n" . $custom_txt . get_absolute_root_url(); pwg_mail(array('name' => stripslashes($result['username']), 'email' => $result['mail_address']), array('content' => $content, 'content_format' => 'text/plain', 'subject' => $subject)); // Send a copy to admins if (isset($conf_UAM['EMAILS_COPY_TO_ADMINS']) and $conf_UAM['EMAILS_COPY_TO_ADMINS'] == 'true') { UAM_Copy2Admins($subject, $content); } } elseif (isset($conf_UAM['ADD_GALLERY_URL_TO_EMAILS']) and $conf_UAM['ADD_GALLERY_URL_TO_EMAILS'] == 'false') { $content = l10n_args($infos) . "\n\n" . $custom_txt; pwg_mail(array('name' => stripslashes($result['username']), 'email' => $result['mail_address']), array('content' => $content, 'content_format' => 'text/plain', 'subject' => $subject)); // Send a copy to admins if (isset($conf_UAM['EMAILS_COPY_TO_ADMINS']) and $conf_UAM['EMAILS_COPY_TO_ADMINS'] == 'true') { UAM_Copy2Admins($subject, $content); } } else { $content = l10n_args($infos) . "\n\n" . $custom_txt; pwg_mail(array('name' => stripslashes($result['username']), 'email' => $result['mail_address']), array('content' => $content, 'content_format' => 'text/plain', 'subject' => $subject)); // Send a copy to admins if (isset($conf_UAM['EMAILS_COPY_TO_ADMINS']) and $conf_UAM['EMAILS_COPY_TO_ADMINS'] == 'true') { UAM_Copy2Admins($subject, $content); } } // Switching back to default language // ---------------------------------- switch_lang_back(); }