Merge branch '1749-Sistema_cache_de_acls_de_la_consola_2' into 'develop'

fixed error acl perm PM in view agent

See merge request artica/pandorafms!1289
This commit is contained in:
vgilc 2018-02-12 11:25:37 +01:00
commit bfdcf168bc

View File

@ -343,7 +343,6 @@ if($os != 0){
// Show only selected groups // Show only selected groups
if ($ag_group > 0) { if ($ag_group > 0) {
$ag_groups = array(); $ag_groups = array();
$ag_groups = (array)$ag_group; $ag_groups = (array)$ag_group;
if ($recursion) { if ($recursion) {
@ -391,107 +390,58 @@ if ($ag_group > 0) {
$total_agents = db_get_sql ($sql_total); $total_agents = db_get_sql ($sql_total);
} }
else { else {
// Concatenate AW and AD permisions to get all the possible groups where the user can manage
$user_groupsAW = users_get_groups ($config['id_user'], 'AW');
$user_groupsAD = users_get_groups ($config['id_user'], 'AD');
// Admin user get ANY group, even if they doesnt exist $user_groups = $user_groupsAW + $user_groupsAD;
if (check_acl ($config['id_user'], 0, "PM")) {
$sql = sprintf ('SELECT COUNT(*)
$sql = sprintf ('SELECT COUNT(*) FROM tagente WHERE 1=1 %s', $search_sql); FROM tagente
$total_agents = db_get_sql ($sql); WHERE id_grupo IN (%s)
switch ($config["dbtype"]) { %s',
case "mysql": implode (',', array_keys ($user_groups)),
$order['field2'] = ""; $search_sql);
/*
$sql = sprintf ('SELECT * $total_agents = db_get_sql ($sql);
FROM tagente
WHERE 1=1 switch ($config["dbtype"]) {
%s case "mysql":
ORDER BY %s %s, %s %s LIMIT %d, %d', $search_sql, $order['field'],$order['order'], $order['field2'], $sql = sprintf ('SELECT *
$order['order'], $offset, $config["block_size"]); FROM tagente
*/ WHERE id_grupo IN (%s)
$sql = sprintf ('SELECT * %s
FROM tagente ORDER BY %s %s, %s %s
WHERE 1=1 LIMIT %d, %d',
%s implode (',', array_keys ($user_groups)),
ORDER BY %s %s %s LIMIT %d, %d', $search_sql, $order['field'], $order['field2'], $search_sql, $order['field'],$order['order'], $order['field2'], $order['order'], $offset, $config["block_size"]);
$order['order'], $offset, $config["block_size"]); break;
break; case "postgresql":
case "postgresql": $sql = sprintf ('SELECT *
$sql = sprintf ('SELECT * FROM tagente
FROM tagente WHERE id_grupo IN (%s)
WHERE 1=1 %s
%s ORDER BY %s %s, %s %s
ORDER BY %s %s, %s %s LIMIT %d OFFSET %d', $search_sql, $order['field'],$order['order'], $order['field2'], LIMIT %d OFFSET %d',
$order['order'], $config["block_size"], $offset); implode (',', array_keys ($user_groups)),
break; $search_sql, $order['field'],$order['order'], $order['field2'], $order['order'], $config["block_size"], $offset);
case "oracle": break;
$set = array (); case "oracle":
$set['limit'] = $config["block_size"]; $set = array ();
$set['offset'] = $offset; $set['limit'] = $config["block_size"];
$sql = sprintf ('SELECT * $set['offset'] = $offset;
FROM tagente $sql = sprintf ('SELECT *
WHERE 1=1 FROM tagente
%s WHERE id_grupo IN (%s)
ORDER BY %s %s, %s %s', $search_sql, $order['field'],$order['order'], $order['field2'], $order['order']); %s
$sql = oracle_recode_query ($sql, $set); ORDER BY %s %s, %s %s',
break; implode (',', array_keys ($user_groups)),
} $search_sql, $order['field'],$order['order'], $order['field2'], $order['order']);
} $sql = oracle_recode_query ($sql, $set);
else { break;
// Concatenate AW and AD permisions to get all the possible groups where the user can manage
$user_groupsAW = users_get_groups ($config['id_user'], 'AW');
$user_groupsAD = users_get_groups ($config['id_user'], 'AD');
$user_groups = $user_groupsAW + $user_groupsAD;
$sql = sprintf ('SELECT COUNT(*)
FROM tagente
WHERE id_grupo IN (%s)
%s',
implode (',', array_keys ($user_groups)),
$search_sql);
$total_agents = db_get_sql ($sql);
switch ($config["dbtype"]) {
case "mysql":
$sql = sprintf ('SELECT *
FROM tagente
WHERE id_grupo IN (%s)
%s
ORDER BY %s %s, %s %s
LIMIT %d, %d',
implode (',', array_keys ($user_groups)),
$search_sql, $order['field'],$order['order'], $order['field2'], $order['order'], $offset, $config["block_size"]);
break;
case "postgresql":
$sql = sprintf ('SELECT *
FROM tagente
WHERE id_grupo IN (%s)
%s
ORDER BY %s %s, %s %s
LIMIT %d OFFSET %d',
implode (',', array_keys ($user_groups)),
$search_sql, $order['field'],$order['order'], $order['field2'], $order['order'], $config["block_size"], $offset);
break;
case "oracle":
$set = array ();
$set['limit'] = $config["block_size"];
$set['offset'] = $offset;
$sql = sprintf ('SELECT *
FROM tagente
WHERE id_grupo IN (%s)
%s
ORDER BY %s %s, %s %s',
implode (',', array_keys ($user_groups)),
$search_sql, $order['field'],$order['order'], $order['field2'], $order['order']);
$sql = oracle_recode_query ($sql, $set);
break;
}
} }
} }
$agents = db_get_all_rows_sql ($sql); $agents = db_get_all_rows_sql ($sql);
// Delete rnum row generated by oracle_recode_query() function // Delete rnum row generated by oracle_recode_query() function