diff --git a/app/call_broadcast/app_languages.php b/app/call_broadcast/app_languages.php
index 4c670de57c..ca86da367f 100644
--- a/app/call_broadcast/app_languages.php
+++ b/app/call_broadcast/app_languages.php
@@ -21,6 +21,46 @@ $text['title']['ru-ru'] = "Массовые вызовы";
$text['title']['sv-se'] = "Samtalsdistributioner";
$text['title']['uk-ua'] = "Трансляція дзвінків";
+$text['title-call_broadcast']['en-us'] = "Call Broadcasts";
+$text['title-call_broadcast']['ar-eg'] = "";
+$text['title-call_broadcast']['de-at'] = "Rundrufe"; //copied from de-de
+$text['title-call_broadcast']['de-ch'] = "Rundrufe"; //copied from de-de
+$text['title-call_broadcast']['de-de'] = "Rundrufe";
+$text['title-call_broadcast']['es-cl'] = "Llamada Masiva (Broadcast)";
+$text['title-call_broadcast']['es-mx'] = "Llamada Masiva (Broadcast)"; //copied from es-cl
+$text['title-call_broadcast']['fr-ca'] = "Campagne d'appels"; //copied from fr-fr
+$text['title-call_broadcast']['fr-fr'] = "Campagne d'appels";
+$text['title-call_broadcast']['he-il'] = "הגדרת חשבון";
+$text['title-call_broadcast']['it-it'] = "Chiamate Multiple";
+$text['title-call_broadcast']['nl-nl'] = "";
+$text['title-call_broadcast']['pl-pl'] = "Rozsyłanie rozmów";
+$text['title-call_broadcast']['pt-br'] = "Configurações da Conta";
+$text['title-call_broadcast']['pt-pt'] = "Chamadas de Broadcast";
+$text['title-call_broadcast']['ro-ro'] = "";
+$text['title-call_broadcast']['ru-ru'] = "Массовые вызовы";
+$text['title-call_broadcast']['sv-se'] = "Samtalsdistributioner";
+$text['title-call_broadcast']['uk-ua'] = "Трансляція дзвінків";
+
+$text['title_description-call_broadcast']['en-us'] = "Manage the delivery of pre-recorded messages to mass recipients.";
+$text['title_description-call_broadcast']['ar-eg'] = "";
+$text['title_description-call_broadcast']['de-at'] = "";
+$text['title_description-call_broadcast']['de-ch'] = "";
+$text['title_description-call_broadcast']['de-de'] = "";
+$text['title_description-call_broadcast']['es-cl'] = "";
+$text['title_description-call_broadcast']['es-mx'] = "";
+$text['title_description-call_broadcast']['fr-ca'] = "";
+$text['title_description-call_broadcast']['fr-fr'] = "";
+$text['title_description-call_broadcast']['he-il'] = "";
+$text['title_description-call_broadcast']['it-it'] = "";
+$text['title_description-call_broadcast']['nl-nl'] = "";
+$text['title_description-call_broadcast']['pl-pl'] = "";
+$text['title_description-call_broadcast']['pt-br'] = "";
+$text['title_description-call_broadcast']['pt-pt'] = "";
+$text['title_description-call_broadcast']['ro-ro'] = "";
+$text['title_description-call_broadcast']['ru-ru'] = "";
+$text['title_description-call_broadcast']['sv-se'] = "";
+$text['title_description-call_broadcast']['uk-ua'] = "";
+
$text['option-true']['en-us'] = "True";
$text['option-true']['ar-eg'] = "";
$text['option-true']['de-at'] = "Ein"; //copied from de-de
diff --git a/app/call_broadcast/call_broadcast.php b/app/call_broadcast/call_broadcast.php
index 9cf8a569b9..8c7a3c6286 100644
--- a/app/call_broadcast/call_broadcast.php
+++ b/app/call_broadcast/call_broadcast.php
@@ -39,113 +39,172 @@
$language = new text;
$text = $language->get();
+//get posted data
+ if (is_array($_POST['call_broadcasts'])) {
+ $action = $_POST['action'];
+ $search = $_POST['search'];
+ $call_broadcasts = $_POST['call_broadcasts'];
+ }
+
+//copy the call broadcasts
+ if (permission_exists('call_broadcast_add')) {
+ if ($action == 'copy' && is_array($call_broadcasts) && @sizeof($call_broadcasts) != 0) {
+ //copy
+ $obj = new call_broadcast;
+ $obj->copy($call_broadcasts);
+ //redirect
+ header('Location: call_broadcast.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
+
+//delete the call broadcasts
+ if (permission_exists('call_broadcast_delete')) {
+ if ($action == 'delete' && is_array($call_broadcasts) && @sizeof($call_broadcasts) != 0) {
+ //delete
+ $obj = new call_broadcast;
+ $obj->delete($call_broadcasts);
+ //redirect
+ header('Location: call_broadcast.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
+
//get the http get variables and set them to php variables
$order_by = $_GET["order_by"];
$order = $_GET["order"];
+//add the search term
+ $search = strtolower($_GET["search"]);
+ if (strlen($search) > 0) {
+ $sql_search = " (";
+ $sql_search .= " lower(broadcast_name) like :search ";
+ $sql_search .= " or lower(broadcast_description) like :search ";
+ $sql_search .= " or lower(broadcast_caller_id_name) like :search ";
+ $sql_search .= " or lower(broadcast_caller_id_number) like :search ";
+ $sql_search .= " or lower(broadcast_phone_numbers) like :search ";
+ $sql_search .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+
//get the count
$sql = "select count(*) from v_call_broadcasts ";
$sql .= "where domain_uuid = :domain_uuid ";
+ if (isset($sql_search)) {
+ $sql .= "and ".$sql_search;
+ }
$database = new database;
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$num_rows = $database->select($sql, $parameters, 'column');
- unset($sql, $parameters);
//prepare the paging
require_once "resources/paging.php";
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
- $param = "";
+ $param = "&search=".$search;
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
- list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
+ list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
+ list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
$offset = $rows_per_page * $page;
//get the call call broadcasts
- $sql = "select * from v_call_broadcasts ";
- $sql .= "where domain_uuid = :domain_uuid ";
+ $sql = str_replace('count(*)','*', $sql);
$sql .= order_by($order_by, $order);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
- $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$result = $database->select($sql, $parameters, 'all');
+ unset($sql, $parameters);
-//set the row style
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
-//add the header
+//include the header
require_once "resources/header.php";
//show the content
- echo "
\n";
- echo "| ".$text['title']." | \n";
- echo " | \n";
- echo "
\n";
- echo "
";
+ echo "\n";
+ echo " ".$text['title-call_broadcast']." (".$num_rows.")\n";
+ if (permission_exists('call_broadcast_add')) {
+ echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'call_broadcast_edit.php']);
+ }
+ if (permission_exists('call_broadcast_add')) {
+ echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'onclick'=>"if (confirm('".$text['confirm-copy']."')) { list_action_set('copy'); list_form_submit('form_list'); } else { this.blur(); return false; }"]);
+ }
+ if (permission_exists('call_broadcast_delete')) {
+ echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'onclick'=>"if (confirm('".$text['confirm-delete']."')) { list_action_set('delete'); list_form_submit('form_list'); } else { this.blur(); return false; }"]);
+ }
+ echo "\n";
+ echo "
\n";
- echo "\n";
- echo "\n";
+ echo $text['title_description-call_broadcast']."\n";
+ echo "
\n";
+
+ echo "
";
- echo "
";
+ echo "\n";
+
+ echo "\n";
//include the footer
require_once "resources/footer.php";
-?>
+?>
\ No newline at end of file
diff --git a/app/call_broadcast/call_broadcast_edit.php b/app/call_broadcast/call_broadcast_edit.php
index 733edb7acc..e086261a14 100644
--- a/app/call_broadcast/call_broadcast_edit.php
+++ b/app/call_broadcast/call_broadcast_edit.php
@@ -96,7 +96,6 @@
$broadcast_description = $_POST["broadcast_description"];
$broadcast_timeout = $_POST["broadcast_timeout"];
$broadcast_concurrent_limit = $_POST["broadcast_concurrent_limit"];
- //$recording_uuid = $_POST["recording_uuid"];
$broadcast_caller_id_name = $_POST["broadcast_caller_id_name"];
$broadcast_caller_id_number = $_POST["broadcast_caller_id_number"];
$broadcast_destination_type = $_POST["broadcast_destination_type"];
@@ -126,6 +125,21 @@
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
+ //delete the call broadcast
+ if (permission_exists('call_broadcast_delete')) {
+ if ($_POST['action'] == 'delete' && is_uuid($call_broadcast_uuid)) {
+ //prepare
+ $call_broadcasts[0]['checked'] = 'true';
+ $call_broadcasts[0]['uuid'] = $call_broadcast_uuid;
+ //delete
+ $obj = new call_broadcast;
+ $obj->delete($call_broadcasts);
+ //redirect
+ header('Location: call_broadcast.php');
+ exit;
+ }
+ }
+
$msg = '';
if ($action == "update") {
$call_broadcast_uuid = $_POST["call_broadcast_uuid"];
@@ -211,7 +225,6 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$array['call_broadcasts'][0]['broadcast_description'] = $broadcast_description;
$array['call_broadcasts'][0]['broadcast_timeout'] = strlen($broadcast_timeout) != 0 ? $broadcast_timeout : null;
$array['call_broadcasts'][0]['broadcast_concurrent_limit'] = strlen($broadcast_concurrent_limit) != 0 ? $broadcast_concurrent_limit : null;
- //$array['call_broadcasts'][0]['recording_uuid'] = $recording_uuid;
$array['call_broadcasts'][0]['broadcast_caller_id_name'] = $broadcast_caller_id_name;
$array['call_broadcasts'][0]['broadcast_caller_id_number'] = $broadcast_caller_id_number;
$array['call_broadcasts'][0]['broadcast_destination_type'] = $broadcast_destination_type;
@@ -251,7 +264,6 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$broadcast_description = $row["broadcast_description"];
$broadcast_timeout = $row["broadcast_timeout"];
$broadcast_concurrent_limit = $row["broadcast_concurrent_limit"];
- //$recording_uuid = $row["recording_uuid"];
$broadcast_caller_id_name = $row["broadcast_caller_id_name"];
$broadcast_caller_id_number = $row["broadcast_caller_id_number"];
$broadcast_destination_type = $row["broadcast_destination_type"];
@@ -277,11 +289,14 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo "\n";
echo "| ".$text['label-call-broadcast']." | \n";
echo "\n";
- echo " \n";
+ echo " \n";
if ($action == "update") {
+ if (permission_exists('call_broadcast_delete')) {
+ echo button::create(['type'=>'submit','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'action','value'=>'delete','onclick'=>"if (confirm('".$text['confirm-delete']."')) { document.getElementById('frm').submit(); } else { this.blur(); return false; }",'style'=>'margin-right: 15px;']);
+ }
echo "\n";
echo "\n";
- echo "\n";
+ echo "\n";
}
echo " \n";
echo " | \n";
diff --git a/app/call_broadcast/resources/classes/call_broadcast.php b/app/call_broadcast/resources/classes/call_broadcast.php
new file mode 100644
index 0000000000..7056f3f5cd
--- /dev/null
+++ b/app/call_broadcast/resources/classes/call_broadcast.php
@@ -0,0 +1,174 @@
+app_name = 'call_broadcast';
+ $this->app_uuid = 'efc11f6b-ed73-9955-4d4d-3a1bed75a056';
+ $this->permission_prefix = 'call_broadcast';
+ $this->list_page = 'call_broadcast.php';
+ $this->table = 'call_broadcasts';
+ $this->uuid_prefix = 'call_broadcast_';
+
+ }
+
+ /**
+ * called when there are no references to a particular object
+ * unset the variables used in the class
+ */
+ public function __destruct() {
+ foreach ($this as $key => $value) {
+ unset($this->$key);
+ }
+ }
+
+ /**
+ * delete records
+ */
+ public function delete($records) {
+ if (permission_exists($this->permission_prefix.'_delete')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->list_page);
+ exit;
+ }
+
+ //delete multiple records
+ if (is_array($records) && @sizeof($records) != 0) {
+
+ //build the delete array
+ foreach($records as $x => $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
+ $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+ }
+ }
+
+ //delete the checked rows
+ if (is_array($array) && @sizeof($array) != 0) {
+
+ //execute delete
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->delete($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-delete']);
+ }
+ unset($records);
+ }
+ }
+ }
+
+ /**
+ * copy records
+ */
+ public function copy($records) {
+ if (permission_exists($this->permission_prefix.'_add')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->list_page);
+ exit;
+ }
+
+ //copy the checked records
+ if (is_array($records) && @sizeof($records) != 0) {
+
+ //get checked records
+ foreach($records as $x => $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'";
+ }
+ }
+
+ //create insert array from existing data
+ if (is_array($record_uuids) && @sizeof($record_uuids) != 0) {
+ $sql = "select * from v_".$this->table." ";
+ $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $sql .= "and ( ".implode(' or ', $record_uuids)." ) ";
+ $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $database = new database;
+ $rows = $database->select($sql, $parameters, 'all');
+ if (is_array($rows) && @sizeof($rows) != 0) {
+ foreach ($rows as $x => $row) {
+ $new_uuid = uuid();
+ $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $new_uuid;
+ $array[$this->table][$x]['domain_uuid'] = $row['domain_uuid'];
+ $array[$this->table][$x]['broadcast_name'] = $row['broadcast_name'];
+ $array[$this->table][$x]['broadcast_description'] = trim($row['broadcast_description'].' ('.$text['label-copy'].')');
+ $array[$this->table][$x]['broadcast_timeout'] = $row['broadcast_timeout'];
+ $array[$this->table][$x]['broadcast_concurrent_limit'] = $row['broadcast_concurrent_limit'];
+ $array[$this->table][$x]['recording_uuid'] = $row['recording_uuid'];
+ $array[$this->table][$x]['broadcast_caller_id_name'] = $row['broadcast_caller_id_name'];
+ $array[$this->table][$x]['broadcast_caller_id_number'] = $row['broadcast_caller_id_number'];
+ $array[$this->table][$x]['broadcast_destination_type'] = $row['broadcast_destination_type'];
+ $array[$this->table][$x]['broadcast_phone_numbers'] = $row['broadcast_phone_numbers'];
+ $array[$this->table][$x]['broadcast_avmd'] = $row['broadcast_avmd'];
+ $array[$this->table][$x]['broadcast_destination_data'] = $row['broadcast_destination_data'];
+ $array[$this->table][$x]['broadcast_accountcode'] = $row['broadcast_accountcode'];
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //save the changes and set the message
+ if (is_array($array) && @sizeof($array) != 0) {
+
+ //save the array
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->save($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-copy']);
+
+ }
+ unset($records);
+ }
+
+ }
+ }
+
+ }
+}
+
+?>
\ No newline at end of file