diff --git a/app/extension_settings/app_config.php b/app/extension_settings/app_config.php new file mode 100755 index 0000000000..f73635a368 --- /dev/null +++ b/app/extension_settings/app_config.php @@ -0,0 +1,87 @@ + \ No newline at end of file diff --git a/app/extension_settings/app_defaults.php b/app/extension_settings/app_defaults.php new file mode 100755 index 0000000000..adadacce42 --- /dev/null +++ b/app/extension_settings/app_defaults.php @@ -0,0 +1,7 @@ + diff --git a/app/extension_settings/app_languages.php b/app/extension_settings/app_languages.php new file mode 100755 index 0000000000..24625e19ea --- /dev/null +++ b/app/extension_settings/app_languages.php @@ -0,0 +1,302 @@ + \ No newline at end of file diff --git a/app/extension_settings/extension_setting_edit.php b/app/extension_settings/extension_setting_edit.php new file mode 100755 index 0000000000..d0ef9ab662 --- /dev/null +++ b/app/extension_settings/extension_setting_edit.php @@ -0,0 +1,362 @@ + + Portions created by the Initial Developer are Copyright (C) 2021 + the Initial Developer. All Rights Reserved. +*/ + +//includes + require_once "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('extension_setting_add') || permission_exists('extension_setting_edit')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//add multi-lingual support + $language = new text; + $text = $language->get(); + +//action add or update + if (is_uuid($_REQUEST["id"])) { + $action = "update"; + $extension_setting_uuid = $_REQUEST["id"]; + $id = $_REQUEST["id"]; + } + else { + $action = "add"; + } + +//get the extension id + if (is_uuid($_REQUEST["extension_uuid"])) { + $extension_uuid = $_REQUEST["extension_uuid"]; + } + +//get http post variables and set them to php variables + if (is_array($_POST)) { + $domain_uuid = $_POST["domain_uuid"]; + $extension_setting_type = $_POST["extension_setting_type"]; + $extension_setting_name = $_POST["extension_setting_name"]; + $extension_setting_value = $_POST["extension_setting_value"]; + $extension_setting_enabled = $_POST["extension_setting_enabled"]; + $extension_setting_description = $_POST["extension_setting_description"]; + } + +//process the user data and save it to the database + if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: extension_settings.php?id='.$extension_uuid); + exit; + } + + //process the http post data by submitted action + if ($_POST['action'] != '' && strlen($_POST['action']) > 0) { + + //prepare the array(s) + //send the array to the database class + switch ($_POST['action']) { + case 'copy': + if (permission_exists('extension_setting_add')) { + $obj = new database; + $obj->copy($array); + } + break; + case 'delete': + if (permission_exists('extension_setting_delete')) { + $obj = new database; + $obj->delete($array); + } + break; + case 'toggle': + if (permission_exists('extension_setting_update')) { + $obj = new database; + $obj->toggle($array); + } + break; + } + + //redirect the user + if (in_array($_POST['action'], array('copy', 'delete', 'toggle')) && is_uuid($id) && is_uuid($extension_uuid)) { + header('Location: extension_setting_edit.php?id='.$id.'&extension_uuid='.$extension_uuid); + exit; + } + } + + //check for all required data + $msg = ''; + //if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."
\n"; } + if (strlen($extension_setting_type) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_type']."
\n"; } + if (strlen($extension_setting_name) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_name']."
\n"; } + //if (strlen($extension_setting_value) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_value']."
\n"; } + if (strlen($extension_setting_enabled) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_enabled']."
\n"; } + //if (strlen($extension_setting_description) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_description']."
\n"; } + if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { + require_once "resources/header.php"; + require_once "resources/persist_form_var.php"; + echo "
\n"; + echo "
\n"; + echo $msg."
"; + echo "
\n"; + persistformvar($_POST); + echo "
\n"; + require_once "resources/footer.php"; + return; + } + + //add the extension_setting_uuid + if (!is_uuid($$extension_setting_uuid)) { + $extension_setting_uuid = uuid(); + } + + //prepare the array + $array['extension_settings'][0]['extension_setting_uuid'] = $extension_setting_uuid; + $array['extension_settings'][0]['extension_uuid'] = $extension_uuid; + $array['extension_settings'][0]['domain_uuid'] = $_SESSION['domain_uuid']; + //$array['extension_settings'][0]['domain_uuid'] = $domain_uuid; + $array['extension_settings'][0]['extension_setting_type'] = $extension_setting_type; + $array['extension_settings'][0]['extension_setting_name'] = $extension_setting_name; + $array['extension_settings'][0]['extension_setting_value'] = $extension_setting_value; + $array['extension_settings'][0]['extension_setting_enabled'] = $extension_setting_enabled; + $array['extension_settings'][0]['extension_setting_description'] = $extension_setting_description; + + //save the data + $database = new database; + $database->app_name = 'extension settings'; + $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd'; + $database->save($array); + + //redirect the user + if (isset($action)) { + if ($action == "add") { + $_SESSION["message"] = $text['message-add']; + } + if ($action == "update") { + $_SESSION["message"] = $text['message-update']; + } + //header('Location: extension_settings.php'); + header('Location: extension_setting_edit.php?id='.urlencode($extension_setting_uuid).'&extension_uuid='.$extension_uuid); + return; + } + } + +//pre-populate the form + if (is_array($_GET) && $_POST["persistformvar"] != "true") { + $sql = "select "; + //$sql .= "extension_uuid, "; + //$sql .= "domain_uuid, "; + $sql .= "extension_setting_uuid, "; + $sql .= "extension_setting_type, "; + $sql .= "extension_setting_name, "; + $sql .= "extension_setting_value, "; + $sql .= "cast(extension_setting_enabled as text), "; + $sql .= "extension_setting_description "; + $sql .= "from v_extension_settings "; + $sql .= "where extension_setting_uuid = :extension_setting_uuid "; + //$sql .= "and domain_uuid = :domain_uuid "; + //$parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $parameters['extension_setting_uuid'] = $extension_setting_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { + if (is_uuid($row["extension_uuid"])) { + $extension_uuid = $row["extension_uuid"]; + } + //$domain_uuid = $row["domain_uuid"]; + $extension_setting_type = $row["extension_setting_type"]; + $extension_setting_name = $row["extension_setting_name"]; + $extension_setting_value = $row["extension_setting_value"]; + $extension_setting_enabled = $row["extension_setting_enabled"]; + $extension_setting_description = $row["extension_setting_description"]; + } + unset($sql, $parameters, $row); + } + +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//show the header + $document['title'] = $text['title-extension_setting']; + require_once "resources/header.php"; + +//show the content + echo "
\n"; + echo "\n"; + + echo "
\n"; + echo "
".$text['title-extension_setting']."
\n"; + echo "
\n"; + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'extension_settings.php?id='.$extension_uuid]); + if ($action == 'update') { + if (permission_exists('_add')) { + echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]); + } + if (permission_exists('_delete')) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]); + } + } + echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'hide-xs']); + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo $text['title_description-extension_settings']."\n"; + echo "

