diff --git a/app/call_block/app_config.php b/app/call_block/app_config.php
index 02a9e41b1f..a6e8b0c4eb 100644
--- a/app/call_block/app_config.php
+++ b/app/call_block/app_config.php
@@ -106,5 +106,9 @@
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "block_call_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enable/disable blocking the call.";
+ $z++;
+ $apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_block_description';
+ $apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
+ $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the description.';
-?>
+?>
\ No newline at end of file
diff --git a/app/call_block/call_block.php b/app/call_block/call_block.php
index c7727ba11f..65017330a4 100644
--- a/app/call_block/call_block.php
+++ b/app/call_block/call_block.php
@@ -28,9 +28,10 @@
//includes
require_once "root.php";
require_once "resources/require.php";
+ require_once "resources/check_auth.php";
+ require_once "resources/paging.php";
//check permissions
- require_once "resources/check_auth.php";
if (!permission_exists('call_block_view')) {
echo "access denied"; exit;
}
@@ -39,27 +40,74 @@
$language = new text;
$text = $language->get();
-//additional includes
- require_once "resources/header.php";
- require_once "resources/paging.php";
+//get posted data
+ if (is_array($_POST['call_blocks'])) {
+ $action = $_POST['action'];
+ $search = $_POST['search'];
+ $call_blocks = $_POST['call_blocks'];
+ }
+
+//copy the call blocks
+ if (permission_exists('call_block_add')) {
+ if ($action == 'copy' && is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+ //copy
+ $obj = new call_block;
+ $obj->copy($call_blocks);
+ //redirect
+ header('Location: call_block.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
+
+//toggle the call blocks
+ if (permission_exists('call_block_edit')) {
+ if ($action == 'toggle' && is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+ //toggle
+ $obj = new call_block;
+ $obj->toggle($call_blocks);
+ //redirect
+ header('Location: call_block.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
+
+//delete the call blocks
+ if (permission_exists('call_block_delete')) {
+ if ($action == 'delete' && is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+ //delete
+ $obj = new call_block;
+ $obj->delete($call_blocks);
+ //redirect
+ header('Location: call_block.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
//get variables used to control the order
- $order_by = $_GET["order_by"] != '' ? $_GET["order_by"] : 'call_block_number';
+ $order_by = $_GET["order_by"];
$order = $_GET["order"];
-//show the content
- echo "".$text['title-call-block']."\n";
- echo "
\n";
- echo $text['description-call-block']."\n";
- echo "
\n";
+//add the search term
+ $search = strtolower($_GET["search"]);
+ if (strlen($search) > 0) {
+ $sql_search = " (";
+ $sql_search .= " lower(call_block_name) like :search ";
+ $sql_search .= " or lower(call_block_number) like :search ";
+ $sql_search .= " or lower(call_block_description) like :search ";
+ $sql_search .= ") ";
+
+ $parameters['search'] = '%'.$search.'%';
+ }
//prepare to page the results
$sql = "select count(*) from v_call_block ";
$sql .= "where domain_uuid = :domain_uuid ";
+ if (isset($sql_search)) {
+ $sql .= "and ".$sql_search;
+ }
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$num_rows = $database->select($sql, $parameters, 'column');
- unset($parameters);
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
@@ -67,85 +115,130 @@
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
+ list($paging_controls_mini, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page, true);
$offset = $rows_per_page * $page;
-//get the list
- $sql = "select * from v_call_block ";
- $sql .= "where domain_uuid = :domain_uuid ";
- $sql .= order_by($order_by, $order);
+//get the list
+ $sql = str_replace('count(*)', '*', $sql);
+ $sql .= order_by($order_by, $order, 'call_block_number');
$sql .= limit_offset($rows_per_page, $offset);
- $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
- unset($parameters);
+ unset($sql, $parameters);
-//table headers
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
- echo "
\n";
- echo "\n";
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
+
+//include the header
+ require_once "resources/header.php";
+
+//show the content
+ echo "\n";
+ echo " ".$text['title-call-block']." (".$num_rows.")\n";
+ if (permission_exists('call_block_add')) {
+ echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'call_block_edit.php']);
+ }
+ if (permission_exists('call_block_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_block_edit')) {
+ echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'onclick'=>"if (confirm('".$text['confirm-toggle']."')) { list_action_set('toggle'); list_form_submit('form_list'); } else { this.blur(); return false; }"]);
+ }
+ if (permission_exists('call_block_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; }"]);
+ }
+ /*
+ if (permission_exists('bridge_all')) {
+ if ($_GET['show'] == 'all') {
+ echo " ";
+ }
+ else {
+ echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?show=all']);
+ }
+ }
+ */
+ echo "\n";
+ echo "
\n";
+
+ echo $text['description-call-block']."\n";
+ echo "
\n";
+
+ echo "
\n";
echo "
\n";
echo "".$paging_controls."
\n";
+ echo "\n";
+
+ echo "\n";
+
//include the footer
require_once "resources/footer.php";
-?>
+?>
\ No newline at end of file
diff --git a/app/call_block/call_block_edit.php b/app/call_block/call_block_edit.php
index 22ec40babf..5d9ed8206c 100644
--- a/app/call_block/call_block_edit.php
+++ b/app/call_block/call_block_edit.php
@@ -81,6 +81,7 @@
$call_block_number = $_POST["call_block_number"];
$call_block_action = $_POST["call_block_action"];
$call_block_enabled = $_POST["call_block_enabled"];
+ $call_block_description = $_POST["call_block_description"];
}
//handle the http post
@@ -157,6 +158,7 @@
$array['call_block'][0]['call_block_action'] = $call_block_action;
$array['call_block'][0]['call_block_enabled'] = $call_block_enabled;
$array['call_block'][0]['date_added'] = time();
+ $array['call_block'][0]['call_block_description'] = $call_block_description;
$database = new database;
$database->app_name = 'call_block';
@@ -197,6 +199,7 @@
$array['call_block'][0]['call_block_action'] = $call_block_action;
$array['call_block'][0]['call_block_enabled'] = $call_block_enabled;
$array['call_block'][0]['date_added'] = time();
+ $array['call_block'][0]['call_block_description'] = $call_block_description;
$database = new database;
$database->app_name = 'call_block';
@@ -228,8 +231,8 @@
$call_block_name = $row["call_block_name"];
$call_block_number = $row["call_block_number"];
$call_block_action = $row["call_block_action"];
- $blocked_call_destination = $row["blocked_call_destination"];
$call_block_enabled = $row["call_block_enabled"];
+ $call_block_description = $row["call_block_description"];
}
unset($sql, $parameters, $row);
}
@@ -352,6 +355,17 @@
echo "\n";
echo "\n";
+ echo "\n";
+ echo "| \n";
+ echo " ".$text['label-description']."\n";
+ echo " | \n";
+ echo "\n";
+ echo " \n";
+ echo " \n";
+ echo $text['description-description']."\n";
+ echo " | \n";
+ echo "
\n";
+
echo " \n";
echo " | \n";
if ($action == "update") {
diff --git a/app/call_block/resources/classes/call_block.php b/app/call_block/resources/classes/call_block.php
new file mode 100644
index 0000000000..2d6b0667c6
--- /dev/null
+++ b/app/call_block/resources/classes/call_block.php
@@ -0,0 +1,213 @@
+ $value) {
+ unset($this->$key);
+ }
+ }
+
+ /**
+ * delete call block
+ */
+ public function delete($call_blocks) {
+ if (permission_exists('call_block_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: call_block.php');
+ exit;
+ }
+
+ //delete multiple call blocks
+ if (is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+ //build the delete array
+ foreach($call_blocks as $x => $row) {
+ if ($row['checked'] == 'true' && is_uuid($row['call_block_uuid'])) {
+ $array['call_block'][$x]['call_block_uuid'] = $row['call_block_uuid'];
+ $array['call_block'][$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 = 'call_block';
+ $database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
+ $database->delete($array);
+ unset($array);
+ //set message
+ message::add($text['message-delete']);
+ }
+ unset($call_blocks);
+ }
+ }
+ }
+
+ /**
+ * toggle call block
+ */
+ public function toggle($call_blocks) {
+ if (permission_exists('call_block_edit')) {
+
+ //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: call_block.php');
+ exit;
+ }
+
+ //toggle the checked call blocks
+ if (is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+ //get current enabled state of checked call block
+ foreach($call_blocks as $x => $row) {
+ if ($row['checked'] == 'true' && is_uuid($row['call_block_uuid'])) {
+ $call_block_uuids[] = "call_block_uuid = '".$row['call_block_uuid']."'";
+ }
+ }
+ if (is_array($call_block_uuids) && @sizeof($call_block_uuids) != 0) {
+ $sql = "select call_block_uuid, call_block_enabled from v_call_block ";
+ $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $sql .= "and ( ".implode(' or ', $call_block_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 $row) {
+ $call_block_states[$row['call_block_uuid']] = $row['call_block_enabled'];
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //build update array
+ $x = 0;
+ foreach($call_block_states as $call_block_uuid => $call_block_state) {
+ $array['call_block'][$x]['call_block_uuid'] = $call_block_uuid;
+ $array['call_block'][$x]['call_block_enabled'] = $call_block_state == 'true' ? 'false' : 'true';
+ $x++;
+ }
+
+ //save the changes
+ if (is_array($array) && @sizeof($array) != 0) {
+ //save the array
+ $database = new database;
+ $database->app_name = 'call_block';
+ $database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
+ $database->save($array);
+ unset($array);
+ //set message
+ message::add($text['message-toggle']);
+ }
+ unset($call_blocks, $call_block_states);
+ }
+
+ }
+ }
+
+ /**
+ * copy call blocks
+ */
+ public function copy($call_blocks) {
+ if (permission_exists('call_block_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: call_block.php');
+ exit;
+ }
+
+ //copy the checked call blocks
+ if (is_array($call_blocks) && @sizeof($call_blocks) != 0) {
+
+ //get checked call blocks
+ foreach($call_blocks as $x => $row) {
+ if ($row['checked'] == 'true' && is_uuid($row['call_block_uuid'])) {
+ $call_block_uuids[] = "call_block_uuid = '".$row['call_block_uuid']."'";
+ }
+ }
+ //create insert array from existing data
+ if (is_array($call_block_uuids) && @sizeof($call_block_uuids) != 0) {
+ $sql = "select * from v_call_block ";
+ $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $sql .= "and ( ".implode(' or ', $call_block_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) {
+ $array['call_block'][$x]['call_block_uuid'] = uuid();
+ $array['call_block'][$x]['domain_uuid'] = $row['domain_uuid'];
+ $array['call_block'][$x]['call_block_name'] = $row['call_block_name'];
+ $array['call_block'][$x]['call_block_number'] = $row['call_block_number'];
+ $array['call_block'][$x]['call_block_count'] = 0;
+ $array['call_block'][$x]['call_block_action'] = $row['call_block_action'];
+ $array['call_block'][$x]['date_added'] = $row['date_added'];
+ $array['call_block'][$x]['call_block_enabled'] = $row['call_block_enabled'];
+ $array['call_block'][$x]['call_block_description'] = trim($row['call_block_description'].' ('.$text['label-copy'].')');
+ }
+ }
+ 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 = 'call_block';
+ $database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
+ $database->save($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-copy']);
+ }
+ unset($call_blocks);
+ }
+
+ }
+ }
+
+ }
+}
+
+/*
+$obj = new call_block;
+$obj->delete();
+*/
+
+?>
\ No newline at end of file
|