From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Tue, 16 Jul 2013 10:45:17 -0400
Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now Along with this fixed some display problems with the combo boxes introduced in 3.0.5. Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ.
---
interface/web/client/client_message.php | 70 ++++++++++++++++++++++++++++++-----
1 files changed, 60 insertions(+), 10 deletions(-)
diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php
index f555c99..fc9de0b 100644
--- a/interface/web/client/client_message.php
+++ b/interface/web/client/client_message.php
@@ -36,7 +36,7 @@
//* This function is not available in demo mode
if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
-$app->uses('tpl');
+$app->uses('tpl,tform');
$app->tpl->newTemplate('form.tpl.htm');
$app->tpl->setInclude('content_tpl', 'templates/client_message.htm');
@@ -59,13 +59,28 @@
//* Send message
if($error == '') {
- //* Select all clients and resellers
- if($_SESSION["s"]["user"]["typ"] == 'admin'){
- $sql = "SELECT * FROM client WHERE email != ''";
+ if($app->functions->intval($_POST['recipient']) > 0){
+ $circle = $app->db->queryOneRecord("SELECT client_ids FROM client_circle WHERE active = 'y' AND circle_id = ".$app->functions->intval($_POST['recipient'])." AND ".$app->tform->getAuthSQL('r'));
+ if(isset($circle['client_ids']) && $circle['client_ids'] != ''){
+ $tmp_client_ids = explode(',',$circle['client_ids']);
+ $where = array();
+ foreach($tmp_client_ids as $tmp_client_id){
+ $where[] = 'client_id = '.$tmp_client_id;
+ }
+ if(!empty($where)) $where_clause = ' AND ('.implode(' OR ', $where).')';
+ $sql = "SELECT * FROM client WHERE email != ''".$where_clause;
+ } else {
+ $sql = "SELECT * FROM client WHERE 0";
+ }
} else {
- $client_id = intval($_SESSION['s']['user']['client_id']);
- if($client_id == 0) die('Invalid Client ID.');
- $sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'";
+ //* Select all clients and resellers
+ if($_SESSION["s"]["user"]["typ"] == 'admin'){
+ $sql = "SELECT * FROM client WHERE email != ''";
+ } else {
+ $client_id = $app->functions->intval($_SESSION['s']['user']['client_id']);
+ if($client_id == 0) die('Invalid Client ID.');
+ $sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'";
+ }
}
//* Get clients
@@ -73,11 +88,14 @@
if(is_array($clients)) {
$msg = $wb['email_sent_to_txt'].' ';
foreach($clients as $client) {
-
- //* Parse cleint details into message
+ //* Parse client details into message
$message = $_POST['message'];
foreach($client as $key => $val) {
- $message = str_replace('{'.$key.'}', $val, $message);
+ if($key != 'password'){
+ $message = str_replace('{'.$key.'}', $val, $message);
+ } else {
+ $message = str_replace('{'.$key.'}', '---', $message);
+ }
}
//* Send the email
@@ -92,7 +110,28 @@
$app->tpl->setVar('subject',$_POST['subject']);
$app->tpl->setVar('message',$_POST['message']);
}
+} else {
+ // pre-fill Sender field with reseller's email address
+ if($_SESSION["s"]["user"]["typ"] != 'admin'){
+ $client_id = $app->functions->intval($_SESSION['s']['user']['client_id']);
+ if($client_id > 0){
+ $sql = "SELECT email FROM client WHERE client_id = ".$client_id;
+ $client = $app->db->queryOneRecord($sql);
+ if($client['email'] != '') $app->tpl->setVar('sender',$client['email']);
+ }
+ }
}
+
+// Recipient Drop-Down
+$recipient = '<option value="0"'.($app->functions->intval($_POST['recipient']) == 0 ? ' selected="selected"' : '').'>'.($_SESSION["s"]["user"]["typ"] == 'admin'? $wb['all_clients_resellers_txt'] : $wb['all_clients_txt']).'</option>';
+$sql = "SELECT * FROM client_circle WHERE active = 'y' AND ".$app->tform->getAuthSQL('r');
+$circles = $app->db->queryAllRecords($sql);
+if(is_array($circles) && !empty($circles)){
+ foreach($circles as $circle){
+ $recipient .= '<option value="'.$circle['circle_id'].'"'.($app->functions->intval($_POST['recipient']) == $circle['circle_id'] ? ' selected="selected"' : '').'>'.$circle['circle_name'].'</option>';
+ }
+}
+$app->tpl->setVar('recipient',$recipient);
if($_SESSION["s"]["user"]["typ"] == 'admin'){
$app->tpl->setVar('form_legend_txt',$wb['form_legend_admin_txt']);
@@ -100,6 +139,17 @@
$app->tpl->setVar('form_legend_txt',$wb['form_legend_client_txt']);
}
+//message variables
+$message_variables = '';
+$sql = "SHOW COLUMNS FROM client WHERE Field NOT IN ('client_id', 'sys_userid', 'sys_groupid', 'sys_perm_user', 'sys_perm_group', 'sys_perm_other', 'password', 'parent_client_id', 'id_rsa', 'ssh_rsa', 'created_at', 'default_mailserver', 'default_webserver', 'web_php_options', 'ssh_chroot', 'default_dnsserver', 'default_dbserver', 'template_master', 'template_additional') AND Field NOT LIKE 'limit_%'";
+$field_names = $app->db->queryAllRecords($sql);
+if(!empty($field_names) && is_array($field_names)){
+ foreach($field_names as $field_name){
+ if($field_name['Field'] != '') $message_variables .= '<a href="javascript:void(0);" class="addPlaceholder">{'.$field_name['Field'].'}</a> ';
+ }
+}
+$app->tpl->setVar('message_variables',trim($message_variables));
+
$app->tpl->setVar('okmsg',$msg);
$app->tpl->setVar('error',$error);
--
Gitblit v1.9.1