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 "\n"; - echo "\n"; - echo "
".$text['title']." 
\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 "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + echo " \n"; echo th_order_by('broadcast_name', $text['label-name'], $order_by, $order); echo th_order_by('broadcast_concurrent_limit', $text['label-concurrent-limit'], $order_by, $order); echo th_order_by('broadcast_description', $text['label-description'], $order_by, $order); - //echo th_order_by('recordingid', 'Recording', $order_by, $order); - echo "\n"; } - echo "\n"; echo "\n"; if (is_array($result) && @sizeof($result) != 0) { + $x = 0; foreach($result as $row) { - $tr_link = (permission_exists('call_broadcast_edit')) ? "href='call_broadcast_edit.php?id=".$row['call_broadcast_uuid']."'" : null; - echo "\n"; - echo " \n"; + echo " \n"; + echo " \n"; - echo " \n"; - //echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + if (permission_exists('call_broadcast_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; } - if (permission_exists('call_broadcast_delete')) { - echo "$v_link_label_delete"; - } - echo " \n"; echo "\n"; - if ($c==0) { $c=1; } else { $c=0; } + $x++; } } - unset($sql, $result); + unset($result); - echo "\n"; - echo "\n"; - echo "\n"; + echo "
\n"; + echo " \n"; + echo " "; - if (permission_exists('call_broadcast_add')) { - echo "$v_link_label_add"; + if (permission_exists('call_broadcast_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo "  
"; if (permission_exists('call_broadcast_edit')) { - echo "".escape($row['broadcast_name']).""; + $list_row_url = "call_broadcast_edit.php?id=".urlencode($row['call_broadcast_uuid']); + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " "; + if (permission_exists('call_broadcast_edit')) { + echo "".escape($row['broadcast_name']).""; } else { echo escape($row['broadcast_name']); } echo " ".escape($row['broadcast_concurrent_limit'])." ".$row['recordingid']."".escape($row['broadcast_description'])." "; - if (permission_exists('call_broadcast_edit')) { - echo "$v_link_label_edit"; + echo " ".escape($row['broadcast_concurrent_limit'])."".escape($row['broadcast_description']).""; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo "
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
\n"; - echo "
\n"; + echo "
\n"; + echo "
".$paging_controls."
\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