diff --git a/app/conference_controls/conference_control_detail_edit.php b/app/conference_controls/conference_control_detail_edit.php index bc781dbaa8..a19967c391 100644 --- a/app/conference_controls/conference_control_detail_edit.php +++ b/app/conference_controls/conference_control_detail_edit.php @@ -135,21 +135,24 @@ require_once "resources/header.php"; //show the content - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + + echo "
\n"; + echo "
".$text['title-conference_control_detail']."
\n"; + echo "
\n"; + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'conference_control_edit.php?id='.urlencode($conference_control_uuid)]); + echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>'hide-xs','name'=>'action','value'=>'save']); + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo "
".$text['title-conference_control_detail']."

\n"; - echo " "; - echo " "; - echo "
\n"; echo "\n"; - echo "\n"; - echo "\n"; echo "\n"; @@ -184,39 +187,26 @@ echo "\n"; echo "\n"; echo "\n"; - echo " \n"; - echo " \n"; - echo " "; + echo "
\n"; + echo "\n"; echo " ".$text['label-control_digits']."\n"; echo "\n"; + echo "\n"; echo " \n"; echo "
\n"; echo $text['description-control_digits']."\n"; @@ -172,7 +175,7 @@ echo " ".$text['label-control_data']."\n"; echo "
\n"; - echo " \n"; + echo " \n"; echo "
\n"; echo $text['description-control_data']."\n"; echo "
\n"; echo " \n"; echo "
\n"; echo $text['description-control_enabled']."\n"; echo "
\n"; - echo " \n"; - if ($action == "update") { - echo " \n"; - } - echo " \n"; - echo " \n"; - echo "
"; - echo "
"; echo "

