From aa78fde6a92f66b84d626e114d8b54a5fb6ece0c Mon Sep 17 00:00:00 2001 From: ftimme <ft@falkotimme.com> Date: Wed, 14 Nov 2012 07:19:43 -0500 Subject: [PATCH] - Added function for IPv6 prefixes in multiserver mirror setups to nginx plugin. --- 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