@hgmnetwork, @markmarco16
Bueno voy a intentar resumir todo de la forma más corta posible. No encontré todo lo que tenia cuando comencé con el addon, pero creo tengo lo suficiente para que se pueda usar (notese que lo módulos que voy a pasar funcionaban en Elastix 2.5 y lo hice hace unos 4 años).
La primera parte es un modulo que permite crear grupos de escuchas a los que luego se les agrega las extensiones y usuarios de Elastix, que tiene su propia BD independiente:
https://gitlab.com/soborno/recording_groups
Es un modulo simple que no es mucho más que un CRUD, luego eso se puede usar en el modulo que quieran (notese que en los DSN que voy a usar, siempre coloco root pero esto solo lo deberian usar como ejemplo y crear un usuario correcto)
Por ejemplo si lo quieren usar en el modulo de monitoring (la lógica es similar para los reportes y el voicemail) harían algo similar a lo siguiente en el index:
...
$dsnS = generarDSNSistema("root","security");
$pDBS = new paloDB($dsnS);
$pMonitoring2 = new paloSantoMonitoring($pDBS);
$extensions = $pMonitoring2->getExtensions($user);
...
Para obtener de esta forma una array $extensions con todas las extensiones que puede escuchar el usuario.
En la clase en el libs, deberían colocar lo siguiente:
function getExtensions($user)
{
$groups = $this->getUserGroups($user);
$where = " ";
$arrParam = array();
$count = false;
foreach($groups as $key=>$value) {
$arrParam[] = $value['group_title'];
if ($count){
$where .= " OR group_title = ?";
}else{
$where .= " group_title = ?";
$count = true;
}
}
$query = "SELECT extension FROM group_extensions WHERE $where ORDER BY extension";
$result=$this->_DB->fetchTable($query, true, $arrParam);
return $result;
}
function getUserGroups($user)
{
$arrParam = array($user);
$query = "SELECT group_title FROM recordings_group WHERE group_user = ? ORDER BY group_title";
$result=$this->_DB->fetchTable($query, true, $arrParam);
return $result;
}
Luego pasan el array $extensions al getNumMonitoring y al getMonitoring, e iteran sobre el dentro de cada método, lo que les va a quedar similar a esto:
...
$count = false;
foreach($extensions as $key=>$value) {
$arrParam[] = $value['extension'];
$arrParam[] = $value['extension'];
if ($count){
$where .= " OR (src=? OR dst=?)";
}else{
$where .= " AND ((src=? OR dst=?)";
$count = true;
}
}
$where .= ")";
...
Notese que depende de que tengan antes es como tienen que manejar el tema de los paréntesis y la variable $count (siempre cambiaba mucho esos métodos en Elastix por lo que es probable esto último haya que modificarlo para que les funcione).
Saludos,
Claudio