Si teniu un SugarCRM Comunity Edition en funcionament, haureu pogut comprovar que els permisos de propietat només et permeten veure i modificar els registres que tenim assignats al propi usuari. Curiosament per cada usuari podem definir un usuari al qui reportar la informació (usuari superior). En aquesta entrada us explicarem quines modificacions s’han de fer a SugarCRM per permetre que els usuaris superiors puguin veure els registres del seus usuaris inferiors. Tot hi que aquesta funcionalitat no està a l’altura de la gestió d’Equips de treball de la versió de pagament, pot solucionar la problemàtica de compartir registres amb altres usuaris per a instal·lacions on la jerarquia es d’un sol nivell.
Per a aplicar aquesta funcionalitat hem de modificar el fitxer data/SugarBean.php , concretament hem de canviar la funció isOwner i la funció getOwnerWhere.
El codi de les funcions l’hem de deixar de la següent forma:
function isOwner($user_id)
{
//if we don’t have an id we must be the owner as we are creating it
if(!isset($this->id))
{
return true;
}
$users=array();
$users[]=$user_id;
$res = $this->db->query(“select id from users where reports_to_id = ‘$user_id'”);
while($row = $this->db->fetchByAssoc($res))
$users[]=$row[‘id’];
//if there is an assigned_user that is the owner
if(isset($this->assigned_user_id))
{
if(in_array($this->assigned_user_id,$users)) return true;
return false;
}
else
{
//other wise if there is a created_by that is the owner
if(isset($this->created_by) && in_array($this->created_by,$users))
{
return true;
}
}
return false;
}
function getOwnerWhere($user_id)
{
if(isset($this->field_defs[‘assigned_user_id’]))
{
return ” $this->table_name.assigned_user_id =’$user_id’ or $this->table_name.assigned_user_id in (select id from users where reports_to_id = ‘$user_id’) “;
}
if(isset($this->field_defs[‘created_by’]))
{
return ” $this->table_name.created_by =’$user_id’ or $this->table_name.created_by in (select id from users where reports_to_id = ‘$user_id’) “;
}
return ”;
}
He marcat en negreta aquelles línies que són diferents de les originals de SugarCRM.
Cal tenir en compte que aquest canvi serà sobrescrit quan fem una actualització de SugarCRM, així que l’haurem d’aplicar cada vegada que actualizem a una nova versió.