function reportDHCP_Configuration($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf) { $pDHCP_Configuration = new paloSantoDHCP_Configuration($pDB); $filter_field = getParameter("filter_field"); $filter_value = getParameter("filter_value"); $action = getParameter("nav"); $start = getParameter("start"); //begin grid parameters $oGrid = new paloSantoGrid($smarty); $nameOpt = array("hostname" => _tr('Host Name'), "ipaddress" => _tr('IP Address'), "macaddress" => _tr('MAC Address')); if (isset($nameOpt[$filter_field])) { $valorFiltro = $nameOpt[$filter_field]; } else { $valorFiltro = ""; } $oGrid->addFilterControl(_tr("Filter applied ") . " " . $valorFiltro . " = {$filter_value}", $_POST, array("filter_field" => "hostname", "filter_value" => "")); $totalDHCP_Configuration = $pDHCP_Configuration->contarIpFijas($filter_field, $filter_value); $oGrid->addNew("new_dhcpconft", _tr("Assign IP Address")); $oGrid->deleteList("Are you sure you wish to delete the DHCP configuration.", "delete_dhcpConf", _tr("Delete")); $limit = 20; $total = $totalDHCP_Configuration; $oGrid->setLimit($limit); $oGrid->setTotal($total); $oGrid->calculatePagination($action, $start); $offset = $oGrid->getOffsetValue(); $end = $oGrid->getEnd(); $arrData = null; $arrResult = $pDHCP_Configuration->leerIPsFijas($limit, $offset, $filter_field, $filter_value); if (is_array($arrResult) && $total > 0) { foreach ($arrResult as $key => $value) { $arrTmp[0] = "<input type='checkbox' name='DhcpConfID_{$value['id']}' />"; $arrTmp[1] = "<a href='?menu={$module_name}&action=view_dhcpconf&id=" . $value['id'] . "'>" . $value['hostname'] . "</a>"; $arrTmp[2] = $value['ipaddress']; $arrTmp[3] = $value['macaddress']; $arrData[] = $arrTmp; } } $buttonDelete = ""; $arrGrid = array("title" => _tr('Assign IP Address to Host'), "icon" => "web/apps/{$module_name}/images/system_network_assign_ip_address.png", "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, "url" => array('menu' => $module_name, 'filter_field' => $filter_field, 'filter_value' => $filter_value), "columns" => array(0 => array("name" => $buttonDelete, "property1" => ""), 1 => array("name" => _tr('Host Name'), "property1" => ""), 2 => array("name" => _tr('IP Address'), "property1" => ""), 3 => array("name" => _tr('MAC Address'), "property1" => ""))); //begin section filter $arrFormFilterDHCP_Configuration = createFieldFilter(); $oFilterForm = new paloForm($smarty, $arrFormFilterDHCP_Configuration); $smarty->assign("SHOW", _tr('Show')); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //end section filter $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData); //end grid parameters return $contenidoModulo; }
function reportIVR($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $pORGZ = new paloSantoOrganization($pDB); $domain = getParameter("organization"); $name = getParameter("name"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != 'superadmin') { $domain = $credentials['domain']; } $url['menu'] = $module_name; $url['organization'] = $domain; $url['name'] = $name; if ($credentials['userlevel'] == "superadmin") { if (isset($domain) && $domain != "all") { $pIVR = new paloIvrPBX($pDB, $domain); } else { $pIVR = new paloIvrPBX($pDB, ""); } $total = $pIVR->getTotalIvr($domain, $name); $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } else { $arrOrgz = array(); $pIVR = new paloIvrPBX($pDB, $domain); $total = $pIVR->getTotalIvr($domain, $name); } if ($total === false) { $error = $pIVR->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('Ivrs List')); $oGrid->setUrl($url); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); if ($credentials['userlevel'] == "superadmin") { $arrColumns[] = _tr("Organization"); } $arrColumns[] = _tr("Ivr Name"); $arrColumns[] = _tr("Timeout"); $arrColumns[] = _tr("Enable Call Extensions"); $arrColumns[] = _tr("# Loops"); $oGrid->setColumns($arrColumns); $arrData = array(); $arrIVR = array(); if ($total != 0) { $arrIVR = $pIVR->getIvrs($domain, $name, $limit, $offset); } if ($arrIVR === false) { $error = _tr("Error getting ivr data.") . $pIVR->errMsg; } else { foreach ($arrIVR as $ivr) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$ivr['organization_domain']]; } $arrTmp[] = " <a href='?menu={$module_name}&action=view&id_ivr=" . $ivr['id'] . "&organization={$ivr["organization_domain"]}'>" . htmlentities($ivr["name"], ENT_QUOTES, "UTF-8") . "</a>"; $arrTmp[] = $ivr["timeout"]; $arrTmp[] = $ivr["directdial"]; $arrTmp[] = $ivr["loops"]; $arrData[] = $arrTmp; } } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("Create New IVR"), array_slice($arrOrgz, 1), $selected = null, "create_ivr", $onchange_select = null); } else { $oGrid->addNew("create_ivr", _tr("Create New IVR")); } } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => _tr("all")), true); } $_POST["name"] = $name; //ivr name $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Name") . " = " . $name, $_POST, array("name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function listPackages($smarty, $module_name, $local_templates_dir, $arrConf) { $oPackages = new PaloSantoPackages($arrConf['ruta_yum']); $submitInstalado = getParameter('submitInstalado'); $nombre_paquete = getParameter('nombre_paquete'); $smarty->assign(array('module_name' => $module_name, 'RepositoriesUpdate' => _tr('Repositories Update'), 'Search' => _tr('Search'), 'UpdatingRepositories' => _tr('Updating Repositories'), 'InstallPackage' => _tr('Installing Package'), 'UpdatePackage' => _tr('Updating Package'), 'accionEnProceso' => _tr('There is an action in process'), 'msgConfirmDelete' => _tr('You will uninstall package along with everything what it depends on it. System can lose important functionalities or become unstable! Are you sure want to Uninstall?'), 'msgConfirmInstall' => _tr('Are you sure want to Install this package?'), 'UninstallPackage' => _tr('Uninstalling Package'), 'msgConfirmUpdate' => _tr('Are you sure want to Update this package?'))); $arrPaquetes = $oPackages->listarPaquetes($submitInstalado == 'all' ? 'all' : 'installed', $nombre_paquete); if ($oPackages->bActualizar) { $smarty->assign("mb_title", _tr("Message")); $smarty->assign("mb_message", _tr("The repositories are not up to date. Click on the") . " <b>\"" . _tr('Repositories Update') . "\"</b> " . _tr("button to list all available packages.")); } // Pagination $limit = 20; $total = count($arrPaquetes); $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $oGrid->getEnd(); $arrPaquetes = array_slice($arrPaquetes, $offset, $limit); $arrData = array(); foreach ($arrPaquetes as $paquete) { $packageActions = array(); $tmpPaquete = $paquete['name'] . '.' . $paquete['arch']; if ($paquete['canupdate']) { $packageActions[] = "<a href='#' onclick=" . "confirmUpdate('{$tmpPaquete}')" . ">[" . _tr('Update') . "]</a>"; } if (is_null($paquete['version'])) { $packageActions[] = "<a href='#' onclick=" . "installaPackage('{$tmpPaquete}',0)" . ">[" . _tr('Install') . "]</a>"; } else { $packageActions[] = "<a href='#' onclick=" . "confirmDelete('{$tmpPaquete}')" . ">[" . _tr('Uninstall') . "]</a>"; } $rowData = array($paquete['name'], $paquete['arch'], $paquete['summary'], is_null($paquete['version']) ? _tr('(not installed)') : $paquete['version'] . '-' . $paquete['release'], is_null($paquete['latestversion']) ? _tr('(not available)') : $paquete['latestversion'] . '-' . $paquete['latestrelease'], $paquete['repo'], implode(' ', $packageActions)); if ($paquete['canupdate']) { $rowData[0] = '<b>' . $rowData[0] . '</b>'; $rowData[4] = '<b>' . $rowData[4] . '</b>'; } $arrData[] = $rowData; } $url = array('menu' => $module_name, 'submitInstalado' => $submitInstalado, 'nombre_paquete' => $nombre_paquete); $arrGrid = array("title" => _tr('Packages'), "icon" => "web/apps/{$module_name}/images/system_updates_packages.png", "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, "url" => $url, "columns" => array(array("name" => _tr("Package Name")), array("name" => _tr("Architecture")), array("name" => _tr("Package Info")), array('name' => _tr('Current Version')), array('name' => _tr('Available Version')), array("name" => _tr("Repositor Place")), array("name" => _tr("Status")))); /*Inicio Parte del Filtro*/ $arrFilter = filterField(); $oFilterForm = new paloForm($smarty, $arrFilter); if (getParameter('submitInstalado') == 'all') { $arrFilter["submitInstalado"] = 'all'; $tipoPaquete = _tr('All Package'); } else { $arrFilter["submitInstalado"] = 'installed'; $tipoPaquete = _tr('Package Installed'); } $arrFilter["nombre_paquete"] = $nombre_paquete; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Status") . " = {$tipoPaquete}", $arrFilter, array("submitInstalado" => "installed"), true); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Name") . " = {$nombre_paquete}", $arrFilter, array("nombre_paquete" => "")); $oGrid->addButtonAction('update_repositorios', _tr('Repositories Update'), null, 'mostrarReloj()'); $oGrid->showFilter($oFilterForm->fetchForm("{$local_templates_dir}/new.tpl", '', $arrFilter)); return $oGrid->fetchGrid($arrGrid, $arrData); }
function listRepositories($smarty, $module_name, $local_templates_dir, $arrConf) { global $arrLang; $oRepositories = new PaloSantoRepositories(); $arrReposActivos = array(); $typeRepository = getParameter("typeRepository"); if (isset($_POST['submit_aceptar'])) { foreach ($_POST as $key => $value) { if (substr($key, 0, 5) == 'repo-') { $arrReposActivos[] = substr($key, 5); } } $oRepositories->setRepositorios($arrConf['ruta_repos'], $arrReposActivos, $typeRepository, $arrConf["main_repos"]); } $option["main"] = ""; $option["others"] = ""; $option["all"] = ""; $arrRepositorios = $oRepositories->getRepositorios($arrConf['ruta_repos'], $typeRepository, $arrConf["main_repos"]); $limit = 40; $total = count($arrRepositorios); $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $oGrid->getEnd(); $arrData = array(); $version = $oRepositories->obtenerVersionDistro(); $arch = $oRepositories->obtenerArquitectura(); // print($arch); if (is_array($arrRepositorios)) { for ($i = $offset; $i < $end; $i++) { $activo = ""; if ($arrRepositorios[$i]['activo']) { $activo = "checked='checked'"; } $arrData[] = array("<input {$activo} name='repo-" . $arrRepositorios[$i]['id'] . "' type='checkbox' id='repo-{$i}' />", $valor = str_replace(array("\$releasever", "\$basearch"), array($version, $arch), $arrRepositorios[$i]['name'])); } } if (isset($typeRepository)) { $oGrid->setURL("?menu={$module_name}&typeRepository={$typeRepository}"); $_POST["typeRepository"] = $typeRepository; } else { $oGrid->setURL("?menu={$module_name}"); $_POST["typeRepository"] = "main"; } $arrGrid = array("title" => $arrLang["Repositories"], "icon" => "modules/repositories/images/system_updates_repositories.png", "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, "columns" => array(0 => array("name" => $arrLang["Active"], "property1" => ""), 1 => array("name" => $arrLang["Name"], "property1" => ""))); $oGrid->customAction('submit_aceptar', _tr('Save/Update')); $oGrid->addButtonAction("default", _tr('Default'), null, "defaultValues({$total},'{$version}','{$arch}')"); $FilterForm = new paloForm($smarty, createFilter()); $arrOpt = array("main" => _tr('Main'), "others" => _tr('Others'), "all" => _tr('All')); if (isset($arrOpt[$typeRepository])) { $valorfiltro = $arrOpt[$typeRepository]; } else { $valorfiltro = _tr('Main'); } $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Repo") . " = " . $valorfiltro, $_POST, array("typeRepository" => "main"), true); $htmlFilter = $FilterForm->fetchForm("{$local_templates_dir}/new.tpl", "", $_POST); $oGrid->showFilter($htmlFilter); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); return $contenidoModulo; }
function reportTG($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $pORGZ = new paloSantoOrganization($pDB); $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $name = getParameter('name'); $url['menu'] = $module_name; $url['organization'] = $domain; $url['name'] = $name; //name $pTG = new paloSantoTG($pDB, $domain); $total = $pTG->getNumTG($domain, $name); $arrOrgz = array(); if ($credentials['userlevel'] == "superadmin") { $arrOrgz = array("all" => "all"); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } if ($total === false) { $error = $pTG->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('Time Groups List')); //$oGrid->setIcon('url de la imagen'); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); $arrColum = array(); if ($credentials['userlevel'] == "superadmin") { $arrColum[] = _tr("Organization"); } $arrColum[] = _tr("Name"); $oGrid->setColumns($arrColum); $arrTG = array(); $arrData = array(); if ($total != 0) { $arrTG = $pTG->getTGs($domain, $name, $limit, $offset); } if ($arrTG === false) { $error = _tr("Error to obtain Time Groups") . $pTG->errMsg; $arrTG = array(); } $arrData = array(); foreach ($arrTG as $tg) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$tg["organization_domain"]]; } $arrTmp[] = " <a href='?menu={$module_name}&action=edit&id_tg=" . $tg['id'] . "&organization={$tg['organization_domain']}'>" . $tg['name'] . "</a>"; $arrData[] = $arrTmp; } if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("ADD Time Group"), array_slice($arrOrgz, 1), $selected = null, "create_tg", $onchange_select = null); } else { $oGrid->addNew("create_tg", _tr("ADD Time Group")); } } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["name"] = $name; // name $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Time Condition Group") . " = " . $name, $_POST, array("name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function report_adress_book($smarty, $module_name, $local_templates_dir, $pDB, $pDB_2, $arrLang, $arrConf, $dsn_agi_manager, $dsnAsterisk) { $padress_book = new paloAdressBook($pDB); $pACL = new paloACL($pDB_2); $user = $_SESSION["elastix_user"]; $id_user = $pACL->getIdUser($user); $extension = $pACL->getUserExtension($user); if (is_null($extension) || $extension == "") { if ($pACL->isUserAdministratorGroup($user)) { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", "<b>" . $arrLang["You don't have extension number associated with user"] . "</b>"); } else { $smarty->assign("mb_message", "<b>" . $arrLang["contact_admin"] . "</b>"); } } if (getParameter('select_directory_type') != null && getParameter('select_directory_type') == 'external') { $smarty->assign("external_sel", 'selected=selected'); $directory_type = 'external'; } else { $smarty->assign("internal_sel", 'selected=selected'); $directory_type = 'internal'; } $_POST['select_directory_type'] = $directory_type; $arrComboElements = array("name" => $arrLang["Name"], "telefono" => $arrLang["Phone Number"]); if ($directory_type == 'external') { $arrComboElements["last_name"] = $arrLang["Last Name"]; } $arrFormElements = array("field" => array("LABEL" => $arrLang["Filter"], "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $arrComboElements, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""), "pattern" => array("LABEL" => "", "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", "INPUT_EXTRA_PARAM" => "", "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "", "INPUT_EXTRA_PARAM" => array('id' => 'filter_value'))); $oFilterForm = new paloForm($smarty, $arrFormElements); $smarty->assign("SHOW", $arrLang["Show"]); $smarty->assign("NEW_adress_book", $arrLang["New Contact"]); $smarty->assign("CSV", $arrLang["CSV"]); $smarty->assign("module_name", $module_name); $smarty->assign("Phone_Directory", $arrLang["Phone Directory"]); $smarty->assign("Internal", $arrLang["Internal"]); $smarty->assign("External", $arrLang["External"]); $field = NULL; $pattern = NULL; $namePattern = NULL; $allowSelection = array("name", "telefono", "last_name"); if (isset($_POST['field']) and isset($_POST['pattern']) and $_POST['pattern'] != "") { $field = $_POST['field']; if (!in_array($field, $allowSelection)) { $field = "name"; } $pattern = "%{$_POST['pattern']}%"; $namePattern = $_POST['pattern']; $nameField = $arrComboElements[$field]; } $arrFilter = array("select_directory_type" => $directory_type, "field" => $field, "pattern" => $namePattern); $startDate = $endDate = date("Y-m-d H:i:s"); $oGrid = new paloSantoGrid($smarty); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Phone Directory") . " = {$directory_type} ", $arrFilter, array("select_directory_type" => "internal"), true); $oGrid->addFilterControl(_tr("Filter applied ") . $field . " = {$namePattern}", $arrFilter, array("field" => "name", "pattern" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter_adress_book.tpl", "", $arrFilter); if ($directory_type == 'external') { $total = $padress_book->getAddressBook(NULL, NULL, $field, $pattern, TRUE, $id_user); } else { $total = $padress_book->getDeviceFreePBX($dsnAsterisk, NULL, NULL, $field, $pattern, TRUE); } $total_datos = $total[0]["total"]; //Paginacion $limit = 20; $total = $total_datos; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $inicio = $total == 0 ? 0 : $offset + 1; $end = $offset + $limit <= $total ? $offset + $limit : $total; //Fin Paginacion if ($directory_type == 'external') { $arrResult = $padress_book->getAddressBook($limit, $offset, $field, $pattern, FALSE, $id_user); } else { $arrResult = $padress_book->getDeviceFreePBX($dsnAsterisk, $limit, $offset, $field, $pattern); } $arrData = null; //echo print_r($arrResult,true); if (is_array($arrResult) && $total > 0) { $arrMails = array(); $typeContact = ""; if ($directory_type == 'internal') { $arrMails = $padress_book->getMailsFromVoicemail(); } foreach ($arrResult as $key => $adress_book) { if ($directory_type == 'external') { $exten = explode(".", $adress_book["picture"]); if (isset($exten[count($exten) - 1])) { $exten = $exten[count($exten) - 1]; } $picture = "/var/www/address_book_images/{$adress_book['id']}_Thumbnail.{$exten}"; if (file_exists($picture)) { $arrTmp[1] = "<a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img alt='image' border='0' src='index.php?menu={$module_name}&action=getImage&idPhoto={$adress_book['id']}&thumbnail=yes&rawmode=yes'/></a>"; } else { $defaultPicture = "modules/{$module_name}/images/Icon-user_Thumbnail.png"; $arrTmp[1] = "<a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img border='0' alt='image' src='{$defaultPicture}'/></a>"; } } $arrTmp[0] = $directory_type == 'external' ? "<input type='checkbox' name='contact_{$adress_book['id']}' />" : ''; if ($directory_type == 'external') { $email = $adress_book['email']; if ($adress_book['status'] == 'isPublic') { if ($id_user == $adress_book['iduser']) { $typeContact = "<div><div style='float: left;'><a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img alt='public' style='padding: 5px;' title='" . $arrLang['Public Contact'] . "' border='0' src='modules/{$module_name}/images/public_edit.png' /></a></div><div style='padding: 16px 0px 0px 5px; text-align:center;'><span style='visibility: hidden;'>" . $arrLang['Public editable'] . "</span></div></div>"; $arrTmp[0] = "<input type='checkbox' name='contact_{$adress_book['id']}' />"; } else { $typeContact = "<div><div style='float: left;'><a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img alt='public' style='padding: 5px;' title='" . $arrLang['Public Contact'] . "' border='0' src='modules/{$module_name}/images/public.png' /></a></div><div style='padding: 16px 0px 0px 5px; text-align:center;'><span style='visibility: hidden;'>" . $arrLang['Public not editable'] . "</span></div></div>"; $arrTmp[0] = ""; } } else { $typeContact = "<div><div style='float: left;'><a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img alt='private' style='padding: 5px;' title='" . $arrLang['Private Contact'] . "' border='0' src='modules/{$module_name}/images/contact.png' /></a></div><div style='padding: 16px 0px 0px 5px; text-align:center;'><span style='visibility: hidden;'>" . $arrLang['Private'] . "</span></div></div>"; } } else { if (isset($arrMails[$adress_book['id']])) { $email = $arrMails[$adress_book['id']]; $typeContact = "<div><div style='float: left;'><img alt='public' title='" . $arrLang['Public Contact'] . "' src='modules/{$module_name}/images/public.png' /></div><div style='padding: 16px 0px 0px 5px; text-align:center;'><span style='visibility: hidden;'>" . $arrLang['Public not editable'] . "</span></div></div>"; } else { $email = ''; $typeContact = "<div><div style='float: left;'><img alt='public' title='" . $arrLang['Public Contact'] . "' src='modules/{$module_name}/images/public.png' /></div><div style='padding: 16px 0px 0px 5px; text-align:center;'><span style='visibility: hidden;'>" . $arrLang['Public not editable'] . "</span></div></div>"; } } $arrTmp[2] = $directory_type == 'external' ? "<a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'>" . htmlspecialchars($adress_book['last_name'], ENT_QUOTES, "UTF-8") . " " . htmlspecialchars($adress_book['name'], ENT_QUOTES, "UTF-8") . "</a>" : $adress_book['description']; $arrTmp[3] = $directory_type == 'external' ? $adress_book['telefono'] : $adress_book['id']; $arrTmp[4] = $email; $arrTmp[5] = "<a href='?menu={$module_name}&action=call2phone&id=" . $adress_book['id'] . "&type=" . $directory_type . "'><img border=0 src='/modules/{$module_name}/images/call.png' /></a>"; $arrTmp[6] = "<a href='?menu={$module_name}&action=transfer_call&id=" . $adress_book['id'] . "&type=" . $directory_type . "'>{$arrLang["Transfer"]}</a>"; $arrTmp[7] = $typeContact; $arrData[] = $arrTmp; } } if ($directory_type == 'external') { $name = ""; $picture = $arrLang["picture"]; $oGrid->deleteList(_tr("Are you sure you wish to delete the contact."), "delete", _tr("Delete")); } else { $name = ""; $picture = ""; } $arrGrid = array("title" => $arrLang["Address Book"], "url" => array('menu' => $module_name, 'filter' => $pattern, 'select_directory_type' => $directory_type), "icon" => "modules/{$module_name}/images/address_book.png", "width" => "99%", "start" => $inicio, "end" => $end, "total" => $total, "columns" => array(0 => array("name" => $name, "property1" => ""), 1 => array("name" => $picture, "property1" => ""), 2 => array("name" => $arrLang["Name"], "property1" => ""), 3 => array("name" => $arrLang["Phone Number"], "property1" => ""), 4 => array("name" => $arrLang["Email"], "property1" => ""), 5 => array("name" => $arrLang["Call"], "property1" => ""), 6 => array("name" => $arrLang["Transfer"], "property1" => ""), 7 => array("name" => $arrLang["Type Contact"], "property1" => ""))); $oGrid->addNew("new", _tr("New Contact")); $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); return $contenidoModulo; }
function reportWeakKeys($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf) { $pWeakKeys = new paloSantoWeakKeys($pDB); $filter_field = getParameter("filter_field"); $filter_value = getParameter("filter_value"); //begin grid parameters $oGrid = new paloSantoGrid($smarty); $total = $pWeakKeys->getNumWeakKeys($filter_field, $filter_value); $pDB2 = new paloDB($arrConf['elastix_dsn']['acl']); $pACL = new paloACL($pDB2); $oGrid->enableExport(); // enable csv export. $oGrid->pagingShow(true); // show paging section. $oGrid->setTitle(_tr("Weak Secrets")); $oGrid->setIcon("modules/{$module_name}/images/security_weak_keys.png"); $oGrid->setNameFile_Export(_tr("Weak Secrets")); if ($oGrid->isExportAction()) { $limit = $total; $offset = 0; $bExportation = true; } else { $limit = 30; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $bExportation = false; } $url = array('menu' => $module_name, 'filter_field' => $filter_field, 'filter_value' => $filter_value); $oGrid->setURL($url); $arrResult = $pWeakKeys->getWeakKeys($limit, $offset, $filter_field, $filter_value); $arrData = null; //$arrResult =$pWeakKeys->getWeakKeysChecker(); $arrColumns = array(_tr("Extension"), _tr("Description"), _tr("Status")); $oGrid->setColumns($arrColumns); if (is_array($arrResult) && $total > 0) { foreach ($arrResult as $tech) { foreach ($tech as $key => $value) { $arrTmp[0] = $value['id']; $arrTmp[1] = $value['description']; $mensaje = getMensaje($value['id'], $value['data']); if ($mensaje != "OK" && !$bExportation) { if ($pACL->isUserAdministratorGroup($_SESSION['elastix_user']) || $pACL->getUserExtension($_SESSION['elastix_user']) == $value['id']) { $mensaje = _tr("Weak Key") . ": {$mensaje} <a href='?menu={$module_name}&action=change&id={$value['id']}'>" . _tr("Change Secret") . "</a>"; } } $arrTmp[2] = $mensaje; $arrData[] = $arrTmp; } } } $oGrid->setData($arrData); //begin section filter $arrFormFilterWeakKeys = createFieldFilter(); $oFilterForm = new paloForm($smarty, $arrFormFilterWeakKeys); $smarty->assign("SHOW", _tr("Show")); $_POST["filter_field"] = $filter_field; $_POST["filter_value"] = $filter_value; $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Extension") . " = " . $filter_value, $_POST, array("filter_field" => "extension", "filter_value" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //end section filter $oGrid->showFilter(trim($htmlFilter)); $content = $oGrid->fetchGrid(); //end grid parameters return $content; }
function _moduleContent(&$smarty, $module_name) { require_once "modules/{$module_name}/libs/ringgroup.php"; //include module files include_once "modules/{$module_name}/configs/default.conf.php"; load_language_module($module_name); global $arrConf; global $arrConfModule; $arrConf = array_merge($arrConf, $arrConfModule); //folder path for custom templates $base_dir = dirname($_SERVER['SCRIPT_FILENAME']); $templates_dir = isset($arrConf['templates_dir']) ? $arrConf['templates_dir'] : 'themes'; $local_templates_dir = "{$base_dir}/modules/{$module_name}/" . $templates_dir . '/' . $arrConf['theme']; // DSN para consulta de cdrs $dsn = generarDSNSistema('asteriskuser', 'asteriskcdrdb'); $pDB = new paloDB($dsn); $oCDR = new paloSantoCDR($pDB); $pDBACL = new paloDB($arrConf['elastix_dsn']['acl']); if (!empty($pDBACL->errMsg)) { return "ERROR DE DB: {$pDBACL->errMsg}"; } $pACL = new paloACL($pDBACL); if (!empty($pACL->errMsg)) { return "ERROR DE ACL: {$pACL->errMsg}"; } $exten = '6868'; //$pACL->getUserExtension($_SESSION['elastix_user']); $isAdministrator = true; //$pACL->isUserAdministratorGroup($_SESSION['elastix_user']); if (is_null($exten) || $exten == "") { if (!$isAdministrator) { $smarty->assign('mb_message', "<b>" . _tr("contact_admin") . "</b>"); return ""; } else { $smarty->assign('mb_message', "<b>" . _tr("no_extension") . "</b>"); } } // Para usuarios que no son administradores, se restringe a los CDR de la // propia extensión $sExtension = $isAdministrator ? '' : $pACL->getUserExtension($_SESSION['elastix_user']); // DSN para consulta de ringgroups $dsn_asterisk = generarDSNSistema('asteriskuser', 'asterisk'); $pDB_asterisk = new paloDB($dsn_asterisk); $oRG = new RingGroup($pDB_asterisk); $dataRG = $oRG->getRingGroup(); $dataRG[''] = _tr('(Any ringgroup)'); // Cadenas estáticas en la plantilla $smarty->assign(array("Filter" => _tr("Filter"))); $arrFormElements = array("date_start" => array("LABEL" => _tr("Start Date"), "REQUIRED" => "yes", "INPUT_TYPE" => "DATE", "INPUT_EXTRA_PARAM" => "", "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => "^[[:digit:]]{1,2}[[:space:]]+[[:alnum:]]{3}[[:space:]]+[[:digit:]]{4}\$"), "date_end" => array("LABEL" => _tr("End Date"), "REQUIRED" => "yes", "INPUT_TYPE" => "DATE", "INPUT_EXTRA_PARAM" => "", "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => "^[[:digit:]]{1,2}[[:space:]]+[[:alnum:]]{3}[[:space:]]+[[:digit:]]{4}\$"), "field_name" => array("LABEL" => _tr("Field Name"), "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => array("dst" => _tr("Destination"), "src" => _tr("Source"), "channel" => _tr("Src. Channel"), "accountcode" => _tr("Account Code"), "dstchannel" => _tr("Dst. Channel")), "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => "^(dst|src|channel|dstchannel|accountcode)\$"), "field_pattern" => array("LABEL" => _tr("Field"), "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", "INPUT_EXTRA_PARAM" => "", "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => "^[\\*|[:alnum:]@_\\.,/\\-]+\$"), "status" => array("LABEL" => _tr("Status"), "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => array("ALL" => _tr("ALL"), "ANSWERED" => _tr("ANSWERED"), "BUSY" => _tr("BUSY"), "FAILED" => _tr("FAILED"), "NO ANSWER " => _tr("NO ANSWER")), "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""), "ringgroup" => array("LABEL" => _tr("Ring Group"), "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $dataRG, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "")); $oFilterForm = new paloForm($smarty, $arrFormElements); // Parámetros base y validación de parámetros $url = array('menu' => $module_name); $paramFiltroBase = $paramFiltro = array('date_start' => date("d M Y"), 'date_end' => date("d M Y"), 'field_name' => 'dst', 'field_pattern' => '', 'status' => 'ALL', 'ringgroup' => ''); foreach (array_keys($paramFiltro) as $k) { if (!is_null(getParameter($k))) { $paramFiltro[$k] = getParameter($k); } } $oGrid = new paloSantoGrid($smarty); if ($paramFiltro['date_start'] === "") { $paramFiltro['date_start'] = " "; } if ($paramFiltro['date_end'] === "") { $paramFiltro['date_end'] = " "; } $valueFieldName = $arrFormElements['field_name']["INPUT_EXTRA_PARAM"][$paramFiltro['field_name']]; $valueStatus = $arrFormElements['status']["INPUT_EXTRA_PARAM"][$paramFiltro['status']]; $valueRingGRoup = $arrFormElements['ringgroup']["INPUT_EXTRA_PARAM"][$paramFiltro['ringgroup']]; $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Start Date") . " = " . $paramFiltro['date_start'] . ", " . _tr("End Date") . " = " . $paramFiltro['date_end'], $paramFiltro, array('date_start' => date("d M Y"), 'date_end' => date("d M Y")), true); $oGrid->addFilterControl(_tr("Filter applied: ") . $valueFieldName . " = " . $paramFiltro['field_pattern'], $paramFiltro, array('field_name' => "dst", 'field_pattern' => "")); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Status") . " = " . $valueStatus, $paramFiltro, array('status' => 'ALL'), true); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Ring Group") . " = " . $valueRingGRoup, $paramFiltro, array('ringgroup' => '')); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $paramFiltro); if (!$oFilterForm->validateForm($paramFiltro)) { $smarty->assign(array('mb_title' => _tr('Validation Error'), 'mb_message' => '<b>' . _tr('The following fields contain errors') . ':</b><br/>' . implode(', ', array_keys($oFilterForm->arrErroresValidacion)))); $paramFiltro = $paramFiltroBase; unset($_POST['delete']); // Se aborta el intento de borrar CDRs, si había uno. } // Tradudir fechas a formato ISO para comparación y para API de CDRs. $url = array_merge($url, $paramFiltro); $paramFiltro['date_start'] = translateDate($paramFiltro['date_start']) . ' 00:00:00'; $paramFiltro['date_end'] = translateDate($paramFiltro['date_end']) . ' 23:59:59'; // Valores de filtrado que no se seleccionan mediante filtro if ($sExtension != '') { $paramFiltro['extension'] = $sExtension; } // Ejecutar el borrado, si se ha validado. if (isset($_POST['delete'])) { if ($isAdministrator) { if ($paramFiltro['date_start'] <= $paramFiltro['date_end']) { $r = $oCDR->borrarCDRs($paramFiltro); if (!$r) { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => $oCDR->errMsg)); } } else { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => _tr("Please End Date must be greater than Start Date"))); } } else { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => _tr("Only administrators can delete CDRs"))); } } $oGrid->setTitle(_tr("CDR Report")); $oGrid->pagingShow(true); // show paging section. $oGrid->enableExport(); // enable export. $oGrid->setNameFile_Export(_tr("CDRReport")); $oGrid->setURL($url); //if($isAdministrator) //$oGrid->deleteList("Are you sure you wish to delete CDR(s) Report(s)?","delete",_tr("Delete")); $arrData = null; if (!isset($sExtension) || $sExtension == "" && !$isAdministrator) { $total = 0; } else { $total = $oCDR->contarCDRs($paramFiltro); } if ($oGrid->isExportAction()) { $limit = $total; $offset = 0; $arrColumns = array(_tr("Date"), _tr("Source"), _tr("Ring Group"), _tr("Destination"), _tr("Src. Channel"), _tr("Account Code"), _tr("Dst. Channel"), _tr("Status"), _tr("Duration")); $oGrid->setColumns($arrColumns); $arrResult = $oCDR->listarCDRs($paramFiltro, $limit, $offset); if (is_array($arrResult['cdrs']) && $total > 0) { foreach ($arrResult['cdrs'] as $key => $value) { $arrTmp[0] = date("d-m-Y H:i:s", strtotime($value[0])); $arrTmp[1] = $value[1]; $arrTmp[2] = $value[11]; $arrTmp[3] = $value[3]; $arrTmp[4] = $value[9]; $arrTmp[5] = $value[5]; $iDuracion = $value[8]; $iSec = $iDuracion % 60; $iDuracion = (int) (($iDuracion - $iSec) / 60); $iMin = $iDuracion % 60; $iDuracion = (int) (($iDuracion - $iMin) / 60); $sTiempo = "{$value[6]}s"; if ($value[6] >= 60) { if ($iDuracion > 0) { $sTiempo .= " ({$iDuracion}h {$iMin}m {$iSec}s)"; } elseif ($iMin > 0) { $sTiempo .= " ({$iMin}m {$iSec}s)"; } } $arrTmp[7] = $sTiempo; $arrData[] = $arrTmp; } } if (!is_array($arrResult)) { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => $oCDR->errMsg)); } } else { $limit = 20; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $arrResult = $oCDR->listarCDRs($paramFiltro, $limit, $offset); $arrColumns = array('STT', _tr("Date"), _tr("Source"), _tr("Destination"), _tr("Src. Channel"), _tr("Dst. Channel"), _tr("Status"), _tr("Duration")); $oGrid->setColumns($arrColumns); if (is_array($arrResult['cdrs']) && $total > 0) { $index = 0; foreach ($arrResult['cdrs'] as $key => $value) { $arrTmp[0] = $index; $arrTmp[1] = date("d-m-Y H:i:s", strtotime($value[0])); $arrTmp[2] = $value[1]; $arrTmp[3] = $value[2]; $arrTmp[4] = channel_lookup($pDB_asterisk, $value[3]); $arrTmp[5] = channel_lookup($pDB_asterisk, $value[4]); $arrTmp[6] = $value[5]; $iDuracion = $value[8]; $iSec = $iDuracion % 60; $iDuracion = (int) (($iDuracion - $iSec) / 60); $iMin = $iDuracion % 60; $iDuracion = (int) (($iDuracion - $iMin) / 60); $sTiempo = "{$value[8]}s"; if ($value[7] >= 60) { if ($iDuracion > 0) { $sTiempo .= " ({$iDuracion}h {$iMin}m {$iSec}s)"; } elseif ($iMin > 0) { $sTiempo .= " ({$iMin}m {$iSec}s)"; } } $arrTmp[7] = $sTiempo; $arrData[] = $arrTmp; $index++; } } if (!is_array($arrResult)) { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => $oCDR->errMsg)); } } $oGrid->setData($arrData); $smarty->assign("SHOW", _tr("Show")); $oGrid->showFilter($htmlFilter); $content = $oGrid->fetchGrid(); return $content; }
function reportMonitoring($smarty, $module_name, $local_templates_dir, &$pDB, $pACL, $arrConf, $user, $extension, $esAdministrador) { $pMonitoring = new paloSantoMonitoring($pDB); //var_dump($arrConfg); $pMonitoring->setConfig($arrConf); $filter_field = getParameter("filter_field"); switch ($filter_field) { case "dst": $filter_field = "dst"; $nameFilterField = _tr("Destination"); break; case "userfield": $filter_field = "userfield"; $nameFilterField = _tr("Type"); break; default: $filter_field = "src"; $nameFilterField = _tr("Source"); break; } if ($filter_field == "userfield") { $filter_value = getParameter("filter_value_userfield"); $filter = ""; $filter_userfield = $filter_value; } else { $filter_value = getParameter("filter_value"); $filter = $filter_value; $filter_userfield = ""; } switch ($filter_value) { case "outgoing": $smarty->assign("SELECTED_2", "Selected"); $nameFilterUserfield = _tr("Outgoing"); break; case "queue": $smarty->assign("SELECTED_3", "Selected"); $nameFilterUserfield = _tr("Queue"); break; case "group": $smarty->assign("SELECTED_4", "Selected"); $nameFilterUserfield = _tr("Group"); break; default: $smarty->assign("SELECTED_1", "Selected"); $nameFilterUserfield = _tr("Incoming"); break; } $date_ini = getParameter("date_start"); $date_end = getParameter("date_end"); $path_record = $arrConf['records_dir']; $_POST['date_start'] = isset($date_ini) ? $date_ini : date("d M Y"); $_POST['date_end'] = isset($date_end) ? $date_end : date("d M Y"); if ($date_ini === "") { $_POST['date_start'] = " "; } if ($date_end === "") { $_POST['date_end'] = " "; } if (!empty($pACL->errMsg)) { echo "ERROR DE ACL: {$pACL->errMsg} <br>"; } $date_initial = date('Y-m-d', strtotime($_POST['date_start'])) . " 00:00:00"; $date_final = date('Y-m-d', strtotime($_POST['date_end'])) . " 23:59:59"; $_DATA = $_POST; //begin grid parameters $oGrid = new paloSantoGrid($smarty); $oGrid->setTitle(_tr("Monitoring")); $oGrid->setIcon("modules/{$module_name}/images/pbx_monitoring.png"); $oGrid->pagingShow(true); // show paging section. $oGrid->enableExport(); // enable export. $oGrid->setNameFile_Export(_tr("Monitoring")); if ($esAdministrador) { $totalMonitoring = $pMonitoring->getNumMonitoring($filter_field, $filter_value, null, $date_initial, $date_final); } elseif (!($extension == "" || is_null($extension))) { $totalMonitoring = $pMonitoring->getNumMonitoring($filter_field, $filter_value, $extension, $date_initial, $date_final); } else { $totalMonitoring = 0; } $url = array('menu' => $module_name); $paramFilter = array('filter_field' => $filter_field, 'filter_value' => $filter, 'filter_value_userfield' => $filter_userfield, 'date_start' => $_POST['date_start'], 'date_end' => $_POST['date_end']); $url = array_merge($url, $paramFilter); $oGrid->setURL($url); $arrData = null; if ($oGrid->isExportAction()) { $limit = $totalMonitoring; $offset = 0; $arrColumns = array(_tr("Date"), _tr("Time"), _tr("Source"), _tr("Destination"), _tr("Duration"), _tr("Type"), _tr("File")); $oGrid->setColumns($arrColumns); if ($esAdministrador) { $arrResult = $pMonitoring->getMonitoring($limit, $offset, $filter_field, $filter_value, null, $date_initial, $date_final); } elseif (!($extension == "" || is_null($extension))) { $arrResult = $pMonitoring->getMonitoring($limit, $offset, $filter_field, $filter_value, $extension, $date_initial, $date_final); } else { $arrResult = array(); } if (is_array($arrResult) && $totalMonitoring > 0) { foreach ($arrResult as $key => $value) { $arrTmp[0] = date('d M Y', strtotime($value['calldate'])); $arrTmp[1] = date('H:i:s', strtotime($value['calldate'])); $arrTmp[2] = $value['src']; $arrTmp[3] = $value['dst']; $arrTmp[4] = $value['dstchannel']; $arrTmp[5] = SecToHHMMSS($value['duration']); $file = $value['uniqueid']; $namefile = basename($value['userfield']); $namefile = str_replace("audio:", "", $namefile); if ($namefile == 'deleted') { $arrTmp[6] = _tr('Deleted'); } else { switch ($namefile[0]) { case "O": $arrTmp[6] = _tr("Outgoing"); break; case "g": $arrTmp[6] = _tr("Group"); break; case "q": $arrTmp[6] = _tr("Queue"); break; default: $arrTmp[6] = _tr("Incoming"); break; } } $arrTmp[7] = $namefile; $arrTmp[8] = $value['note']; $arrTmp[9] = $value['delivery_id']; $arrData[] = $arrTmp; } } } else { $limit = 20; $total = $totalMonitoring; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); if ($esAdministrador) { $oGrid->deleteList(_tr("message_alert"), 'submit_eliminar', _tr("Delete")); $buttonDelete = ""; } else { $buttonDelete = ""; } $arrColumns = array($buttonDelete, "Ngày", "Giờ", "Gọi từ", "Gọi đến", "Nhân viên/PSTN", "Thời gian gọi", "Loại", "Ghi âm", "Nội dung", "Giao vé"); $oGrid->setColumns($arrColumns); if ($esAdministrador) { $arrResult = $pMonitoring->getMonitoring($limit, $offset, $filter_field, $filter_value, null, $date_initial, $date_final); } elseif (!($extension == "" || is_null($extension))) { $arrResult = $pMonitoring->getMonitoring($limit, $offset, $filter_field, $filter_value, $extension, $date_initial, $date_final); } else { $arrResult = array(); } if (is_array($arrResult) && $total > 0) { $src = ""; $dst = ""; foreach ($arrResult as $key => $value) { if ($esAdministrador) { $arrTmp[0] = "<input type='checkbox' name='id_" . $value['uniqueid'] . "' />"; } else { $arrTmp[0] = ""; } $arrTmp[1] = date('d M Y', strtotime($value['calldate'])); $arrTmp[2] = date('H:i:s', strtotime($value['calldate'])); if (!isset($value['src']) || $value['src'] == "") { $src = "<font color='gray'>" . _tr("unknown") . "</font>"; } else { $src = $value['src']; } if (!isset($value['dst']) || $value['dst'] == "") { $dst = "<font color='gray'>" . _tr("unknown") . "</font>"; } else { $dst = $value['dst']; } $arrTmp[3] = $src; $arrTmp[4] = $dst; $arrTmp[5] = channel_lookup($pDB, $value['dstchannel']); $arrTmp[6] = "<label title='" . $value['duration'] . " seconds' style='color:green'>" . SecToHHMMSS($value['duration']) . "</label>"; //$file = base64_encode($value['userfield']); $file = $value['uniqueid']; $namefile = basename($value['userfield']); $namefile = str_replace("audio:", "", $namefile); if ($namefile == 'deleted') { $arrTmp[7] = _tr('Deleted'); } else { switch ($namefile[0]) { case "O": $arrTmp[7] = _tr("Outgoing"); break; case "g": $arrTmp[7] = _tr("Group"); break; case "q": $arrTmp[7] = _tr("Queue"); break; default: $arrTmp[7] = _tr("Incoming"); break; } } if ($namefile != 'deleted') { $recordingLink = "<a href=\"javascript:popUp('index.php?menu={$module_name}&action=display_record&id={$file}&namefile={$namefile}&rawmode=yes',350,100);\">" . _tr("Listen") . "</a> "; $recordingLink .= "<a href='?menu={$module_name}&action=download&id={$file}&namefile={$namefile}&rawmode=yes' >" . _tr("Download") . "</a>"; } else { $recordingLink = ''; } $arrTmp[8] = $recordingLink; $arrTmp[9] = is_null($value['note_id']) ? '-' : '<a href="javascript:void(0)" onclick="view_note(\'' . $value['note_id'] . '\')">Xem</a>'; $arrTmp[10] = is_null($value['delivery_id']) ? '-' : '<a href="javascript:void(0)" onclick="view_delivery(\'' . $value['delivery_id'] . '\')">Xem</a>'; $arrData[] = $arrTmp; } } } $oGrid->setData($arrData); //begin section filter $arrFormFilterMonitoring = createFieldFilter(); $oFilterForm = new paloForm($smarty, $arrFormFilterMonitoring); $smarty->assign("INCOMING", _tr("Incoming")); $smarty->assign("OUTGOING", _tr("Outgoing")); $smarty->assign("QUEUE", _tr("Queue")); $smarty->assign("GROUP", _tr("Group")); $smarty->assign("SHOW", _tr("Show")); $_POST["filter_field"] = $filter_field; $_POST["filter_value"] = $filter; $_POST["filter_value_userfield"] = $filter_userfield; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Start Date") . " = " . $paramFilter['date_start'] . ", " . _tr("End Date") . " = " . $paramFilter['date_end'], $paramFilter, array('date_start' => date("d M Y"), 'date_end' => date("d M Y")), true); if ($filter_field == "userfield") { $oGrid->addFilterControl(_tr("Filter applied ") . " {$nameFilterField} = {$nameFilterUserfield}", $_POST, array('filter_field' => "src", 'filter_value_userfield' => "incoming")); } else { $oGrid->addFilterControl(_tr("Filter applied ") . " {$nameFilterField} = {$filter}", $_POST, array('filter_field' => "src", "filter_value" => "")); } $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //end section filter $oGrid->showFilter(trim($htmlFilter)); $content = $oGrid->fetchGrid(); //end grid parameters return $content; }
function showLanguages($smarty, $module_name, $local_templates_dir, $arrLang, $arrLangModule) { //$oPaloSanto = new paloSantoLanguageAdmin(); $pLanguages = new paloSantoLanguageAdmin(); $arrFormElements = array("module" => array("LABEL" => $arrLangModule["Select Module"], "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $pLanguages->leer_directorio_modulos(), "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""), "language" => array("LABEL" => $arrLangModule["Select Language"], "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $pLanguages->leer_directorio_lenguajes(), "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "")); $oFilterForm = new paloForm($smarty, $arrFormElements); $smarty->assign("SHOW", $arrLang["Show"]); $smarty->assign("SAVE_ALL", "Save All"); $module = getParameter("module"); $language = getParameter("language"); $action = getParameter('nav'); $start = getParameter('start'); $smarty->assign("start_value", $start); $smarty->assign("nav_value", $action); $_POST["module"] = $module; $_POST["language"] = $language; $oGrid = new paloSantoGrid($smarty); if (!is_null($module) && !is_null($language)) { $nameModule = $arrFormElements["module"]["INPUT_EXTRA_PARAM"][$module]; $valueLanguage = $arrFormElements["language"]["INPUT_EXTRA_PARAM"][$language]; } else { $nameModule = ""; $valueLanguage = ""; } $oGrid->addFilterControl(_tr("Filter applied: ") . $nameModule . " = " . $valueLanguage, $_POST, array("module" => null, "language" => null)); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //Paginacion $limit = 20; $total_datos = $pLanguages->ObtainNumLanguages($module, $language); $total = $total_datos; $oGrid->addNew("new", _tr("Add")); $oGrid->customAction("save_all", _tr("Save All")); $oGrid->setLimit($limit); $oGrid->setTotal($total); $oGrid->setTitle(_tr("Language Admin")); $oGrid->setIcon("images/list.png"); $oGrid->pagingShow(true); $offset = $oGrid->calculateOffset(); $url = "?menu={$module_name}&module={$module}&language={$language}"; $oGrid->setURL($url); $arrColumns = array(_tr("Key"), _tr("Value")); $oGrid->setColumns($arrColumns); $arrLangMod = $pLanguages->obtainLanguages($limit, $offset, $module, $language); $arrData = array(); $counter = 1; if (is_array($arrLangMod) && count($arrLangMod) > 0) { foreach ($arrLangMod as $key => $value) { $tmpKey = htmlspecialchars($key); $tmpValue = htmlspecialchars($value); $arrTmp[0] = $tmpKey; $arrTmp[1] = "<input class='table_data' style='width:450px' type='text' name=\"langvalue_{$counter}\" id=\"langvalue_{$counter}\" value=\"{$tmpValue}\" /><input type='hidden' name='langkey_{$counter}' id='langkey_{$counter}' value='{$tmpKey}'>"; $counter++; $arrData[] = $arrTmp; } } $oGrid->setData($arrData); $oGrid->showFilter(trim($htmlFilter)); $moduleContent = $oGrid->fetchGrid(); if (strpos($moduleContent, '<form') === FALSE) { $moduleContent = "<form method='POST' style='margin-bottom:0;' action={$url}>{$moduleContent}</form>"; } return $moduleContent; }
function reportOutbound($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials, $reorderRoute = false) { global $arrPermission; $pORGZ = new paloSantoOrganization($pDB); $error = ""; $arrOrgz = array(); $domain = getParameter("organization"); $name = getParameter("name"); // outbound name $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $url['menu'] = $module_name; $url['organization'] = $domain; $url['name'] = $name; if ($credentials['userlevel'] == "superadmin") { if (isset($domain) && $domain != "all") { $pOutbound = new paloSantoOutbound($pDB, $domain); } else { $pOutbound = new paloSantoOutbound($pDB, ""); } $total = $pOutbound->getNumOutbound($domain, $name); $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } else { $pOutbound = new paloSantoOutbound($pDB, $domain); $total = $pOutbound->getNumOutbound($domain, $name); } if ($total === false) { $error = $pOutbound->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $arrGrid = array("title" => _tr('Outbound Routes List'), "url" => $url, "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total); $arrColumns = array(); $arrColumns[] = _tr("Order"); $arrColumns[] = _tr("Route Name"); if ($credentials['userlevel'] == "superadmin") { $arrColumns[] = _tr("Organization"); } $arrColumns[] = _tr("Route CID"); $arrColumns[] = _tr("Route Password"); $arrColumns[] = _tr("Time Group"); $oGrid->setColumns($arrColumns); $arrOutbound = array(); $arrData = array(); if ($total != 0) { $arrOutbound = $pOutbound->getOutbounds($domain, $name, $limit, $offset); } if ($arrOutbound === false) { $error = _tr("Error to obtain outbounds") . $pOutbound->errMsg; $arrOutbound = array(); } $create = in_array('create', $arrPermission); $edit = in_array('edit', $arrPermission); foreach ($arrOutbound as $outbound) { $arrTmp = array(); if ($edit) { $arrTmp[] = fieldOrden($arrOutbound, $outbound["seq"], $outbound["id"], $outbound["organization_domain"]); } else { $arrTmp[] = $outbound["seq"]; } $arrTmp[] = " <a href='?menu=outbound_route&action=view&id_outbound=" . $outbound['id'] . "&organization={$outbound["organization_domain"]}'>" . htmlentities($outbound['routename'], ENT_QUOTES, "UTF-8") . "</a>"; if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$outbound["organization_domain"]]; } $arrTmp[] = $outbound["outcid"]; $arrTmp[] = $outbound["routepass"]; if (isset($outbound["time_group_id"])) { $query = "SELECT name from time_group where id=?"; $result = $pDB->getFirstRowQuery($query, true, array($outbound["time_group_id"])); if ($result != false) { $arrTmp[] = $result["name"]; } else { $arrTmp[] = ""; } } $arrData[] = $arrTmp; } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("ADD Outbound Route"), array_slice($arrOrgz, 1), $selected = null, "create_outbound", $onchange_select = null); } else { $oGrid->addNew("create_outbound", _tr("ADD Outbound Route")); } } if ($credentials['userlevel'] == "superadmin") { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["name"] = $name; //outbound_route name $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Name") . " = " . $name, $_POST, array("name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function reportPuertos($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf) { $pPuertos = new paloSantoPortService($pDB); $field_type = getParameter("filter_type"); $field_pattern = getParameter("filter_txt"); //begin grid parameters $oGrid = new paloSantoGrid($smarty); $oGrid->addNew("new", _tr("Define Port")); $oGrid->deleteList("Are you sure you wish to delete the port(s).?", "delete", _tr("Delete")); $totalPuertos = $pPuertos->ObtainNumPuertos($field_type, $field_pattern); $limit = 20; $total = $totalPuertos; $oGrid->setLimit($limit); $oGrid->setTotal($total); $oGrid->setTitle(_tr("Define Ports")); $oGrid->setIcon("modules/{$module_name}/images/security_define_ports.png"); $oGrid->pagingShow(true); $offset = $oGrid->calculateOffset(); $url = array("menu" => $module_name, "filter_type" => $field_type, "filter_txt" => $field_pattern); $oGrid->setURL($url); $arrData = null; $arrResult = $pPuertos->ObtainPuertos($limit, $offset, $field_type, $field_pattern); $button_eliminar = ""; $arrColumns = array($button_eliminar, _tr("Name"), _tr("Protocol"), _tr("Details"), _tr("Option")); $oGrid->setColumns($arrColumns); if (is_array($arrResult) && $total > 0) { foreach ($arrResult as $key => $value) { $arrTmp[0] = "<input type='checkbox' name='" . $value['id'] . "' id='" . $value['id'] . "'>"; $arrTmp[1] = $value['name']; $arrTmp[2] = $value['protocol']; if ($value['protocol'] == "TCP" || $value['protocol'] == "UDP") { $port = $value['details']; $arrTmp[3] = stripos($port, ":") === false ? _tr('Port') . " " . $value['details'] : _tr('Ports') . " " . $value['details']; } elseif ($value['protocol'] == "ICMP") { $arr = explode(":", $value['details']); if (isset($arr[1])) { $arrTmp[3] = "Type: " . $arr[0] . " Code: " . $arr[1]; } } else { $arrTmp[3] = "Protocol Number: " . $value['details']; } $arrTmp[4] = " <a href='?menu={$module_name}&action=view&id=" . $value['id'] . "'>" . _tr('View') . "</a>"; $arrData[] = $arrTmp; } } $oGrid->setData($arrData); //begin section filter $arrFormFilterPuertos = createFieldForm(); $oFilterForm = new paloForm($smarty, $arrFormFilterPuertos); $smarty->assign("SHOW", _tr("Show")); $_POST["filter_type"] = $field_type; $_POST["filter_txt"] = $field_pattern; if (is_null($field_type) || $field_type == "") { $nameFieldType = ""; } else { $nameFieldType = $arrFormFilterPuertos["filter_type"]["INPUT_EXTRA_PARAM"][$field_type]; } $oGrid->addFilterControl(_tr("Filter applied: ") . $nameFieldType . " = " . $field_pattern, $_POST, array("filter_type" => "name", "filter_txt" => "x")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //end section filter $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid(); if (strpos($contenidoModulo, '<form') === FALSE) { $contenidoModulo = "<form method='POST' style='margin-bottom:0;' action={$url}>{$contenidoModulo}</form>"; } //end grid parameters return $contenidoModulo; }
function reportExten($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $pExten = new paloSantoExtensions($pDB); $pORGZ = new paloSantoOrganization($pDB); $error = ''; $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $extension = getParameter("extension"); if (isset($extension) && $extension != '') { $pPBX = new paloAsteriskDB($pDB); $expression = $pPBX->getRegexPatternFromAsteriskPattern($extension); if ($expression === false) { $extension = ''; } } $url['menu'] = $module_name; $url['organization'] = $domain; $url['extension'] = $extension; $total = $pExten->getNumExtensions($domain, $extension); $arrOrgz = array(); if ($credentials['userlevel'] == "superadmin") { $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } if ($total === false) { $error = $pExten->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('Extensions List')); //$oGrid->setIcon('url de la imagen'); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); if ($credentials['userlevel'] == "superadmin") { $arrColum[] = _tr("Organization"); } $arrColum[] = _tr("Extension"); $arrColum[] = _tr("Caller ID"); $arrColum[] = _tr("Technology"); $arrColum[] = _tr("Device"); $arrColum[] = _tr("Context"); $arrColum[] = _tr("User"); $arrColum[] = _tr("Voicemail"); $arrColum[] = _tr("Recording In") . " / " . _tr("Recording Out"); $oGrid->setColumns($arrColum); $arrExtens = array(); $arrData = array(); if ($total != 0) { $arrExtens = $pExten->getExtensions($domain, $extension, $limit, $offset); } if ($arrExtens === false) { $error = _tr("Error to obtain extensions") . $pExten->errMsg; $arrExtens = array(); } else { foreach ($arrExtens as $exten) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$exten["organization_domain"]]; } $arrTmp[] = " <a href='?menu=extensions&action=view&id_exten=" . $exten['id'] . "&organization={$exten['organization_domain']}'>" . $exten["exten"] . "</a>"; $arrTmp[] = $exten['clid_name'] . " <{$exten['clid_number']}>"; $arrTmp[] = strtoupper($exten['tech']); $arrTmp[] = $exten['device']; $arrTmp[] = $exten['context']; $query = "Select username from acl_user where extension=? and id_group in (select g.id from acl_group g join organization o on g.id_organization=o.id where o.domain=?)"; $result = $pDB->getFirstRowQuery($query, false, array($exten["exten"], $exten["organization_domain"])); if ($result != false) { $arrTmp[] = $result[0]; } else { $arrTmp[] = _tr("Nobody"); } if (isset($exten["voicemail"])) { if ($exten["voicemail"] != "novm") { $arrTmp[] = "yes"; } else { $arrTmp[] = "no"; } } else { $arrTmp[] = "no"; } $arrTmp[] = _tr($exten["record_in"]) . " / " . _tr($exten["record_out"]); $arrData[] = $arrTmp; } } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("Create New Extension"), array_slice($arrOrgz, 1), $selected = null, "create_exten", $onchange_select = null); } else { $oGrid->addNew("create_exten", _tr("Create New Extension")); } } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["extension"] = $extension; // patter to filter estension number $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Extension") . " = " . $extension, $_POST, array("extension" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function report_AccessAudit($smarty, $module_name, $local_templates_dir) { global $arrPermission; $pAccessLogs = new paloSantoAccessaudit(); $listaFechas = $pAccessLogs->astLog->listarFechas(); $arrFormElements = createFieldFilter($listaFechas); $field_pattern = getParameter("filter"); $busqueda = getParameter('busqueda'); $sUltimaBusqueda = getParameter('ultima_busqueda'); $iUltimoOffset = getParameter('ultimo_offset'); if (is_null($busqueda) || trim($busqueda) == '') { $busqueda = ''; } if ($busqueda != '') { $_POST['busqueda'] = $busqueda; } /* Última búsqueda, si existe */ if (is_null($sUltimaBusqueda) || $sUltimaBusqueda == '' || is_null($iUltimoOffset) || !ereg('^[[:digit:]]+$', $iUltimoOffset)) { $sUltimaBusqueda = NULL; $iUltimoOffset = NULL; } if (!ereg($arrFormElements['filter']['VALIDATION_EXTRA_PARAM'], $field_pattern)) { $field_pattern = $listaFechas[count($listaFechas) - 1]; } $_POST['filter'] = $field_pattern; $oFilterForm = new paloForm($smarty, $arrFormElements); $oGrid = new paloSantoGrid($smarty); $oGrid->setTitle(_tr("Audit")); $oGrid->setIcon("web/apps/{$module_name}/images/security_audit.png"); $oGrid->pagingShow(true); // show paging section. if (in_array("export", $arrPermission)) { $oGrid->enableExport(); } // enable export. $oGrid->setNameFile_Export(_tr("Access audit")); if (in_array("export", $arrPermission)) { $isExport = $oGrid->isExportAction(); } else { $isExport = false; } $total_datos = $pAccessLogs->ObtainNumAccessLogs($field_pattern); $totalBytes = $total_datos[0]; $iNumLineasPorPagina = 30; $iEstimadoBytesPagina = $iNumLineasPorPagina * 128; $iOffsetVerdadero = getParameter('offset'); if (is_null($iOffsetVerdadero) || !ereg('^[[:digit:]]+$', $iOffsetVerdadero)) { $iOffsetVerdadero = 0; } if ($iOffsetVerdadero >= $totalBytes) { $iOffsetVerdadero = 0; } if (isset($_GET['filter']) && isset($_POST['filter']) && $_GET['filter'] != $_POST['filter']) { $iOffsetVerdadero = 0; } /* Para ubicarse en la página, se obtiene la región 5 páginas estimadas hacia delante y 5 páginas estimadas hacia atrás desde el offset indicado. */ $inicioRango = $iOffsetVerdadero - 5 * $iEstimadoBytesPagina; if ($inicioRango < 0) { $inicioRango = 0; } if ($isExport) { $arrResult = $pAccessLogs->ObtainAccessLogs($totalBytes, 0, $field_pattern, NULL, $isExport); } else { $arrResult = $pAccessLogs->ObtainAccessLogs(10 * $iEstimadoBytesPagina, $inicioRango, $field_pattern, NULL, $isExport); } /* Localizar la línea del offset verdadero, así como los offsets de las páginas previa y siguiente */ for ($iPos = 0; $iPos < count($arrResult); $iPos++) { if ($arrResult[$iPos]['offset'] >= $iOffsetVerdadero) { break; } } $iPosPrevio = $iPos - $iNumLineasPorPagina; $iPosSiguiente = $iPos + $iNumLineasPorPagina; if ($iPosPrevio < 0) { $iPosPrevio = 0; } if ($iPosSiguiente > count($arrResult) - 1) { $iPosSiguiente = count($arrResult) - 1; } $iOffsetPrevio = $arrResult[$iPosPrevio]['offset']; $iOffsetSiguiente = $arrResult[$iPosSiguiente]['offset']; $limit = 30; $total = (int) ($totalBytes / 128); $offset = $iOffsetVerdadero; $nav = getParameter('nav'); if ($nav) { switch ($nav) { case 'start': $offset = 0; break; case 'end': /* Caso especial: se debe tomar la última sección del log */ $inicioRango = $totalBytes - 5 * $iEstimadoBytesPagina; if ($inicioRango < 0) { $inicioRango = 0; } if ($isExport) { $arrResult = $pAccessLogs->ObtainAccessLogs($totalBytes, 0, $field_pattern, $busqueda != '' ? $busqueda : NULL, $isExport); } else { $arrResult = $pAccessLogs->ObtainAccessLogs(10 * $iEstimadoBytesPagina, $inicioRango, $field_pattern, NULL, $isExport); } if (count($arrResult) <= $iNumLineasPorPagina) { $offset = $arrResult[0]['offset']; } else { $offset = $arrResult[count($arrResult) - $iNumLineasPorPagina]['offset']; } break; case 'next': $offset = $iOffsetSiguiente; break; case 'previous': $offset = $iOffsetPrevio; break; case 'bypage': $numPage = $limit == 0 ? 0 : ceil($total / $limit); $page = getParameter("page"); if (preg_match("/[0-9]+/", $page) == 0) { // no es un número $page = 1; } if ($page > $numPage) { // se está solicitando una pagina mayor a las que existen $page = $numPage; } $start = ($page - 1) * $limit + 1 - $limit; //$accion = "next"; if ($start + $limit <= 1) { break; } /*$inicioRango = $page * $iEstimadoBytesPagina; $arrResult =$pAccessLogs->ObtainAccessLogs(10 * $iEstimadoBytesPagina, $inicioRango, $field_pattern, NULL, $isExport); $offset = $arrResult[0]['offset']; $oGrid->setOffsetValue($offset); $oGrid->setEnd(((int)($offset / 128) + $iNumLineasPorPagina) <= $oGrid->getTotal() ? (int)($offset / 128) + $iNumLineasPorPagina : $oGrid->getTotal()); $oGrid->setStart(($oGrid->getTotal()==0) ? 0 : (1 + (int)($offset / 128)));*/ $inicioBusqueda = $page * $iEstimadoBytesPagina - $iEstimadoBytesPagina; $arrResult = $pAccessLogs->ObtainAccessLogs(10 * $iEstimadoBytesPagina, $inicioBusqueda, $field_pattern, NULL, $isExport); $offset = $arrResult[0]['offset']; $oGrid->setOffsetValue($offset); break; } } // Buscar la cadena de texto indicada, y modificar offset si se encuentra $smarty->assign("SEARCHNEXT", _tr('Search')); if (isset($_POST['searchnext']) && $busqueda != '') { $pAccessLogs->astLog->posicionarMensaje($field_pattern, $offset); $posBusqueda = $pAccessLogs->astLog->buscarTextoMensaje($busqueda); if (!is_null($posBusqueda)) { $offset = $posBusqueda[1]; $smarty->assign('SEARCHNEXT', _tr('Search next')); $_POST['ultima_busqueda'] = $busqueda; $_POST['ultimo_offset'] = $offset; // Si el offset anterior indicado es idéntico al offset recién encontrado // y la cadena de búsqueda es también idéntica, se asume que se ha // pedido una búsqueda de la siguiente ocurrencia. if (!is_null($sUltimaBusqueda) && !is_null($iUltimoOffset) && $offset == $iUltimoOffset && $sUltimaBusqueda == $busqueda) { $pAccessLogs->astLog->posicionarMensaje($field_pattern, $offset); $pAccessLogs->astLog->siguienteMensaje(); // Sólo para ignorar primera ocurrencia $posBusqueda = $pAccessLogs->astLog->buscarTextoMensaje($busqueda); if (!is_null($posBusqueda)) { $offset = $posBusqueda[1]; $_POST['ultimo_offset'] = $offset; } } } else { } } $url = array('menu' => $module_name, 'filter' => $field_pattern, 'offset' => $offset, 'busqueda' => $busqueda, 'ultima_busqueda' => isset($_POST['ultima_busqueda']) ? $_POST['ultima_busqueda'] : '', 'ultimo_offset' => isset($_POST['ultimo_offset']) ? $_POST['ultimo_offset'] : ''); $oGrid->setURL($url); //Fin Paginacion if ($isExport) { $arrResult = $pAccessLogs->ObtainAccessLogs($totalBytes, 0, $field_pattern, $busqueda != '' ? $busqueda : NULL, $isExport); } else { $arrResult = $pAccessLogs->ObtainAccessLogs(10 * $iEstimadoBytesPagina, $offset, $field_pattern, $busqueda != '' ? $busqueda : NULL, $isExport); } if (!$isExport) { $arrResult = array_slice($arrResult, 0, $iNumLineasPorPagina); } $arrData = null; if (is_array($arrResult) && $totalBytes > 0) { foreach ($arrResult as $key => $value) { $arrTmp[0] = $value['fecha']; $arrTmp[1] = $value['tipo']; $arrTmp[2] = $value['origen']; $arrTmp[3] = $value['linea']; $arrData[] = $arrTmp; } } $arrColumns = array(_tr("Date"), _tr("Type"), _tr("User"), _tr("Message")); $oGrid->setColumns($arrColumns); $oGrid->setData($arrData); $oGrid->setStart($totalBytes == 0 ? 0 : 1 + (int) ($offset / 128)); $t = (int) ($totalBytes / 128); $e = (int) ($offset / 128) + $iNumLineasPorPagina; $e = $t <= $e ? $t : $e; $oGrid->setEnd($e + 1); $oGrid->setTotal($t + 1); $oGrid->setLimit(30); $_POST['offset'] = $offset; $smarty->assign("SHOW", _tr("Show")); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Date") . " = " . $_POST['filter'], $_POST, array('filter' => $listaFechas[count($listaFechas) - 1]), true); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr('Search string') . " = " . $busqueda, $_POST, array('busqueda' => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); return $oGrid->fetchGrid(); }
function reportUser($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $pACL = new paloACL($pDB); $pORGZ = new paloSantoOrganization($pDB); $idOrgFil = getParameter("idOrganization"); $username = getParameter("username"); $total = 0; if ($credentials['userlevel'] == "superadmin") { if (!empty($idOrgFil)) { $total = $pACL->getNumUsers($idOrgFil, $username); } else { $idOrgFil = 0; //opcion default se muestran todos los usuarios $total = $pACL->getNumUsers(null, $username); } } else { $idOrgFil = $credentials['id_organization']; $total = $pACL->getNumUsers($idOrgFil, $username); } if ($total === false) { $total = 0; $smarty->assign("mb_title", _tr("Error")); $smarty->assign("mb_message", _tr("Couldn't be retrieved user data")); } //url $url['menu'] = $module_name; $url['idOrganization'] = $idOrgFil; $url['username'] = $module_name; $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('User List')); $oGrid->setIcon("../web/_common/images/user.png"); $oGrid->setURL($url); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $arrColumns = array(); if ($credentials["userlevel"] == "superadmin") { $arrColumns[] = _tr("Organization"); //delete } $arrColumns[] = _tr("Username"); $arrColumns[] = _tr("Name"); $arrColumns[] = _tr("Group"); $arrColumns[] = _tr("Extension") . " / " . _tr("Fax Extension"); $arrColumns[] = _tr("Used Space") . " / " . _tr("Email Quota"); if (in_array('reconstruct_mailbox', $arrPermission)) { $arrColumns[] = ""; } //reconstruct mailbox $oGrid->setColumns($arrColumns); $arrData = array(); if ($credentials['userlevel'] == "superadmin") { if ($idOrgFil != 0) { $arrUsers = $pACL->getUsersPaging($limit, $offset, $idOrgFil, $username); } else { $arrUsers = $pACL->getUsersPaging($limit, $offset, null, $username); } } else { $arrUsers = $pACL->getUsersPaging($limit, $offset, $idOrgFil, $username); } if ($arrUsers === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr($pACL->errMsg)); } //si es un usuario solo se ve a si mismo //si es un administrador ve a todo los usuarios de foreach ($arrUsers as $user) { $arrTmp = array(); if ($credentials["userlevel"] == "superadmin") { $arrOgz = $pORGZ->getOrganizationById($user[4]); $arrTmp[] = htmlentities($arrOgz["name"], ENT_COMPAT, 'UTF-8'); //organization } $arrTmp[] = " <a href='?menu=userlist&action=view&id={$user['0']}'>" . $user[1] . "</a>"; //username $arrTmp[] = htmlentities($user[2], ENT_COMPAT, 'UTF-8'); //name $gpTmp = $pACL->getGroupNameByid($user[7]); $arrTmp[] = $gpTmp == "superadmin" ? _tr("NONE") : $gpTmp; if (!isset($user[5]) || $user[5] == "") { $ext = _tr("Not assigned"); } else { $ext = $user[5]; } if (!isset($user[6]) || $user[6] == "") { $faxExt = _tr("Not assigned"); } else { $faxExt = $user[6]; } $arrTmp[] = $ext . " / " . $faxExt; if ($user[4] != 1) { //user that belong organization 1 do not have email account $arrTmp[] = obtener_quota_usuario($user[1], $module_name); //email quota if (in_array('reconstruct_mailbox', $arrPermission)) { $arrTmp[] = " <a href='#' onclick=mailbox_reconstruct('{$user[1]}')>" . _tr('Reconstruct Mailbox') . "</a>"; //reconstruct mailbox } } else { $arrTmp[] = ''; $arrTmp[] = ''; } $arrData[] = $arrTmp; $end++; } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input name='search_org' type='submit' class='button' value='" . _tr('Search') . "'>"); if ($pORGZ->getNumOrganization(array()) > 0) { $arrOrgz = array(0 => _tr("all")); if (in_array('create_user', $arrPermission)) { $oGrid->addNew("create_user", _tr("Create New User")); } if ($credentials['userlevel'] == "superadmin") { foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["id"]] = $value["name"]; } $_POST["idOrganization"] = $idOrgFil; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$idOrgFil], $_POST, array("idOrganization" => 0), true); //organization } $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Username") . " = " . $username, $_POST, array("username" => "")); //username $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("In order to use this module must exist at least 1 organization in the Elastix Server")); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function listarFaxes(&$smarty, $module_name, $local_templates_dir) { $smarty->assign(array('SEARCH' => _tr('Search'))); $oFax = new paloFaxVisor(); // Generación del filtro $oFilterForm = new paloForm($smarty, getFormElements()); // Parámetros base y validación de parámetros $url = array('menu' => $module_name); $paramFiltroBase = $paramFiltro = array('name_company' => '', 'fax_company' => '', 'date_fax' => NULL, 'filter' => 'All'); foreach (array_keys($paramFiltro) as $k) { if (!is_null(getParameter($k))) { $paramFiltro[$k] = getParameter($k); } } $oGrid = new paloSantoGrid($smarty); $arrType = array("All" => _tr('All'), "In" => _tr('in'), "Out" => _tr('out')); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Company Name") . " = " . $paramFiltro['name_company'], $paramFiltro, array("name_company" => "")); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Company Fax") . " = " . $paramFiltro['fax_company'], $paramFiltro, array("fax_company" => "")); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Fax Date") . " = " . $paramFiltro['date_fax'], $paramFiltro, array("date_fax" => NULL)); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Type Fax") . " = " . $arrType[$paramFiltro['filter']], $paramFiltro, array("filter" => "All"), true); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $paramFiltro); if (!$oFilterForm->validateForm($paramFiltro)) { $smarty->assign(array('mb_title' => _tr('Validation Error'), 'mb_message' => '<b>' . _tr('The following fields contain errors') . ':</b><br/>' . implode(', ', array_keys($oFilterForm->arrErroresValidacion)))); $paramFiltro = $paramFiltroBase; unset($_POST['faxes_delete']); // Se aborta el intento de borrar faxes, si había uno. } $url = array_merge($url, $paramFiltro); // Ejecutar el borrado, si se ha validado. if (isset($_POST['faxes_delete']) && isset($_POST['faxes']) && is_array($_POST['faxes']) && count($_POST['faxes']) > 0) { $msgError = NULL; foreach ($_POST['faxes'] as $idFax) { if (!$oFax->deleteInfoFax($idFax)) { if ($oFax->errMsg = '') { $msgError = _tr('Unable to eliminate pdf file from the path.'); } else { $msgError = _tr('Unable to eliminate pdf file from the database.') . ' - ' . $oFax->errMsg; } } } if (!is_null($msgError)) { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => $oFax->errMsg)); } } $oGrid->setTitle(_tr("Fax Viewer")); $oGrid->setIcon("modules/{$module_name}/images/kfaxview.png"); $oGrid->pagingShow(true); // show paging section. $oGrid->setURL($url); $arrData = NULL; $total = $oFax->obtener_cantidad_faxes($paramFiltro['name_company'], $paramFiltro['fax_company'], $paramFiltro['date_fax'], $paramFiltro['filter']); $limit = 20; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $arrResult = $oFax->obtener_faxes($paramFiltro['name_company'], $paramFiltro['fax_company'], $paramFiltro['date_fax'], $offset, $limit, $paramFiltro['filter']); $oGrid->setColumns(array("", _tr('Type'), _tr('File'), _tr('Company Name'), _tr('Company Fax'), _tr('Fax Destiny'), _tr('Fax Date'), _tr('Status'), _tr('Options'))); if (is_array($arrResult) && $total > 0) { foreach ($arrResult as $fax) { foreach (array('pdf_file', 'company_name', 'company_fax', 'destiny_name', 'destiny_fax', 'errormsg') as $k) { $fax[$k] = htmlentities($fax[$k], ENT_COMPAT, 'UTF-8'); } if (empty($fax['status']) && !empty($fax['errormsg'])) { $fax['status'] = 'failed'; } $arrData[] = array('<input type="checkbox" name="faxes[]" value="' . $fax['id'] . '" />', _tr($fax['type']), strtolower($fax['type']) == 'in' || strpos($fax['pdf_file'], '.pdf') !== FALSE ? "<a href='?menu={$module_name}&action=download&id=" . $fax['id'] . "&rawmode=yes'>" . $fax['pdf_file'] . "</a>" : $fax['pdf_file'], $fax['company_name'], $fax['company_fax'], $fax['destiny_name'] . " - " . $fax['destiny_fax'], $fax['date'], _tr($fax['status']) . (empty($fax['errormsg']) ? '' : ': ' . $fax['errormsg']), "<a href='?menu={$module_name}&action=edit&id=" . $fax['id'] . "'>" . _tr('Edit') . "</a>"); } } if (!is_array($arrResult)) { $smarty->assign(array('mb_title' => _tr('ERROR'), 'mb_message' => $oFax->errMsg)); } $oGrid->setData($arrData); $oGrid->deleteList(_tr('Are you sure you wish to delete fax (es)?'), "faxes_delete", _tr("Delete")); $oGrid->showFilter($htmlFilter); return $oGrid->fetchGrid(); }
function reportANI($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $smarty->assign("SHOW_DIV_ERROR", "0"); //FIXED: can show div error message with javascript $smarty->assign("mb_message", "hide"); //FIXED: can show div error message with javascript $pORGZ = new paloSantoOrganization($pDB); $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $ani_prefix = getParameter("ani_prefix"); $pANI = new paloSantoANI($pDB, $domain); $url['menu'] = $module_name; $url['organization'] = $domain; $url['ani_prefix'] = $ani_prefix; $total = $pANI->getNumANI($domain, $ani_prefix); $arrOrgz = array(); if ($credentials['userlevel'] == "superadmin") { $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } if ($total === false) { $error = $pANI->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('ANI List')); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); $arrColum = array(); if ($credentials['userlevel'] == "superadmin") { $arrColum[] = _tr("Organization"); } $arrColum[] = _tr("Trunk Name"); $arrColum[] = _tr("Prefix ANI"); $oGrid->setColumns($arrColum); $arrANI = array(); $arrData = array(); if ($total != 0) { $arrANI = $pANI->getANI($domain, $ani_prefix, $limit, $offset); } if ($arrANI === false) { $error = _tr("Error to obtain ANI") . $pANI->errMsg; $arrANI = array(); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); $smarty->assign("SHOW_DIV_ERROR", "1"); } foreach ($arrANI as $row) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$row["organization_domain"]]; } $arrTmp[] = $row["name"]; $arrTmp[] = "<input type='text' style='width:60px; text-align:center;' id='text#{$row['organization_domain']}#{$row['trunkid']}' value='{$row['ani_prefix']}' /> \n <input type='button' id='button#{$row['organization_domain']}#{$row['trunkid']}' value='" . _tr("Save") . "' />"; $arrData[] = $arrTmp; } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) == 0) { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); $smarty->assign("SHOW_DIV_ERROR", "1"); } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["ani_prefix"] = $ani_prefix; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("ANI Prefix") . " = " . $ani_prefix, $_POST, array("ani_prefix" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); return $oGrid->fetchGrid(array(), $arrData); }
function report_conference($smarty, $module_name, $local_templates_dir, $pDB, $arrLang2, $arrConfig, $dsn_agi_manager, $dsnAsterisk) { global $arrLang; global $arrConf; $bSoporteWebConf = file_exists('modules/conferenceroom_list/libs/conferenceActions.lib.php'); $arrConference = array("Past_Conferences" => $arrLang["Past Conferences"], "Current_Conferences" => $arrLang["Current Conferences"], "Future_Conferences" => $arrLang["Future Conferences"]); $arrFormElements = array("conference" => array("LABEL" => $arrLang["State"], "REQUIRED" => "yes", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $arrConference, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "", "EDITABLE" => "no", "SIZE" => "1"), "filter" => array("LABEL" => $arrLang["Filter"], "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", "INPUT_EXTRA_PARAM" => array("id" => "filter_value"), "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "")); $oFilterForm = new paloForm($smarty, $arrFormElements); $smarty->assign("SHOW", $arrLang["Show"]); // $smarty->assign("NEW_CONFERENCE", $arrLang["New Conference"]); $startDate = $endDate = date("Y-m-d H:i:s"); $conference = getParameter("conference"); $field_pattern = getParameter("filter"); if ($conference) { $_POST['conference'] = $conference; } else { $_POST['conference'] = "Current_Conferences"; } $oGrid = new paloSantoGrid($smarty); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("State") . " = " . $arrConference[$_POST['conference']], $_POST, array("conference" => "Current_Conferences"), true); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Conference Name") . " = {$field_pattern}", $_POST, array("filter" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/conference.tpl", "", $_POST); $pConference = new paloSantoConference($pDB); $total_datos = $pConference->ObtainNumConferences($startDate, $endDate, "confDesc", $field_pattern, $conference); //Paginacion $limit = 8; $total = $total_datos[0]; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $url = array('menu' => $module_name, 'conference' => $conference, 'filter' => $field_pattern); //Fin Paginacion $arrResult = $pConference->ObtainConferences($limit, $offset, $startDate, $endDate, "confDesc", $field_pattern, $conference); $pConfWeb = NULL; if ($bSoporteWebConf) { $pConfWeb = embedded_prepareWebConfLister(); } $arrData = null; if (is_array($arrResult) && $total > 0) { // En caso de haber soporte de conferencias web, se recoge el ID de // conferencia telefónica asociada a la conferencia web, y se construye // la lista de datos para las columnas adicionales $listaWebConf = array(); if (!is_null($pConfWeb)) { $pACL = new paloACL($arrConf['elastix_dsn']['acl']); $listaWC = $pConfWeb->listarConferencias($pACL->isUserAdministratorGroup($_SESSION['elastix_user'])); foreach ($listaWC as $tuplaConf) { if (!is_null($tuplaConf['id_cbmysql_conference'])) { $listaWebConf[$tuplaConf['id_cbmysql_conference']] = $tuplaConf; } } } foreach ($arrResult as $key => $conference) { $arrTmp[0] = "<input type='checkbox' name='conference_{$conference['bookId']}' />"; $arrTmp[1] = "<a href='?menu={$module_name}&accion=view_conference&conferenceId=" . $conference['bookId'] . "'>" . htmlentities($conference['confDesc'], ENT_COMPAT, "UTF-8") . "</a>"; $arrTmp[2] = $conference['roomNo']; $arrTmp[3] = $conference['startTime'] . ' - ' . $conference['endTime']; if ($_POST['conference'] == "Current_Conferences") { $arrCallers = $pConference->ObtainCallers($dsn_agi_manager, $conference['roomNo']); $numCallers = count($arrCallers); $arrTmp[4] = "<a href='?menu={$module_name}&accion=show_callers&roomNo=" . $conference['roomNo'] . "'>{$numCallers} / {$conference['maxUser']}</a>"; } else { $arrTmp[4] = $conference['maxUser']; } if ($bSoporteWebConf) { $arrTmp[5] = ''; $arrTmp[6] = ''; $arrTmp[7] = ''; $arrTmp[8] = ''; if (isset($listaWebConf[$conference['bookId']])) { $tuplaConf = $listaWebConf[$conference['bookId']]; $arrTmp[5] = htmlentities($tuplaConf['tema'], ENT_COMPAT, "UTF-8"); $arrTmp[6] = $tuplaConf['num_invitados']; $arrTmp[7] = $tuplaConf['num_documentos']; $arrTmp[8] = "<a href=\"?menu={$module_name}&action=list_guests&id_conference={$tuplaConf['id_conferencia']}\">[{$arrLang['List guests']}]</a> " . "<a href=\"?menu={$module_name}&action=list_chatlog&id_conference={$tuplaConf['id_conferencia']}\">[{$arrLang['Chatlog']}]</a>"; } } $arrData[] = $arrTmp; } } $arrGrid = array("title" => $arrLang["Conference"], "url" => $url, "icon" => "/modules/{$module_name}/images/pbx_conference.png", "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, 'columns' => array(array('name' => ""), array("name" => $arrLang["Conference Name"]), array("name" => $arrLang["Conference #"]), array('name' => 'Period'), array('name' => $arrLang["Participants"]))); if ($bSoporteWebConf) { $arrGrid['columns'][] = array('name' => $arrLang['Topic']); $arrGrid['columns'][] = array('name' => $arrLang['# Guests']); $arrGrid['columns'][] = array('name' => $arrLang['# Docs']); $arrGrid['columns'][] = array('name' => $arrLang['Options']); } $oGrid->addNew("new_conference", _tr('New Conference')); $oGrid->deleteList(_tr("Are you sure you wish to delete conference (es)?"), "delete_conference", _tr("Delete")); $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); return $contenidoModulo; }
function report_AsteriskLogs($smarty, $module_name, $local_templates_dir, $arrLang) { $arrFormElements = array("filter" => array("LABEL" => $arrLang["Date"], "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => NULL, "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => '^[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}$'), "busqueda" => array("LABEL" => $arrLang['Search string'], "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", 'VALIDATION_TYPE' => 'text', 'INPUT_EXTRA_PARAM' => '', 'VALIDATION_EXTRA_PARAM' => ''), "offset" => array("LABEL" => $arrLang["offset"], "REQUIRED" => "no", "INPUT_TYPE" => "HIDDEN", "INPUT_EXTRA_PARAM" => NULL, "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => '^[[:digit:]]+$'), "ultima_busqueda" => array("LABEL" => $arrLang['Search string'], "REQUIRED" => "no", "INPUT_TYPE" => "HIDDEN", 'VALIDATION_TYPE' => 'text', 'INPUT_EXTRA_PARAM' => '', 'VALIDATION_EXTRA_PARAM' => ''), "ultimo_offset" => array("LABEL" => $arrLang["offset"], "REQUIRED" => "no", "INPUT_TYPE" => "HIDDEN", "INPUT_EXTRA_PARAM" => NULL, "VALIDATION_TYPE" => "ereg", "VALIDATION_EXTRA_PARAM" => '^[[:digit:]]+$')); $smarty->assign("SHOW", $arrLang["Show"]); $smarty->assign("SEARCHNEXT", $arrLang['Search']); $field_pattern = getParameter("filter"); $busqueda = getParameter('busqueda'); if (is_null($busqueda) || trim($busqueda) == '') { $busqueda = ''; } /* Última búsqueda, si existe */ $sUltimaBusqueda = getParameter('ultima_busqueda'); $iUltimoOffset = getParameter('ultimo_offset'); if (is_null($sUltimaBusqueda) || $sUltimaBusqueda == '' || is_null($iUltimoOffset) || !ereg('^[[:digit:]]+$', $iUltimoOffset)) { $sUltimaBusqueda = NULL; $iUltimoOffset = NULL; } $pAsteriskLogs = new paloSantoAsteriskLogs($pDB); $listaFechas = $pAsteriskLogs->astLog->listarFechas(); if (!ereg($arrFormElements['filter']['VALIDATION_EXTRA_PARAM'], $field_pattern)) { $field_pattern = $listaFechas[count($listaFechas) - 1]; } $_POST['filter'] = $field_pattern; $total_datos = $pAsteriskLogs->ObtainNumAsteriskLogs($field_pattern); $comboFechas = array(); foreach ($listaFechas as $f) { $comboFechas[$f] = $f; } $arrFormElements['filter']['INPUT_EXTRA_PARAM'] = $comboFechas; $oFilterForm = new paloForm($smarty, $arrFormElements); if ($busqueda != '') { $_POST['busqueda'] = $busqueda; } $oGrid = new paloSantoGrid($smarty); $iNumLineasPorPagina = 30; $iEstimadoBytesPagina = $iNumLineasPorPagina * 128; $iOffsetVerdadero = getParameter('offset'); if (is_null($iOffsetVerdadero) || !ereg('^[[:digit:]]+$', $iOffsetVerdadero)) { $iOffsetVerdadero = 0; } $totalBytes = $total_datos[0]; if ($iOffsetVerdadero >= $totalBytes) { $iOffsetVerdadero = 0; } if (isset($_GET['filter']) && isset($_POST['filter']) && $_GET['filter'] != $_POST['filter']) { $iOffsetVerdadero = 0; } /* Para ubicarse en la página, se obtiene la región 5 páginas estimadas hacia delante y 5 páginas estimadas hacia atrás desde el offset indicado. */ $inicioRango = $iOffsetVerdadero - 5 * $iEstimadoBytesPagina; if ($inicioRango < 0) { $inicioRango = 0; } $arrResult = $pAsteriskLogs->ObtainAsteriskLogs(10 * $iEstimadoBytesPagina, $inicioRango, $field_pattern); /* Localizar la línea del offset verdadero, así como los offsets de las páginas previa y siguiente */ for ($iPos = 0; $iPos < count($arrResult); $iPos++) { if ($arrResult[$iPos]['offset'] >= $iOffsetVerdadero) { break; } } $iPosPrevio = $iPos - $iNumLineasPorPagina; $iPosSiguiente = $iPos + $iNumLineasPorPagina; if ($iPosPrevio < 0) { $iPosPrevio = 0; } if ($iPosSiguiente > count($arrResult) - 1) { $iPosSiguiente = count($arrResult) - 1; } $iOffsetPrevio = $arrResult[$iPosPrevio]['offset']; $iOffsetSiguiente = $arrResult[$iPosSiguiente]['offset']; $limit = $iNumLineasPorPagina; $total = (int) ($totalBytes / 128); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $iOffsetVerdadero; $nav = getParameter('nav'); if ($nav) { switch ($nav) { case 'start': $offset = 0; break; case 'end': /* Caso especial: se debe tomar la última sección del log */ $inicioRango = $totalBytes - 5 * $iEstimadoBytesPagina; if ($inicioRango < 0) { $inicioRango = 0; } $arrResult = $pAsteriskLogs->ObtainAsteriskLogs(10 * $iEstimadoBytesPagina, $inicioRango, $field_pattern); if (count($arrResult) <= $iNumLineasPorPagina) { $offset = $arrResult[0]['offset']; } else { $offset = $arrResult[count($arrResult) - $iNumLineasPorPagina]['offset']; } break; case 'next': $offset = $iOffsetSiguiente; break; case 'previous': $offset = $iOffsetPrevio; break; case 'bypage': $numPage = $limit == 0 ? 0 : ceil($total / $limit); $page = getParameter("page"); if (preg_match("/[0-9]+/", $page) == 0) { // no es un número $page = 1; } if ($page > $numPage) { // se está solicitando una pagina mayor a las que existen $page = $numPage; } $start = ($page - 1) * $limit + 1 - $limit; if ($start + $limit <= 1) { $offset = 0; break; } $inicioBusqueda = $page * $iEstimadoBytesPagina - $iEstimadoBytesPagina; $arrResult = $pAsteriskLogs->ObtainAsteriskLogs(10 * $iEstimadoBytesPagina, $inicioBusqueda, $field_pattern); $offset = $arrResult[0]['offset']; $oGrid->setOffsetValue($offset); break; } } // Buscar la cadena de texto indicada, y modificar offset si se encuentra if (isset($_POST['searchnext']) && $busqueda != '') { $pAsteriskLogs->astLog->posicionarMensaje($field_pattern, $offset); $posBusqueda = $pAsteriskLogs->astLog->buscarTextoMensaje($busqueda); if (!is_null($posBusqueda)) { $offset = $posBusqueda[1]; $smarty->assign('SEARCHNEXT', $arrLang['Search next']); $_POST['ultima_busqueda'] = $busqueda; $_POST['ultimo_offset'] = $offset; // Si el offset anterior indicado es idéntico al offset recién encontrado // y la cadena de búsqueda es también idéntica, se asume que se ha // pedido una búsqueda de la siguiente ocurrencia. if (!is_null($sUltimaBusqueda) && !is_null($iUltimoOffset) && $offset == $iUltimoOffset && $sUltimaBusqueda == $busqueda) { $pAsteriskLogs->astLog->posicionarMensaje($field_pattern, $offset); $pAsteriskLogs->astLog->siguienteMensaje(); // Sólo para ignorar primera ocurrencia $posBusqueda = $pAsteriskLogs->astLog->buscarTextoMensaje($busqueda); if (!is_null($posBusqueda)) { $offset = $posBusqueda[1]; $_POST['ultimo_offset'] = $offset; } } } else { } } $url = array('menu' => $module_name, 'filter' => $field_pattern, 'offset' => $offset, 'busqueda' => $busqueda, 'ultima_busqueda' => isset($_POST['ultima_busqueda']) ? $_POST['ultima_busqueda'] : '', 'ultimo_offset' => isset($_POST['ultimo_offset']) ? $_POST['ultimo_offset'] : ''); //Fin Paginacion $arrResult = $pAsteriskLogs->ObtainAsteriskLogs(10 * $iEstimadoBytesPagina, $offset, $field_pattern, $busqueda != '' ? $busqueda : NULL); $arrResult = array_slice($arrResult, 0, $iNumLineasPorPagina); $posLog = $pAsteriskLogs->astLog->obtenerPosicionMensaje(); $arrData = null; if (is_array($arrResult) && $totalBytes > 0) { foreach ($arrResult as $key => $value) { $arrTmp[0] = $value['fecha']; $arrTmp[1] = $value['tipo']; $arrTmp[2] = $value['origen']; $arrTmp[3] = $value['linea']; $arrData[] = $arrTmp; } } $_POST['offset'] = $offset; //$defaultEnd=end($comboFechas); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Date") . " = " . $_POST['filter'], $_POST, array('filter' => $listaFechas[count($listaFechas) - 1]), true); $oGrid->addFilterControl(_tr("Filter applied: ") . _tr('Search string') . " = " . $busqueda, $_POST, array('busqueda' => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); $arrGrid = array("title" => $arrLang["Asterisk Logs"], "url" => $url, "icon" => "/modules/{$module_name}/images/reports_asterisk_logs.png", "width" => "99%", "start" => $totalBytes == 0 ? 0 : 1 + (int) ($offset / 128), "end" => (int) ($offset / 128) + $iNumLineasPorPagina, "total" => (int) ($totalBytes / 128), "columns" => array(0 => array("name" => $arrLang['Date'], "property1" => ""), 1 => array("name" => $arrLang['Type'], "property1" => ""), 2 => array("name" => $arrLang['Source'], "property1" => ""), 3 => array("name" => $arrLang['Message'], "property1" => ""))); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); /*$current_page=getParameter("page"); print($current_page); $contenidoModulo .= "<script type='text/javascript'> var offset = ".$offset."; var limit = ".$limit."; var current_page = ".$current_page."; alert(current_page); var start = current_page * limit; page = Math.floor(start / limit); $('#pageup').val(page); $('#pagedown').val(page); </script>";*/ return $contenidoModulo; }
function reportGroupPermission($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { $pACL = new paloACL($pDB); $pORGZ = new paloSantoOrganization($pDB); $arrGroups = array(); $arrOrgz = array(); $idOrgFil = getParameter("idOrganization"); if ($credentials['userlevel'] == "superadmin") { $orgTmp = $pORGZ->getOrganization(array()); if ($orgTmp === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr($pORGZ->errMsg)); } elseif (count($orgTmp) == 0) { $smarty->assign("mb_title", _tr("MESSAGE")); $msg = _tr("You haven't created any organization"); $smarty->assign("mb_message", $msg); } else { //si el usuario a selecionado una organizacion comprobamos que esta exista //caso contrario procedemos a sellecionar la primera disponible $flag = false; foreach ($orgTmp as $value) { $arrOrgz[$value["id"]] = $value["name"]; if ($value["id"] == $idOrgFil) { $flag = true; } } if (!$flag) { $idOrgFil = $orgTmp[0]['id']; } } } else { $idOrgFil = $credentials['id_organization']; $orgTmp = $pORGZ->getOrganizationById($idOrgFil); if ($orgTmp == false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieved organization data")); } else { $arrOrgz = $orgTmp; } } if (count($arrOrgz) > 0) { //que se un arreglo y que tenga al menos una organizacion $groupTmp = $pACL->getGroupsPaging(null, null, $idOrgFil); if ($groupTmp === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr($pACL->errMsg)); } else { foreach ($groupTmp as $value) { $arrGroups[$value[0]] = $value[1]; } } } $filter_group = getParameter("filter_group"); if (count($arrGroups) > 0) { if (empty($filter_group)) { //seleccionamos el primer grupo de la lista de grupos $filter_group = $groupTmp[0][0]; } //valido que el grupo pertenzca a la organizacion if ($pACL->getGroups($filter_group, $idOrgFil) == false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("Invalid Group")); $filter_group = $groupTmp[0][0]; } } $filter_resource = getParameter("filter_resource"); $lang = get_language(); if ($lang != "en") { if (isset($filter_resource)) { if (trim($filter_resource) != "") { global $arrLang; $filter_value = strtolower(trim($filter_resource)); $parameter_to_find[] = $filter_value; //parametro de busqueda sin traduccion foreach ($arrLang as $key => $value) { $langValue = strtolower(trim($value)); if (preg_match("/^[[:alnum:]| ]*\$/", $filter_value)) { if (strpos($langValue, $filter_value) !== FALSE) { $parameter_to_find[] = $key; } } } } } } if (isset($filter_resource)) { $parameter_to_find[] = $filter_resource; } else { $parameter_to_find = null; } $totalGroupPermission = 0; if (count($arrGroups) > 0) { $arrResourceOrg = $pACL->getResourcesByOrg($idOrgFil, $parameter_to_find); if ($arrResourceOrg === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieved Resources")); } else { $totalGroupPermission = count($arrResourceOrg); } } //begin grid parameters $oGrid = new paloSantoGrid($smarty); $limit = 25; $total = $totalGroupPermission; $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $url['menu'] = $module_name; $url['idOrganization'] = $idOrgFil; $url['filter_group'] = $filter_group; $url['filter_resource'] = $filter_resource; $arrData = $arrResourceActions = $arrPermisos = array(); $error = false; if (count($arrGroups) > 0 && $totalGroupPermission > 0) { $arrResource = array_slice($arrResourceOrg, $offset, $limit); $idGroup = $filter_group; foreach ($arrResource as $resource) { $listResource[] = $resource['id']; //lista de id de los recursos que queremos consulta $listResDes[$resource['id']] = $resource['description']; } //las acciones que tiene cada drecurso $arrResourceActions = $pACL->getResourcesActions($listResource); if ($arrResourceActions === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieved Resources Actions")); $error = true; } //los premisos que tiene el grupo $arrPermisos = $pACL->loadGroupPermissions($idGroup, $listResource); if ($arrPermisos === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieved Group Permissions")); $error = true; } } $max_actions = 0; $isAdministrator = $pACL->getGroupNameByid($idGroup) == _tr("administrator") ? true : false; if ($totalGroupPermission > 0 && !$error) { foreach ($arrResourceActions as $resource => $actions) { $arrTmp = array(); $arrTmp[] = _tr($listResDes[$resource]); $disabled = ""; if ($isAdministrator && ($resource == 'grouplist' || $resource == 'userlist' || $resource == 'group_permission')) { $disabled = "disabled='disabled'"; } //dentro del modulo organizacion ahi acciones que unicamente las puede realizar el superadmin //por lo tando no deben aparecer listadas if ($resource == "organization") { $actions = array_diff($actions, array('change_org_status', 'create_org', 'delete_org', 'edit_DID')); } elseif ($resource == "dashboard") { $actions = array('access'); } elseif ($resource == 'cdrreport') { $actions = array('access', 'export'); } if (count($actions) > $max_actions) { $max_actions = count($actions); } $desactivar = false; if (isset($arrPermisos[$resource])) { //grupo no tiene nigun permiso if (!in_array('access', $arrPermisos[$resource])) { $desactivar = true; } } else { $desactivar = true; $arrPermisos[$resource] = array(); } foreach ($actions as $action) { $class = 'other_act'; if ($action == 'access') { $class = 'access_act'; } elseif ($desactivar) { $disabled = "disabled='disabled'"; } $checked0 = ''; //chequeamos si la accion se encuentra en la lista de acciones permitidas en el recurso if (in_array($action, $arrPermisos[$resource])) { $checked0 = "checked"; } $arrTmp[] = "<input type='checkbox' class='{$class}' {$disabled} name='groupPermission[" . $resource . "][{$action}]' {$checked0}> {$action}"; } $arrData[] = $arrTmp; } } $oGrid->setTitle(_tr("Group Permission")); $oGrid->setURL($url); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $arrColumn[] = _tr("Resource"); for ($i = 1; $i <= $max_actions; $i++) { $act = _tr("Action"); $arrColumn[] = "{$act}" . " {$i}"; } $oGrid->setColumns($arrColumn); //begin section filter $arrFormFilter = createFieldFilter($arrGroups); $oFilterForm = new paloForm($smarty, $arrFormFilter); $smarty->assign("SHOW", _tr("Show")); $smarty->assign("limit_apply", htmlspecialchars($limit, ENT_COMPAT, 'UTF-8')); $smarty->assign("offset_apply", htmlspecialchars($offset, ENT_COMPAT, 'UTF-8')); $smarty->assign("resource_apply", htmlentities($filter_resource)); $_POST["filter_group"] = htmlspecialchars($filter_group, ENT_COMPAT, 'UTF-8'); $_POST["filter_resource"] = htmlspecialchars($filter_resource, ENT_COMPAT, 'UTF-8'); $_POST["idOrganization"] = $idOrgFil; if (count($arrOrgz) > 0) { global $arrPermission; if (in_array('edit_permission', $arrPermission)) { $oGrid->addSubmitAction("apply", _tr("Save")); } if ($credentials['userlevel'] == "superadmin") { $oGrid->addComboAction("idOrganization", _tr("Organization"), $arrOrgz, $idOrgFil, "report"); } $nameGroup = isset($arrGroups[$filter_group]) ? $arrGroups[$filter_group] : ""; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Group") . " = {$nameGroup}", $_POST, array("filter_group" => $groupTmp[0][0]), true); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Resource") . " = {$filter_resource}", $_POST, array("filter_resource" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("You haven't created any organization")); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); //end grid parameters return $contenidoModulo; }
function reportGroup($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $userLevel1, $userAccount, $idOrganization) { $pACL = new paloACL($pDB); $pORGZ = new paloSantoOrganization($pDB); $idOrgFil = getParameter("idOrganization"); if ($userLevel1 == "superadmin") { if (!empty($idOrgFil)) { $cntGroups = $pACL->getNumGroups($idOrgFil); } else { $idOrgFil = 0; //opcion default se muestran todos los grupos $cntGroupsMO = $pACL->getNumGroups(1); //obtenemos en numero de grupos que pertenecen a //la organizacion 1 y lo restamos del total de grupos $cntGroups = $pACL->getNumGroups() - $cntGroupsMO; } } else { $idOrgFil = $idOrganization; $cntGroups = $pACL->getNumGroups($idOrganization); } if ($cntGroups === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr($pACL->errMsg)); $total = 0; } else { $total = $cntGroups; } //url $url['menu'] = $module_name; $url['idOrganization'] = $idOrgFil; $total = $total == NULL ? 0 : $total; $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $oGrid->getEnd(); $oGrid->setURL($url); $oGrid->setTitle(_tr('Group List')); $oGrid->setIcon("web/apps/{$module_name}/images/system_groups.png"); $oGrid->setURL($url); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); if ($userLevel1 == "superadmin") { $arrColumns[] = _tr("Organization"); } $arrColumns[] = _tr("Group Name"); $arrColumns[] = _tr("Group Description"); $oGrid->setColumns($arrColumns); if ($idOrgFil != 0) { $Groups = $pACL->getGroupsPaging($limit, $offset, $idOrgFil); } else { $Groups = $pACL->getGroupsPaging($limit, $offset); } $arrData = array(); foreach ($Groups as $group) { if ($group[3] != 1) { $arrTmp = array(); if ($userLevel1 == "superadmin") { $orgz = $pORGZ->getOrganizationById($group[3]); $arrTmp[] = htmlentities($orgz["name"], ENT_COMPAT, 'UTF-8'); //organization } $arrTmp[] = " <a href='?menu=grouplist&action=view&id=" . $group[0] . "'>" . $group[1] . "</a>"; //id,group name $arrTmp[] = _tr($group[2]); //description $arrData[] = $arrTmp; } } if ($pORGZ->getNumOrganization(array()) > 0) { global $arrPermission; if (in_array('create_group', $arrPermission)) { $oGrid->addNew("create_group", _tr("Create New Group")); } if ($userLevel1 == "superadmin") { $arrOrgz = array(0 => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { if ($value["id"] != 1) { $arrOrgz[$value["id"]] = $value["name"]; } } $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $_POST["idOrganization"] = $idOrgFil; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$idOrgFil], $_POST, array("idOrganization" => 0), true); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } } else { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("You need have created at least one organization before you can create a new group")); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); return $contenidoModulo; }
function reportOrgPermission($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $arrCredentiasls) { $pACL = new paloACL($pDB); $pORGZ = new paloSantoOrganization($pDB); $arrGroups = array(); $arrOrgz = array(); $filter_resource = getParameter("filter_resource"); $idOrgFil = getParameter("idOrganization"); $orgTmp = $pORGZ->getOrganization(array()); if ($orgTmp === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr($pORGZ->errMsg)); } elseif (count($orgTmp) == 0) { $smarty->assign("mb_title", _tr("MESSAGE")); $msg = _tr("You haven't created any organization"); $smarty->assign("mb_message", $msg); } else { //si el usuario a selecionado una organizacion comprobamos que esta exista //caso contrario procedemos a sellecionar la primera disponible $flag = false; foreach ($orgTmp as $value) { $arrOrgz[$value["id"]] = $value["name"]; if ($value["id"] == $idOrgFil) { $flag = true; } } if (!$flag) { $idOrgFil = $orgTmp[0]['id']; } } $filter_resource = htmlentities($filter_resource); //buscamos en el arreglo del lenguaje la traduccion del recurso en caso de que exista $lang = get_language(); //lenguage que esta siendo usado $parameter_to_find = null; if (isset($filter_resource)) { if (trim($filter_resource) != "") { if ($lang != "en") { global $arrLang; $filter_value = strtolower(trim($filter_resource)); $parameter_to_find[] = $filter_value; //parametro de busqueda sin traduccion foreach ($arrLang as $key => $value) { $langValue = strtolower(trim($value)); if (preg_match("/^[[:alnum:]| ]*\$/", $filter_value)) { if (strpos($langValue, $filter_value) !== FALSE) { $parameter_to_find[] = $key; } } } } else { $parameter_to_find[] = $filter_resource; } } } //obtenemos el numero de recursos disponibles del sistema $total = 0; if (count($arrOrgz) > 0) { $total = $pACL->getNumResources($parameter_to_find, 'yes'); } if ($total == false && $pACL->errMsg != "") { $total = 0; $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieved resources data")); } $limit = 25; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $url["menu"] = $module_name; $url["filter_resource"] = $filter_resource; $url["idOrganization"] = $idOrgFil; $oGrid->setTitle(_tr("Organization Permission")); $oGrid->setURL($url); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $arrColumn = array(_tr("Resource"), "<input type='checkbox' name='selectAll' id='selectAll' />" . _tr('Permit Access')); $oGrid->setColumns($arrColumn); $arrData = array(); if (count($arrOrgz) > 0 && $total > 0) { //obtengo una lista con todos los recursos a los que una organizacion puede tener acceso $arrResource = $pACL->getListResources($limit, $offset, $parameter_to_find, 'yes'); //lista de los recursos permitidos a la organizacion seleccionada organizacion $arrResourceOrg = $pACL->getResourcesByOrg($idOrgFil, $parameter_to_find); if ($arrResourceOrg === false || $arrResource === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("An error has ocurred to retrieve resource list.") . " " . _tr($pACL->errMsg)); } else { $temp = array(); foreach ($arrResourceOrg as $value) { $temp[] = $value["id"]; } if (is_array($arrResource) && count($arrResource) > 0) { foreach ($arrResource as $resource) { $disabled = ""; if ($resource["id"] == 'usermgr' || $resource["id"] == 'grouplist' || $resource["id"] == 'userlist' || $resource["id"] == 'group_permission' || $resource["id"] == 'organization') { $disabled = "disabled='disabled'"; } $checked0 = ""; if (in_array($resource["id"], $temp)) { $checked0 = "checked"; } $arrTmp[0] = _tr($resource["description"]); $arrTmp[1] = "<input type='checkbox' {$disabled} name='resource[" . $resource["id"] . "]' id='" . $resource["id"] . "' class='resource' {$checked0}>" . " " . _tr("Permit"); $arrData[] = $arrTmp; } } } } $smarty->assign("SHOW", _tr("Show")); $smarty->assign("resource_apply", $filter_resource); if (count($arrOrgz) > 0) { $oGrid->addSubmitAction("apply", _tr("Save")); $oGrid->addComboAction("idOrganization", _tr("Organization"), $arrOrgz, $idOrgFil, "report"); $arrFormFilter = createFieldFilter(); $oFilterForm = new paloForm($smarty, $arrFormFilter); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Resource") . " = {$filter_resource}", $_POST, array("filter_resource" => "")); $oGrid->showFilter(trim($htmlFilter)); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); //end grid parameters return $contenidoModulo; }
function reportOtherDestinations($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $pORGZ = new paloSantoOrganization($pDB); $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $other_destination_name = getParameter("other_destination_name"); $pOtherDestinations = new paloSantoOtherDestinations($pDB, $domain); $url['menu'] = $module_name; $url['organization'] = $domain; $url['other_destination_name'] = $other_destination_name; $total = $pOtherDestinations->getNumOtherDestinations($domain, $other_destination_name); $arrOrgz = array(); if ($credentials['userlevel'] == "superadmin") { $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } if ($total === false) { $error = $pOtherDestinations->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('Other Destinations List')); //$oGrid->setIcon('url de la imagen'); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); $arrColum = array(); if ($credentials['userlevel'] == "superadmin") { $arrColum[] = _tr("Organization"); } $arrColum[] = _tr("Other Destination Name"); $arrColum[] = _tr("Dial Destination"); $oGrid->setColumns($arrColum); $arrOtherDestinations = array(); $arrData = array(); if ($total != 0) { $arrOtherDestinations = $pOtherDestinations->getOtherDestinations($domain, $other_destination_name, $limit, $offset); } if ($arrOtherDestinations === false) { $error = _tr("Error to obtain Other Destinations") . $pOtherDestinations->errMsg; $arrOtherDestinations = array(); } foreach ($arrOtherDestinations as $row) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { $arrTmp[] = $arrOrgz[$row["organization_domain"]]; } $arrTmp[] = " <a href='?menu={$module_name}&action=view&id=" . $row['id'] . "&organization={$row['organization_domain']}'>" . htmlentities($row["description"], ENT_QUOTES, "UTF-8") . "</a>"; $arrTmp[] = $row["destdial"]; $arrData[] = $arrTmp; } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("ADD Other Destination"), array_slice($arrOrgz, 1), $selected = null, "create_other_destination", $onchange_select = null); } else { $oGrid->addNew("create_other_destination", _tr("ADD Other Destination")); } } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["other_destination_name"] = $other_destination_name; // name $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Other Destination Name") . " = " . $other_destination_name, $_POST, array("other_destination_name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function _moduleContent(&$smarty, $module_name) { include_once "libs/paloSantoGrid.class.php"; include_once "libs/paloSantoConfig.class.php"; include_once "libs/paloSantoACL.class.php"; include_once "libs/paloSantoForm.class.php"; require_once "libs/misc.lib.php"; include_once "lib/paloSantoVoiceMail.class.php"; //include module files include_once "modules/{$module_name}/configs/default.conf.php"; $lang = get_language(); $base_dir = dirname($_SERVER['SCRIPT_FILENAME']); $lang_file = "modules/{$module_name}/lang/{$lang}.lang"; if (file_exists("{$base_dir}/{$lang_file}")) { include_once "{$lang_file}"; } else { include_once "modules/{$module_name}/lang/en.lang"; } //global variables global $arrConf; global $arrConfModule; global $arrLang; global $arrLangModule; $arrConf = array_merge($arrConf, $arrConfModule); $arrLang = array_merge($arrLang, $arrLangModule); //folder path for custom templates $base_dir = dirname($_SERVER['SCRIPT_FILENAME']); $templates_dir = isset($arrConf['templates_dir']) ? $arrConf['templates_dir'] : 'themes'; $local_templates_dir = "{$base_dir}/modules/{$module_name}/" . $templates_dir . '/' . $arrConf['theme']; //segun el usuario que esta logoneado consulto si tiene asignada extension para buscar los voicemails $pDB = new paloDB($arrConf['elastix_dsn']['acl']); $pConfig = new paloConfig("/etc", "amportal.conf", "=", "[[:space:]]*=[[:space:]]*"); $arrAMP = $pConfig->leer_configuracion(false); $dsnAsterisk = $arrAMP['AMPDBENGINE']['valor'] . "://" . $arrAMP['AMPDBUSER']['valor'] . ":" . $arrAMP['AMPDBPASS']['valor'] . "@" . $arrAMP['AMPDBHOST']['valor'] . "/asterisk"; $pDB_ast = new paloDB($dsnAsterisk); if (!empty($pDB->errMsg)) { echo "ERROR DE DB: {$pDB->errMsg} <br>"; } $arrData = array(); $pACL = new paloACL($pDB); if (!empty($pACL->errMsg)) { echo "ERROR DE ACL: {$pACL->errMsg} <br>"; } $arrVoiceData = array(); $inicio = $fin = $total = 0; $extension = $pACL->getUserExtension($_SESSION['elastix_user']); $ext = $extension; $esAdministrador = $pACL->isUserAdministratorGroup($_SESSION['elastix_user']); $bandCustom = true; if (is_null($ext) || $ext == "") { $bandCustom = false; if (!$esAdministrador) { $smarty->assign("mb_message", "<b>" . $arrLang["contact_admin"] . "</b>"); return ""; } } if ($esAdministrador) { $extension = "[[:digit:]]+"; } $smarty->assign("menu", "voicemail"); $smarty->assign("Filter", $arrLang['Show']); //formulario para el filtro $arrFormElements = createFieldFormVoiceList($arrLang); $oFilterForm = new paloForm($smarty, $arrFormElements); // Por omision las fechas toman el sgte. valor (la fecha de hoy) $date_start = date("Y-m-d") . " 00:00:00"; $date_end = date("Y-m-d") . " 23:59:59"; $dateStartFilter = getParameter('date_start'); $dateEndFilter = getParameter('date_end'); $report = false; if (getParameter('filter')) { if ($oFilterForm->validateForm($_POST)) { // Exito, puedo procesar los datos ahora. $date_start = translateDate($dateStartFilter) . " 00:00:00"; $date_end = translateDate($dateEndFilter) . " 23:59:59"; $arrFilterExtraVars = array("date_start" => $dateStartFilter, "date_end" => $dateEndFilter); } else { // Error $smarty->assign("mb_title", $arrLang["Validation Error"]); $arrErrores = $oFilterForm->arrErroresValidacion; $strErrorMsg = "<b>{$arrLang['The following fields contain errors']}:</b><br>"; foreach ($arrErrores as $k => $v) { $strErrorMsg .= "{$k}, "; } $strErrorMsg .= ""; $smarty->assign("mb_message", $strErrorMsg); } if ($dateStartFilter == "") { $dateStartFilter = " "; } if ($dateEndFilter == "") { $dateEndFilter = " "; } //se añade control a los filtros $report = true; $arrDate = array('date_start' => $dateStartFilter, 'date_end' => $dateEndFilter); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); } else { if (isset($dateStartFilter) and isset($dateEndFilter)) { $report = true; $date_start = translateDate($dateStartFilter) . " 00:00:00"; $date_end = translateDate($dateEndFilter) . " 23:59:59"; $arrDate = array('date_start' => $dateStartFilter, 'date_end' => $dateEndFilter); $arrFilterExtraVars = array("date_start" => $dateStartFilter, "date_end" => $dateEndFilter); $htmlFilter = $contenidoModulo = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_GET); } else { $report = true; //se añade control a los filtros $arrDate = array('date_start' => date("d M Y"), 'date_end' => date("d M Y")); $htmlFilter = $contenidoModulo = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", array('date_start' => date("d M Y"), 'date_end' => date("d M Y"))); } } $oGrid = new paloSantoGrid($smarty); if ($report) { $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Start Date") . " = " . $arrDate['date_start'] . ", " . _tr("End Date") . " = " . $arrDate['date_end'], $arrDate, array('date_start' => date("d M Y"), 'date_end' => date("d M Y")), true); } if (getParameter('submit_eliminar')) { borrarVoicemails(); if ($oFilterForm->validateForm($_POST)) { // Exito, puedo procesar los datos ahora. $date_start = translateDate($_POST['date_start']) . " 00:00:00"; $date_end = translateDate($_POST['date_end']) . " 23:59:59"; $arrFilterExtraVars = array("date_start" => $_POST['date_start'], "date_end" => $_POST['date_end']); } $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); } if (getParameter('config')) { if (!(is_null($ext) || $ext == "")) { return form_config($smarty, $module_name, $local_templates_dir, $arrLang, $ext, $pDB_ast); } } if (getParameter('save')) { if (!save_config($smarty, $module_name, $local_templates_dir, $arrLang, $ext, $pDB_ast)) { return form_config($smarty, $module_name, $local_templates_dir, $arrLang, $ext, $pDB_ast); } } if (getParameter('action') == "display_record") { $file = getParameter("name"); $ext = getParameter("ext"); $user = isset($_SESSION['elastix_user']) ? $_SESSION['elastix_user'] : ""; $extension = $pACL->getUserExtension($user); $esAdministrador = $pACL->isUserAdministratorGroup($user); $path = "/var/spool/asterisk/voicemail/default"; $voicemailPath = "{$path}/{$ext}/INBOX/" . base64_decode($file); $tmpfile = basename($voicemailPath); $filetmp = "{$path}/{$ext}/INBOX/{$tmpfile}"; if (!is_file($filetmp)) { die("<b>404 " . $arrLang["no_file"] . "</b>"); } if (!$esAdministrador) { if ($extension != $ext) { die("<b>404 " . $arrLang["no_file"] . "</b>"); } $voicemailPath = "{$path}/{$extension}/INBOX/" . base64_decode($file); } if (isset($file) && preg_match("/^[[:alpha:]]+[[:digit:]]+\\.(wav|WAV|Wav|mp3|gsm)\$/", base64_decode($file))) { if (!is_file($voicemailPath)) { die("<b>404 " . $arrLang["no_file"] . "</b>"); } $sContenido = ""; $name = basename($voicemailPath); $format = substr(strtolower($name), -3); // This will set the Content-Type to the appropriate setting for the file $ctype = ''; switch ($format) { case "mp3": $ctype = "audio/mpeg"; break; case "wav": $ctype = "audio/x-wav"; break; case "Wav": $ctype = "audio/x-wav"; break; case "WAV": $ctype = "audio/x-wav"; break; case "gsm": $ctype = "audio/x-gsm"; break; // not downloadable // not downloadable default: die("<b>404 " . $arrLang["no_file"] . "</b>"); break; } if ($sContenido == "") { $session_id = session_id(); } $sContenido = <<<contenido <embed src='index.php?menu={$module_name}&action=download&ext={$ext}&name={$file}&rawmode=yes&elastixSession={$session_id}' width=300, height=20 autoplay=true loop=false type="{$ctype}"></embed><br> contenido; $smarty->assign("CONTENT", $sContenido); $smarty->display("_common/popup.tpl"); } else { die("<b>404 " . $arrLang["no_file"] . "</b>"); } return; } if (getParameter('action') == "download") { $user = isset($_SESSION['elastix_user']) ? $_SESSION['elastix_user'] : ""; $extension = $pACL->getUserExtension($user); $esAdministrador = $pACL->isUserAdministratorGroup($user); $record = getParameter("name"); $ext = getParameter("ext"); if (!preg_match("/^[[:digit:]]+\$/", $ext)) { Header("HTTP/1.1 404 Not Found"); die("<b>404 " . $arrLang["no_file"] . "</b>"); } $record = base64_decode($record); $path = "/var/spool/asterisk/voicemail/default"; $voicemailPath = "{$path}/{$ext}/INBOX/" . $record; //"$path/$record"; $tmpfile = basename($voicemailPath); $filetmp = "{$path}/{$ext}/INBOX/{$tmpfile}"; if (!is_file($filetmp)) { die("<b>404 " . $arrLang["no_file"] . "</b>"); } if (!$esAdministrador) { if ($extension != $ext) { Header("HTTP/1.1 404 Not Found"); die("<b>404 " . $arrLang["no_extension"] . "</b>"); } $voicemailPath = "{$path}/{$extension}/INBOX/" . $record; } if (isset($record) && preg_match("/^[[:alpha:]]+[[:digit:]]+\\.(wav|WAV|Wav|mp3|gsm)\$/", $record)) { // See if the file exists if (!is_file($voicemailPath)) { Header("HTTP/1.1 404 Not Found"); die("<b>404 " . $arrLang["no_file"] . "</b>"); } // Gather relevent info about file $size = filesize($voicemailPath); $name = basename($voicemailPath); //$extension = strtolower(substr(strrchr($name,"."),1)); $extension = substr(strtolower($name), -3); // This will set the Content-Type to the appropriate setting for the file $ctype = ''; switch ($extension) { case "mp3": $ctype = "audio/mpeg"; break; case "wav": $ctype = "audio/x-wav"; break; case "Wav": $ctype = "audio/x-wav"; break; case "WAV": $ctype = "audio/x-wav"; break; case "gsm": $ctype = "audio/x-gsm"; break; // not downloadable // not downloadable default: die("<b>404 " . $arrLang["no_file"] . "</b>"); break; } // need to check if file is mislabeled or a liar. $fp = fopen($voicemailPath, "rb"); if ($size && $ctype && $fp) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: wav file"); header("Content-Type: " . $ctype); header("Content-Disposition: attachment; filename=" . $name); header("Content-Transfer-Encoding: binary"); header("Content-length: " . $size); fpassthru($fp); } } else { Header("HTTP/1.1 404 Not Found"); die("<b>404 " . $arrLang["no_file"] . "</b>"); } return; } $end = 0; $url = array('menu' => $module_name); //si tiene extension consulto sino, muestro un mensaje de que no tiene asociada extension $archivos = array(); if (!(is_null($ext) || $ext == "") || $esAdministrador) { if (is_null($ext) || $ext == "") { $smarty->assign("mb_message", "<b>" . $arrLang["no_extension_assigned"] . "</b>"); } $path = "/var/spool/asterisk/voicemail/default"; $folder = "INBOX"; if ($esAdministrador) { if ($handle = opendir($path)) { while (false !== ($dir = readdir($handle))) { if ($dir != "." && $dir != ".." && ereg($extension, $dir, $regs) && is_dir($path . "/" . $dir)) { $directorios[] = $dir; } } } } else { $directorios[] = $extension; } //if($esAdministrador) $arrData = array(); foreach ($directorios as $directorio) { $voicemailPath = "{$path}/{$directorio}/{$folder}"; if (file_exists($voicemailPath)) { if ($handle = opendir($voicemailPath)) { $bExito = true; while (false !== ($file = readdir($handle))) { //no tomar en cuenta . y .. //buscar los archivos de texto (txt) que son los que contienen los datos de las llamadas if ($file != "." && $file != ".." && ereg("(.+)\\.[txt|TXT]", $file, $regs)) { //leer la info del archivo $pConfig = new paloConfig($voicemailPath, $file, "=", "[[:space:]]*=[[:space:]]*"); $arrVoiceMailDes = array(); $arrVoiceMailDes = $pConfig->leer_configuracion(false); //verifico que tenga datos if (is_array($arrVoiceMailDes) && count($arrVoiceMailDes) > 0 && isset($arrVoiceMailDes['origtime']['valor'])) { //uso las fechas del filtro //si la fecha de llamada esta dentro del rango, la muestro $fecha = date("Y-m-d", $arrVoiceMailDes['origtime']['valor']); $hora = date("H:i:s", $arrVoiceMailDes['origtime']['valor']); if (strtotime("{$fecha} {$hora}") <= strtotime($date_end) && strtotime("{$fecha} {$hora}") >= strtotime($date_start)) { $arrTmp[0] = "<input type='checkbox' name='" . utf8_encode("voc-" . $file) . ",{$directorio}' />"; $arrTmp[1] = $fecha; $arrTmp[2] = $hora; $arrTmp[3] = $arrVoiceMailDes['callerid']['valor']; $arrTmp[4] = $arrVoiceMailDes['origmailbox']['valor']; $arrTmp[5] = $arrVoiceMailDes['duration']['valor'] . ' sec.'; $pathRecordFile = base64_encode($regs[1] . '.wav'); $recordingLink = "<a href='#' onClick=\"javascript:popUp('index.php?menu={$module_name}&action=display_record&ext={$directorio}&name={$pathRecordFile}&rawmode=yes',350,100); return false;\">{$arrLang['Listen']}</a> "; $recordingLink .= "<a href='?menu={$module_name}&action=download&ext={$directorio}&name={$pathRecordFile}&rawmode=yes'>{$arrLang['Download']}</a>"; $arrTmp[6] = $recordingLink; $arrData[] = $arrTmp; } } } } closedir($handle); } } else { // No vale la ruta } } /* function sort_voicemails_hora_desc($a, $b) { return ($a[2] == $b[2]) ? 0 : (($a[2] < $b[2]) ? 1 : -1); } function sort_voicemails_fecha_desc($a, $b) { return ($a[1] == $b[1]) ? 0 : (($a[1] < $b[1]) ? 1 : -1); } usort($arrData, 'sort_voicemails_hora_desc'); usort($arrData, 'sort_voicemails_fecha_desc'); */ $fechas = array(); $horas = array(); foreach ($arrData as $llave => $fila) { $fechas[$llave] = $fila[1]; $horas[$llave] = $fila[2]; } array_multisort($fechas, SORT_DESC, $horas, SORT_DESC, $arrData); //Paginacion $limit = 15; $total = count($arrData); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; // Construyo el URL base if (isset($arrFilterExtraVars) && is_array($arrFilterExtraVars) and count($arrFilterExtraVars) > 0) { $url = array_merge($url, $arrFilterExtraVars); } //Fin Paginacion $arrVoiceData = array_slice($arrData, $offset, $limit); } else { $smarty->assign("mb_message", "<b>" . $arrLang["contact_admin"] . "</b>"); } $arrGrid = array("title" => $arrLang["Voicemail List"], "url" => $url, "icon" => "/modules/{$module_name}/images/pbx_voicemail.png", "width" => "99%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, "columns" => array(0 => array("name" => "", "property1" => ""), 1 => array("name" => $arrLang["Date"], "property1" => ""), 2 => array("name" => $arrLang["Time"], "property1" => ""), 3 => array("name" => $arrLang["CallerID"], "property1" => ""), 4 => array("name" => $arrLang["Extension"], "property1" => ""), 5 => array("name" => $arrLang["Duration"], "property1" => ""), 6 => array("name" => $arrLang["Message"], "property1" => ""))); if ($bandCustom == true) { $oGrid->customAction("config", _tr("Configuration")); } $oGrid->deleteList(_tr("Are you sure you wish to delete voicemails?"), "submit_eliminar", _tr("Delete")); $oGrid->showFilter($htmlFilter); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrVoiceData, $arrLang); if (strpos($contenidoModulo, '<form') === FALSE) { $contenidoModulo = "<form style='margin-bottom:0;' method='POST' action='?menu={$module_name}'>{$contenidoModulo}</form>"; } return $contenidoModulo; }
function report_adress_book($smarty, $module_name, $local_templates_dir, $pDB, $pDB_2, $arrLang, $arrConf, $dsn_agi_manager, $dsnAsterisk) { $padress_book = new paloAdressBook($pDB); $arrBooker = $padress_book->getBookerList(); $arrPayment_type = array(0 => 'Khách lẻ không thường xuyên', 1 => 'Khách lẻ thường xuyên', 2 => 'Khách hàng công ty', 3 => 'Khách hàng đại lý'); $arrComboElements = array("customer_code" => "Mã khách hàng", "firstname" => "Tên khách hàng", "phone" => "Số điện thoại", "email" => "Email", "agent_id" => "Booker", "sale" => "Kinh Doanh", "booker" => "Kế Toán", "type" => "Loại khách hàng"); $arrFormElements = array("field" => array("LABEL" => "Tìm theo", "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $arrComboElements, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""), "pattern" => array("LABEL" => "", "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "", "INPUT_EXTRA_PARAM" => array('id' => 'filter_value')), "booker" => array("LABEL" => "", "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $arrBooker, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""), "payment" => array("LABEL" => "", "REQUIRED" => "no", "INPUT_TYPE" => "SELECT", "INPUT_EXTRA_PARAM" => $arrPayment_type, "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => "")); $oFilterForm = new paloForm($smarty, $arrFormElements); $smarty->assign("SHOW", "Tìm"); $smarty->assign("module_name", $module_name); $field = NULL; $pattern = NULL; $namePattern = NULL; if (isset($_POST['field']) and isset($_POST['pattern']) and $_POST['pattern'] != "") { $field = $_POST['field']; $pattern = "%" . trim($_POST['pattern']) . "%"; $namePattern = trim($_POST['pattern']); //$nameField=$arrComboElements[$field]; //$agent_id = $_POST['booker']; //$payment_type = $_POST['booker']; } $arrFilter = array("field" => $field, "pattern" => $namePattern); $startDate = $endDate = date("Y-m-d H:i:s"); $oGrid = new paloSantoGrid($smarty); $oGrid->enableExport(); // enable export. $oGrid->setNameFile_Export("HNH_KhachHang"); $oGrid->addFilterControl(_tr("Filter applied ") . $field . " = {$namePattern}", $arrFilter, array("field" => "name", "pattern" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter_adress_book.tpl", "", $arrFilter); $total = $padress_book->getAddressBook(NULL, NULL, $field, $pattern, TRUE); $total_datos = $total[0]["total"]; //Paginacion if ($oGrid->isExportAction()) { $total = $total_datos; $limit = $total; $arr_cols = array(0 => array("name" => "Mã KH", "property1" => ""), 1 => array("name" => "Tên khách hàng", "property1" => ""), 2 => array("name" => "Họ/Hình thức", "property1" => ""), 3 => array("name" => "Điện thoại/Liên hệ", "property1" => ""), 4 => array("name" => "Email/Liên hệ", "property1" => ""), 5 => array("name" => "Booker", "property1" => ""), 6 => array("name" => "Kinh doanh", "property1" => ""), 7 => array("name" => "Kế toán", "property1" => ""), 8 => array("name" => "Phân loại", "property1" => ""), 9 => array("name" => "Thẻ thành viên", "property1" => ""), 10 => array("name" => "Cách thanh toán", "property1" => "")); } else { $limit = 20; $total = $total_datos; $arr_cols = array(0 => array("name" => "", "property1" => ""), 1 => array("name" => "Mã KH", "property1" => ""), 2 => array("name" => "Tên khách hàng", "property1" => ""), 3 => array("name" => "Họ/Hình thức", "property1" => ""), 4 => array("name" => "Điện thoại/Liên hệ", "property1" => ""), 5 => array("name" => "Email/Liên hệ", "property1" => ""), 6 => array("name" => "Booker", "property1" => ""), 7 => array("name" => "Kinh doanh", "property1" => ""), 8 => array("name" => "Kế toán", "property1" => ""), 9 => array("name" => "Phân loại", "property1" => ""), 10 => array("name" => "Thẻ thành viên", "property1" => ""), 11 => array("name" => "Cách thanh toán", "property1" => ""), 12 => array("name" => "Lựa chọn", "property1" => "")); } $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $inicio = $total == 0 ? 0 : $offset + 1; $end = $offset + $limit <= $total ? $offset + $limit : $total; //Fin Paginacion $arrResult = $padress_book->getAddressBook($limit, $offset, $field, $pattern, FALSE); //var_dump($arrResult);die; $arrData = null; //echo print_r($arrResult,true); if (is_array($arrResult) && $total > 0) { if ($oGrid->isExportAction()) { foreach ($arrResult as $key => $adress_book) { $typeContact = ""; switch ($adress_book['type']) { case '0': $typeContact = "Khách hàng lẽ"; break; case '1': $typeContact = "Khách lẽ thường xuyên"; break; case '2': $typeContact = 'Khách hàng công ty'; break; case '3': $typeContact = "Khách hàng đại lý"; break; default: break; } $phone_list = ''; if (isset($adress_book['number']) && count($adress_book['number']) > 0) { foreach ($adress_book['number'] as $phone) { $phone_list .= is_null($phone) || trim($phone) == '' ? '' : $phone . '\\n'; } } //SDT column $email_list = ''; if (count($adress_book['email']) > 0) { foreach ($adress_book['email'] as $email) { $email_list .= is_null($email) || trim($email) == '' ? '' : $email . '\\n'; } } $arrTmp[] = $adress_book['customer_code']; //Ten column $arrTmp[] = $adress_book['firstname']; //Ten column $arrTmp[] = $adress_book['lastname']; //Ten column $arrTmp[] = $phone_list; $arrTmp[] = $email_list; $arrTmp[] = $adress_book['booker']; $arrTmp[] = $adress_book['sale']; $arrTmp[] = $adress_book['accountant']; $arrTmp[] = $typeContact; $arrTmp[] = $adress_book['membership']; $arrTmp[] = $adress_book['payment']; $arrData[] = $arrTmp; } } else { foreach ($arrResult as $key => $adress_book) { switch ($adress_book['type']) { case '0': $typeContact = '<img border=0 src="/modules/' . $module_name . '/images/nor-customer.png" title="Khách hàng lẽ"/>KLE'; break; case '1': $typeContact = '<img border=0 src="/modules/' . $module_name . '/images/fre-customer.png" title="Khách hàng lẽ thường xuyên"/>KLE-TX'; break; case '2': $typeContact = '<img border=0 src="/modules/' . $module_name . '/images/company.png" title="Khách hàng công ty"/>CTY'; break; case '3': $typeContact = '<img border=0 src="/modules/' . $module_name . '/images/agency.png" title="Khách hàng đại lý"/>DLY'; break; default: break; } $phone_list = ''; if (isset($adress_book['number']) && count($adress_book['number']) > 0) { foreach ($adress_book['number'] as $phone) { $phone1 = explode('-', $phone); $call = trim($phone1[0]); $phone_list .= is_null($call) || trim($call) == '' ? '' : "<a href='?menu={$module_name}&action=call2phone&id=" . $call . "'><img border=0 src='/modules/{$module_name}/images/call.png' title='Gọi số " . $call . "'/></a> " . $phone . '<br/>'; //SDT column } } $email_list = ''; if (count($adress_book['email']) > 0) { foreach ($adress_book['email'] as $email) { $phone1 = explode('-', $email); $addr = trim($phone1[0]); $email_list .= is_null($addr) || trim($addr) == '' ? '' : '<a title="Gửi mail đến hộp mail này" href="mailto:' . $addr . '?Subject=[CallCenter]:" target="_top">' . $email . '</a><br/>'; } } $arrTmp[0] = "<input type='checkbox' name='contact_{$adress_book['id']}' />"; $arrTmp[1] = $adress_book['customer_code']; //Ten column $arrTmp[2] = $adress_book['firstname']; //Ten column $arrTmp[3] = $adress_book['lastname']; //Ten column $arrTmp[4] = $phone_list; $arrTmp[5] = $email_list; $arrTmp[6] = $adress_book['booker']; $arrTmp[7] = $adress_book['sale']; $arrTmp[8] = $adress_book['accountant']; $arrTmp[9] = $typeContact; $arrTmp[10] = $adress_book['membership']; $arrTmp[11] = $adress_book['payment']; $arrTmp[12] = "<a href='?menu={$module_name}&action=show&id=" . $adress_book['id'] . "'><img src='modules/{$module_name}/images/extra.png' title='Xem'></a> \n <a href='?menu={$module_name}&action=edit&id=" . $adress_book['id'] . "'><img src='modules/{$module_name}/images/edit.png' title='Sửa'></a> "; $arrData[] = $arrTmp; } } } $oGrid->deleteList("Bạn có muốn xóa khách hàng này không?", "delete", "Xóa"); $arrGrid = array("title" => "Thông tin khách hàng", "url" => array('menu' => $module_name, 'filter' => $pattern), "icon" => "modules/{$module_name}/images/address_book.png", "width" => "99%", "start" => $inicio, "end" => $end, "total" => $total, "columns" => $arr_cols); $oGrid->addNew("new", "Thêm khách hàng"); $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); return $contenidoModulo; }
function reportQueue($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $pORGZ = new paloSantoOrganization($pDB); $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; if ($credentials['userlevel'] != "superadmin") { $domain = $credentials['domain']; } $queue_name = getParameter("queue_name"); $pQueue = new paloQueuePBX($pDB, $domain); $queue_number = getParameter("queue_number"); if (isset($queue_number) && $queue_number != '') { $expression = $pQueue->getRegexPatternFromAsteriskPattern($queue_number); if ($expression === false) { $queue_number = ''; } } $url['menu'] = $module_name; $url['organization'] = $domain; $url['queue_number'] = $queue_number; //queue_number $url['queue_name'] = $queue_name; //queue_name $total = $pQueue->getTotalQueues($domain, $queue_number, $queue_name); $arrOrgz = array(); if ($credentials['userlevel'] == "superadmin") { $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } if ($total === false) { $error = $pQueue->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('Queues List')); //$oGrid->setIcon('url de la imagen'); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); if ($credentials['userlevel'] == 'superadmin') { $arrColumns[] = _tr("Organization"); } $arrColumns[] = _tr("Queue Number"); $arrColumns[] = _tr("Queue Name"); $arrColumns[] = _tr("Password"); $arrColumns[] = _tr("Record Call"); $arrColumns[] = _tr("Strategy"); $arrColumns[] = _tr("Timeout Queue"); $arrColumns[] = _tr("Timeout Agent"); $oGrid->setColumns($arrColumns); $arrData = array(); $arrQueues = array(); if ($total != 0) { $arrQueues = $pQueue->getQueues($domain, $queue_number, $queue_name, $limit, $offset); } if ($arrQueues === false) { $error = _tr("Error getting queue data. ") . $pQueue->errMsg; } else { foreach ($arrQueues as $queue) { $arrTmp = array(); if ($credentials['userlevel'] == 'superadmin') { $arrTmp[] = $arrOrgz[$queue['organization_domain']]; } $queunumber = $queue["queue_number"]; $arrTmp[] = " <a href='?menu=queues&action=view&qname=" . $queue['name'] . "&organization={$queue['organization_domain']}'>" . $queunumber . "</a>"; $arrTmp[] = htmlentities($queue["description"], ENT_QUOTES, "UTF-8"); $arrTmp[] = $queue["password_detail"]; $arrTmp[] = isset($queue["monitor_format"]) ? "yes" : "no"; $arrTmp[] = $queue["strategy"]; $arrTmp[] = $queue["timeout_detail"] == "0" ? "unlimited" : $queue["timeout_detail"]; $arrTmp[] = $queue["timeout"]; /*$result=getInfoQueue(); $arrTmp[6]=$result["logged"]; $arrTmp[6]=$result["free"];*/ $arrData[] = $arrTmp; } } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if ($pORGZ->getNumOrganization(array()) >= 1) { if (in_array('create', $arrPermission)) { if ($credentials['userlevel'] == 'superadmin') { $oGrid->addComboAction("organization_add", _tr("Create New Queue"), array_slice($arrOrgz, 1), $selected = null, "create_queue", $onchange_select = null); } else { $oGrid->addNew("create_queue", _tr("Create New Queue")); } } if ($credentials['userlevel'] == 'superadmin') { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["queue_number"] = $queue_number; // patter to filter estension number $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Queue Number") . " = " . $queue_number, $_POST, array("queue_number" => "")); $_POST["queue_name"] = $queue_name; // patter to filter estension number $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Queue Name") . " = " . $queue_name, $_POST, array("queue_name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); } else { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("It's necesary you create at least one organization so you can use this module")); } if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); $mensaje = showMessageReload($module_name, $pDB, $credentials); $contenidoModulo = $mensaje . $contenidoModulo; return $contenidoModulo; }
function reportMemberList($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $pEmailList = new paloSantoEmailList($pDB); $id_list = getParameter("id"); if ($credentials['userlevel'] == 'superadmin') { $emailList = $pEmailList->getEmailList($id_list); } else { $emailList = $pEmailList->getEmailList($id_list, $credentials['domain']); } if ($emailList == false) { $smarty->assign("mb_title", _tr("Error")); $error = $emailList === false ? _tr("Couldn't be retrieved Email List data") : _tr("Email List does not exist"); $smarty->assign("mb_message", $error); return reportEmailList($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } $field_type = getParameter("filter_type"); $field_pattern = getParameter("filter_txt"); $smarty->assign("IDEMAILLIST", $id_list); $smarty->assign("ACTION", 'view_memberlist'); $smarty->assign("SHOW", _tr("Show")); $smarty->assign("RETURN", _tr("Return")); $smarty->assign("LINK", "?menu={$module_name}&action=export&id={$id_list}&rawmode=yes"); $smarty->assign("EXPORT", _tr("Export Members")); $edit_permission = in_array('edit_list', $arrPermission); $totalMembers = $pEmailList->getTotalMembers($id_list); $oGrid = new paloSantoGrid($smarty); $limit = 20; $oGrid->setLimit($limit); $oGrid->setTotal($totalMembers); $oGrid->setTitle(_tr("List Members of") . " " . $pEmailList->getListName($id_list)); $oGrid->setIcon("web/apps/{$module_name}/images/email.png"); $oGrid->pagingShow(true); $offset = $oGrid->calculateOffset(); $url['menu'] = $module_name; $url['action'] = 'view_memberlist'; $url['id'] = $id_list; $url['filter_type'] = $field_type; $url['filter_txt'] = $field_pattern; $oGrid->setURL($url); if ($edit_permission) { $arrColumns[] = ''; } $arrColumns[] = _tr("Member name"); $arrColumns[] = _tr("Member email"); $oGrid->setColumns($arrColumns); $arrResult = $pEmailList->getMembers($limit, $offset, $id_list, $field_type, $field_pattern); $arrData = null; //print_r($arrResult); if (is_array($arrResult) && $totalMembers > 0) { foreach ($arrResult as $list) { $arrTmp = array(); if ($edit_permission) { $arrTmp[] = "<input type='checkbox' name='del_emailmembers[{$list["mailmember"]}]'>"; } $arrTmp[] = $list["namemember"]; $arrTmp[] = $list["mailmember"]; $arrData[] = $arrTmp; } } $arrFormFilterMembers = createFieldFilterViewMembers(); $oFilterForm = new paloForm($smarty, $arrFormFilterMembers); $arrType = array("name" => _tr("Name"), "email" => _tr("Email")); if (!is_null($field_type)) { $nameField = $arrType[$field_type]; } else { $nameField = ""; } $oGrid->customAction("return", _tr("Return")); if ($edit_permission) { $oGrid->addNew("new_memberlist", _tr("Add Member(s) to List")); $oGrid->deleteList(_tr("Are you sure you wish to delete the Email List(s)."), "remove_memberlist", _tr("Delete")); } $oGrid->customAction("?menu={$module_name}&action=export&id={$id_list}&rawmode=yes", _tr("Export Members"), null, true); $oGrid->addFilterControl(_tr("Filter applied: ") . $nameField . " = " . $field_pattern, $_POST, array("filter_type" => "name", "filter_txt" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/view_members.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); $content = $oGrid->fetchGrid(array(), $arrData); return $content; }
function reportMoH($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { global $arrPermission; $error = ""; $pORGZ = new paloSantoOrganization($pDB); $name = getParameter("name"); if ($credentials['userlevel'] == "superadmin") { $domain = getParameter("organization"); $domain = empty($domain) ? 'all' : $domain; $arrOrgz = array("all" => _tr("all")); foreach ($pORGZ->getOrganization(array()) as $value) { $arrOrgz[$value["domain"]] = $value["name"]; } } else { $arrOrgz = array(); $domain = $credentials['domain']; } $url["menu"] = $module_name; $url["organization"] = $domain; $url["name"] = $name; $pMoH = new paloSantoMoH($pDB, $domain); $total = $pMoH->getNumMoH($domain, $name); if ($total === false) { $error = $pMoH->errMsg; $total = 0; } $limit = 20; $oGrid = new paloSantoGrid($smarty); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $end = $offset + $limit <= $total ? $offset + $limit : $total; $oGrid->setTitle(_tr('MoH Class List')); //$oGrid->setIcon('url de la imagen'); $oGrid->setWidth("99%"); $oGrid->setStart($total == 0 ? 0 : $offset + 1); $oGrid->setEnd($end); $oGrid->setTotal($total); $oGrid->setURL($url); $arrColum = array(); if ($credentials['userlevel'] == "superadmin") { $arrColum[] = _tr("Organization"); } $arrColum[] = _tr("Name"); $arrColum[] = _tr("Type"); $arrColum[] = _tr("Sort"); $arrColum[] = _tr("Directory"); $arrColum[] = _tr("Aplication"); $oGrid->setColumns($arrColum); $arrMoH = array(); $arrData = array(); if ($total != 0) { $arrMoH = $pMoH->getMoHs($domain, $name, $limit, $offset); } if ($arrMoH === false) { $error = _tr("Error to obtain MoH Class") . $pMoH->errMsg; $arrMoH = array(); } $arrData = array(); foreach ($arrMoH as $moh) { $arrTmp = array(); if ($credentials['userlevel'] == "superadmin") { if (empty($moh["organization_domain"])) { $arrTmp[] = ""; $arrTmp[] = " <a href='?menu={$module_name}&action=view&id_moh=" . $moh["name"] . "'>" . $moh["description"] . "</a>"; } else { $arrTmp[] = $arrOrgz[$moh["organization_domain"]]; $arrTmp[] = $moh["description"]; } } else { $arrTmp[] = " <a href='?menu={$module_name}&action=view&id_moh=" . $moh["name"] . "'>" . $moh["description"] . "</a>"; } $arrTmp[] = $moh["mode"]; $arrTmp[] = $moh["sort"]; $arrTmp[] = $moh["directory"]; $arrTmp[] = $moh["application"]; $arrData[] = $arrTmp; } $smarty->assign("USERLEVEL", $credentials['userlevel']); $smarty->assign("SEARCH", "<input type='submit' class='button' value='" . _tr('Search') . "' name='report'>"); if (in_array("create", $arrPermission)) { $oGrid->addNew("create_moh", _tr("Create New Class MoH")); } if ($credentials['userlevel'] == "superadmin") { $_POST["organization"] = $domain; $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Organization") . " = " . $arrOrgz[$domain], $_POST, array("organization" => "all"), true); } $_POST["name"] = $name; // name $oGrid->addFilterControl(_tr("Filter applied ") . _tr("Name") . " = " . $name, $_POST, array("name" => "")); $arrFormElements = createFieldFilter($arrOrgz); $oFilterForm = new paloForm($smarty, $arrFormElements); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); $oGrid->showFilter(trim($htmlFilter)); if ($error != "") { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", $error); } $contenidoModulo = $oGrid->fetchGrid(array(), $arrData); return $contenidoModulo; }
function listarArchivos($module_name, $smarty, $local_templates_dir, $sDirectorio) { global $arrLang; // Función que rechaza los directorios punto y doble punto function _reject_dotdirs($s) { return !($s == '.' || $s == '..'); } $listaArchivos = file_exists($sDirectorio) && is_dir($sDirectorio) ? array_filter(scandir($sDirectorio), '_reject_dotdirs') : NULL; if (!is_array($listaArchivos)) { $smarty->assign("msj_err", _tr('This is not a valid directory')); } // Filtrar por la cadena indicada en el filtro $sSubStrArchivo = getParameter('file'); if ($sSubStrArchivo != '') { $t = array(); foreach ($listaArchivos as $sArchivo) { if (strpos($sArchivo, $sSubStrArchivo) !== FALSE) { $t[] = $sArchivo; } } $listaArchivos = $t; } // Mapear de la lista de archivos al listado completo con URLs $arrData = array(); foreach ($listaArchivos as $sArchivo) { $arrData[] = array(sprintf('<a href="%s">%s</a>', construirURL(array('menu' => $module_name, 'action' => 'edit', 'file' => $sArchivo, 'search' => $sSubStrArchivo, 'nav' => getParameter('nav'), 'page' => getParameter('page'))), htmlentities($sArchivo, ENT_COMPAT, 'UTF-8')), filesize($sDirectorio . $sArchivo)); } ////PARA EL PAGINEO $total = count($arrData); $limit = 25; $offset = 0; $oForm = new paloForm($smarty, array("file" => array("LABEL" => _tr("File"), "REQUIRED" => "no", "INPUT_TYPE" => "TEXT", "INPUT_EXTRA_PARAM" => "", "VALIDATION_TYPE" => "text", "VALIDATION_EXTRA_PARAM" => ""))); $smarty->assign("Filter", _tr('Filter')); $smarty->assign("NEW_FILE", _tr("New File")); $smarty->assign('url_new', construirURL(array('menu' => $module_name, 'action' => 'new'))); $oGrid = new paloSantoGrid($smarty); $arr = array("file" => getParameter("file"), "filter" => "Filter"); if (empty($_POST)) { $_POST = $arr; } $oGrid->addFilterControl(_tr("Filter applied ") . _tr("File") . " = " . $sSubStrArchivo, $_POST, array("file" => "")); $htmlFilter = $oForm->fetchForm("{$local_templates_dir}/new.tpl", _tr("File Editor"), $_POST); $oGrid->setLimit($limit); $oGrid->setTotal($total); $offset = $oGrid->calculateOffset(); $inicio = $total == 0 ? 0 : $offset + 1; $fin = $offset + $limit <= $total ? $offset + $limit : $total; $leng = $fin - $inicio; $arrDatosGrid = array_slice($arrData, $inicio - 1, $leng + 1); $arrGrid = array("title" => _tr("File Editor"), "url" => array('menu' => $module_name, 'file' => $sSubStrArchivo), "icon" => "/modules/{$module_name}/images/pbx_tools_asterisk_file_editor.png", "width" => "99%", "start" => $inicio, "end" => $fin, "total" => $total, "columns" => array(0 => array("name" => _tr("File List"), "property1" => ""), 1 => array("name" => _tr("File Size"), "property1" => ""))); $oGrid->addNew("?menu={$module_name}&action=new", _tr("New File"), true); $oGrid->showFilter($htmlFilter); return $oGrid->fetchGrid($arrGrid, $arrDatosGrid, $arrLang); }
function reportReportCall($smarty, $module_name, $local_templates_dir, &$pDB_cdr, &$pDB_billing, $arrConf, $arrLang) { $pReportCall = new paloSantoReportCall($pDB_cdr, $pDB_billing); //PARAMETERS $type = getParameter("option_fil"); $value_tmp = getParameter("value_fil"); $date_ini_tmp = getParameter("date_from"); $date_end_tmp = getParameter("date_to"); $order_by_tmp = getParameter("order_by"); $order_type_tmp = getParameter("order_type"); $action = getParameter("nav"); $start = getParameter("start"); $value = isset($value_tmp) ? $value_tmp : ""; $order_by = isset($order_by_tmp) ? $order_by_tmp : 1; $order_type = isset($order_type_tmp) ? $order_type_tmp : "asc"; $date_from = isset($date_ini_tmp) ? $date_ini_tmp : date("d M Y"); $date_to = isset($date_end_tmp) ? $date_end_tmp : date("d M Y"); $date_ini = translateDate($date_from) . " 00:00:00"; $date_end = translateDate($date_to) . " 23:59:59"; //********************************** //begin grid parameters $oGrid = new paloSantoGrid($smarty); $limit = 40; $total = $pReportCall->ObtainNumberDevices($type, $value); $oGrid->setLimit($limit); $oGrid->setTotal($total); $oGrid->calculatePagination($action, $start); $offset = $oGrid->getOffsetValue(); $end = $oGrid->getEnd(); $urlFields = array('menu' => $module_name, 'option_fil' => $type, 'value_fil' => $value, 'date_from' => $date_from, 'date_to' => $date_to); $url = construirUrl($urlFields, array('nav', 'start')); $urlFields['order_by'] = $order_by; $urlFields['order_type'] = $order_type; $smarty->assign("order_by", $order_by); $smarty->assign("order_type", $order_type); $arrData = null; $arrResult = $pReportCall->ObtainReportCall($limit, $offset, $date_ini, $date_end, $type, $value, $order_by, $order_type); $order_type = $order_type == "desc" ? "asc" : "desc"; if (is_array($arrResult) && $total > 0) { foreach ($arrResult as $key => $val) { $ext = $val['extension']; $arrTmp[0] = $ext; $arrTmp[1] = $val['user_name']; $arrTmp[2] = $val['num_incoming_call']; $arrTmp[3] = $val['num_outgoing_call']; $arrTmp[4] = "<label style='color: green;' title='{$val['duration_incoming_call']} {$arrLang['seconds']}'>" . $pReportCall->Sec2HHMMSS($val['duration_incoming_call']) . "</label>"; $arrTmp[5] = "<label style='color: green;' title='{$val['duration_outgoing_call']} {$arrLang['seconds']}'>" . $pReportCall->Sec2HHMMSS($val['duration_outgoing_call']) . "</label>"; $arrTmp[6] = "<a href='javascript: popup_ventana(\"?menu={$module_name}&action=graph&rawmode=yes&ext={$ext}&dini={$date_ini}&dfin={$date_end}\");'>" . "" . $arrLang['Call Details'] . "</a>"; $arrData[] = $arrTmp; } } $img = "<img src='images/flecha_{$order_type}.png' border='0' align='absmiddle'>"; $leyend_1 = "<a class='link_summary_off' href='{$url}&order_by=1&order_type=asc'>{$arrLang["Extension"]}</a>"; $leyend_2 = "<a class='link_summary_off' href='{$url}&order_by=2&order_type=asc'>{$arrLang["User name"]}</a>"; $leyend_3 = "<a class='link_summary_off' href='{$url}&order_by=3&order_type=asc'>{$arrLang["Num. Incoming Calls"]}</a>"; $leyend_4 = "<a class='link_summary_off' href='{$url}&order_by=4&order_type=asc'>{$arrLang["Num. Outgoing Calls"]}</a>"; $leyend_5 = "<a class='link_summary_off' href='{$url}&order_by=5&order_type=asc'>{$arrLang["Sec. Incoming Calls"]}</a>"; $leyend_6 = "<a class='link_summary_off' href='{$url}&order_by=6&order_type=asc'>{$arrLang["Sec. Outgoing Calls"]}</a>"; if ($order_by == 1) { $leyend_1 = "<a class='link_summary_on' href='{$url}&order_by=1&order_type={$order_type}'>{$arrLang["Extension"]} {$img}</a>"; } else { if ($order_by == 2) { $leyend_2 = "<a class='link_summary_on' href='{$url}&order_by=2&order_type={$order_type}'>{$arrLang["User name"]} {$img}</a>"; } else { if ($order_by == 3) { $leyend_3 = "<a class='link_summary_on' href='{$url}&order_by=3&order_type={$order_type}'>{$arrLang["Num. Incoming Calls"]} {$img}</a>"; } else { if ($order_by == 4) { $leyend_4 = "<a class='link_summary_on' href='{$url}&order_by=4&order_type={$order_type}'>{$arrLang["Num. Outgoing Calls"]} {$img}</a>"; } else { if ($order_by == 5) { $leyend_5 = "<a class='link_summary_on' href='{$url}&order_by=5&order_type={$order_type}'>{$arrLang["Sec. Incoming Calls"]} {$img}</a>"; } else { if ($order_by == 6) { $leyend_6 = "<a class='link_summary_on' href='{$url}&order_by=6&order_type={$order_type}'>{$arrLang["Sec. Outgoing Calls"]} {$img}</a>"; } } } } } } $arrGrid = array("title" => $arrLang["Summary by Extension"], "icon" => "images/list.png", "width" => "100%", "start" => $total == 0 ? 0 : $offset + 1, "end" => $end, "total" => $total, "url" => $urlFields, "columns" => array(0 => array("name" => $leyend_1, "property1" => ""), 1 => array("name" => $leyend_2, "property1" => ""), 2 => array("name" => $leyend_3, "property1" => ""), 3 => array("name" => $leyend_4, "property1" => ""), 4 => array("name" => $leyend_5, "property1" => ""), 5 => array("name" => $leyend_6, "property1" => ""), 6 => array("name" => $arrLang["Details"], "property1" => ""))); //begin section filter $arrFormFilterReportCall = createFieldForm($arrLang); $oFilterForm = new paloForm($smarty, $arrFormFilterReportCall); $_POST['option_fil'] = $type; $_POST['value_fil'] = $value; $_POST['date_from'] = $date_from; $_POST['date_to'] = $date_to; $smarty->assign("SHOW", $arrLang["Show"]); if ($_POST["date_from"] === "") { $_POST["date_from"] = " "; } if ($_POST['date_to'] === "") { $_POST['date_to'] = " "; } $oGrid->addFilterControl(_tr("Filter applied: ") . _tr("Start Date") . " = " . $date_from . ", " . _tr("End Date") . " = " . $date_to, $_POST, array("date_from" => date("d M Y"), "date_to" => date("d M Y")), true); $valueType = ""; if (!is_null($type)) { if ($type == "Ext") { $valueType = _tr("Extension"); } else { $valueType = _tr("User"); } } $oGrid->addFilterControl(_tr("Filter applied: ") . $valueType . " = " . $value, $_POST, array("option_fil" => "Ext", "value_fil" => "")); $htmlFilter = $oFilterForm->fetchForm("{$local_templates_dir}/filter.tpl", "", $_POST); //end section filter $oGrid->showFilter(trim($htmlFilter)); $contenidoModulo = $oGrid->fetchGrid($arrGrid, $arrData, $arrLang); return $contenidoModulo; }