You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.4 KiB
160 lines
5.4 KiB
<?php |
|
//First make sure user has access |
|
require_once("../../interface/globals.php"); |
|
|
|
use OpenEMR\Common\Acl\AclMain; |
|
use OpenEMR\Common\Csrf\CsrfUtils; |
|
use OpenEMR\Common\Twig\TwigContainer; |
|
|
|
if (!empty($_POST)) { |
|
if (!CsrfUtils::verifyCsrfToken($_POST["csrf_token_form"])) { |
|
CsrfUtils::csrfNotVerified(); |
|
} |
|
} |
|
|
|
//ensure user has proper access |
|
if (!AclMain::aclCheckCore('admin', 'acl')) { |
|
echo (new TwigContainer(null, $GLOBALS['kernel']))->getTwig()->render('core/unauthorized.html.twig', ['pageTitle' => xl("ACL Administration")]); |
|
exit; |
|
} |
|
|
|
require_once("gacl_admin.inc.php"); |
|
|
|
//GET takes precedence. |
|
if (!empty($_GET['object_type'])) { |
|
$object_type = $_GET['object_type']; |
|
} else { |
|
$object_type = $_POST['object_type']; |
|
} |
|
|
|
switch(strtolower(trim($object_type))) { |
|
case 'aco': |
|
$object_type = 'aco'; |
|
$object_table = $gacl_api->_db_table_prefix . 'aco'; |
|
$object_sections_table = $gacl_api->_db_table_prefix . 'aco_sections'; |
|
break; |
|
case 'aro': |
|
$object_type = 'aro'; |
|
$object_table = $gacl_api->_db_table_prefix . 'aro'; |
|
$object_sections_table = $gacl_api->_db_table_prefix . 'aro_sections'; |
|
break; |
|
case 'axo': |
|
$object_type = 'axo'; |
|
$object_table = $gacl_api->_db_table_prefix . 'axo'; |
|
$object_sections_table = $gacl_api->_db_table_prefix . 'axo_sections'; |
|
break; |
|
default: |
|
echo "ERROR: Must select an object type<br />\n"; |
|
exit(); |
|
break; |
|
} |
|
|
|
$postAction = $_POST['action'] ?? null; |
|
switch ($postAction) { |
|
case 'Delete': |
|
|
|
if (count($_POST['delete_object']) > 0) { |
|
foreach($_POST['delete_object'] as $id) { |
|
$gacl_api->del_object($id, $object_type, TRUE); |
|
} |
|
} |
|
|
|
//Return page. |
|
$gacl_api->return_page($_POST['return_page']); |
|
|
|
break; |
|
case 'Submit': |
|
$gacl_api->debug_text("Submit!!"); |
|
|
|
//Update objects |
|
if (!empty($_POST['objects'])) { |
|
foreach ($_POST['objects'] as $row) { |
|
list($id, $value, $order, $name) = $row; |
|
$gacl_api->edit_object($id, $_POST['section_value'], $name, $value, $order, 0, $object_type); |
|
} |
|
} |
|
unset($id); |
|
unset($section_value); |
|
unset($value); |
|
unset($order); |
|
unset($name); |
|
|
|
//Insert new sections |
|
foreach ($_POST['new_objects'] as $row) { |
|
list($value, $order, $name) = $row; |
|
|
|
if (!empty($value) AND !empty($name)) { |
|
$object_id= $gacl_api->add_object($_POST['section_value'], $name, $value, $order, 0, $object_type); |
|
} |
|
} |
|
$gacl_api->debug_text("return_page: ". $_POST['return_page']); |
|
$gacl_api->return_page($_POST['return_page']); |
|
|
|
break; |
|
default: |
|
//Grab section name |
|
$query = "select name from $object_sections_table where value = ". $db->qstr($_GET['section_value']); |
|
$section_name = $db->GetOne($query); |
|
|
|
$query = "select |
|
id, |
|
section_value, |
|
value, |
|
order_value, |
|
name |
|
from $object_table |
|
where section_value=". $db->qstr($_GET['section_value']) ." |
|
order by order_value"; |
|
$rs = $db->pageexecute($query, $gacl_api->_items_per_page, ($_GET['page'] ?? null)); |
|
$rows = $rs->GetRows(); |
|
|
|
foreach ($rows as $row) { |
|
list($id, $section_value, $value, $order_value, $name) = $row; |
|
|
|
$objects[] = array( |
|
'id' => $id, |
|
'section_value' => $section_value, |
|
'value' => $value, |
|
'order' => $order_value, |
|
'name' => $name |
|
); |
|
} |
|
|
|
for($i=0; $i < 5; $i++) { |
|
$new_objects[] = array( |
|
'id' => $i, |
|
'section_value' => NULL, |
|
'value' => NULL, |
|
'order' => NULL, |
|
'name' => NULL |
|
); |
|
} |
|
|
|
$smarty->assign('objects', ($objects ?? null)); |
|
$smarty->assign('new_objects', $new_objects); |
|
|
|
$smarty->assign("paging_data", $gacl_api->get_paging_data($rs)); |
|
|
|
break; |
|
} |
|
|
|
$smarty->assign('section_value', ($_GET['section_value'] ?? null)); |
|
$smarty->assign('section_value_escaped', attr($_GET['section_value'] ?? null)); |
|
|
|
$smarty->assign('section_name', ($section_name ?? null)); |
|
|
|
$smarty->assign('object_type', $object_type); |
|
$smarty->assign('object_type_escaped', attr($object_type)); |
|
|
|
$smarty->assign('return_page', $_SERVER['REQUEST_URI']); |
|
|
|
$smarty->assign('current','edit_'. $object_type .'s'); |
|
$smarty->assign('page_title', 'Edit '. strtoupper($object_type) .' Objects'); |
|
|
|
$smarty->assign("phpgacl_version", $gacl_api->get_version() ); |
|
$smarty->assign("phpgacl_schema_version", $gacl_api->get_schema_version() ); |
|
|
|
$smarty->assign("CSRF_TOKEN_FORM", CsrfUtils::collectCsrfToken()); |
|
|
|
$smarty->display('phpgacl/edit_objects.tpl'); |
|
?>
|
|
|