"; + echo "\n"; + if ($action == "update") { + echo "\n"; + } + echo "\n"; + + echo ""; + //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/conference_controls/conference_control_details.php b/app/conference_controls/conference_control_details.php index 615e1c49c0..9307a769cb 100644 --- a/app/conference_controls/conference_control_details.php +++ b/app/conference_controls/conference_control_details.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2018 - 2019 + Portions created by the Initial Developer are Copyright (C) 2018-2019 the Initial Developer. All Rights Reserved. Contributor(s): @@ -27,9 +27,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('conference_control_detail_view')) { //access granted } @@ -42,6 +43,36 @@ $language = new text; $text = $language->get(); +//get the http post data + if (is_array($_POST['conference_control_details'])) { + $action = $_POST['action']; + $conference_control_uuid = $_POST['conference_control_uuid']; + $conference_control_details = $_POST['conference_control_details']; + } + +//process the http post data by action + if ($action != '' && is_array($conference_control_details) && @sizeof($conference_control_details) != 0) { + switch ($action) { + case 'toggle': + if (permission_exists('conference_control_detail_edit')) { + $obj = new conference_controls; + $obj->conference_control_uuid = $conference_control_uuid; + $obj->toggle_details($conference_control_details); + } + break; + case 'delete': + if (permission_exists('conference_control_detail_delete')) { + $obj = new conference_controls; + $obj->conference_control_uuid = $conference_control_uuid; + $obj->delete_details($conference_control_details); + } + break; + } + + header('Location: conference_control_edit.php?id='.urlencode($conference_control_uuid)); + exit; + } + //get variables used to control the order $order_by = $_GET["order_by"]; $order = $_GET["order"]; @@ -57,121 +88,141 @@ $sql_search .= ")"; $parameters['search'] = '%'.$search.'%'; } -//additional includes - require_once "resources/header.php"; - require_once "resources/paging.php"; //prepare to page the results - $sql = "select count(*) "; + $sql = "select count(conference_control_detail_uuid) "; $sql .= "from v_conference_control_details "; $sql .= "where conference_control_uuid = :conference_control_uuid "; - //$sql .= "and domain_uuid = :domain_uuid "; $sql .= $sql_search; $parameters['conference_control_uuid'] = $conference_control_uuid; - //$parameters['domain_uuid'] = $domain_uuid; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); //prepare to page the results $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ""; + $param = "&id=".$conference_control_uuid; if (isset($_GET['page'])) { - $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); + $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); $offset = $rows_per_page * $page; } //get the list - $sql = "select * from v_conference_control_details "; - $sql .= "where conference_control_uuid = :conference_control_uuid "; - //$sql .= "and domain_uuid = :domain_uuid "; + $sql = str_replace('count(conference_control_detail_uuid)', '*', $sql); $sql .= $sql_search; - $sql .= order_by($order_by, $order); + $sql .= order_by($order_by, $order, 'control_digits', 'asc'); $sql .= limit_offset($rows_per_page, $offset); $database = new database; $result = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); -//alternate the row style - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//create token + $object = new token; + $token = $object->create('/app/conference_controls/conference_control_details.php'); //show the content - echo "\n"; - echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; - echo "
".$text['title-conference_control_details']."
\n"; - //echo " \n"; - //echo " \n"; - //echo "
\n"; - - echo "\n"; - echo "\n"; - echo th_order_by('control_digits', $text['label-control_digits'], $order_by, $order); - echo th_order_by('control_action', $text['label-control_action'], $order_by, $order); - echo th_order_by('control_data', $text['label-control_data'], $order_by, $order); - echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order); - echo "\n"; - echo "\n"; + if (permission_exists('conference_control_detail_delete') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'collapse'=>'hide-xs','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"; - if (is_array($result) && sizeof($result) != 0) { + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
"; + echo "
\n"; + echo "
".$text['title-conference_control_details']."
\n"; + echo "
\n"; + echo button::create(['type'=>'button','id'=>'action_bar_sub_button_back','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'collapse'=>'hide-xs','style'=>'margin-right: 15px; display: none;','link'=>'conference_controls.php']); if (permission_exists('conference_control_detail_add')) { - echo "$v_link_label_add"; + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'collapse'=>'hide-xs','link'=>'conference_control_detail_edit.php?conference_control_uuid='.urlencode($_GET['id'])]); } - else { - echo " \n"; + if (permission_exists('conference_control_detail_edit') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'collapse'=>'hide-xs','onclick'=>"if (confirm('".$text['confirm-toggle']."')) { list_action_set('toggle'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); } - echo "
\n"; + echo "\n"; + echo " \n"; + echo th_order_by('control_digits', $text['label-control_digits'], $order_by, $order, null, "class='pct-5 center'", $param); + echo th_order_by('control_action', $text['label-control_action'], $order_by, $order, null, null, $param); + echo th_order_by('control_data', $text['label-control_data'], $order_by, $order, null, "class='pct-50 hide-xs'", $param); + echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center'", $param); + if (permission_exists('conference_control_detail_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; + + if (is_array($result) && @sizeof($result) != 0) { + $x = 0; foreach($result as $row) { if (permission_exists('conference_control_detail_edit')) { - $tr_link = "href='conference_control_detail_edit.php?conference_control_uuid=".escape($row['conference_control_uuid'])."&id=".escape($row['conference_control_detail_uuid'])."'"; + $list_row_url = 'conference_control_detail_edit.php?conference_control_uuid='.urlencode($row['conference_control_uuid']).'&id='.urlencode($row['conference_control_detail_uuid']); } - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + if (permission_exists('conference_control_detail_edit') || permission_exists('conference_control_detail_delete')) { + echo " \n"; + } + echo " \n"; + echo " \n"; + echo " \n"; + if (permission_exists('conference_control_detail_edit')) { + echo " \n"; + if (permission_exists('conference_control_detail_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } echo "\n"; - if ($c==0) { $c=1; } else { $c=0; } - } //end foreach + $x++; + } unset($result); - } //end if results + } - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; + echo " \n"; + echo "  
".escape($row['control_digits'])." ".escape($row['control_action'])." ".escape($row['control_data'])." ".escape($row['control_enabled'])." "; + echo "
\n"; + echo " \n"; + echo " \n"; + echo " ".escape($row['control_digits'])." \n"; if (permission_exists('conference_control_detail_edit')) { - echo "$v_link_label_edit"; + echo " ".escape($row['control_action'])."\n"; } - if (permission_exists('conference_control_detail_delete')) { - echo "$v_link_label_delete"; + else { + echo " ".escape($row['control_action']); } echo " ".escape($row['control_data'])." \n"; + echo $text['label-'.$row['control_enabled']]; + } + echo " \n"; + 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 "
 $paging_controls"; - if (permission_exists('conference_control_detail_add')) { - echo "$v_link_label_add"; - } - else { - echo " "; - } - echo "
\n"; - echo "
"; - echo "

"; + echo "\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; + echo "\n"; + echo "\n"; + +//make sub action bar sticky + echo "\n"; //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/conference_controls/conference_control_edit.php b/app/conference_controls/conference_control_edit.php index d72d5e8db3..c03372fb01 100644 --- a/app/conference_controls/conference_control_edit.php +++ b/app/conference_controls/conference_control_edit.php @@ -129,21 +129,24 @@ require_once "resources/header.php"; //show the content - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + + echo "
\n"; + echo "
".$text['title-conference_control']."
\n"; + echo "
\n"; + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'conference_controls.php']); + echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>'hide-xs']); + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo "
".$text['title-conference_control']."

\n"; - echo " "; - echo " "; - echo "
\n"; echo "\n"; - echo "\n"; - echo "\n"; echo "\n"; - echo " \n"; - echo " \n"; - echo " "; + echo "
\n"; + echo "\n"; echo " ".$text['label-control_name']."\n"; echo "\n"; + echo "\n"; echo " \n"; echo "
\n"; echo $text['description-control_name']."\n"; @@ -185,19 +188,17 @@ echo $text['description-control_description']."\n"; echo "
\n"; - if ($action == "update") { - echo " \n"; - } - echo " \n"; - echo " \n"; - echo "
"; - echo "
"; echo "

