mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
2010-07-15 Miguel de Dios <miguel.dedios@artica.es>
* include/functions.php: added function "array_key_to_offset" to resolve the offset in associative array. * include/functions_db.php: added function "get_childrens" for get the childrens of a group, "get_parents" for get the parents of a group (with the flag propagate or not as you want). In function "check_acl" added the method to scan groups that propagate flag in the branches. Added functions "get_user_groups_tree_recursive" and "get_user_groups_tree" for extract the groups as treefied list. Added in the function "get_db_all_rows_in_table" added the parameter $order to get with ASC or DESC order the rows, by default is ASC as mySQL. * godmode/groups/configure_group.php: added the field of propagate to update or creation a group. * godmode/groups/group_list.php: changed for the group trees the source code for to show the table as dinamic table that if the row have branch, you can click and desplegate children rows. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3008 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
16f3d39f87
commit
1446aed5e3
@ -1,3 +1,24 @@
|
|||||||
|
2010-07-15 Miguel de Dios <miguel.dedios@artica.es>
|
||||||
|
|
||||||
|
* include/functions.php: added function "array_key_to_offset" to resolve
|
||||||
|
the offset in associative array.
|
||||||
|
|
||||||
|
* include/functions_db.php: added function "get_childrens" for get the
|
||||||
|
childrens of a group, "get_parents" for get the parents of a group (with the
|
||||||
|
flag propagate or not as you want). In function "check_acl" added the method
|
||||||
|
to scan groups that propagate flag in the branches. Added functions
|
||||||
|
"get_user_groups_tree_recursive" and "get_user_groups_tree" for extract the
|
||||||
|
groups as treefied list. Added in the function "get_db_all_rows_in_table"
|
||||||
|
added the parameter $order to get with ASC or DESC order the rows, by
|
||||||
|
default is ASC as mySQL.
|
||||||
|
|
||||||
|
* godmode/groups/configure_group.php: added the field of propagate to update
|
||||||
|
or creation a group.
|
||||||
|
|
||||||
|
* godmode/groups/group_list.php: changed for the group trees the source code
|
||||||
|
for to show the table as dinamic table that if the row have branch, you can
|
||||||
|
click and desplegate children rows.
|
||||||
|
|
||||||
2010-07-13 Miguel de Dios <miguel.dedios@artica.es>
|
2010-07-13 Miguel de Dios <miguel.dedios@artica.es>
|
||||||
|
|
||||||
* pandoradb.sql: added in the table tgrupo the column 'propagrate' for to
|
* pandoradb.sql: added in the table tgrupo the column 'propagrate' for to
|
||||||
|
@ -30,6 +30,7 @@ $name = "";
|
|||||||
$id_parent = 0;
|
$id_parent = 0;
|
||||||
$alerts_disabled = 0;
|
$alerts_disabled = 0;
|
||||||
$custom_id = "";
|
$custom_id = "";
|
||||||
|
$propagate = 0;
|
||||||
|
|
||||||
$create_group = (bool) get_parameter ('create_group');
|
$create_group = (bool) get_parameter ('create_group');
|
||||||
$id_group = (int) get_parameter ('id_group');
|
$id_group = (int) get_parameter ('id_group');
|
||||||
@ -42,6 +43,7 @@ if ($id_group) {
|
|||||||
$alerts_disabled = $group["disabled"];
|
$alerts_disabled = $group["disabled"];
|
||||||
$id_parent = $group["parent"];
|
$id_parent = $group["parent"];
|
||||||
$custom_id = $group["custom_id"];
|
$custom_id = $group["custom_id"];
|
||||||
|
$propagate = $group["propagate"];
|
||||||
} else {
|
} else {
|
||||||
echo "<h3 class='error'>".__('There was a problem loading group')."</h3>";
|
echo "<h3 class='error'>".__('There was a problem loading group')."</h3>";
|
||||||
echo "</table>";
|
echo "</table>";
|
||||||
@ -75,7 +77,8 @@ $table->data[2][0] = __('Parent');
|
|||||||
$sql = 'SELECT id_grupo, nombre FROM tgrupo ';
|
$sql = 'SELECT id_grupo, nombre FROM tgrupo ';
|
||||||
if ($id_group)
|
if ($id_group)
|
||||||
$sql .= sprintf ('WHERE id_grupo != %d', $id_group);
|
$sql .= sprintf ('WHERE id_grupo != %d', $id_group);
|
||||||
$table->data[2][1] = print_select_from_sql ($sql, 'id_parent', $id_parent, '', 'None', 0, true);
|
$groups = get_user_groups();
|
||||||
|
$table->data[2][1] = print_select($groups, 'id_parent', 0, '', '', '', true);
|
||||||
$table->data[2][1] .= ' <span id="parent_preview">';
|
$table->data[2][1] .= ' <span id="parent_preview">';
|
||||||
if ($id_parent) {
|
if ($id_parent) {
|
||||||
echo '<img src="images/groups_small/'.get_group_icon ($id_parent).'.png" />';
|
echo '<img src="images/groups_small/'.get_group_icon ($id_parent).'.png" />';
|
||||||
@ -85,8 +88,11 @@ echo'</span>';
|
|||||||
$table->data[3][0] = __('Alerts');
|
$table->data[3][0] = __('Alerts');
|
||||||
$table->data[3][1] = print_checkbox ('alerts_enabled', 1, ! $alerts_disabled, true);
|
$table->data[3][1] = print_checkbox ('alerts_enabled', 1, ! $alerts_disabled, true);
|
||||||
|
|
||||||
$table->data[4][0] = __('Custom ID');
|
$table->data[4][0] = __('Propagate ACL') . print_help_tip (__("Propagate the same ACL security into the child subgroups."), true);
|
||||||
$table->data[4][1] = print_input_text ('custom_id', $custom_id, '', 16, 255, true);
|
$table->data[4][1] = print_checkbox('propagate', 1, $propagate, true);
|
||||||
|
|
||||||
|
$table->data[5][0] = __('Custom ID');
|
||||||
|
$table->data[5][1] = print_input_text ('custom_id', $custom_id, '', 16, 255, true);
|
||||||
|
|
||||||
echo '<form name="grupo" method="post" action="index.php?sec=gagente&sec2=godmode/groups/group_list">';
|
echo '<form name="grupo" method="post" action="index.php?sec=gagente&sec2=godmode/groups/group_list">';
|
||||||
print_table ($table);
|
print_table ($table);
|
||||||
|
@ -108,11 +108,12 @@ if ($update_group) {
|
|||||||
$id_parent = (int) get_parameter ('id_parent');
|
$id_parent = (int) get_parameter ('id_parent');
|
||||||
$alerts_enabled = (bool) get_parameter ('alerts_enabled');
|
$alerts_enabled = (bool) get_parameter ('alerts_enabled');
|
||||||
$custom_id = (string) get_parameter ('custom_id');
|
$custom_id = (string) get_parameter ('custom_id');
|
||||||
|
$propagate = (bool) get_parameter('propagate');
|
||||||
|
|
||||||
$sql = sprintf ('UPDATE tgrupo SET nombre = "%s",
|
$sql = sprintf ('UPDATE tgrupo SET nombre = "%s",
|
||||||
icon = "%s", disabled = %d, parent = %d, custom_id = "%s"
|
icon = "%s", disabled = %d, parent = %d, custom_id = "%s", propagate = %d
|
||||||
WHERE id_grupo = %d',
|
WHERE id_grupo = %d',
|
||||||
$name, substr ($icon, 0, -4), !$alerts_enabled, $id_parent, $custom_id, $id_group);
|
$name, substr ($icon, 0, -4), !$alerts_enabled, $id_parent, $custom_id, $propagate, $id_group);
|
||||||
$result = process_sql ($sql);
|
$result = process_sql ($sql);
|
||||||
if ($result !== false) {
|
if ($result !== false) {
|
||||||
echo "<h3 class='suc'>".__('Group successfully updated')."</h3>";
|
echo "<h3 class='suc'>".__('Group successfully updated')."</h3>";
|
||||||
@ -150,32 +151,116 @@ if ($delete_group) {
|
|||||||
|
|
||||||
$table->width = '65%';
|
$table->width = '65%';
|
||||||
$table->head = array ();
|
$table->head = array ();
|
||||||
$table->head[0] = __('Icon');
|
$table->head[0] = __('Name');
|
||||||
$table->head[1] = __('Name');
|
$table->head[1] = __('Icon');
|
||||||
$table->head[2] = __('Parent');
|
$table->head[2] = __('Alerts');
|
||||||
$table->head[3] = __('Alerts');
|
$table->head[3] = __('Actions');
|
||||||
$table->head[4] = __('Delete');
|
|
||||||
$table->align = array ();
|
$table->align = array ();
|
||||||
$table->align[4] = 'center';
|
$table->align[3] = 'center';
|
||||||
$table->data = array ();
|
$table->data = array ();
|
||||||
|
|
||||||
$groups = get_user_groups ($config['id_user'], "AR", false);
|
$groups = get_user_groups_tree ($config['id_user'], "AR", false);
|
||||||
|
$iterator = 0;
|
||||||
|
|
||||||
foreach ($groups as $id_group => $group_name) {
|
foreach ($groups as $id_group => $group) {
|
||||||
$data = array ();
|
if ($group['deep'] == 0) {
|
||||||
|
$table->rowstyle[$iterator] = '';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$table->rowstyle[$iterator] = 'display: none;';
|
||||||
|
}
|
||||||
|
|
||||||
$group = get_db_row ('tgrupo', 'id_grupo', $id_group);
|
$symbolBranchs = '';
|
||||||
|
if ($group['id_grupo'] != 0) {
|
||||||
|
|
||||||
|
//Make a list of parents this group
|
||||||
|
$end = false;
|
||||||
|
$unloop = true;
|
||||||
|
$parents = null;
|
||||||
|
$parents[] = $group['parent'];
|
||||||
|
while (!$end) {
|
||||||
|
$lastParent = end($parents);
|
||||||
|
if ($lastParent == 0) {
|
||||||
|
$end = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$unloop = true;
|
||||||
|
foreach ($groups as $id => $node) {
|
||||||
|
if ($node['id_grupo'] == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($node['id_grupo'] == $lastParent) {
|
||||||
|
array_push($parents, $node['parent']);
|
||||||
|
$unloop = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//For exit of infinite loop
|
||||||
|
if ($unloop) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->rowclass[$iterator] = 'parent_' . $group['parent'];
|
||||||
|
|
||||||
|
//Print the branch classes (for close a branch with child branch in the
|
||||||
|
//javascript) of this parent as example:
|
||||||
|
//
|
||||||
|
// the tree (0(1,2(4,5),3))
|
||||||
|
// for the group 4 have the style "parent_4 branch_0 branch_2"
|
||||||
|
if (!empty($parents)) {
|
||||||
|
foreach ($parents as $idParent) {
|
||||||
|
$table->rowclass[$iterator] .= ' branch_' . $idParent;
|
||||||
|
$symbolBranchs .= ' symbol_branch_' . $idParent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$tabulation = str_repeat(' ', $group['deep']);
|
||||||
|
|
||||||
$data[0] = print_group_icon($id_group, true);
|
if ($group['hash_branch']) {
|
||||||
$data[1] = '<strong><a href="index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$id_group.'">'.$group_name.'</a></strong>';
|
$data[0] = '<strong>'.$tabulation . ' ' .
|
||||||
$data[2] = get_group_name ($group["parent"]);
|
'<a href="javascript: showBranch(' . $group['id_grupo'] . ', ' . $group['parent'] . ');" title="' . __('Show branch children') . '"><span class="symbol_' . $group['id_grupo'] . ' ' . $symbolBranchs . '">+</span> '. $group['nombre'].'</a></strong>';
|
||||||
$data[3] = $group['disabled'] ? __('Disabled') : __('Enabled');
|
}
|
||||||
$data[4] = '<a href="index.php?sec=gagente&sec2=godmode/groups/group_list&id_group='.$id_group.'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;"><img border="0" src="images/cross.png"></a>';
|
else {
|
||||||
|
$data[0] = '<strong>'.$tabulation . ' '. $group['nombre'].'</strong>';
|
||||||
|
}
|
||||||
|
$data[1] = print_group_icon($group['id_grupo'], true);
|
||||||
|
$data[2] = $group['disabled'] ? __('Disabled') : __('Enabled');
|
||||||
|
if ($group['id_grupo'] == 0) {
|
||||||
|
$data[3] = '';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$data[3] = '<a href="index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$group['id_grupo'].'"><img border="0" src="images/config.png" alt="' . __('Edit') . '" title="' . __('Edit') . '" /></a>';
|
||||||
|
$data[3] .= '<a href="index.php?sec=gagente&sec2=godmode/groups/group_list&id_group='.$id_group.'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;"><img alt="' . __('Delete') . '" alt="' . __('Delete') . '" border="0" src="images/cross.png"></a>';
|
||||||
|
}
|
||||||
|
|
||||||
array_push ($table->data, $data);
|
array_push ($table->data, $data);
|
||||||
|
$iterator++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function showBranch(parent) {
|
||||||
|
display = $('.parent_' + parent).css('display');
|
||||||
|
|
||||||
|
if (display != 'none') {
|
||||||
|
$('.symbol_' + parent).html('+');
|
||||||
|
$('.parent_' + parent).css('display', 'none');
|
||||||
|
|
||||||
|
//Close the child branch too
|
||||||
|
$('.branch_' + parent).css('display', 'none');
|
||||||
|
$('.symbol_branch_' + parent).html('+');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('.symbol_' + parent).html('-');
|
||||||
|
$('.parent_' + parent).css('display', '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<?php
|
||||||
|
|
||||||
print_table ($table);
|
print_table ($table);
|
||||||
|
|
||||||
echo '<form method="post" action="index.php?sec=gagente&sec2=godmode/groups/configure_group">';
|
echo '<form method="post" action="index.php?sec=gagente&sec2=godmode/groups/configure_group">';
|
||||||
|
@ -1011,4 +1011,18 @@ function return_graphtype ($id_module_type){
|
|||||||
|
|
||||||
return "sparse";
|
return "sparse";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translate the key in assoc array to numeric offset.
|
||||||
|
*
|
||||||
|
* @param array $array The array to return the offset.
|
||||||
|
* @param mixed $key The key to translate to offset.
|
||||||
|
*
|
||||||
|
* @return mixed The offset or false is fail.
|
||||||
|
*/
|
||||||
|
function array_key_to_offset($array, $key) {
|
||||||
|
$offset = array_search($key, array_keys($array));
|
||||||
|
|
||||||
|
return $offset;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
@ -50,6 +50,57 @@ function check_login () {
|
|||||||
include ($config["homedir"]."/general/noaccess.php");
|
include ($config["homedir"]."/general/noaccess.php");
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a array of id_group of childrens (to branches down)
|
||||||
|
*
|
||||||
|
* @param integer $parent The id_group parent to search the childrens.
|
||||||
|
* @param array $groups The groups, its for optimize the querys to DB.
|
||||||
|
*/
|
||||||
|
function get_childrens($parent, $groups = null) {
|
||||||
|
if (empty($groups)) {
|
||||||
|
$groups = get_db_all_rows_in_table('tgrupo');
|
||||||
|
}
|
||||||
|
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
foreach ($groups as $key => $group) {
|
||||||
|
if ($group['id_grupo'] == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($group['parent'] == $parent) {
|
||||||
|
$return = $return + array($group['id_grupo'] => $group) + get_childrens($group['id_grupo'], $groups);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a array of id_group of parents (to roots up).
|
||||||
|
*
|
||||||
|
* @param integer $parent The id_group parent to search the parent.
|
||||||
|
* @param boolean $onlyPropagate Flag to search only parents that true to propagate.
|
||||||
|
* @param array $groups The groups, its for optimize the querys to DB.
|
||||||
|
*/
|
||||||
|
function get_parents($parent, $onlyPropagate = false, $groups = null) {
|
||||||
|
if (empty($groups)) {
|
||||||
|
$groups = get_db_all_rows_in_table('tgrupo');
|
||||||
|
}
|
||||||
|
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
foreach ($groups as $key => $group) {
|
||||||
|
if ($group['id_grupo'] == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (($group['id_grupo'] == $parent) && ($group['propagate'] || !$onlyPropagate)) {
|
||||||
|
$return = $return + array($group['id_grupo'] => $group) + get_parents($group['parent'], $groups);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check access privileges to resources
|
* Check access privileges to resources
|
||||||
@ -82,14 +133,43 @@ function check_acl ($id_user, $id_group, $access) {
|
|||||||
} else {
|
} else {
|
||||||
$id_group = (int) $id_group;
|
$id_group = (int) $id_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parents_id = array($id_group);
|
||||||
|
if ($id_group != 0) {
|
||||||
|
$group = get_db_row_filter('tgrupo', array('id_grupo' => $id_group));
|
||||||
|
$parents = get_parents($group['parent'], true);
|
||||||
|
|
||||||
|
foreach ($parents as $parent) {
|
||||||
|
$parents_id[] = $parent['id_grupo'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$parents_id = array();
|
||||||
|
}
|
||||||
|
|
||||||
//Joined multiple queries into one. That saves on the query overhead and query cache.
|
//Joined multiple queries into one. That saves on the query overhead and query cache.
|
||||||
if ($id_group == 0) {
|
if ($id_group == 0) {
|
||||||
$query = sprintf("SELECT tperfil.incident_view,tperfil.incident_edit,tperfil.incident_management,tperfil.agent_view,tperfil.agent_edit,tperfil.alert_edit,tperfil.alert_management,tperfil.pandora_management,tperfil.db_management,tperfil.user_management FROM tusuario_perfil,tperfil WHERE tusuario_perfil.id_perfil = tperfil.id_perfil AND tusuario_perfil.id_usuario = '%s'", $id_user);
|
$query = sprintf("SELECT tperfil.incident_view, tperfil.incident_edit,
|
||||||
|
tperfil.incident_management, tperfil.agent_view,
|
||||||
|
tperfil.agent_edit, tperfil.alert_edit,
|
||||||
|
tperfil.alert_management, tperfil.pandora_management,
|
||||||
|
tperfil.db_management, tperfil.user_management
|
||||||
|
FROM tusuario_perfil, tperfil
|
||||||
|
WHERE tusuario_perfil.id_perfil = tperfil.id_perfil
|
||||||
|
AND tusuario_perfil.id_usuario = '%s'", $id_user);
|
||||||
//GroupID = 0, group id doesnt matter (use with caution!)
|
//GroupID = 0, group id doesnt matter (use with caution!)
|
||||||
} else {
|
}
|
||||||
$query = sprintf("SELECT tperfil.incident_view,tperfil.incident_edit,tperfil.incident_management,tperfil.agent_view,tperfil.agent_edit,tperfil.alert_edit,tperfil.alert_management,tperfil.pandora_management,tperfil.db_management,tperfil.user_management FROM tusuario_perfil,tperfil WHERE tusuario_perfil.id_perfil = tperfil.id_perfil
|
else {
|
||||||
AND tusuario_perfil.id_usuario = '%s' AND (tusuario_perfil.id_grupo = %d OR tusuario_perfil.id_grupo = 0)", $id_user, $id_group);
|
$query = sprintf("SELECT tperfil.incident_view, tperfil.incident_edit,
|
||||||
|
tperfil.incident_management, tperfil.agent_view,
|
||||||
|
tperfil.agent_edit, tperfil.alert_edit,
|
||||||
|
tperfil.alert_management, tperfil.pandora_management,
|
||||||
|
tperfil.db_management, tperfil.user_management
|
||||||
|
FROM tusuario_perfil, tperfil
|
||||||
|
WHERE tusuario_perfil.id_perfil = tperfil.id_perfil
|
||||||
|
AND tusuario_perfil.id_usuario = '%s'
|
||||||
|
AND (tusuario_perfil.id_grupo IN (%s)
|
||||||
|
OR tusuario_perfil.id_grupo = 0)", $id_user, implode(', ', $parents_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
$rowdup = get_db_all_rows_sql ($query);
|
$rowdup = get_db_all_rows_sql ($query);
|
||||||
@ -1399,10 +1479,11 @@ function get_all_model_groups () {
|
|||||||
* @param string User id
|
* @param string User id
|
||||||
* @param string The privilege to evaluate
|
* @param string The privilege to evaluate
|
||||||
* @param boolean $returnAllGroup Flag the return group, by default true.
|
* @param boolean $returnAllGroup Flag the return group, by default true.
|
||||||
|
* @param boolean $returnAllColumns Flag to return all columns of groups.
|
||||||
*
|
*
|
||||||
* @return array A list of the groups the user has certain privileges.
|
* @return array A list of the groups the user has certain privileges.
|
||||||
*/
|
*/
|
||||||
function get_user_groups ($id_user = false, $privilege = "AR", $returnAllGroup = true) {
|
function get_user_groups ($id_user = false, $privilege = "AR", $returnAllGroup = true, $returnAllColumns = false) {
|
||||||
if (empty ($id_user)) {
|
if (empty ($id_user)) {
|
||||||
global $config;
|
global $config;
|
||||||
$id_user = $config['id_user'];
|
$id_user = $config['id_user'];
|
||||||
@ -1414,17 +1495,84 @@ function get_user_groups ($id_user = false, $privilege = "AR", $returnAllGroup =
|
|||||||
if (!$groups)
|
if (!$groups)
|
||||||
return $user_groups;
|
return $user_groups;
|
||||||
|
|
||||||
if ($returnAllGroup) //All group
|
if ($returnAllGroup) { //All group
|
||||||
$user_groups[0] = "All";
|
if ($returnAllColumns) {
|
||||||
|
$groups[0] = array('id_grupo' => 0, 'nombre' => __('All'),
|
||||||
|
'icon' => 'world', 'parent' => 0, 'disabled' => 0,
|
||||||
|
'custom_id' => null, 'propagate' => 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$groups[0] = array('id_grupo' => 0, 'nombre' => __("All"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($groups as $group) {
|
foreach ($groups as $group) {
|
||||||
if (give_acl ($id_user, $group["id_grupo"], $privilege))
|
if (give_acl ($id_user, $group["id_grupo"], $privilege)) {
|
||||||
$user_groups[$group['id_grupo']] = $group['nombre'];
|
if ($returnAllColumns) {
|
||||||
|
$user_groups[$group['id_grupo']] = $group;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$user_groups[$group['id_grupo']] = $group['nombre'];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $user_groups;
|
return $user_groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make with a list of groups a treefied list of groups.
|
||||||
|
*
|
||||||
|
* @param array $groups The list of groups to create the treefield list.
|
||||||
|
* @param integer $parent The id_group of parent actual scan branch.
|
||||||
|
* @param integer $deep The level of profundity in the branch.
|
||||||
|
*
|
||||||
|
* @return array The treefield list of groups.
|
||||||
|
*/
|
||||||
|
function get_user_groups_tree_recursive($groups, $parent = 0, $deep = 0) {
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
foreach ($groups as $key => $group) {
|
||||||
|
if (($key == 0) && ($parent == 0)) { //When the groups is the all group
|
||||||
|
$group['deep'] = $deep;
|
||||||
|
$group['hash_branch'] = true;
|
||||||
|
$deep ++;
|
||||||
|
$return = $return + array($key => $group);
|
||||||
|
}
|
||||||
|
else if ($group['parent'] == $parent) {
|
||||||
|
$group['deep'] = $deep;
|
||||||
|
$branch = get_user_groups_tree_recursive($groups, $key, $deep + 1);
|
||||||
|
if (empty($branch)) {
|
||||||
|
$group['hash_branch'] = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$group['hash_branch'] = true;
|
||||||
|
}
|
||||||
|
$return = $return + array($key => $group) + $branch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the groups a user has reading privileges. Version for tree groups.
|
||||||
|
*
|
||||||
|
* @param string User id
|
||||||
|
* @param string The privilege to evaluate
|
||||||
|
* @param boolean $returnAllGroup Flag the return group, by default true.
|
||||||
|
* @param boolean $returnAllColumns Flag to return all columns of groups.
|
||||||
|
*
|
||||||
|
* @return array A treefield list of the groups the user has certain privileges.
|
||||||
|
*/
|
||||||
|
function get_user_groups_tree($id_user = false, $privilege = "AR", $returnAllGroup = true) {
|
||||||
|
$user_groups = get_user_groups (false, "AR", true, true);
|
||||||
|
|
||||||
|
$user_groups_tree = get_user_groups_tree_recursive($user_groups);
|
||||||
|
|
||||||
|
return $user_groups_tree;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the first group of an user.
|
* Get the first group of an user.
|
||||||
*
|
*
|
||||||
@ -2156,12 +2304,13 @@ function process_sql ($sql, $rettype = "affected_rows", $dbconnection = '', $cac
|
|||||||
*
|
*
|
||||||
* @param string Database table name.
|
* @param string Database table name.
|
||||||
* @param string Field to order by.
|
* @param string Field to order by.
|
||||||
|
* @param string $order The type of order, by default 'ASC'.
|
||||||
*
|
*
|
||||||
* @return mixed A matrix with all the values in the table
|
* @return mixed A matrix with all the values in the table
|
||||||
*/
|
*/
|
||||||
function get_db_all_rows_in_table ($table, $order_field = "") {
|
function get_db_all_rows_in_table ($table, $order_field = "", $order = 'ASC') {
|
||||||
if ($order_field != "") {
|
if ($order_field != "") {
|
||||||
return get_db_all_rows_sql ("SELECT * FROM `".$table."` ORDER BY ".$order_field);
|
return get_db_all_rows_sql ("SELECT * FROM `".$table."` ORDER BY ".$order_field . " " . $order);
|
||||||
} else {
|
} else {
|
||||||
return get_db_all_rows_sql ("SELECT * FROM `".$table."`");
|
return get_db_all_rows_sql ("SELECT * FROM `".$table."`");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user