\n"; + + if ($action == 'update') { + if (permission_exists('extension_setting_add')) { + echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]); + } + if (permission_exists('extension_setting_delete')) { + echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]); + } + } + + echo "\n"; + + //echo "\n"; + //echo "\n"; + //echo "\n"; + //echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + //echo " ".$text['label-domain_uuid']."\n"; + //echo "\n"; + //echo " \n"; + //echo "
\n"; + //echo $text['description-domain_uuid']."\n"; + //echo "
\n"; + echo " ".$text['label-extension_setting_type']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-extension_setting_type']."\n"; + echo "
\n"; + echo " ".$text['label-extension_setting_name']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-extension_setting_name']."\n"; + echo "
\n"; + echo " ".$text['label-extension_setting_value']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-extension_setting_value']."\n"; + echo "
\n"; + echo " ".$text['label-extension_setting_enabled']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-extension_setting_enabled']."\n"; + echo "
\n"; + echo " ".$text['label-extension_setting_description']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-extension_setting_description']."\n"; + echo "
\n"; + echo "

\n"; + + echo "\n"; + echo "\n"; + + echo "
"; + +//include the footer + require_once "resources/footer.php"; + +?> diff --git a/app/extension_settings/extension_settings.php b/app/extension_settings/extension_settings.php new file mode 100755 index 0000000000..a2cd197a80 --- /dev/null +++ b/app/extension_settings/extension_settings.php @@ -0,0 +1,327 @@ + + Portions created by the Initial Developer are Copyright (C) 2021 + the Initial Developer. All Rights Reserved. +*/ + +//includes + require_once "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('extension_setting_view')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//add multi-lingual support + $language = new text; + $text = $language->get(); + +//get the http post data + if (is_array($_POST['extension_settings'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $extension_settings = $_POST['extension_settings']; + } + +//action add or update + if (is_uuid($_REQUEST["id"])) { + $extension_uuid = $_REQUEST["id"]; + } + +//process the http post data by action + if ($action != '' && is_array($extension_settings) && @sizeof($extension_settings) != 0) { + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: extension_settings.php'); + exit; + } + + //prepare the array + foreach($extension_settings as $row) { + $array['extension_settings'][$x]['checked'] = $row['checked']; + $array['extension_settings'][$x]['extension_setting_uuid'] = $row['extension_setting_uuid']; + $array['extension_settings'][$x]['extension_setting_enabled'] = $row['extension_setting_enabled']; + $x++; + } + + //prepare the database object + $database = new database; + $database->app_name = 'extension_settings'; + $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd'; + + //send the array to the database class + switch ($action) { + case 'copy': + if (permission_exists('extension_setting_add')) { + $database->copy($array); + } + break; + case 'toggle': + if (permission_exists('extension_setting_edit')) { + $database->toggle($array); + } + break; + case 'delete': + if (permission_exists('extension_setting_delete')) { + $database->delete($array); + } + break; + } + + //redirect the user + header('Location: extension_settings.php?id='.urlencode($extension_uuid).'&'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + +//get order and order by + $order_by = $_GET["order_by"]; + $order = $_GET["order"]; + +//add the search + if (isset($_GET["search"])) { + $search = strtolower($_GET["search"]); + } + +//get the count + $sql = "select count(extension_setting_uuid) "; + $sql .= "from v_extension_settings "; + $sql .= "where extension_uuid = :extension_uuid "; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(extension_setting_type) like :search "; + $sql .= " or lower(extension_setting_name) like :search "; + $sql .= " or lower(extension_setting_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + else { + $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; + if (isset($sql_search)) { + $sql .= "and ".$sql_search; + } + $parameters['domain_uuid'] = $domain_uuid; + } + $parameters['extension_uuid'] = $extension_uuid; + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + +//get the list + $sql = "select "; + //$sql .= "d.domain_name, "; + $sql .= "extension_setting_uuid, "; + $sql .= "extension_setting_type, "; + $sql .= "extension_setting_name, "; + $sql .= "extension_setting_value, "; + $sql .= "cast(extension_setting_enabled as text), "; + $sql .= "extension_setting_description "; + $sql .= "from v_extension_settings as e "; + //$sql .= ",v_domains as d "; + $sql .= "where extension_uuid = :extension_uuid "; + $sql .= "and (e.domain_uuid = :domain_uuid or e.domain_uuid is null) "; + //$sql .= "and d.domain_uuid = e.domain_uuid "; + if (isset($_GET["search"])) { + $sql .= "and ("; + $sql .= " lower(extension_setting_type) like :search "; + $sql .= " or lower(extension_setting_name) like :search "; + $sql .= " or lower(extension_setting_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + + $sql .= order_by($order_by, $order, 'extension_setting_type', 'asc'); + $sql .= limit_offset($rows_per_page, $offset); + $parameters['extension_uuid'] = $extension_uuid; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $extension_settings = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); + +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//additional includes + $document['title'] = $text['title-extension_settings']; + require_once "resources/header.php"; + +//show the content + echo "
\n"; + echo "
".$text['title-extension_settings']." (".$num_rows.")
\n"; + echo "
\n"; + + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_add','name'=>'btn_add','link'=>'/app/extensions/extension_edit.php?id='.$extension_uuid]); + + if (permission_exists('extension_setting_add')) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','name'=>'btn_add','link'=>'extension_setting_edit.php?extension_uuid='.$extension_uuid]); + } + if (permission_exists('extension_setting_add') && $extension_settings) { + echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display:none;','onclick'=>"modal_open('modal-copy','btn_copy');"]); + } + if (permission_exists('extension_setting_edit') && $extension_settings) { + echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display:none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]); + } + if (permission_exists('extension_setting_delete') && $extension_settings) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]); + } + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + if (permission_exists('extension_setting_add') && $extension_settings) { + echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('copy'); list_form_submit('form_list');"])]); + } + if (permission_exists('extension_setting_edit') && $extension_settings) { + echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('toggle'); list_form_submit('form_list');"])]); + } + if (permission_exists('extension_setting_delete') && $extension_settings) { + echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]); + } + + echo $text['title_description-extension_settings']."\n"; + echo "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + if (is_array($extension_settings) && @sizeof($extension_settings) != 0) { + $x = 0; + foreach ($extension_settings as $row) { + $extension_setting_type = $row['extension_setting_type']; + $extension_setting_type = strtolower($extension_setting_type); + + $label_extension_setting_type = $row['extension_setting_type']; + $label_extension_setting_type = str_replace("_", " ", $label_extension_setting_type); + $label_extension_setting_type = str_replace("-", " ", $label_extension_setting_type); + $label_extension_setting_type = ucwords($label_extension_setting_type); + + if ($previous_extension_setting_type !== $row['extension_setting_type']) { + echo " "; + echo " \n"; + echo " "; + echo " "; + echo " \n"; + echo " "; + echo "\n"; + if (permission_exists('extension_setting_add') || permission_exists('extension_setting_edit') || permission_exists('extension_setting_delete')) { + echo " \n"; + } + //if ($_GET['show'] == 'all' && permission_exists('extension_setting_all')) { + // echo th_order_by('domain_name', $text['label-domain'], $order_by, $order); + //} + + //echo th_order_by('extension_setting_type', $text['label-extension_setting_type'], $order_by, $order); + //echo th_order_by('extension_setting_name', $text['label-extension_setting_name'], $order_by, $order); + //echo th_order_by('extension_setting_value', $text['label-extension_setting_value'], $order_by, $order); + //echo th_order_by('extension_setting_enabled', $text['label-extension_setting_enabled'], $order_by, $order, null, "class='center'"); + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + + echo " \n"; + if (permission_exists('extension_setting_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; + + } + if (permission_exists('extension_setting_edit')) { + $list_row_url = "extension_setting_edit.php?id=".urlencode($row['extension_setting_uuid'])."&extension_uuid=".urlencode($extension_uuid); + } + echo "\n"; + if (permission_exists('extension_setting_add') || permission_exists('extension_setting_edit') || permission_exists('extension_setting_delete')) { + echo " \n"; + } + //if ($_GET['show'] == 'all' && permission_exists('extension_setting_all')) { + // echo " \n"; + //} + echo " \n"; + echo " \n"; + echo " \n"; + if (permission_exists('extension_setting_edit')) { + echo " \n"; + echo " \n"; + if (permission_exists('extension_setting_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; + + //set the previous category + $previous_extension_setting_type = $row['extension_setting_type']; + $x++; + } + unset($extension_settings); + } + + echo "
 
".escape($label_extension_setting_type)."
\n"; + echo " \n"; + echo " ".$text['label-extension_setting_type']."".$text['label-extension_setting_name']."".$text['label-extension_setting_value']."".$text['label-extension_setting_enabled']."".$text['label-extension_setting_description']." 
\n"; + echo " \n"; + echo " \n"; + echo " ".escape($row['domain_name'])."".escape($row['extension_setting_type'])."".escape($row['extension_setting_name'])."".escape($row['extension_setting_value'])."\n"; + echo $text['label-'.$row['extension_setting_enabled']]; + } + echo " ".escape($row['extension_setting_description'])."\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 "
".$paging_controls."
\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + +//include the footer + require_once "resources/footer.php"; + +?> diff --git a/app/extension_settings/resources/classes/extension_settings.php b/app/extension_settings/resources/classes/extension_settings.php new file mode 100755 index 0000000000..a8d21ce41f --- /dev/null +++ b/app/extension_settings/resources/classes/extension_settings.php @@ -0,0 +1,266 @@ + + Portions created by the Initial Developer are Copyright (C) 2021 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +/** + * extension_settings class + * + * @method null delete + * @method null toggle + * @method null copy + */ +if (!class_exists('extension_settings')) { + class extension_settings { + + /** + * declare the variables + */ + private $app_name; + private $app_uuid; + private $name; + private $table; + private $toggle_field; + private $toggle_values; + private $description_field; + private $location; + + /** + * called when the object is created + */ + public function __construct() { + //assign the variables + $this->app_name = 'extension_settings'; + $this->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd'; + $this->name = 'extension_setting'; + $this->table = 'extension_settings'; + $this->toggle_field = 'extension_setting_enabled'; + $this->toggle_values = ['true','false']; + $this->description_field = 'extension_setting_description'; + $this->location = 'extension_settings.php'; + } + + /** + * 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 rows from the database + */ + public function delete($records) { + 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($_SERVER['PHP_SELF'])) { + 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 + $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[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + } + + //increment the id + $x++; + } + + //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); + } + } + } + + /** + * toggle a field between two values + */ + public function toggle($records) { + 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($_SERVER['PHP_SELF'])) { + 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).") "; + $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; + $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) { + $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 + */ + public function copy($records) { + if (permission_exists($this->name.'_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->location); + exit; + } + + //copy the checked records + if (is_array($records) && @sizeof($records) != 0) { + + //get checked records + foreach($records as $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $uuids[] = "'".$record['uuid']."'"; + } + } + + //create the array from existing data + if (is_array($uuids) && @sizeof($uuids) != 0) { + $sql = "select * from v_".$this->table." "; + $sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") "; + $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $database = new database; + $rows = $database->select($sql, $parameters, 'all'); + if (is_array($rows) && @sizeof($rows) != 0) { + $x = 0; + foreach ($rows as $row) { + //copy data + $array[$this->table][$x] = $row; + + //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'].')'; + + //increment the id + $x++; + } + } + 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); + } + } + } + + } +} + +?> diff --git a/app/extension_settings/root.php b/app/extension_settings/root.php new file mode 100755 index 0000000000..6fdf32f37b --- /dev/null +++ b/app/extension_settings/root.php @@ -0,0 +1,90 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +// make sure the PATH_SEPARATOR is defined + umask(2); + if (!defined("PATH_SEPARATOR")) { + if (strpos($_ENV["OS"], "Win") !== false) { + define("PATH_SEPARATOR", ";"); + } else { + define("PATH_SEPARATOR", ":"); + } + } + + if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html'; + + // make sure the document_root is set + $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]); + if(PHP_SAPI == 'cli'){ + chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME)); + $script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]); + $dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME)); + if (file_exists('/project_root.php')) { + $path = '/'; + } else { + $i = 1; + $path = ''; + while ($i < count($dirs)) { + $path .= '/' . $dirs[$i]; + if (file_exists($path. '/project_root.php')) { + break; + } + $i++; + } + } + $_SERVER["DOCUMENT_ROOT"] = $path; + }else{ + $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]); + } + $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]); +// try to detect if a project path is being used + if (!defined('PROJECT_PATH')) { + if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) { + define('PROJECT_PATH', '/fusionpbx'); + } elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) { + define('PROJECT_PATH', ''); + } else { + $dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME))); + $i = 1; + $path = $_SERVER["DOCUMENT_ROOT"]; + while ($i < count($dirs)) { + $path .= '/' . $dirs[$i]; + if (file_exists($path. '/project_root.php')) { + break; + } + $i++; + } + if(!file_exists($path. '/project_root.php')){ + die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance"); + } + $project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path); + define('PROJECT_PATH', $project_path); + } + $_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH); + set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]); + } + +?> \ No newline at end of file