"; + if ($action == "update") { + echo "\n"; + } + echo "\n"; + + echo ""; + if ($action == "update") { require "conference_control_details.php"; } @@ -205,4 +206,4 @@ //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/conference_controls/resources/classes/conference_controls.php b/app/conference_controls/resources/classes/conference_controls.php index 24df38a6ab..8ab7b28c53 100644 --- a/app/conference_controls/resources/classes/conference_controls.php +++ b/app/conference_controls/resources/classes/conference_controls.php @@ -35,31 +35,31 @@ if (!class_exists('conference_controls')) { class conference_controls { /** - * declare the variables - */ + * declare private variables + */ private $app_name; private $app_uuid; private $name; private $table; private $toggle_field; private $toggle_values; - private $description_field; + private $description_field; private $location; + /** + * declare public variables + */ + public $conference_control_uuid; + /** * called when the object is created */ public function __construct() { + //assign the variables $this->app_name = 'conference_controls'; - $this->app_uuid = ''; - $this->name = 'conference_control'; - $this->table = 'conference_controls'; - $this->toggle_field = 'control_enabled'; - $this->description_field = 'control_description'; - //$this->toggle_field = 'conference_control_enabled'; - $this->toggle_values = ['true','false']; - $this->location = 'conference_controls.php'; + $this->app_uuid = 'e1ad84a2-79e1-450c-a5b1-7507a043e048'; + } /** @@ -76,6 +76,12 @@ if (!class_exists('conference_controls')) { * delete rows from the database */ public function delete($records) { + + //assign the variables + $this->name = 'conference_control'; + $this->table = 'conference_controls'; + $this->location = 'conference_controls.php'; + if (permission_exists($this->name.'_delete')) { //add multi-lingual support @@ -90,6 +96,67 @@ if (!class_exists('conference_controls')) { exit; } + //delete multiple records + if (is_array($records) && @sizeof($records) != 0) { + //build the delete array + $x = 0; + foreach ($records as $record) { + //add to the array + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $array[$this->table][$x][$this->name.'_uuid'] = $record['uuid']; + $array['conference_control_details'][$x][$this->name.'_uuid'] = $record['uuid']; + } + + //increment the id + $x++; + } + + //delete the checked rows + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('conference_control_detail_delete', 'temp'); + + //execute delete + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->delete($array); + unset($array); + + //revoke temporary permissions + $p->delete('conference_control_detail_delete', 'temp'); + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + + public function delete_details($records) { + + //assign the variables + $this->name = 'conference_control_detail'; + $this->table = 'conference_control_details'; + $this->location = 'conference_control_edit.php?id='.$this->conference_control_uuid; + + if (permission_exists($this->name.'_delete')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate('/app/conference_controls/conference_control_details.php')) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->location); + exit; + } + //delete multiple records if (is_array($records) && @sizeof($records) != 0) { //build the delete array @@ -125,6 +192,15 @@ if (!class_exists('conference_controls')) { * toggle a field between two values */ public function toggle($records) { + + //assign the variables + $this->name = 'conference_control'; + $this->table = 'conference_controls'; + $this->toggle_field = 'control_enabled'; + $this->toggle_values = ['true','false']; + $this->description_field = 'control_description'; + $this->location = 'conference_controls.php'; + if (permission_exists($this->name.'_edit')) { //add multi-lingual support @@ -188,6 +264,81 @@ if (!class_exists('conference_controls')) { } } + /** + * toggle a field between two values + */ + public function toggle_details($records) { + + //assign the variables + $this->name = 'conference_control_detail'; + $this->table = 'conference_control_details'; + $this->toggle_field = 'control_enabled'; + $this->toggle_values = ['true','false']; + $this->location = 'conference_control_edit.php?id='.$this->conference_control_uuid; + + if (permission_exists($this->name.'_edit')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate('/app/conference_controls/conference_control_details.php')) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->location); + exit; + } + + //toggle the checked records + if (is_array($records) && @sizeof($records) != 0) { + //get current toggle state + foreach ($records as $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $uuids[] = "'".$record['uuid']."'"; + } + } + if (is_array($uuids) && @sizeof($uuids) != 0) { + $sql = "select ".$this->name."_uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." "; + $sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") "; + $database = new database; + $rows = $database->select($sql, $parameters, 'all'); + if (is_array($rows) && @sizeof($rows) != 0) { + foreach ($rows as $row) { + $states[$row['uuid']] = $row['toggle']; + } + } + unset($sql, $parameters, $rows, $row); + } + + //build update array + $x = 0; + foreach ($states as $uuid => $state) { + //create the array + $array[$this->table][$x][$this->name.'_uuid'] = $uuid; + $array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0]; + + //increment the id + $x++; + } + + //save the changes + 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-toggle']); + } + unset($records, $states); + } + } + } + /** * copy rows from the database */ @@ -230,7 +381,7 @@ if (!class_exists('conference_controls')) { //add copy to the description $array[$this->table][$x][$this->name.'_uuid'] = uuid(); - $array[$this->table][$x][$this->description_field] = trim($row[$this->description_field]).' ('.$text['label-copy'].')'; + $array[$this->table][$x][$this->description_field] = trim($row[$this->description_field]).' ('.$text['label-copy'].')'; //increment the id $x++; @@ -259,4 +410,4 @@ if (!class_exists('conference_controls')) { } } -?> +?> \ No newline at end of file