diff --git a/app/xml_cdr/app_languages.php b/app/xml_cdr/app_languages.php index 9dc531f8aa..d36ac75e4c 100644 --- a/app/xml_cdr/app_languages.php +++ b/app/xml_cdr/app_languages.php @@ -1,1233 +1,1283 @@ -Note: Source, Destination and Caller ID (CID) Name fields support the use of an asterisk ('*') as a wildcard character."; -$text['description_search']['es-cl'] = "Atención: Origen, Destino y el identificador de llamadas (CID) campos Nombre apoyan el uso de un asterisco ('*') como carácter comodín."; -$text['description_search']['pt-pt'] = "Atenção: origem, destino e identificação do chamador (CID) campos Nome apoiar o uso de um asterisco ('*') como um caractere curinga."; -$text['description_search']['fr-fr'] = "Attention: Source, Destination et identification de l'appelant (CID) champs Nom appuient l'utilisation de l'astérisque ('*') comme un caractère générique."; -$text['description_search']['pt-br'] = "Atenção: origem, destino e identificação do chamador (CID) campos Nome apoiar o uso de um asterisco ('*') como um caractere curinga. "; -$text['description_search']['pl'] = "Uwaga: Następujące pola: numer dzwoniącego i odbiorcy rozmowy, prezentacja numeru oraz nazwy wspierają gwiazdkę (‘*’) jako symbol wieloznaczny."; -$text['description_search']['sv-se'] = "Notera : Källa, Destination och Nummerpresentation ( CID ) Namn fält stödjer användningen av en asterisk ( ' * ' ) som jokertecken."; -$text['description_search']['uk'] = ""; -$text['description_search']['de-at'] = "Info: Quelle, Ziel und Anruferkennung (CID) Name Felder unterstützen die Verwendung von Stern ('*') als Wildcard Zeichen."; -$text['description_search']['he'] = ""; - -$text['description-7']['en-us'] = "Call variables, call flow, timing information, and other useful call details."; -$text['description-7']['es-cl'] = "variables de llamada, flujo, información temporal y otros detalles útiles."; -$text['description-7']['pt-pt'] = "variáveis de chamada, fluxo da chamada, informações de tempo e outras informações úteis."; -$text['description-7']['fr-fr'] = "les variables de l'appel, le chemin, les compteurs et d'autres détails."; -$text['description-7']['pt-br'] = "Variáveis de chamada, fluxo da chamada, informações de tempo e outras informações úteis. "; -$text['description-7']['pl'] = "Zmienne związane z rozmowami, przepływ połączeń, informacje o czasach rozmów oraz inne przydatne szczegóły "; -$text['description-7']['sv-se'] = "Samtalsvariabler, samtalsflöden, tidsinformation och andra nyttiga samtalsdetaljer."; -$text['description-7']['uk'] = ""; -$text['description-7']['de-at'] = "Anruf Variablen, Ruf-Ablauf, Zeit Information und andere nützliche Anruf Details"; -$text['description-7']['he'] = ""; - -$text['description-6']['en-us'] = "The information contains caller id name and number, channel data, "; -$text['description-6']['es-cl'] = "La información contiene el nombre y número del caller id, datos del canal, "; -$text['description-6']['pt-pt'] = "A informação contem o nome e o número de origem, dados do canal, "; -$text['description-6']['fr-fr'] = "L'information contient le nom et le numéro d'appelant, données du canal, "; -$text['description-6']['pt-br'] = "A informação contém o nome e número de origem, dados do canal."; -$text['description-6']['pl'] = "Informacja zawiera prezentacje numeru i nazwy dzwoniącego oraz informacje o kanale."; -$text['description-6']['sv-se'] = "Informationen innehåller presentation av namn och nummer, channel data,"; -$text['description-6']['uk'] = ""; -$text['description-6']['de-at'] = "Die Information beinhaltet Anruferkennung (Name, Nummer) und Kanal Daten."; -$text['description-6']['he'] = ""; - -$text['description-5']['en-us'] = "A detailed view of the call and all information regarding it."; -$text['description-5']['es-cl'] = "Una vista detallada de la información de la llamada."; -$text['description-5']['pt-pt'] = "Uma visão detalhada da chamada e de todas as informações sobre ela."; -$text['description-5']['fr-fr'] = "Une vue détaillée de l'appel et toutes les informations en relation."; -$text['description-5']['pt-br'] = "Uma visão detalhada da chamada "; -$text['description-5']['pl'] = "Przeglądaj szczegóły rozmowy i inne informacje z nią związane."; -$text['description-5']['sv-se'] = "En detaljerad vy av samtalet och information kring samtalet."; -$text['description-5']['uk'] = ""; -$text['description-5']['de-at'] = "Eine detaillierte Ansicht des Anrufes mit allen zugehörigen Informationen."; -$text['description-5']['he'] = ""; - -$text['description-4']['en-us'] = "Then view the calls in the list or download them as comma seperated file by using the 'csv' button."; -$text['description-4']['es-cl'] = "Luego puede ver la información o descargarla como un archivo separado por comas utlizando el botón 'csv'."; -$text['description-4']['pt-pt'] = "Veja as chamadas na lista ou descarregue-as como arquivo, separadas por vírgulas, usando o botão 'csv'."; -$text['description-4']['fr-fr'] = "Ensuite visualisez les informations dans la liste ci-dessous, ou téléchargez les sous forme d'un fichier CSV."; -$text['description-4']['pt-br'] = "Veja as chamadas na lista ou descarregue-as como arquivo, separadas por vírgulas, usando o botão 'csv'. "; -$text['description-4']['pl'] = "Następnie przejrzyj rozmowy na liście lub pobierz je w pliku CSV (comma seperated)."; -$text['description-4']['sv-se'] = "Se sedan på samtalen i listan eller ladda ned dem som en komma separerad fil genom att använda ”csv” knappen."; -$text['description-4']['uk'] = ""; -$text['description-4']['de-at'] = "Dann zeigen Sie die Anrufe in der Liste an oder laden diese als CSV Datei indem Sie die Taste 'CSV' drücken."; -$text['description-4']['he'] = ""; - -$text['description-3']['en-us'] = "Use the fields to filter the information for the specific call records that are desired."; -$text['description-3']['es-cl'] = "Use los campos para filtrar la información. "; -$text['description-3']['pt-pt'] = "Utilize os campos para filtrar a informação sobre os registos de chamadas desejados."; -$text['description-3']['fr-fr'] = "Utiliser les filtres pour afficher les appels désirés. "; -$text['description-3']['pt-br'] = "Utilize os campos para filtrar a informação sobre os registos de chamadas desejados. "; -$text['description-3']['pl'] = "Użyj tych pól do filtrowania wymaganych informacji o konkretnych rozmowach. "; -$text['description-3']['sv-se'] = "Använd fälten för att filtrera fram det önskade resultatet."; -$text['description-3']['uk'] = ""; -$text['description-3']['de-at'] = "Benutzen Sie die Felder um Informationen betreffend spezifischer Anrufe zu filtern."; -$text['description-3']['he'] = ""; - -$text['description-2']['en-us'] = "The information contains source, destination, duration, and other useful call details."; -$text['description-2']['es-cl'] = "La información contiene origen, destino, duración y otra información útil."; -$text['description-2']['pt-pt'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada."; -$text['description-2']['fr-fr'] = "Les informations contiennent la source, la destination, la durée et pleins d'autres informations utiles."; -$text['description-2']['pt-br'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada. "; -$text['description-2']['pl'] = "Informacja zawiera numer dzwoniącego i odbiorcy rozmowy, czas trwania oraz inne przydatne szczegóły."; -$text['description-2']['sv-se'] = "Informationen innehåller källa, destination, samtalstid, och annan nyttig information."; -$text['description-2']['uk'] = ""; -$text['description-2']['de-at'] = "Die Information beinhaltet Quelle, Ziel, Dauer und andere nützliche Details."; -$text['description-2']['he'] = ""; - -$text['description']['en-us'] = "Call Detail Records (CDRs) are detailed information on the calls."; -$text['description']['es-cl'] = "Los registros de detalle de llamadas (CDR) contienen información detallada de las llamadas."; -$text['description']['pt-pt'] = "O registo detalhado de chamadas mostra informações detalhadas sobre as chamadas."; -$text['description']['fr-fr'] = "Ici se trouve l'historique des tous les appels passés sur cette plateforme. En Anglais: Call Detail Records (CDR)."; -$text['description']['pt-br'] = "Editar informações da conta."; -$text['description']['pl'] = "Wykaz rozmów prezentuje szczegółowe informacje o zrealizowanych rozmowach."; -$text['description']['sv-se'] = "Detaljerad Samtalsinformation (CDR) är detaljerad information från samtalen."; -$text['description']['uk'] = "Редагування інформації облікового запису"; -$text['description']['de-at'] = "Kontoinformationen bearbeiten"; -$text['description']['he'] = "ערוך את פרטי החשבון"; - -$text['button-update']['en-us'] = "Update"; -$text['button-update']['es-cl'] = "Actualización"; -$text['button-update']['pt-pt'] = "Atualizar"; -$text['button-update']['fr-fr'] = "Mise à jour"; -$text['button-update']['pt-br'] = "Atualização"; -$text['button-update']['pl'] = "Uaktualnij"; -$text['button-update']['sv-se'] = "Uppdatera"; -$text['button-update']['uk'] = "Оновити"; -$text['button-update']['de-at'] = "Aktualisieren"; -$text['button-update']['he'] = "עדכון"; - -$text['button-statistics']['en-us'] = "Statistics"; -$text['button-statistics']['es-cl'] = "Estadísticas"; -$text['button-statistics']['pt-pt'] = "Estatísticas"; -$text['button-statistics']['fr-fr'] = "Statistiques"; -$text['button-statistics']['pt-br'] = "Estatísticas "; -$text['button-statistics']['pl'] = "Ststystyki"; -$text['button-statistics']['sv-se'] = "Statistik"; -$text['button-statistics']['uk'] = ""; -$text['button-statistics']['de-at'] = "Statistik"; -$text['button-statistics']['he'] = "סטטיסטיקה"; - -$text['button-missed']['en-us'] = "Missed Calls"; -$text['button-missed']['es-cl'] = "Llamadas Perdidas"; -$text['button-missed']['pt-pt'] = "Chamadas Perdidas"; -$text['button-missed']['fr-fr'] = "Appels Perdus"; -$text['button-missed']['pt-br'] = "Chamadas Perdidas "; -$text['button-missed']['pl'] = "NIeodebrane rozmowy"; -$text['button-missed']['sv-se'] = "Missade Samtal"; -$text['button-missed']['uk'] = ""; -$text['button-missed']['de-at'] = "Verpasste Anrufe"; -$text['button-missed']['he'] = "שיחות שלא נענו"; - -$text['button-extension_summary']['en-us'] = "Extension Summary"; -$text['button-extension_summary']['es-cl'] = "Resumen Extensión"; -$text['button-extension_summary']['pt-pt'] = "Resumo Extensão"; -$text['button-extension_summary']['fr-fr'] = "Résumé par Extension"; -$text['button-extension_summary']['pt-br'] = "Resumo Extensão "; -$text['button-extension_summary']['pl'] = "Podsumowanie numerów wewnętrznych"; -$text['button-extension_summary']['sv-se'] = "Anknytning Summering"; -$text['button-extension_summary']['uk'] = ""; -$text['button-extension_summary']['de-at'] = "Nebenstellen Statistik"; -$text['button-extension_summary']['he'] = ""; - -$text['button-download_csv']['en-us'] = "Download CSV"; -$text['button-download_csv']['es-cl'] = "Descarga CSV"; -$text['button-download_csv']['pt-pt'] = "Baixar CSV"; -$text['button-download_csv']['fr-fr'] = "Télécharger CSV"; -$text['button-download_csv']['pt-br'] = "Baixar CSV "; -$text['button-download_csv']['pl'] = "Pobierz CSV"; -$text['button-download_csv']['sv-se'] = "Ladda Ned CSV"; -$text['button-download_csv']['uk'] = ""; -$text['button-download_csv']['de-at'] = "CSV Herunterladen"; -$text['button-download_csv']['he'] = ""; - -$text['button-advanced_search']['en-us'] = "Advanced Search"; -$text['button-advanced_search']['es-cl'] = "Búsqueda Avanzada"; -$text['button-advanced_search']['pt-pt'] = "Pesquisa Avançada"; -$text['button-advanced_search']['fr-fr'] = "Recherche Avancée"; -$text['button-advanced_search']['pt-br'] = "Pesquisa Avançada "; -$text['button-advanced_search']['pl'] = "Zaawansowane wyszukiwanie"; -$text['button-advanced_search']['sv-se'] = "Avancerad Sökning"; -$text['button-advanced_search']['uk'] = ""; -$text['button-advanced_search']['de-at'] = "Erweiterte Suche"; -$text['button-advanced_search']['he'] = "חיפוש מתקדם"; - +Note: Source, Destination and Caller ID (CID) Name fields support the use of an asterisk ('*') as a wildcard character."; +$text['description_search']['es-cl'] = "Atención: Origen, Destino y el identificador de llamadas (CID) campos Nombre apoyan el uso de un asterisco ('*') como carácter comodín."; +$text['description_search']['pt-pt'] = "Atenção: origem, destino e identificação do chamador (CID) campos Nome apoiar o uso de um asterisco ('*') como um caractere curinga."; +$text['description_search']['fr-fr'] = "Attention: Source, Destination et identification de l'appelant (CID) champs Nom appuient l'utilisation de l'astérisque ('*') comme un caractère générique."; +$text['description_search']['pt-br'] = "Atenção: origem, destino e identificação do chamador (CID) campos Nome apoiar o uso de um asterisco ('*') como um caractere curinga. "; +$text['description_search']['pl'] = "Uwaga: Następujące pola: numer dzwoniącego i odbiorcy rozmowy, prezentacja numeru oraz nazwy wspierają gwiazdkę (‘*’) jako symbol wieloznaczny."; +$text['description_search']['sv-se'] = "Notera : Källa, Destination och Nummerpresentation ( CID ) Namn fält stödjer användningen av en asterisk ( ' * ' ) som jokertecken."; +$text['description_search']['uk'] = ""; +$text['description_search']['de-at'] = "Info: Quelle, Ziel und Anruferkennung (CID) Name Felder unterstützen die Verwendung von Stern ('*') als Wildcard Zeichen."; +$text['description_search']['he'] = ""; + +$text['description-7']['en-us'] = "Call variables, call flow, timing information, and other useful call details."; +$text['description-7']['es-cl'] = "variables de llamada, flujo, información temporal y otros detalles útiles."; +$text['description-7']['pt-pt'] = "variáveis de chamada, fluxo da chamada, informações de tempo e outras informações úteis."; +$text['description-7']['fr-fr'] = "les variables de l'appel, le chemin, les compteurs et d'autres détails."; +$text['description-7']['pt-br'] = "Variáveis de chamada, fluxo da chamada, informações de tempo e outras informações úteis. "; +$text['description-7']['pl'] = "Zmienne związane z rozmowami, przepływ połączeń, informacje o czasach rozmów oraz inne przydatne szczegóły "; +$text['description-7']['sv-se'] = "Samtalsvariabler, samtalsflöden, tidsinformation och andra nyttiga samtalsdetaljer."; +$text['description-7']['uk'] = ""; +$text['description-7']['de-at'] = "Anruf Variablen, Ruf-Ablauf, Zeit Information und andere nützliche Anruf Details"; +$text['description-7']['he'] = ""; + +$text['description-6']['en-us'] = "The information contains caller id name and number, channel data, "; +$text['description-6']['es-cl'] = "La información contiene el nombre y número del caller id, datos del canal, "; +$text['description-6']['pt-pt'] = "A informação contem o nome e o número de origem, dados do canal, "; +$text['description-6']['fr-fr'] = "L'information contient le nom et le numéro d'appelant, données du canal, "; +$text['description-6']['pt-br'] = "A informação contém o nome e número de origem, dados do canal."; +$text['description-6']['pl'] = "Informacja zawiera prezentacje numeru i nazwy dzwoniącego oraz informacje o kanale."; +$text['description-6']['sv-se'] = "Informationen innehåller presentation av namn och nummer, channel data,"; +$text['description-6']['uk'] = ""; +$text['description-6']['de-at'] = "Die Information beinhaltet Anruferkennung (Name, Nummer) und Kanal Daten."; +$text['description-6']['he'] = ""; + +$text['description-5']['en-us'] = "A detailed view of the call and all information regarding it."; +$text['description-5']['es-cl'] = "Una vista detallada de la información de la llamada."; +$text['description-5']['pt-pt'] = "Uma visão detalhada da chamada e de todas as informações sobre ela."; +$text['description-5']['fr-fr'] = "Une vue détaillée de l'appel et toutes les informations en relation."; +$text['description-5']['pt-br'] = "Uma visão detalhada da chamada "; +$text['description-5']['pl'] = "Przeglądaj szczegóły rozmowy i inne informacje z nią związane."; +$text['description-5']['sv-se'] = "En detaljerad vy av samtalet och information kring samtalet."; +$text['description-5']['uk'] = ""; +$text['description-5']['de-at'] = "Eine detaillierte Ansicht des Anrufes mit allen zugehörigen Informationen."; +$text['description-5']['he'] = ""; + +$text['description-4']['en-us'] = "Records in the call list can be saved locally using the Export button."; +$text['description-4']['es-cl'] = "A continuación, ver las llamadas de la lista o descargarlos usando el botón Exportar."; +$text['description-4']['pt-pt'] = "Em seguida, visualizar as chamadas na lista ou baixá-los utilizando o botão Export."; +$text['description-4']['fr-fr'] = "Puis afficher les appels dans la liste ou les télécharger en utilisant le bouton Exporter."; +$text['description-4']['pt-br'] = "Em seguida, visualizar as chamadas na lista ou baixá-los utilizando o botão Export."; +$text['description-4']['pl'] = "Następnie przejrzeć połączenia z listy lub pobrać je za pomocą przycisku Eksportuj."; +$text['description-4']['sv-se'] = "Sedan visa samtalen i listan eller hämta dem med knappen Export."; +$text['description-4']['uk'] = ""; +$text['description-4']['de-at'] = "Sehen Sie dann die Anrufe in der Liste oder laden Sie sie auf die Schaltfläche Export verwenden."; +$text['description-4']['he'] = ""; + +$text['description-3']['en-us'] = "Use the fields to filter the information for the specific call records that are desired."; +$text['description-3']['es-cl'] = "Use los campos para filtrar la información. "; +$text['description-3']['pt-pt'] = "Utilize os campos para filtrar a informação sobre os registos de chamadas desejados."; +$text['description-3']['fr-fr'] = "Utiliser les filtres pour afficher les appels désirés. "; +$text['description-3']['pt-br'] = "Utilize os campos para filtrar a informação sobre os registos de chamadas desejados. "; +$text['description-3']['pl'] = "Użyj tych pól do filtrowania wymaganych informacji o konkretnych rozmowach. "; +$text['description-3']['sv-se'] = "Använd fälten för att filtrera fram det önskade resultatet."; +$text['description-3']['uk'] = ""; +$text['description-3']['de-at'] = "Benutzen Sie die Felder um Informationen betreffend spezifischer Anrufe zu filtern."; +$text['description-3']['he'] = ""; + +$text['description-2']['en-us'] = "The information contains source, destination, duration, and other useful call details."; +$text['description-2']['es-cl'] = "La información contiene origen, destino, duración y otra información útil."; +$text['description-2']['pt-pt'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada."; +$text['description-2']['fr-fr'] = "Les informations contiennent la source, la destination, la durée et pleins d'autres informations utiles."; +$text['description-2']['pt-br'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada. "; +$text['description-2']['pl'] = "Informacja zawiera numer dzwoniącego i odbiorcy rozmowy, czas trwania oraz inne przydatne szczegóły."; +$text['description-2']['sv-se'] = "Informationen innehåller källa, destination, samtalstid, och annan nyttig information."; +$text['description-2']['uk'] = ""; +$text['description-2']['de-at'] = "Die Information beinhaltet Quelle, Ziel, Dauer und andere nützliche Details."; +$text['description-2']['he'] = ""; + +$text['description']['en-us'] = "Call Detail Records (CDRs) are detailed information on the calls."; +$text['description']['es-cl'] = "Los registros de detalle de llamadas (CDR) contienen información detallada de las llamadas."; +$text['description']['pt-pt'] = "O registo detalhado de chamadas mostra informações detalhadas sobre as chamadas."; +$text['description']['fr-fr'] = "Ici se trouve l'historique des tous les appels passés sur cette plateforme. En Anglais: Call Detail Records (CDR)."; +$text['description']['pt-br'] = "Editar informações da conta."; +$text['description']['pl'] = "Wykaz rozmów prezentuje szczegółowe informacje o zrealizowanych rozmowach."; +$text['description']['sv-se'] = "Detaljerad Samtalsinformation (CDR) är detaljerad information från samtalen."; +$text['description']['uk'] = "Редагування інформації облікового запису"; +$text['description']['de-at'] = "Kontoinformationen bearbeiten"; +$text['description']['he'] = "ערוך את פרטי החשבון"; + +$text['button-update']['en-us'] = "Update"; +$text['button-update']['es-cl'] = "Actualización"; +$text['button-update']['pt-pt'] = "Atualizar"; +$text['button-update']['fr-fr'] = "Mise à jour"; +$text['button-update']['pt-br'] = "Atualização"; +$text['button-update']['pl'] = "Uaktualnij"; +$text['button-update']['sv-se'] = "Uppdatera"; +$text['button-update']['uk'] = "Оновити"; +$text['button-update']['de-at'] = "Aktualisieren"; +$text['button-update']['he'] = "עדכון"; + +$text['button-statistics']['en-us'] = "Statistics"; +$text['button-statistics']['es-cl'] = "Estadísticas"; +$text['button-statistics']['pt-pt'] = "Estatísticas"; +$text['button-statistics']['fr-fr'] = "Statistiques"; +$text['button-statistics']['pt-br'] = "Estatísticas "; +$text['button-statistics']['pl'] = "Ststystyki"; +$text['button-statistics']['sv-se'] = "Statistik"; +$text['button-statistics']['uk'] = ""; +$text['button-statistics']['de-at'] = "Statistik"; +$text['button-statistics']['he'] = "סטטיסטיקה"; + +$text['button-missed']['en-us'] = "Missed Calls"; +$text['button-missed']['es-cl'] = "Llamadas Perdidas"; +$text['button-missed']['pt-pt'] = "Chamadas Perdidas"; +$text['button-missed']['fr-fr'] = "Appels Perdus"; +$text['button-missed']['pt-br'] = "Chamadas Perdidas "; +$text['button-missed']['pl'] = "NIeodebrane rozmowy"; +$text['button-missed']['sv-se'] = "Missade Samtal"; +$text['button-missed']['uk'] = ""; +$text['button-missed']['de-at'] = "Verpasste Anrufe"; +$text['button-missed']['he'] = "שיחות שלא נענו"; + +$text['button-extension_summary']['en-us'] = "Extension Summary"; +$text['button-extension_summary']['es-cl'] = "Resumen Extensión"; +$text['button-extension_summary']['pt-pt'] = "Resumo Extensão"; +$text['button-extension_summary']['fr-fr'] = "Résumé par Extension"; +$text['button-extension_summary']['pt-br'] = "Resumo Extensão "; +$text['button-extension_summary']['pl'] = "Podsumowanie numerów wewnętrznych"; +$text['button-extension_summary']['sv-se'] = "Anknytning Summering"; +$text['button-extension_summary']['uk'] = ""; +$text['button-extension_summary']['de-at'] = "Nebenstellen Statistik"; +$text['button-extension_summary']['he'] = ""; + +$text['button-download_csv']['en-us'] = "Download CSV"; +$text['button-download_csv']['es-cl'] = "Descarga CSV"; +$text['button-download_csv']['pt-pt'] = "Baixar CSV"; +$text['button-download_csv']['fr-fr'] = "Télécharger CSV"; +$text['button-download_csv']['pt-br'] = "Baixar CSV "; +$text['button-download_csv']['pl'] = "Pobierz CSV"; +$text['button-download_csv']['sv-se'] = "Ladda Ned CSV"; +$text['button-download_csv']['uk'] = ""; +$text['button-download_csv']['de-at'] = "CSV Herunterladen"; +$text['button-download_csv']['he'] = ""; + +$text['button-advanced_search']['en-us'] = "Advanced Search"; +$text['button-advanced_search']['es-cl'] = "Búsqueda Avanzada"; +$text['button-advanced_search']['pt-pt'] = "Pesquisa Avançada"; +$text['button-advanced_search']['fr-fr'] = "Recherche Avancée"; +$text['button-advanced_search']['pt-br'] = "Pesquisa Avançada "; +$text['button-advanced_search']['pl'] = "Zaawansowane wyszukiwanie"; +$text['button-advanced_search']['sv-se'] = "Avancerad Sökning"; +$text['button-advanced_search']['uk'] = ""; +$text['button-advanced_search']['de-at'] = "Erweiterte Suche"; +$text['button-advanced_search']['he'] = "חיפוש מתקדם"; + ?> \ No newline at end of file diff --git a/app/xml_cdr/xml_cdr.php b/app/xml_cdr/xml_cdr.php index 09e82c293d..536a181880 100644 --- a/app/xml_cdr/xml_cdr.php +++ b/app/xml_cdr/xml_cdr.php @@ -78,36 +78,36 @@ else { echo "".$text['title']."


\n"; echo "\n"; echo "
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; if (isset($order_by)) { - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; } if (permission_exists('xml_cdr_all' && $_REQUEST['showall'] == 'true')) { echo " \n"; @@ -126,8 +126,8 @@ else { } echo " \n"; } - if ($_GET['missed'] != 'true') { - echo " \n"; + if ($_GET['call_result'] != 'missed') { + echo " \n"; } echo " \n"; echo " \n"; @@ -151,14 +151,12 @@ else { echo "\n"; echo "\n"; - echo "".$text['description']." \n"; - echo "".$text['description2']." \n"; - echo "".$text['description-3']." \n"; - echo "".$text['description-4']." \n"; - //To do an advanced search of the call detail records click on the following advanced button. + echo $text['description']." \n"; + echo $text['description2']." \n"; + echo $text['description-3']." \n"; + echo $text['description-4']." \n"; - echo "
\n"; - echo "
\n"; + echo "

\n"; echo "\n"; echo "\n"; @@ -171,140 +169,154 @@ else { echo "\n"; echo "\n"; - echo ""; - echo ""; - echo ""; + + // show hangup clause filter to super/admin + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + echo ""; + } + echo ""; + echo "
\n"; + echo "\n"; echo "\n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-direction']."\n"; echo " \n"; + echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-status']."\n"; echo " \n"; - echo " \n"; + echo " \n"; echo "
\n"; echo "
\n"; + echo "\n"; echo "\n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-source']."\n"; echo " \n"; + echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-destination']."\n"; echo " \n"; + echo " \n"; echo " \n"; echo "
\n"; echo "
\n"; + echo "\n"; echo "\n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo " \n"; - echo " \n"; - echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-start_range']."\n"; echo " \n"; + echo " \n"; echo " \n"; echo " \n"; echo "
\n"; + echo " \n"; echo " ".$text['label-cid-name']."\n"; echo " \n"; + echo " \n"; echo " \n"; echo "
\n"; echo "
\n"; + + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo " ".$text['label-hangup_cause']."\n"; + echo " \n"; + echo " \n"; + echo "
\n"; + + echo "
"; + + echo "\n"; echo ""; - echo ""; - echo ""; $col_count++; } - echo "\n"; - if ($_REQUEST['showall'] && permission_exists('xml_cdr_all')) { - echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, null, null, $param); - $col_count++; - } - echo th_order_by('caller_id_name', $text['label-cid-name'], $order_by, $order, null, null, $param); - echo th_order_by('caller_id_number', $text['label-source'], $order_by, $order, null, null, $param); - echo th_order_by('destination_number', $text['label-destination'], $order_by, $order, null, null, $param); - if (permission_exists('recording_play') || permission_exists('recording_download')) { - echo "\n"; - $col_count++; - } - echo th_order_by('start_stamp', $text['label-start'], $order_by, $order, null, "style='text-align: center;'", $param); - echo th_order_by('tta', $text['label-tta'], $order_by, $order, null, "style='text-align: right;'", $param); - echo th_order_by('duration', $text['label-duration'], $order_by, $order, null, "style='text-align: center;'", $param); - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ - // billing collumns - echo "\n"; - $col_count++; - } - if (permission_exists('xml_cdr_pdd')) { - echo th_order_by('pdd_ms', 'PDD', $order_by, $order, null, "style='text-align: right;'", $param); - $col_count++; - } - if (permission_exists('xml_cdr_mos')) { - echo th_order_by('rtp_audio_in_mos', 'MOS', $order_by, $order, null, "style='text-align: center;'", $param); - $col_count++; - } - echo th_order_by('hangup_cause', $text['label-status'], $order_by, $order, $param); - if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { - echo "\n"; + if ($_REQUEST['showall'] && permission_exists('xml_cdr_all')) { + echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, null, null, $param); + $col_count++; } - echo "\n"; - $col_count++; - } - echo "\n"; + echo th_order_by('caller_id_name', $text['label-cid-name'], $order_by, $order, null, null, $param); + echo th_order_by('caller_id_number', $text['label-source'], $order_by, $order, null, null, $param); + echo th_order_by('destination_number', $text['label-destination'], $order_by, $order, null, null, $param); + if (permission_exists('recording_play') || permission_exists('recording_download')) { + echo "\n"; + $col_count++; + } + echo th_order_by('start_stamp', $text['label-start'], $order_by, $order, null, "style='text-align: center;'", $param); + echo th_order_by('tta', $text['label-tta'], $order_by, $order, null, "style='text-align: right;'", $param); + echo th_order_by('duration', $text['label-duration'], $order_by, $order, null, "style='text-align: center;'", $param); + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ + echo "\n"; + $col_count++; + } + if (permission_exists('xml_cdr_pdd')) { + echo th_order_by('pdd_ms', 'PDD', $order_by, $order, null, "style='text-align: right;'", $param); + $col_count++; + } + if (permission_exists('xml_cdr_mos')) { + echo th_order_by('rtp_audio_in_mos', 'MOS', $order_by, $order, null, "style='text-align: center;'", $param); + $col_count++; + } + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + echo th_order_by('hangup_cause', $text['label-hangup_cause'], $order_by, $order, null, null, $param); + } + else { + echo "\n"; + } + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + echo "\n"; + $col_count++; + } + echo "\n"; + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ require_once "app/billing/resources/functions/rating.php"; require_once "resources/classes/database.php"; @@ -377,6 +395,22 @@ else { } if ($result_count > 0) { + //determine if theme images exist + $theme_image_path = $_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/"; + $theme_cdr_images_exist = ( + file_exists($theme_image_path."icon_cdr_inbound_answered.png") && + file_exists($theme_image_path."icon_cdr_inbound_voicemail.png") && + file_exists($theme_image_path."icon_cdr_inbound_cancelled.png") && + file_exists($theme_image_path."icon_cdr_inbound_failed.png") && + file_exists($theme_image_path."icon_cdr_outbound_answered.png") && + file_exists($theme_image_path."icon_cdr_outbound_cancelled.png") && + file_exists($theme_image_path."icon_cdr_outbound_failed.png") && + file_exists($theme_image_path."icon_cdr_local_answered.png") && + file_exists($theme_image_path."icon_cdr_local_voicemail.png") && + file_exists($theme_image_path."icon_cdr_local_cancelled.png") && + file_exists($theme_image_path."icon_cdr_local_failed.png") + ) ? true : false; + foreach($result as $index => $row) { $tmp_year = date("Y", strtotime($row['start_stamp'])); $tmp_month = date("M", strtotime($row['start_stamp'])); @@ -394,245 +428,212 @@ else { $hangup_cause = ucwords($hangup_cause); //if call cancelled, show the ring time, not the bill time. - $seconds = ($row['hangup_cause']=="ORIGINATOR_CANCEL") ? $row['duration'] : round(($row['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP); + $seconds = ($row['hangup_cause']=="ORIGINATOR_CANCEL") ? $row['duration'] : round(($row['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP); - //handle recordings - if (permission_exists('recording_play') || permission_exists('recording_download')) { - $tmp_rel_path = '/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; - $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION["domain_name"].$tmp_rel_path; - $tmp_name = ''; - if(!empty($row['recording_file']) && file_exists($row['recording_file'])){ - $tmp_name=$row['recording_file']; - } - elseif (file_exists($tmp_dir.'/'.$row['uuid'].'.wav')) { - $tmp_name = $row['uuid'].".wav"; - } - elseif (file_exists($tmp_dir.'/'.$row['uuid'].'_1.wav')) { - $tmp_name = $row['uuid']."_1.wav"; - } - elseif (file_exists($tmp_dir.'/'.$row['uuid'].'.mp3')) { - $tmp_name = $row['uuid'].".mp3"; - } - elseif (file_exists($tmp_dir.'/'.$row['uuid'].'_1.mp3')) { - $tmp_name = $row['uuid']."_1.mp3"; - } - elseif (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'.wav')) { - $tmp_name = $row['bridge_uuid'].".wav"; - } - elseif (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'_1.wav')) { - $tmp_name = $row['bridge_uuid']."_1.wav"; - } - elseif (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'.mp3')) { - $tmp_name = $row['bridge_uuid'].".mp3"; - } - elseif (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'_1.mp3')) { - $tmp_name = $row['bridge_uuid']."_1.mp3"; - } - if (strlen($tmp_name) > 0 && file_exists($tmp_dir.'/'.$tmp_name) && $seconds > 0) { - $recording_file_path = $tmp_rel_path.'/'.$tmp_name; - $recording_file_name = strtolower(pathinfo($tmp_name, PATHINFO_BASENAME)); - $recording_file_ext = pathinfo($recording_file_name, PATHINFO_EXTENSION); - switch ($recording_file_ext) { - case "wav" : $recording_type = "audio/wav"; break; - case "mp3" : $recording_type = "audio/mpeg"; break; - case "ogg" : $recording_type = "audio/ogg"; break; + //determine recording properties + if (permission_exists('recording_play') || permission_exists('recording_download')) { + $tmp_rel_path = '/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; + $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION["domain_name"].$tmp_rel_path; + $tmp_name = ''; + if (!empty($row['recording_file']) && file_exists($row['recording_file'])) { $tmp_name = $row['recording_file']; } + else if (file_exists($tmp_dir.'/'.$row['uuid'].'.wav')) { $tmp_name = $row['uuid'].".wav"; } + else if (file_exists($tmp_dir.'/'.$row['uuid'].'_1.wav')) { $tmp_name = $row['uuid']."_1.wav"; } + else if (file_exists($tmp_dir.'/'.$row['uuid'].'.mp3')) { $tmp_name = $row['uuid'].".mp3"; } + else if (file_exists($tmp_dir.'/'.$row['uuid'].'_1.mp3')) { $tmp_name = $row['uuid']."_1.mp3"; } + else if (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'.wav')) { $tmp_name = $row['bridge_uuid'].".wav"; } + else if (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'_1.wav')) { $tmp_name = $row['bridge_uuid']."_1.wav"; } + else if (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'.mp3')) { $tmp_name = $row['bridge_uuid'].".mp3"; } + else if (file_exists($tmp_dir.'/'.$row['bridge_uuid'].'_1.mp3')) { $tmp_name = $row['bridge_uuid']."_1.mp3"; } + if (strlen($tmp_name) > 0 && file_exists($tmp_dir.'/'.$tmp_name) && $seconds > 0) { + $recording_file_path = $tmp_rel_path.'/'.$tmp_name; + $recording_file_name = strtolower(pathinfo($tmp_name, PATHINFO_BASENAME)); + $recording_file_ext = pathinfo($recording_file_name, PATHINFO_EXTENSION); + switch ($recording_file_ext) { + case "wav" : $recording_type = "audio/wav"; break; + case "mp3" : $recording_type = "audio/mpeg"; break; + case "ogg" : $recording_type = "audio/ogg"; break; + } } + else { + unset($recording_file_path); + } + } + + //recording playback + if (permission_exists('recording_play') && $recording_file_path != '') { + echo "\n"; + } + + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + $tr_link = "href='xml_cdr_details.php?uuid=".$row['uuid'].(($_REQUEST['showall']) ? "&showall=true" : null)."'"; } else { - unset($recording_file_path); + $tr_link = null; } - } - - //recording playback progress bar - if (permission_exists('recording_play') && $recording_file_path != '') { - echo "\n"; - } - - if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { - $tr_link = "href='xml_cdr_details.php?uuid=".$row['uuid'].(($_REQUEST['showall']) ? "&showall=true" : null)."'"; - } - else { - $tr_link = null; - } - echo "\n"; - if (permission_exists('xml_cdr_delete')) { - echo " "; - $xml_ids[] = 'checkbox_'.$row['uuid']; - } - if ( - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_inbound_missed.png") && - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_inbound_connected.png") && - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_outbound_failed.png") && - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_outbound_connected.png") && - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_local_failed.png") && - file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_local_connected.png") - ) { - echo " \n"; + if (permission_exists('xml_cdr_delete')) { + echo " "; + $xml_ids[] = 'checkbox_'.$row['uuid']; } - echo " \n"; - } - else { - echo " "; - } - if ($_REQUEST['showall'] && permission_exists('xml_cdr_all')) { - echo " \n"; - } - echo " \n"; - - echo " \n"; - - echo " \n"; - - if (permission_exists('recording_play') || permission_exists('recording_download')) { - if ($recording_file_path != '') { - echo " \n"; + //domain name + if ($_REQUEST['showall'] && permission_exists('xml_cdr_all')) { + echo " \n"; + } + //caller id name + echo " \n"; + //source + echo " \n"; + //destination + echo " \n"; + //recording + if (permission_exists('recording_play') || permission_exists('recording_download')) { + if ($recording_file_path != '') { + echo " \n"; + } + else { + echo " \n"; + } + } + //start + echo " \n"; + //tta (time to answer) + echo " \n"; + //duration + echo " \n"; + //billing + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ + + $database->table = "v_xml_cdr"; + $accountcode = (strlen($row["accountcode"])?$row["accountcode"]:$_SESSION[domain_name]); + $database->sql = "SELECT currency FROM v_billings WHERE type_value='$accountcode'"; + $database->result = $database->execute(); + $billing_currency = (strlen($database->result[0]['currency'])?$database->result[0]['currency']:'USD'); + $billing_currency = (strlen($database->result[0]['currency'])?$database->result[0]['currency']: + (strlen($_SESSION['billing']['currency']['text'])?$_SESSION['billing']['currency']['text']:'USD') + ); + unset($database->sql); + unset($database->result); + + $sell_price = strlen($row['call_sell'])?$row['call_sell']:0; + $lcr_direction = (strlen($row['direction'])?$row['direction']:"outbound"); + + $xml_string = trim($row["xml"]); + $json_string = trim($row["json"]); + if (strlen($xml_string) > 0) { + $format = "xml"; + } + if (strlen($json_string) > 0) { + $format = "json"; + } + try { + if ($format == 'json') { + $array = json_decode($json_string,true); + } + if ($format == 'xml') { + $array = json_decode(json_encode((array)simplexml_load_string($xml_string)),true); + } + } + catch(Exception $e) { + echo $e->getMessage(); + } + + $n = (($lcr_direction == "inbound")? + check_str(urldecode($array["caller_profile"]["caller_id_number"])): + check_str(urldecode($array["variables"]["lcr_query_digits"])) + ); + + $database->table = "v_lcr"; + $database->sql = "SELECT currency FROM v_lcr WHERE v_lcr.carrier_uuid IS NULL AND v_lcr.enabled='true' AND v_lcr.lcr_direction='$lcr_direction' AND v_lcr.digits IN (".number_series($n).") ORDER BY digits DESC, rate ASC, date_start DESC LIMIT 1"; + $database->result = $database->execute(); + // print "
"; print $database->sql . ":";print "[".$database->result[0]['currency']."]"; print_r($array); print "
"; + + $lcr_currency = ((is_string($database->result[0]['currency']) && strlen($database->result[0]['currency']))?$database->result[0]['currency']: + (strlen($_SESSION['billing']['currency']['text'])?$_SESSION['billing']['currency']['text']:'USD') + ); //billed currency + unset($database->sql); + unset($database->result); + if ($sell_price){ + $price = currency_convert($sell_price, $billing_currency, $lcr_currency); + } + else { + $price = 0; + } + echo " \n"; + unset ($sell_price, $price); + } + //pdd (post dial delay) + if (permission_exists("xml_cdr_pdd")) { + echo " \n"; + } + //mos (mean opinion score) + if (permission_exists("xml_cdr_mos")) { + echo " \n"; + } + //hangup cause/call result + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + echo " \n"; + } + else { + echo " \n"; + } + //control icons + if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { + echo " \n"; } - else { - echo " \n"; - } - } - echo " \n"; - - echo " \n"; - - echo " \n"; - - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ - - $database->table = "v_xml_cdr"; - $accountcode = (strlen($row["accountcode"])?$row["accountcode"]:$_SESSION[domain_name]); - $database->sql = "SELECT currency FROM v_billings WHERE type_value='$accountcode'"; - $database->result = $database->execute(); - $billing_currency = (strlen($database->result[0]['currency'])?$database->result[0]['currency']:'USD'); - $billing_currency = (strlen($database->result[0]['currency'])?$database->result[0]['currency']: - (strlen($_SESSION['billing']['currency']['text'])?$_SESSION['billing']['currency']['text']:'USD') - ); - unset($database->sql); - unset($database->result); - - $sell_price = strlen($row['call_sell'])?$row['call_sell']:0; - $lcr_direction = (strlen($row['direction'])?$row['direction']:"outbound"); - - $xml_string = trim($row["xml"]); - $json_string = trim($row["json"]); - if (strlen($xml_string) > 0) { - $format = "xml"; - } - if (strlen($json_string) > 0) { - $format = "json"; - } - try { - if ($format == 'json') { - $array = json_decode($json_string,true); - } - if ($format == 'xml') { - $array = json_decode(json_encode((array)simplexml_load_string($xml_string)),true); - } - } - catch(Exception $e) { - echo $e->getMessage(); - } - - $n = (($lcr_direction == "inbound")? - check_str(urldecode($array["caller_profile"]["caller_id_number"])): - check_str(urldecode($array["variables"]["lcr_query_digits"])) - ); - - $database->table = "v_lcr"; - $database->sql = "SELECT currency FROM v_lcr WHERE v_lcr.carrier_uuid IS NULL AND v_lcr.enabled='true' AND v_lcr.lcr_direction='$lcr_direction' AND v_lcr.digits IN (".number_series($n).") ORDER BY digits DESC, rate ASC, date_start DESC LIMIT 1"; - $database->result = $database->execute(); - // print "
"; print $database->sql . ":";print "[".$database->result[0]['currency']."]"; print_r($array); print "
"; - - $lcr_currency = ((is_string($database->result[0]['currency']) && strlen($database->result[0]['currency']))?$database->result[0]['currency']: - (strlen($_SESSION['billing']['currency']['text'])?$_SESSION['billing']['currency']['text']:'USD') - ); //billed currency - unset($database->sql); - unset($database->result); - if ($sell_price){ - $price = currency_convert($sell_price, $billing_currency, $lcr_currency); - } - else { - $price = 0; - } - echo " \n"; - unset ($sell_price, $price); - } - if (permission_exists("xml_cdr_pdd")) { - echo " \n"; - } - if (permission_exists("xml_cdr_mos")) { - echo " \n"; - } - echo " \n"; - if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { - echo " \n"; - } echo "\n"; $c = ($c) ? 0 : 1; } //end foreach diff --git a/app/xml_cdr/xml_cdr_inc.php b/app/xml_cdr/xml_cdr_inc.php index 826f954d04..13a6cc72e9 100644 --- a/app/xml_cdr/xml_cdr_inc.php +++ b/app/xml_cdr/xml_cdr_inc.php @@ -43,7 +43,6 @@ else { //get post or get variables from http if (count($_REQUEST) > 0) { $cdr_id = check_str($_REQUEST["cdr_id"]); - $missed = check_str($_REQUEST["missed"]); $direction = check_str($_REQUEST["direction"]); $caller_id_name = check_str($_REQUEST["caller_id_name"]); $caller_id_number = check_str($_REQUEST["caller_id_number"]); @@ -61,6 +60,7 @@ else { $duration = check_str($_REQUEST["duration"]); $billsec = check_str($_REQUEST["billsec"]); $hangup_cause = check_str($_REQUEST["hangup_cause"]); + $call_result = check_str($_REQUEST["call_result"]); $uuid = check_str($_REQUEST["uuid"]); $bleg_uuid = check_str($_REQUEST["bleg_uuid"]); $accountcode = check_str($_REQUEST["accountcode"]); @@ -73,24 +73,12 @@ else { $order = check_str($_REQUEST["order"]); if (strlen(check_str($_REQUEST["mos_comparison"])) > 0) { switch(check_str($_REQUEST["mos_comparison"])) { - case 'less': - $mos_comparison = "<"; - break; - case 'greater': - $mos_comparison = ">"; - break; - case 'lessorequal': - $mos_comparison = "<="; - break; - case 'greaterorequal': - $mos_comparison = ">="; - break; - case 'equal': - $mos_comparison = "<"; - break; - case 'notequal': - $mos_comparison = "<>"; - break; + case 'less': $mos_comparison = "<"; break; + case 'greater': $mos_comparison = ">"; break; + case 'lessorequal': $mos_comparison = "<="; break; + case 'greaterorequal': $mos_comparison = ">="; break; + case 'equal': $mos_comparison = "<"; break; + case 'notequal': $mos_comparison = "<>"; break; } } else { $mos_comparison = ''; @@ -102,9 +90,6 @@ else { //build the sql where string - if ($missed == true) { - $sql_where_ands[] = "billsec = '0'"; - } if (strlen($start_epoch) > 0 && strlen($stop_epoch) > 0) { $sql_where_ands[] = "start_epoch BETWEEN ".$start_epoch." AND ".$stop_epoch." "; } @@ -144,6 +129,44 @@ else { if (strlen($duration) > 0) { $sql_where_ands[] = "duration like '%".$duration."%'"; } if (strlen($billsec) > 0) { $sql_where_ands[] = "billsec like '%".$billsec."%'"; } if (strlen($hangup_cause) > 0) { $sql_where_ands[] = "hangup_cause like '%".$hangup_cause."%'"; } + if (strlen($call_result) > 0) { + switch ($call_result) { + case 'answered': + $sql_where_ands[] = "(answer_stamp is not null and bridge_uuid is not null)"; + break; + case 'voicemail': + $sql_where_ands[] = "(answer_stamp is not null and bridge_uuid is null)"; + break; + case 'missed': + $sql_missed_1 = "( (answer_stamp is not null and bridge_uuid is null) or ("; + $sql_missed_2 = ") )"; + case 'cancelled': + if ($direction == 'inbound' || $direction == 'local' || $call_result == 'missed') { + $sql_where_ands_cancelled = "(answer_stamp is null and bridge_uuid is null and sip_hangup_disposition <> 'send_refuse')"; + } + else if ($direction == 'outbound') { + $sql_where_ands_cancelled = "(answer_stamp is null and bridge_uuid is not null)"; + } + else { + $sql_where_ands_cancelled = " + (( + (direction = 'inbound' or direction = 'local') + and answer_stamp is null + and bridge_uuid is null + and sip_hangup_disposition <> 'send_refuse' + ) + or ( + direction = 'outbound' + and answer_stamp is null + and bridge_uuid is not null + ))"; + } + $sql_where_ands[] = ($call_result == 'missed') ? $sql_missed_1.' '.$sql_where_ands_cancelled.' '.$sql_missed_2 : $sql_where_ands_cancelled; + break; + default: //failed + $sql_where_ands[] = "(answer_stamp is null and bridge_uuid is null and billsec = 0 and sip_hangup_disposition = 'send_refuse')"; + } + } if (strlen($uuid) > 0) { $sql_where_ands[] = "uuid = '".$uuid."'"; } if (strlen($bleg_uuid) > 0) { $sql_where_ands[] = "bleg_uuid = '".$bleg_uuid."'"; } if (strlen($accountcode) > 0) { $sql_where_ands[] = "accountcode = '".$accountcode."'"; } @@ -201,7 +224,6 @@ else { //set the param variable which is used with paging $param = "&cdr_id=".$cdr_id; - $param .= "&missed=".$missed; $param .= "&direction=".$direction; $param .= "&caller_id_name=".$caller_id_name; $param .= "&caller_id_number=".$caller_id_number; @@ -219,6 +241,7 @@ else { $param .= "&duration=".$duration; $param .= "&billsec=".$billsec; $param .= "&hangup_cause=".$hangup_cause; + $param .= "&call_result=".$call_result; $param .= "&uuid=".$uuid; $param .= "&bleg_uuid=".$bleg_uuid; $param .= "&accountcode=".$accountcode; @@ -299,6 +322,8 @@ else { $sql .= "caller_id_number, "; $sql .= "destination_number, "; $sql .= "accountcode, "; + $sql .= "answer_stamp, "; + $sql .= "sip_hangup_disposition, "; if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ $sql .= "call_sell, "; } diff --git a/app/xml_cdr/xml_cdr_statistics.php b/app/xml_cdr/xml_cdr_statistics.php index 8f829613e0..1c291eac4a 100644 --- a/app/xml_cdr/xml_cdr_statistics.php +++ b/app/xml_cdr/xml_cdr_statistics.php @@ -48,6 +48,7 @@ else { echo "\n"; echo " \n"; echo " \n"; @@ -152,7 +152,7 @@ else { if (data.length > 0) $.plot($("#placeholder"), data, { yaxis: { min: 0 }, - 48 && $hours < 168) { @@ -160,9 +160,9 @@ else { } else { echo "xaxis: {mode: \"time\",timeformat: \"%m:%d\",minTickSize: [1, \"month\"]}"; } - + ?> - + }); } diff --git a/core/user_settings/app_languages.php b/core/user_settings/app_languages.php index b383532d35..cc4aa6c6dc 100644 --- a/core/user_settings/app_languages.php +++ b/core/user_settings/app_languages.php @@ -182,6 +182,53 @@ $text['login-message_attention']['ro'] = "Atenție!"; $text['login-message_attention']['fa'] = ""; $text['login-message_attention']['ar-eg'] = "برجاء الملاحظة"; +$text['label-welcome']['en-us'] = "Welcome:"; +$text['label-welcome']['es-cl'] = "Bienvenido:"; +$text['label-welcome']['pt-pt'] = "Witamy:"; +$text['label-welcome']['fr-fr'] = "Bienvenue:"; +$text['label-welcome']['pt-br'] = "Bem vinda:"; +$text['label-welcome']['pl'] = "Witamy:"; +$text['label-welcome']['he'] = "ברוך הבא:"; +$text['label-welcome']['uk'] = "Ласкаво просимо:"; +$text['label-welcome']['sv-se'] = "Välkomna:"; +$text['label-welcome']['de-at'] = "Herzlich willkommen:"; +$text['label-welcome']['ro'] = "Bine ati venit:"; +$text['label-welcome']['fa'] = ""; +$text['label-welcome']['ar-eg'] = "أهلا بك:"; + +$text['label-voicemail']['en-us'] = "Voicemail"; +$text['label-voicemail']['es-cl'] = "Correo de Voz"; +$text['label-voicemail']['pt-pt'] = "Correio de Voz"; +$text['label-voicemail']['fr-fr'] = "Messagerie Vocale"; +$text['label-voicemail']['pt-br'] = "Correio de voz"; +$text['label-voicemail']['pl'] = "Poczta głosowa"; +$text['label-voicemail']['sv-se'] = "Röstbrevlåda"; +$text['label-voicemail']['uk'] = "Голосова пошта"; +$text['label-voicemail']['de-at'] = "Mailbox"; +$text['label-voicemail']['he'] = "תא קולי"; + +$text['label-view_all']['en-us'] = "View All"; +$text['label-view_all']['es-cl'] = "Mostrar Todos"; +$text['label-view_all']['pt-pt'] = "Mostrar Todos"; +$text['label-view_all']['fr-fr'] = "Tout Montrer"; +$text['label-view_all']['pl'] = "Pokaż wszystkie"; +$text['label-view_all']['uk'] = "Показати всі"; +$text['label-view_all']['sv-se'] = "Visa Allt"; +$text['label-view_all']['ro'] = ""; +$text['label-view_all']['de-at'] = "Alle anzeigen"; +$text['label-view_all']['he'] = "הצג הכל"; + +$text['label-value']['en-us'] = "Value"; +$text['label-value']['es-cl'] = "Valor"; +$text['label-value']['pt-pt'] = "Valor"; +$text['label-value']['fr-fr'] = "Valeur"; +$text['label-value']['nl-nl'] = ""; +$text['label-value']['pt-br'] = "Valor"; +$text['label-value']['pl'] = "Wartość"; +$text['label-value']['sv-se'] = "Värde"; +$text['label-value']['uk'] = "Значення"; +$text['label-value']['de-at'] = "Wert"; + $text['label-username']['en-us'] = "Username"; $text['label-username']['es-cl'] = "Nombre de Usuario"; $text['label-username']['pt-pt'] = "Nome de Utilizador"; @@ -196,6 +243,16 @@ $text['label-username']['ro'] = "Utilizator"; $text['label-username']['fa'] = ""; $text['label-username']['ar-eg'] = "اسم المستخدم"; +$text['label-users']['en-us'] = "Users"; +$text['label-users']['es-cl'] = "Usuarios"; +$text['label-users']['pt-pt'] = "Utilizadores"; +$text['label-users']['fr-fr'] = "Utilisateurs"; +$text['label-users']['pt-br'] = "Usuários"; +$text['label-users']['pl'] = "Użytkownicy"; +$text['label-users']['sv-se'] = "Användare"; +$text['label-users']['uk'] = "Користувачі"; +$text['label-users']['de-at'] = "Benutzer"; + $text['label-user_language']['en-us'] = "Language"; $text['label-user_language']['es-cl'] = "Lengua"; $text['label-user_language']['pt-pt'] = "Língua"; @@ -210,6 +267,31 @@ $text['label-user_language']['ro'] = "Limbă"; $text['label-user_language']['fa'] = ""; $text['label-user_language']['ar-eg'] = "اللغه"; +$text['label-used']['en-us'] = "Used"; +$text['label-used']['es-cl'] = "Usado"; +$text['label-used']['pt-pt'] = "Usava"; +$text['label-used']['fr-fr'] = "Utilisé"; +$text['label-used']['pt-br'] = "Usava"; +$text['label-used']['pl'] = "Używany"; +$text['label-used']['he'] = "מְשׁוּמָשׁ"; +$text['label-used']['uk'] = "використовується"; +$text['label-used']['sv-se'] = "Begagnade"; +$text['label-used']['de-at'] = "Benutzt"; +$text['label-used']['ro'] = "Folosit"; +$text['label-used']['fa'] = ""; +$text['label-used']['ar-eg'] = "مستعمل"; + +$text['label-total']['en-us'] = "Total"; +$text['label-total']['es-cl'] = "Total"; +$text['label-total']['pt-pt'] = "Total"; +$text['label-total']['fr-fr'] = "Total"; +$text['label-total']['pt-br'] = "Total"; +$text['label-total']['pl'] = "Podsumowanie"; +$text['label-total']['sv-se'] = "Totalt"; +$text['label-total']['uk'] = "Всього"; +$text['label-total']['de-at'] = "Total"; +$text['label-total']['he'] = "סה״כ"; + $text['label-time']['en-us'] = "Time Zone"; $text['label-time']['es-cl'] = "Zona Horaria"; $text['label-time']['pt-pt'] = "Fuso Horário"; @@ -224,6 +306,68 @@ $text['label-time']['ro'] = "Zonă fus orar"; $text['label-time']['fa'] = ""; $text['label-time']['ar-eg'] = "منطقة التوقيت"; +$text['label-system_uptime']['en-us'] = "OS Uptime"; +$text['label-system_uptime']['es-cl'] = "Tiempo de actividad del sistema"; +$text['label-system_uptime']['pt-pt'] = "Uptime sistema"; +$text['label-system_uptime']['fr-fr'] = "système Uptime"; +$text['label-system_uptime']['pt-br'] = "Uptime sistema"; +$text['label-system_uptime']['pl'] = "System Uptime"; +$text['label-system_uptime']['he'] = "מערכת Uptime"; +$text['label-system_uptime']['uk'] = "час роботи системи"; +$text['label-system_uptime']['sv-se'] = "System Uptime"; +$text['label-system_uptime']['de-at'] = "System-Uptime"; +$text['label-system_uptime']['ro'] = "sistemul Uptime"; +$text['label-system_uptime']['fa'] = ""; +$text['label-system_uptime']['ar-eg'] = "نظام الجهوزية"; + +$text['label-system_status']['en-us'] = "System Status"; +$text['label-system_status']['es-cl'] = "Estado del sistema"; +$text['label-system_status']['pt-pt'] = "Status do sistema"; +$text['label-system_status']['fr-fr'] = "État du système"; +$text['label-system_status']['pt-br'] = "Status do sistema"; +$text['label-system_status']['pl'] = "Status systemu"; +$text['label-system_status']['he'] = "סטטוס מערכת"; +$text['label-system_status']['uk'] = "стан системи"; +$text['label-system_status']['sv-se'] = "Systemstatus "; +$text['label-system_status']['de-at'] = "Systemstatus"; +$text['label-system_status']['ro'] = "Stare sistem"; +$text['label-system_status']['fa'] = ""; +$text['label-system_status']['ar-eg'] = "حالة النظام"; + +$text['label-system_counts']['en-us'] = "System Counts"; +$text['label-system_counts']['es-cl'] = "Cuenta del sistema"; +$text['label-system_counts']['pt-pt'] = "contagens do sistema"; +$text['label-system_counts']['fr-fr'] = "Chiffres de système"; +$text['label-system_counts']['pt-br'] = "contagens do sistema"; +$text['label-system_counts']['pl'] = "Liczy systemowe"; +$text['label-system_counts']['he'] = "ספירת מערכת"; +$text['label-system_counts']['uk'] = "система зараховує"; +$text['label-system_counts']['sv-se'] = "System Counts"; +$text['label-system_counts']['de-at'] = "System zählt"; +$text['label-system_counts']['ro'] = "Numără sistem"; +$text['label-system_counts']['fa'] = ""; +$text['label-system_counts']['ar-eg'] = "التهم النظام"; + +$text['label-switch_uptime']['en-us'] = "Switch Uptime"; +$text['label-switch_uptime']['es-cl'] = "Tiempo de actividad Switch"; +$text['label-switch_uptime']['pt-pt'] = "Uptime Switch"; +$text['label-switch_uptime']['fr-fr'] = "Switch Uptime"; +$text['label-switch_uptime']['pt-br'] = "Uptime Switch"; +$text['label-switch_uptime']['pl'] = "Switch Uptime"; +$text['label-switch_uptime']['sv-se'] = "Switch Uptime"; +$text['label-switch_uptime']['uk'] = "Switch Uptime"; +$text['label-switch_uptime']['de-at'] = "Switch Uptime"; + +$text['label-switch']['en-us'] = "Switch"; +$text['label-switch']['es-cl'] = "Switch"; +$text['label-switch']['pt-pt'] = "Switch"; +$text['label-switch']['fr-fr'] = "Switch"; +$text['label-switch']['pt-br'] = "Switch"; +$text['label-switch']['pl'] = "Switch"; +$text['label-switch']['sv-se'] = "Switch"; +$text['label-switch']['uk'] = "Switch"; +$text['label-switch']['de-at'] = "Switch"; + $text['label-status']['en-us'] = "Status"; $text['label-status']['es-cl'] = "Estado"; $text['label-status']['pt-pt'] = "Estado"; @@ -280,6 +424,41 @@ $text['label-repeat_password']['ro'] = "Repetare parolă"; $text['label-repeat_password']['fa'] = ""; $text['label-repeat_password']['ar-eg'] = "تاكيد كلمة السر"; +$text['label-registrations']['en-us'] = "Registrations"; +$text['label-registrations']['es-cl'] = "Inscripciones"; +$text['label-registrations']['pt-pt'] = "Inscrições"; +$text['label-registrations']['fr-fr'] = "Enregistrements SIP"; +$text['label-registrations']['pt-br'] = "Inscrições"; +$text['label-registrations']['pl'] = "Rejestracje"; +$text['label-registrations']['sv-se'] = "Registreringar"; +$text['label-registrations']['uk'] = "Реєстрації"; +$text['label-registrations']['de-at'] = "Registrierungen"; + +$text['label-recent_calls']['en-us'] = "Recent Calls"; +$text['label-recent_calls']['es-cl'] = "Llamadas recientes"; +$text['label-recent_calls']['fr-fr'] = "Appels récents"; +$text['label-recent_calls']['pt-pt'] = "chamadas recentes"; +$text['label-recent_calls']['pt-br'] = "chamadas recentes"; +$text['label-recent_calls']['pl'] = "Ostatnie połączenia"; +$text['label-recent_calls']['sv-se'] = "Samtals"; +$text['label-recent_calls']['de-at'] = "Kürzliche Anrufe"; +$text['label-recent_calls']['ar-eg'] = "المكالمات الأخيرة"; +$text['label-recent_calls']['he'] = "שיחות אחרונות"; + +$text['label-processor_usage']['en-us'] = "CPU Usage"; +$text['label-processor_usage']['es-cl'] = "uso del procesador"; +$text['label-processor_usage']['pt-pt'] = "O uso do processador"; +$text['label-processor_usage']['fr-fr'] = "processeur Utilisation"; +$text['label-processor_usage']['pt-br'] = "O uso do processador"; +$text['label-processor_usage']['pl'] = "Wykorzystanie procesora"; +$text['label-processor_usage']['he'] = "שימוש מעבד"; +$text['label-processor_usage']['uk'] = "Використання процесора"; +$text['label-processor_usage']['sv-se'] = "processor Usage"; +$text['label-processor_usage']['de-at'] = "Prozessorauslastung "; +$text['label-processor_usage']['ro'] = "procesor de utilizare"; +$text['label-processor_usage']['fa'] = ""; +$text['label-processor_usage']['ar-eg'] = "معالج الاستخدام"; + $text['label-password']['en-us'] = "Password"; $text['label-password']['es-cl'] = "Contraseña"; $text['label-password']['pt-pt'] = "Password"; @@ -294,6 +473,31 @@ $text['label-password']['ro'] = "Parolă"; $text['label-password']['fa'] = ""; $text['label-password']['ar-eg'] = "كلمة السر"; +$text['label-outbound']['en-us'] = "Outbound"; +$text['label-outbound']['es-cl'] = "Salida"; +$text['label-outbound']['pt-pt'] = "Saída"; +$text['label-outbound']['fr-fr'] = "Sortant"; +$text['label-outbound']['pt-br'] = "Saída"; +$text['label-outbound']['pl'] = "Wychodzące"; +$text['label-outbound']['sv-se'] = "Utgående"; +$text['label-outbound']['uk'] = ""; +$text['label-outbound']['de-at'] = "Ausgehend"; +$text['label-outbound']['he'] = ""; + +$text['label-no_voicemail_assigned']['en-us'] = "No Voicemail Assigned"; +$text['label-no_voicemail_assigned']['es-cl'] = "No Asignado correo de voz"; +$text['label-no_voicemail_assigned']['pt-pt'] = "Sem Voicemail Assigned"; +$text['label-no_voicemail_assigned']['fr-fr'] = "Non Voicemail Assigné"; +$text['label-no_voicemail_assigned']['pt-br'] = "Sem Voicemail Assigned"; +$text['label-no_voicemail_assigned']['pl'] = "Nie głosowa Przypisany"; +$text['label-no_voicemail_assigned']['he'] = "אין שירות תא קולי Assigned"; +$text['label-no_voicemail_assigned']['uk'] = "Ні Voicemail Assigned"; +$text['label-no_voicemail_assigned']['sv-se'] = "Ingen röstmeddelande Delad"; +$text['label-no_voicemail_assigned']['de-at'] = "Nein Voicemail Assigned"; +$text['label-no_voicemail_assigned']['ro'] = "Nr Mesagerie vocală alocate"; +$text['label-no_voicemail_assigned']['fa'] = ""; +$text['label-no_voicemail_assigned']['ar-eg'] = "لا المخصصة البريد الصوتي"; + $text['label-new_password']['en-us'] = "New Password"; $text['label-new_password']['es-cl'] = "Nueva Contraseña"; $text['label-new_password']['pt-pt'] = "Nova Senha"; @@ -308,6 +512,102 @@ $text['label-new_password']['ro'] = "Parolă nouă"; $text['label-new_password']['fa'] = ""; $text['label-new_password']['ar-eg'] = "كلمة سر جديدة"; +$text['label-new']['en-us'] = "New"; +$text['label-new']['es-cl'] = "Nueva"; +$text['label-new']['pt-pt'] = "Nova"; +$text['label-new']['fr-fr'] = "Nouveau"; +$text['label-new']['pt-br'] = "Nova"; +$text['label-new']['pl'] = "Nowy"; +$text['label-new']['sv-se'] = "Nytt"; +$text['label-new']['de-at'] = "Neu"; +$text['label-new']['ro'] = "Nou"; +$text['label-new']['he'] = "חדש"; + +$text['label-missed_calls']['en-us'] = "Missed Calls"; +$text['label-missed_calls']['es-cl'] = "Llamadas perdidas"; +$text['label-missed_calls']['fr-fr'] = "Appels manqués"; +$text['label-missed_calls']['pt-pt'] = "Chamadas perdidas"; +$text['label-missed_calls']['pt-br'] = "Chamadas perdidas"; +$text['label-missed_calls']['pl'] = "Nieodebrane połączenie"; +$text['label-missed_calls']['sv-se'] = "Missade samtal"; +$text['label-missed_calls']['de-at'] = "Anrufe in Abwesenheit"; +$text['label-missed_calls']['ar-eg'] = "مكالمات فائتة"; +$text['label-missed_calls']['he'] = "שיחות שלא נענו"; + +$text['label-missed']['en-us'] = "Missed"; +$text['label-missed']['es-cl'] = "Perdido"; +$text['label-missed']['fr-fr'] = "Raté"; +$text['label-missed']['pt-pt'] = "Perdidas"; +$text['label-missed']['pt-br'] = "Perdidas"; +$text['label-missed']['pl'] = "Nie odebrany"; +$text['label-missed']['sv-se'] = "Missade"; +$text['label-missed']['de-at'] = "Verpasst"; +$text['label-missed']['ar-eg'] = ""; +$text['label-missed']['he'] = "שיחה שלא נענתה"; + +$text['label-memory_usage']['en-us'] = "Memory Usage"; +$text['label-memory_usage']['es-cl'] = "Uso de memoria"; +$text['label-memory_usage']['pt-pt'] = "Uso de memória"; +$text['label-memory_usage']['fr-fr'] = "Utilisation de la mémoire"; +$text['label-memory_usage']['pt-br'] = "Uso de memória"; +$text['label-memory_usage']['pl'] = "Zużycie pamięci"; +$text['label-memory_usage']['he'] = "שימוש בזיכרון"; +$text['label-memory_usage']['uk'] = "Використання пам'яті"; +$text['label-memory_usage']['sv-se'] = "Minnesanvändning"; +$text['label-memory_usage']['de-at'] = "Speichernutzung"; +$text['label-memory_usage']['ro'] = "Folosirea memoriei"; +$text['label-memory_usage']['fa'] = ""; +$text['label-memory_usage']['ar-eg'] = "استخدام الذاكرة"; + +$text['label-local']['en-us'] = "Local"; +$text['label-local']['es-cl'] = "Local"; +$text['label-local']['pt-pt'] = "Local"; +$text['label-local']['fr-fr'] = "Local"; +$text['label-local']['pt-br'] = "Local"; +$text['label-local']['pl'] = "Lokalne"; +$text['label-local']['sv-se'] = "Lokal"; +$text['label-local']['uk'] = "Локальний"; +$text['label-local']['de-at'] = "Lokal"; +$text['label-local']['he'] = "מקומי"; + +$text['label-inbound']['en-us'] = "Inbound"; +$text['label-inbound']['es-cl'] = "Entrada"; +$text['label-inbound']['pt-pt'] = "Entrada"; +$text['label-inbound']['fr-fr'] = "Entrant"; +$text['label-inbound']['pt-br'] = "Entrada"; +$text['label-inbound']['pl'] = "Przychodzące"; +$text['label-inbound']['sv-se'] = "Inkommande"; +$text['label-inbound']['uk'] = "Вихідний"; +$text['label-inbound']['de-at'] = "Eingehend"; +$text['label-inbound']['he'] = ""; + +$text['label-item']['en-us'] = "Item"; +$text['label-item']['es-cl'] = "Ítem"; +$text['label-item']['pt-pt'] = "Item"; +$text['label-item']['fr-fr'] = "Article"; +$text['label-item']['pt-br'] = "Item"; +$text['label-item']['pl'] = "Pozycja"; +$text['label-item']['he'] = "פריט"; +$text['label-item']['uk'] = "пункт"; +$text['label-item']['sv-se'] = "Punkt"; +$text['label-item']['de-at'] = "Artikel"; +$text['label-item']['ro'] = "Articol"; +$text['label-item']['fa'] = ""; +$text['label-item']['ar-eg'] = "بند"; + +$text['label-gateways']['en-us'] = "Gateways"; +$text['label-gateways']['es-cl'] = "Pasarelas"; +$text['label-gateways']['pt-pt'] = "Gateways"; +$text['label-gateways']['fr-fr'] = "Passerelles"; +$text['label-gateways']['pt-br'] = "Gateways"; +$text['label-gateways']['pl'] = "Bramy wyjściowe (gateways)"; +$text['label-gateways']['uk'] = "Шлюзи"; +$text['label-gateways']['sv-se'] = "Gateways"; +$text['label-gateways']['ro'] = ""; +$text['label-gateways']['de-at'] = "Gateways"; +$text['label-gateways']['ar-eg'] = "البوابات"; +$text['label-gateways']['he'] = "שערים"; + $text['label-followme']['en-us'] = "Follow Me"; $text['label-followme']['es-cl'] = "Sígueme"; $text['label-followme']['pt-pt'] = "Segue-me"; @@ -322,6 +622,43 @@ $text['label-followme']['ro'] = "Urmează-mă"; $text['label-followme']['fa'] = ""; $text['label-followme']['ar-eg'] = "خدمة اتبعني"; +$text['label-feature']['en-us'] = "Feature"; +$text['label-feature']['es-cl'] = "Característica"; +$text['label-feature']['pt-pt'] = "Característica"; +$text['label-feature']['fr-fr'] = "Fonctionnalité"; +$text['label-feature']['pt-br'] = "Característica"; +$text['label-feature']['pl'] = "Cecha"; +$text['label-feature']['uk'] = "особливість"; +$text['label-feature']['sv-se'] = "Särdrag"; +$text['label-feature']['ro'] = "trăsătură"; +$text['label-feature']['de-at'] = "Feature"; +$text['label-feature']['ar-eg'] = "ميزة"; +$text['label-feature']['he'] = "מאפיין"; + +$text['label-failed']['en-us'] = "Failed"; +$text['label-failed']['es-cl'] = "Fracasado"; +$text['label-failed']['pt-pt'] = "Fracassado"; +$text['label-failed']['fr-fr'] = "Manqué"; +$text['label-failed']['pt-br'] = "Fracassado"; +$text['label-failed']['pl'] = "Nie powiodło się"; +$text['label-failed']['sv-se'] = "Misslyckad"; +$text['label-failed']['uk'] = ""; +$text['label-failed']['de-at'] = "Fehlgeschlagen"; +$text['label-failed']['he'] = "נכשל"; + +$text['label-extensions']['en-us'] = "Extensions"; +$text['label-extensions']['es-cl'] = "Extensiones"; +$text['label-extensions']['pt-pt'] = "Extensões"; +$text['label-extensions']['fr-fr'] = "Extensions"; +$text['label-extensions']['pt-br'] = "Extensões"; +$text['label-extensions']['pl'] = "Numery wewnętrzne"; +$text['label-extensions']['uk'] = "Розширення"; +$text['label-extensions']['sv-se'] = "Anknytningar"; +$text['label-extensions']['ro'] = "Extensii"; +$text['label-extensions']['de-at'] = "Nebenstellen"; +$text['label-extensions']['ar-eg'] = "الأرقام الداخلية"; +$text['label-extensions']['he'] = "שלוחות"; + $text['label-extension']['en-us'] = "Extension"; $text['label-extension']['es-cl'] = "Extensión"; $text['label-extension']['pt-pt'] = "Extensão"; @@ -350,6 +687,30 @@ $text['label-email_address']['ro'] = "Adresă email"; $text['label-email_address']['fa'] = ""; $text['label-email_address']['ar-eg'] = "البريد الإلكتروني"; +$text['label-domains']['en-us'] = "Domains"; +$text['label-domains']['es-cl'] = "Dominios"; +$text['label-domains']['pt-pt'] = "Domínios"; +$text['label-domains']['fr-fr'] = "Domaines"; +$text['label-domains']['pt-br'] = "Dominios"; +$text['label-domains']['pl'] = "Domeny"; +$text['label-domains']['sv-se'] = "Domäner"; +$text['label-domains']['uk'] = "Домени"; +$text['label-domains']['de-at'] = "Domains"; + +$text['label-domain_limits']['en-us'] = "Domain Limits"; +$text['label-domain_limits']['es-cl'] = "Límites de dominio"; +$text['label-domain_limits']['pt-pt'] = "Limites de domínio"; +$text['label-domain_limits']['fr-fr'] = "Limites de domaine"; +$text['label-domain_limits']['pt-br'] = "Limites de domínio"; +$text['label-domain_limits']['pl'] = "Granice domen"; +$text['label-domain_limits']['he'] = "מגבלת הדומיין"; +$text['label-domain_limits']['uk'] = "обмеження домену"; +$text['label-domain_limits']['sv-se'] = "domän Gränser"; +$text['label-domain_limits']['de-at'] = "Domain Limits"; +$text['label-domain_limits']['ro'] = "Limite de domeniu"; +$text['label-domain_limits']['fa'] = ""; +$text['label-domain_limits']['ar-eg'] = "حدود نطاق"; + $text['label-domain']['en-us'] = "Domain"; $text['label-domain']['es-cl'] = "Dominio"; $text['label-domain']['pt-pt'] = "Domínio"; @@ -378,6 +739,85 @@ $text['label-dnd']['ro'] = "Nu deranjați"; $text['label-dnd']['fa'] = ""; $text['label-dnd']['ar-eg'] = "عدم الازعاج"; +$text['label-disk_usage']['en-us'] = "Disk Usage"; +$text['label-disk_usage']['es-cl'] = "Uso del disco"; +$text['label-disk_usage']['pt-pt'] = "Uso de disco"; +$text['label-disk_usage']['fr-fr'] = "Utilisation du disque"; +$text['label-disk_usage']['pt-br'] = "Uso de disco"; +$text['label-disk_usage']['pl'] = "Użycie dysku"; +$text['label-disk_usage']['he'] = "שימוש בדיסק"; +$text['label-disk_usage']['uk'] = "Використання диска"; +$text['label-disk_usage']['sv-se'] = "Drive användning"; +$text['label-disk_usage']['de-at'] = "Festplattennutzung"; +$text['label-disk_usage']['ro'] = "utilizare disc"; +$text['label-disk_usage']['fa'] = ""; +$text['label-disk_usage']['ar-eg'] = "إستخدام القرص"; + +$text['label-disabled']['en-us'] = "Disabled"; +$text['label-disabled']['es-cl'] = "Discapacitado"; +$text['label-disabled']['pt-pt'] = "Inválido"; +$text['label-disabled']['fr-fr'] = "Non Permis"; +$text['label-disabled']['pt-br'] = "Inválido"; +$text['label-disabled']['pl'] = "Wyłączony"; +$text['label-disabled']['sv-se'] = "Inaktiverad"; +$text['label-disabled']['uk'] = "Відключено"; +$text['label-disabled']['de-at'] = "Ausgeschaltet"; + +$text['label-devices']['en-us'] = "Devices"; +$text['label-devices']['es-cl'] = "Dispositivos"; +$text['label-devices']['pt-pt'] = "Dispositivos"; +$text['label-devices']['fr-fr'] = "Equipements"; +$text['label-devices']['pt-br'] = "Dispositivos"; +$text['label-devices']['pl'] = "Urządzenia"; +$text['label-devices']['uk'] = "Пристрої"; +$text['label-devices']['sv-se'] = "Enheter"; +$text['label-devices']['ro'] = "Dispozitive"; +$text['label-devices']['de-at'] = "Geräte"; +$text['label-devices']['ar-eg'] = "الأجهزة"; +$text['label-devices']['he'] = "התקנים"; + +$text['label-destinations']['en-us'] = "Destinations"; +$text['label-destinations']['es-cl'] = "Destinos"; +$text['label-destinations']['pt-pt'] = "Destinos"; +$text['label-destinations']['fr-fr'] = "Destinations"; +$text['label-destinations']['pt-br'] = "Destinos"; +$text['label-destinations']['pl'] = "Destynacje"; +$text['label-destinations']['sv-se'] = "Destinationer"; +$text['label-destinations']['uk'] = "Номери"; +$text['label-destinations']['ro'] = "Destinații"; +$text['label-destinations']['de-at'] = "Kopfnummern"; +$text['label-destinations']['fa'] = ""; +$text['label-destinations']['ar-eg'] = "جهات الأتصال"; +$text['label-destinations']['he'] = "יעדים"; + +$text['label-date_time']['en-us'] = "Date/Time"; +$text['label-date_time']['es-cl'] = "Fecha y hora"; +$text['label-date_time']['pt-pt'] = "Data hora"; +$text['label-date_time']['fr-fr'] = "Date / Heure"; +$text['label-date_time']['pt-br'] = "Data hora"; +$text['label-date_time']['pl'] = "Data Godzina"; +$text['label-date_time']['sv-se'] = "Datum Tid"; +$text['label-date_time']['uk'] = "Дата, час"; +$text['label-date_time']['ro'] = "Data / Ora"; +$text['label-date_time']['de-at'] = "Terminzeit"; +$text['label-date_time']['fa'] = ""; +$text['label-date_time']['ar-eg'] = "تاريخ / وقت"; +$text['label-date_time']['he'] = "תאריך שעה"; + +$text['label-database_connections']['en-us'] = "DB Connections"; +$text['label-database_connections']['es-cl'] = "Conexiones de base de datos"; +$text['label-database_connections']['pt-pt'] = "Conexões de banco de dados"; +$text['label-database_connections']['fr-fr'] = "Connexions de base de données"; +$text['label-database_connections']['pt-br'] = "Conexões de banco de dados"; +$text['label-database_connections']['pl'] = "Połączenia z bazami danych"; +$text['label-database_connections']['sv-se'] = "databasanslutningar "; +$text['label-database_connections']['uk'] = "з'єднання бази даних"; +$text['label-database_connections']['ro'] = "Baza de date Conexiuni"; +$text['label-database_connections']['de-at'] = "Datenbankverbindungen "; +$text['label-database_connections']['fa'] = ""; +$text['label-database_connections']['ar-eg'] = "اتصالات قاعدة البيانات"; +$text['label-database_connections']['he'] = "התחברויות למסד נתונים"; + $text['label-confirm-password']['en-us'] = "Confirm Password"; $text['label-confirm-password']['es-cl'] = "Confirmar Contraseña"; $text['label-confirm-password']['pt-pt'] = "Confirmar Palavra-Passe"; @@ -392,6 +832,55 @@ $text['label-confirm-password']['ro'] = "Confirmare parolă"; $text['label-confirm-password']['fa'] = ""; $text['label-confirm-password']['ar-eg'] = "تاكيد كلمة السر"; +$text['label-cid_number']['en-us'] = "Number"; +$text['label-cid_number']['es-cl'] = "Número"; +$text['label-cid_number']['pt-pt'] = "Número"; +$text['label-cid_number']['fr-fr'] = "Numéro"; +$text['label-cid_number']['pt-br'] = "Número"; +$text['label-cid_number']['pl'] = "Numer"; +$text['label-cid_number']['sv-se'] = "Nummer"; +$text['label-cid_number']['uk'] = "Номер"; +$text['label-cid_number']['de-at'] = "Nummer"; +$text['label-cid_number']['he'] = "מספר"; + +$text['label-cid_name']['en-us'] = "Name"; +$text['label-cid_name']['es-cl'] = "Nombre"; +$text['label-cid_name']['pt-pt'] = "Nome"; +$text['label-cid_name']['fr-fr'] = "Nom"; +$text['label-cid_name']['pt-br'] = "Nome"; +$text['label-cid_name']['pl'] = "Nazwa"; +$text['label-cid_name']['sv-se'] = "Namn"; +$text['label-cid_name']['uk'] = "Назва"; +$text['label-cid_name']['de-at'] = "Name"; +$text['label-cid_name']['he'] = "שם"; + +$text['label-channels']['en-us'] = "Channels"; +$text['label-channels']['es-cl'] = "Canales"; +$text['label-channels']['pt-pt'] = "Canais"; +$text['label-channels']['fr-fr'] = "Canaux"; +$text['label-channels']['pt-br'] = "Canais"; +$text['label-channels']['pl'] = "Kanały"; +$text['label-channels']['uk'] = "Канали"; +$text['label-channels']['sv-se'] = "Kanaler"; +$text['label-channels']['ro'] = "Canale"; +$text['label-channels']['de-at'] = "Kanäle"; +$text['label-channels']['ar-eg'] = ""; +$text['label-channels']['he'] = "ערוצים"; + +$text['label-cancelled']['en-us'] = "Cancelled"; +$text['label-cancelled']['es-cl'] = "Cancelado"; +$text['label-cancelled']['pt-pt'] = "Cancelado"; +$text['label-cancelled']['fr-fr'] = "Annulé"; +$text['label-cancelled']['pt-br'] = "Cancelado"; +$text['label-cancelled']['pl'] = "Odwołany"; +$text['label-cancelled']['he'] = "מבוטל"; +$text['label-cancelled']['uk'] = "скасовано"; +$text['label-cancelled']['sv-se'] = "Avbryts"; +$text['label-cancelled']['de-at'] = "Abgebrochen"; +$text['label-cancelled']['ro'] = "Anulat"; +$text['label-cancelled']['fa'] = ""; +$text['label-cancelled']['ar-eg'] = "ألغيت"; + $text['label-cancel']['en-us'] = "Cancel"; $text['label-cancel']['es-cl'] = "Cancelar"; $text['label-cancel']['pt-pt'] = "Cancelar"; @@ -420,6 +909,20 @@ $text['label-callforward']['ro'] = "Redirecționare apel"; $text['label-callforward']['fa'] = ""; $text['label-callforward']['ar-eg'] = "تحويل المكالمات"; +$text['label-answered']['en-us'] = "Answered"; +$text['label-answered']['es-cl'] = "Respondido"; +$text['label-answered']['pt-pt'] = "Atendidas"; +$text['label-answered']['fr-fr'] = "Répondu"; +$text['label-answered']['pt-br'] = "Atendidas"; +$text['label-answered']['pl'] = "Odebrano"; +$text['label-answered']['he'] = "ענה"; +$text['label-answered']['uk'] = "відповів"; +$text['label-answered']['sv-se'] = "Besvarad"; +$text['label-answered']['de-at'] = "Angenommen"; +$text['label-answered']['ro'] = "Răspuns"; +$text['label-answered']['fa'] = ""; +$text['label-answered']['ar-eg'] = "تم الرد"; + $text['header-user_dashboard']['en-us'] = "User Dashboard"; $text['header-user_dashboard']['es-cl'] = "Dashboard Usuario"; $text['header-user_dashboard']['pt-pt'] = "Painel de Controle do Usuário"; diff --git a/core/user_settings/user_dashboard.php b/core/user_settings/user_dashboard.php index 24d50ada42..a1a85b5474 100644 --- a/core/user_settings/user_dashboard.php +++ b/core/user_settings/user_dashboard.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2012 + Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): @@ -73,21 +73,854 @@ echo " ".$text['description-user_dashboard']; echo " \n"; echo " \n"; echo " \n"; echo "
"; + echo ""; echo $text['description_search']; echo ""; + echo ""; if (permission_exists('xml_cdr_all') && $_REQUEST['showall'] == 'true') { echo "\n"; } @@ -332,44 +344,50 @@ else { echo " ".$text['label-recording']."".$text['label-price'].""; - if (permission_exists('xml_cdr_delete') && $result_count > 0) { - echo "".$v_link_label_delete.""; + //column headings + echo " 
".$text['label-recording']."".$text['label-price']."".$text['label-status'].""; + if (permission_exists('xml_cdr_delete') && $result_count > 0) { + echo "".$v_link_label_delete.""; + } + echo "
"; - switch ($row['direction']) { - case "inbound" : - if ($row['billsec'] == 0) - echo "\n"; - else - echo "\n"; - break; - case "outbound" : - if ($row['billsec'] == 0) - echo "\n"; - else - echo "\n"; - break; - case "local" : - if ($row['billsec'] == 0) - echo "\n"; - else - echo "\n"; - break; - default: - echo " "; + echo "
 "; - echo $row['domain_name'].' '; - echo " "; - echo $row['caller_id_name'].' '; - echo " \n"; + if ($theme_cdr_images_exist) { + if ($row['direction'] == 'inbound' || $row['direction'] == 'local') { + if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; } + else if ($row['answer_stamp'] != '' && $row['bridge_uuid'] == '') { $call_result = 'voicemail'; } + else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] == '' && $row['sip_hangup_disposition'] != 'send_refuse') { $call_result = 'cancelled'; } + else { $call_result = 'failed'; } } - if (permission_exists('recording_download')) { - echo "".$v_link_label_download.""; + else if ($row['direction'] == 'outbound') { + if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; } + else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] != '') { $call_result = 'cancelled'; } + else { $call_result = 'failed'; } + } + echo "\n"; + } + else { echo " "; } + echo ""; + echo $row['domain_name'].' '; + echo " ".$row['caller_id_name']."  ".$tmp_start_epoch."".(($row['tta'] > 0) ? $row['tta']."s" : " ")."".gmdate("G:i:s", $seconds)."".number_format($price,6)." $billing_currency".number_format($row['pdd_ms']/1000,2)."s 0) ? "title='".($row['rtp_audio_in_mos'] / 5 * 100)."%'" : null)." style='text-align: center;'>".((strlen($row['rtp_audio_in_mos']) > 0) ? $row['rtp_audio_in_mos'] : " ")."".$hangup_cause."".ucwords($call_result)." ".$tmp_start_epoch."".(($row['tta'] > 0) ? $row['tta']."s" : " ")."".gmdate("G:i:s", $seconds)."".number_format($price,6)." $billing_currency".number_format($row['pdd_ms']/1000,2)."s 0) ? "title='".($row['rtp_audio_in_mos'] / 5 * 100)."%'" : null)." style='text-align: center;'>".((strlen($row['rtp_audio_in_mos']) > 0) ? $row['rtp_audio_in_mos'] : " ").""; - if (if_group("admin") || if_group("superadmin") || if_group("cdr")) { - echo "".$hangup_cause.""; - } - else { - echo $hangup_cause; - } - echo "
".$text['label-call-statistics']."\n"; + echo " \n"; if (permission_exists('xml_cdr_search_advanced')) { echo " \n"; } @@ -56,7 +57,6 @@ else { echo "\n"; } } - echo " \n"; echo " \n"; echo " \n"; echo " \n"; - echo " "; - if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/voicemails/voicemail_messages.php")) { - echo " "; - } + echo " ".$text['label-welcome']." ".$_SESSION["username"].""; echo "
\n"; - echo "

"; + echo "
"; //display login message if (if_group("superadmin") && $_SESSION['login']['message']['text'] != '') { - echo "


"; echo "
".$text['login-message_attention']."  ".$_SESSION['login']['message']['text']."  (".$text['login-message_dismiss'].")
"; } +//determine hud blocks + if (is_array($_SESSION['dashboard']) && sizeof($_SESSION['dashboard']) > 0) { + foreach ($_SESSION['groups'] as $index => $group) { + $group_name = $group['group_name']; + if (is_array($_SESSION['dashboard'][$group_name]) && sizeof($_SESSION['dashboard'][$group_name]) > 0) { + foreach ($_SESSION['dashboard'][$group_name] as $hud_block) { + $hud_blocks[] = strtolower($hud_block); + } + } + } + } + if (is_array($hud_blocks) && sizeof($hud_blocks) > 0) { + $selected_blocks = array_unique($hud_blocks); + sort($selected_blocks, SORT_NATURAL); + } + unset($group, $group_name, $index, $hud_block, $hud_blocks); + + +//collect stats for counts and limits + if (in_array('counts', $selected_blocks) || in_array('limits', $selected_blocks)) { + + //domains + if (permission_exists('domain_view')) { + $stats['system']['domains']['total'] = sizeof($_SESSION['domains']); + $stats['system']['domains']['disabled'] = 0; + foreach ($_SESSION['domains'] as $domain) { + $stats['system']['domains']['disabled'] += ($domain['domain_enabled'] != 'true') ? 1 : 0; + } + } + + //devices + if (permission_exists('device_view')) { + $stats['system']['devices']['total'] = 0; + $stats['system']['devices']['disabled'] = 0; + $stats['domain']['devices']['total'] = 0; + $stats['domain']['devices']['disabled'] = 0; + $sql = "select domain_uuid, device_provision_enabled from v_devices"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['system']['devices']['total'] = count($result); + foreach ($result as $row) { + $stats['system']['devices']['disabled'] += ($row['device_provision_enabled'] != 'true') ? 1 : 0; + if ($row['domain_uuid'] == $_SESSION['domain_uuid']) { + $stats['domain']['devices']['total']++; + $stats['domain']['devices']['disabled'] += ($row['device_provision_enabled'] != 'true') ? 1 : 0; + } + } + unset ($sql, $prep_statement, $result); + } + + //extensions + if (permission_exists('extension_view')) { + $stats['system']['extensions']['total'] = 0; + $stats['system']['extensions']['disabled'] = 0; + $stats['domain']['extensions']['total'] = 0; + $stats['domain']['extensions']['disabled'] = 0; + $sql = "select domain_uuid, enabled from v_extensions"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['system']['extensions']['total'] = count($result); + foreach ($result as $row) { + $stats['system']['extensions']['disabled'] += ($row['enabled'] != 'true') ? 1 : 0; + if ($row['domain_uuid'] == $_SESSION['domain_uuid']) { + $stats['domain']['extensions']['total']++; + $stats['domain']['extensions']['disabled'] += ($row['enabled'] != 'true') ? 1 : 0; + } + } + unset ($sql, $prep_statement, $result); + } + + //gateways + if (permission_exists('gateway_view')) { + $stats['system']['gateways']['total'] = 0; + $stats['system']['gateways']['disabled'] = 0; + $stats['domain']['gateways']['total'] = 0; + $stats['domain']['gateways']['disabled'] = 0; + $sql = "select domain_uuid, enabled from v_gateways"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['system']['gateways']['total'] = count($result); + foreach ($result as $row) { + $stats['system']['gateways']['disabled'] += ($row['enabled'] != 'true') ? 1 : 0; + if ($row['domain_uuid'] == $_SESSION['domain_uuid']) { + $stats['domain']['gateways']['total']++; + $stats['domain']['gateways']['disabled'] += ($row['enabled'] != 'true') ? 1 : 0; + } + } + unset ($sql, $prep_statement, $result); + } + + //users + if (permission_exists('user_view') || if_group("superadmin")) { + $stats['system']['users']['total'] = 0; + $stats['system']['users']['disabled'] = 0; + $stats['domain']['users']['total'] = 0; + $stats['domain']['users']['disabled'] = 0; + $sql = "select domain_uuid, user_enabled from v_users"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['system']['users']['total'] = count($result); + foreach ($result as $row) { + $stats['system']['users']['disabled'] += ($row['user_enabled'] != 'true') ? 1 : 0; + if ($row['domain_uuid'] == $_SESSION['domain_uuid']) { + $stats['domain']['users']['total']++; + $stats['domain']['users']['disabled'] += ($row['user_enabled'] != 'true') ? 1 : 0; + } + } + unset ($sql, $prep_statement, $result); + } + + //destinations + if (permission_exists('destination_view')) { + $stats['system']['destinations']['total'] = 0; + $stats['system']['destinations']['disabled'] = 0; + $stats['domain']['destinations']['total'] = 0; + $stats['domain']['destinations']['disabled'] = 0; + $sql = "select domain_uuid, destination_enabled from v_destinations"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['system']['destinations']['total'] = count($result); + foreach ($result as $row) { + $stats['system']['destinations']['disabled'] += ($row['destination_enabled'] != 'true') ? 1 : 0; + if ($row['domain_uuid'] == $_SESSION['domain_uuid']) { + $stats['domain']['destinations']['total']++; + $stats['domain']['destinations']['disabled'] += ($row['destination_enabled'] != 'true') ? 1 : 0; + } + } + unset ($sql, $prep_statement, $result); + } + + //call center queues + if (permission_exists('call_center_active_view')) { + $sql = "select domain_uuid from v_call_center_queues where domain_uuid = '".$_SESSION['domain_uuid']."'"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['domain']['call_center_queues']['total'] = count($result); + unset ($sql, $prep_statement, $result); + } + + //ivr menus + if (permission_exists('ivr_menu_view')) { + $stats['domain']['ivr_menus']['disabled'] = 0; + $sql = "select domain_uuid, ivr_menu_enabled from v_ivr_menus where domain_uuid = '".$_SESSION['domain_uuid']."'"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['domain']['ivr_menus']['total'] = count($result); + foreach ($result as $row) { + $stats['domain']['ivr_menus']['disabled'] += ($row['ivr_menu_enabled'] != 'true') ? 1 : 0; + } + unset ($sql, $prep_statement, $result); + } + + //ring groups + if (permission_exists('ring_group_view')) { + $stats['domain']['ring_groups']['disabled'] = 0; + $sql = "select domain_uuid, ring_group_enabled from v_ring_groups where domain_uuid = '".$_SESSION['domain_uuid']."'"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $stats['domain']['ring_groups']['total'] = count($result); + foreach ($result as $row) { + $stats['domain']['ring_groups']['disabled'] += ($row['ring_group_enabled'] != 'true') ? 1 : 0; + } + unset ($sql, $prep_statement, $result); + } + + } + +//build hud block html + $n = 0; + define('TIME_24HR', 1); //set 24hr or 12hr clock + $theme_image_path = $_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/"; // used for missed and recent calls + + //voicemail + if (in_array('voicemail', $selected_blocks) && permission_exists('voicemail_message_view') && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/voicemails/")) { + $hud[$n]['title'] = $text['label-voicemail']; + //required class + require_once "app/voicemails/resources/classes/voicemail.php"; + //get the voicemail + $vm = new voicemail; + $vm->db = $db; + $vm->domain_uuid = $_SESSION['domain_uuid']; + $vm->voicemail_uuid = $voicemail_uuid; + $vm->order_by = $order_by; + $vm->order = $order; + $voicemails = $vm->messages(); + //sum total and new + $messages['total'] = 0; + $messages['new'] = 0; + if (sizeof($voicemails) > 0) { + foreach($voicemails as $field) { + $messages[$field['voicemail_uuid']]['ext'] = $field['voicemail_id']; + $messages[$field['voicemail_uuid']]['total'] = 0; + $messages[$field['voicemail_uuid']]['new'] = 0; + foreach($field['messages'] as &$row) { + if ($row['message_status'] == '') { + $messages[$field['voicemail_uuid']]['new']++; + $messages['new']++; + } + $messages[$field['voicemail_uuid']]['total']++; + $messages['total']++; + } + } + } + + $hud[$n]['html'] .= " ".$messages['total']."".$messages['new']."\n"; + $hud[$n]['html'] .= "

"; + + if (sizeof($voicemails) > 0) { + $hud[$n]['html'] .= ""; + $hud[$n]['html'] .= ""; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= ""; + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + foreach ($messages as $voicemail_uuid => $row) { + if (is_uuid($voicemail_uuid)) { + $tr_link = "href='".PROJECT_PATH."/app/voicemails/voicemail_messages.php?id=".$voicemail_uuid."'"; + $hud[$n]['html'] .= ""; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= " "; + $hud[$n]['html'] .= ""; + $c = ($c) ? 0 : 1; + } + } + + $hud[$n]['html'] .= "
".$text['label-voicemail']."".$text['label-new']."".$text['label-total']."
".$row['ext']."".$row['new']."".$row['total']."
"; + } + else { + $hud[$n]['html'] .= "


".$text['label-no_voicemail_assigned']."
"; + } + + $n++; + } + + + //missed calls + if (in_array('missed', $selected_blocks) && permission_exists('xml_cdr_view') && is_array($_SESSION['user']['extension']) && sizeof($_SESSION['user']['extension']) > 0) { + $hud[$n]['title'] = $text['label-missed_calls']; + foreach ($_SESSION['user']['extension'] as $assigned_extension) { + $assigned_extensions[$assigned_extension['extension_uuid']] = $assigned_extension['user']; + } + + //if also viewing system status, show more recent calls (more room avaialble) + $missed_limit = (in_array('system', $selected_blocks)) ? 8 : 5; + + $sql = " + select + direction, + start_stamp, + start_epoch, + caller_id_name, + caller_id_number, + answer_stamp + from + v_xml_cdr + where + domain_uuid = '".$_SESSION['domain_uuid']."' + and ( + direction = 'inbound' + or direction = 'local' + ) + and bridge_uuid is null + and destination_number in ('".implode("','",$assigned_extensions)."') + order by + start_epoch desc + limit ".$missed_limit." + offset 0"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $result_count = count($result); + unset ($prep_statement, $sql); + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + if ($result_count > 0) { + $theme_cdr_images_exist = ( + file_exists($theme_image_path."icon_cdr_inbound_voicemail.png") && + file_exists($theme_image_path."icon_cdr_inbound_cancelled.png") && + file_exists($theme_image_path."icon_cdr_local_voicemail.png") && + file_exists($theme_image_path."icon_cdr_local_cancelled.png") + ) ? true : false; + + foreach($result as $index => $row) { + $tmp_year = date("Y", strtotime($row['start_stamp'])); + $tmp_month = date("M", strtotime($row['start_stamp'])); + $tmp_day = date("d", strtotime($row['start_stamp'])); + $tmp_start_epoch = (defined('TIME_24HR') && TIME_24HR == 1) ? date("j/n H:i", $row['start_epoch']) : date("j/n h:ia", $row['start_epoch']); + + $tr_link = "onclick=\"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['caller_id_name'])."&src_cid_number=".urlencode($row['caller_id_number'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($row['caller_id_number'])."&rec=false&ringback=us-ring&auto_answer=true');\""; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + unset($sql, $result, $row_count); + } + + $hud[$n]['html'] .= "
 ".$text['label-cid_name']."".$text['label-cid_number']."".$text['label-missed']."
\n"; + if ($theme_cdr_images_exist) { + $call_result = ($row['answer_stamp'] != '') ? 'voicemail' : 'cancelled'; + $hud[$n]['html'] .= "\n"; + } + $hud[$n]['html'] .= "".$row['caller_id_name']." ".((is_numeric($row['caller_id_number'])) ? format_phone($row['caller_id_number']) : $row['caller_id_number'])."".$tmp_start_epoch."
\n"; + $hud[$n]['html'] .= "".$text['label-view_all']."\n"; + $n++; + } + + + //recent calls + if (in_array('recent', $selected_blocks) && permission_exists('xml_cdr_view') && is_array($_SESSION['user']['extension']) && sizeof($_SESSION['user']['extension']) > 0) { + $hud[$n]['title'] = $text['label-recent_calls']; + foreach ($_SESSION['user']['extension'] as $assigned_extension) { + $assigned_extensions[$assigned_extension['extension_uuid']] = $assigned_extension['user']; + } + + //if also viewing system status, show more recent calls (more room avaialble) + $recent_limit = (in_array('system', $selected_blocks)) ? 8 : 5; + + $sql = " + select + direction, + start_stamp, + start_epoch, + caller_id_name, + caller_id_number, + destination_number, + answer_stamp, + bridge_uuid, + sip_hangup_disposition + from + v_xml_cdr + where + domain_uuid = '".$_SESSION['domain_uuid']."' + and ("; + $x = 0; + foreach ($assigned_extensions as $assigned_extension) { + $sql .= "caller_id_number like '".$assigned_extension."' "; + $sql .= "or destination_number like '".$assigned_extension."' "; + $sql .= "or destination_number like '*99".$assigned_extension."' "; + if (++$x < sizeof($assigned_extensions)) { $sql .= "or "; } + } + $sql .= " + ) + order by + start_epoch desc + limit ".$recent_limit." + offset 0"; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $result_count = count($result); + unset ($prep_statement, $sql); + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + if ($result_count > 0) { + $theme_cdr_images_exist = ( + file_exists($theme_image_path."icon_cdr_inbound_answered.png") && + file_exists($theme_image_path."icon_cdr_inbound_voicemail.png") && + file_exists($theme_image_path."icon_cdr_inbound_cancelled.png") && + file_exists($theme_image_path."icon_cdr_inbound_failed.png") && + file_exists($theme_image_path."icon_cdr_outbound_answered.png") && + file_exists($theme_image_path."icon_cdr_outbound_cancelled.png") && + file_exists($theme_image_path."icon_cdr_outbound_failed.png") && + file_exists($theme_image_path."icon_cdr_local_answered.png") && + file_exists($theme_image_path."icon_cdr_local_voicemail.png") && + file_exists($theme_image_path."icon_cdr_local_cancelled.png") && + file_exists($theme_image_path."icon_cdr_local_failed.png") + ) ? true : false; + + foreach($result as $index => $row) { + $tmp_year = date("Y", strtotime($row['start_stamp'])); + $tmp_month = date("M", strtotime($row['start_stamp'])); + $tmp_day = date("d", strtotime($row['start_stamp'])); + $tmp_start_epoch = (defined('TIME_24HR') && TIME_24HR == 1) ? date("j/n H:i", $row['start_epoch']) : date("j/n h:ia", $row['start_epoch']); + + $tr_link = "onclick=\"send_cmd('".PROJECT_PATH."/app/click_to_call/click_to_call.php?src_cid_name=".urlencode($row['caller_id_name'])."&src_cid_number=".urlencode($row['caller_id_number'])."&dest_cid_name=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_name'])."&dest_cid_number=".urlencode($_SESSION['user']['extension'][0]['outbound_caller_id_number'])."&src=".urlencode($_SESSION['user']['extension'][0]['user'])."&dest=".urlencode($row['caller_id_number'])."&rec=false&ringback=us-ring&auto_answer=true');\""; + $hud[$n]['html'] .= "\n"; + //determine call result and appropriate icon + $hud[$n]['html'] .= "\n"; + //determine name + $cdr_name = ($row['direction'] == 'inbound' || ($row['direction'] == 'local' && in_array($row['destination_number'], $assigned_extensions))) ? $row['caller_id_name'] : " "; + $hud[$n]['html'] .= "\n"; + //determine number + if ($row['direction'] == 'inbound' || ($row['direction'] == 'local' && in_array($row['destination_number'], $assigned_extensions))) { + $cdr_number = (is_numeric($row['caller_id_number'])) ? format_phone($row['caller_id_number']) : $row['caller_id_number']; + } + else if ($row['direction'] == 'outbound' || ($row['direction'] == 'local' && in_array($row['caller_id_number'], $assigned_extensions))) { + $cdr_number = (is_numeric($row['destination_number'])) ? format_phone($row['destination_number']) : $row['destination_number']; + } + $hud[$n]['html'] .= "\n"; + //date/time + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + unset($cdr_name, $cdr_number); + $c = ($c) ? 0 : 1; + } + unset($sql, $result, $row_count); + } + + $hud[$n]['html'] .= "
 ".$text['label-cid_name']."".$text['label-cid_number']."".$text['label-date_time']."
\n"; + if ($theme_cdr_images_exist) { + if ($row['direction'] == 'inbound' || $row['direction'] == 'local') { + if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; } + else if ($row['answer_stamp'] != '' && $row['bridge_uuid'] == '') { $call_result = 'voicemail'; } + else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] == '' && $row['sip_hangup_disposition'] != 'send_refuse') { $call_result = 'cancelled'; } + else { $call_result = 'failed'; } + } + else if ($row['direction'] == 'outbound') { + if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; } + else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] != '') { $call_result = 'cancelled'; } + else { $call_result = 'failed'; } + } + $hud[$n]['html'] .= "\n"; + } + $hud[$n]['html'] .= "".$cdr_name."".$cdr_number."".$tmp_start_epoch."
\n"; + $hud[$n]['html'] .= "".$text['label-view_all']."\n"; + $n++; + } + + + //system counts + if (in_array('counts', $selected_blocks) && permission_exists('xml_cdr_view')) { + $hud[$n]['title'] = $text['label-system_counts']; + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + //domains + if (permission_exists('domain_view')) { + $tr_link = "href='".PROJECT_PATH."/core/domain_settings/domains.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //devices + if (permission_exists('device_view') && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/devices/")) { + $tr_link = "href='".PROJECT_PATH."/app/devices/devices.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //extensions + if (permission_exists('extension_view') && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/extensions/")) { + $tr_link = "href='".PROJECT_PATH."/app/extensions/extensions.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //gateways + if (permission_exists('gateway_view') && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/gateways/")) { + $tr_link = "href='".PROJECT_PATH."/app/gateways/gateways.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //users + if ((permission_exists('user_view') || if_group("superadmin")) && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/core/users/")) { + $tr_link = "href='".PROJECT_PATH."/core/users/index.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //destinations + if (permission_exists('destination_view') && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/destinations/")) { + $tr_link = "href='".PROJECT_PATH."/app/destinations/destinations.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + $hud[$n]['html'] .= "
".$text['label-item']."".$text['label-disabled']."".$text['label-total']."
".$text['label-domains']."".$stats['system']['domains']['disabled']."".$stats['system']['domains']['total']."
".$text['label-devices']."".$stats['system']['devices']['disabled']."".$stats['system']['devices']['total']."
".$text['label-extensions']."".$stats['system']['extensions']['disabled']."".$stats['system']['extensions']['total']."
".$text['label-gateways']."".$stats['system']['gateways']['disabled']."".$stats['system']['gateways']['total']."
".$text['label-users']."".$stats['system']['users']['disabled']."".$stats['system']['users']['total']."
".$text['label-destinations']."".$stats['system']['destinations']['disabled']."".$stats['system']['destinations']['total']."
\n"; + $n++; + } + + + //domain limits + if (in_array('limits', $selected_blocks) && is_array($_SESSION['limit']) && sizeof($_SESSION['limit']) > 0) { + $hud[$n]['title'] = $text['label-domain_limits']; + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + foreach ($_SESSION['limit'] as $category => $value) { + $category_raw = $category; + $category = str_replace('_', ' ', $category); + $category = ucwords($category); + $category = str_replace('Ivr', 'IVR', $category); + $limit = $value['numeric']; + switch ($category_raw) { + case 'users': + if (!permission_exists('user_view')) { continue 2; } + $url = '/core/users/index.php'; + break; + case 'call_center_queues': + if (!permission_exists('call_center_active_view')) { continue 2; } + $url = '/app/call_centers/call_center_queues.php'; + break; + case 'destinations': + if (!permission_exists('destination_view')) { continue 2; } + $url = '/app/destinations/destinations.php'; + break; + case 'devices': + if (!permission_exists('device_view')) { continue 2; } + $url = '/app/devices/devices.php'; + break; + case 'extensions': + if (!permission_exists('extension_view')) { continue 2; } + $url = '/app/extensions/extensions.php'; + break; + case 'gateways': + if (!permission_exists('gateway_view')) { continue 2; } + $url = '/app/gateways/gateways.php'; + break; + case 'ivr_menus': + if (!permission_exists('ivr_menu_view')) { continue 2; } + $url = '/app/ivr_menus/ivr_menus.php'; + break; + case 'ring_groups': + if (!permission_exists('ring_group_view')) { continue 2; } + $url = '/app/ring_groups/ring_groups.php'; + break; + } + $tr_link = "href='".PROJECT_PATH.$url."'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + $hud[$n]['html'] .= "
".$text['label-feature']."".$text['label-used']."".$text['label-total']."
".$category."".$stats['domain'][$category_raw]['total']."".$limit."
\n"; + $n++; + } + + + //system status + if (in_array('system', $selected_blocks)) { + $hud[$n]['title'] = $text['label-system_status']; + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + + //pbx version + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + //switch version + $switch_version = event_socket_request($fp, 'api version'); + preg_match("/FreeSWITCH Version (\d+\.\d+\.\d+(?:\.\d+)?).*\(.*?(\d+\w+)\s*\)/", $switch_version, $matches); + $switch_version = $matches[1]; + $switch_bits = $matches[2]; + if ($switch_version != '' && $switch_bits != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //switch uptime + $tmp = event_socket_request($fp, 'api status'); + $tmp = explode("\n", $tmp); + $tmp = $tmp[0]; + $tmp = explode(' ', $tmp); + $uptime = (($tmp[1]) ? $tmp[1].'y ' : null); + $uptime .= (($tmp[3]) ? $tmp[3].'d ' : null); + $uptime .= (($tmp[5]) ? $tmp[3].'h ' : null); + $uptime .= (($tmp[7]) ? $tmp[3].'m ' : null); + $uptime .= (($tmp[9]) ? $tmp[3].'s' : null); + if ($uptime != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + } + + //os uptime + if (stristr(PHP_OS, 'Linux')) { + unset($tmp); + $uptime = shell_exec("cut -d. -f1 /proc/uptime"); + $tmp['y'] = floor($uptime/60/60/24/365); + $tmp['d'] = $uptime/60/60/24%365; + $tmp['h'] = $uptime/60/60%24; + $tmp['m'] = $uptime/60%60; + $tmp['s'] = $uptime%60; + $uptime = (($tmp['y'] != 0 && $tmp['y'] != '') ? $tmp['y'].'y ' : null); + $uptime .= (($tmp['d'] != 0 && $tmp['d'] != '') ? $tmp['d'].'d ' : null); + $uptime .= (($tmp['h'] != 0 && $tmp['h'] != '') ? $tmp['h'].'h ' : null); + $uptime .= (($tmp['m'] != 0 && $tmp['m'] != '') ? $tmp['m'].'m ' : null); + $uptime .= (($tmp['s'] != 0 && $tmp['s'] != '') ? $tmp['s'].'s' : null); + if ($uptime != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + } + + //memory usage (for available memory, use "free | awk 'FNR == 3 {print $4/($3+$4)*100}'" instead) + if (stristr(PHP_OS, 'Linux')) { + $percent = round(shell_exec("free | awk 'FNR == 3 {print $3/($3+$4)*100}'"), 1).'%'; + if ($percent != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + } + + //disk usage + if (stristr(PHP_OS, 'Linux')) { + $tmp = shell_exec("df /home"); + $tmp = explode("\n", $tmp); + $tmp = preg_replace('!\s+!', ' ', $tmp[1]); // multiple > single space + $tmp = explode(' ', $tmp); + foreach ($tmp as $stat) { + if (substr_count($stat, '%') > 0) { $percent = $stat; break; } + } + if ($percent != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + } + + //cpu usage + if (stristr(PHP_OS, 'Linux')) { + $tmp = shell_exec("ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'"); + $tmp = explode("\n", $tmp); + $tmp = preg_replace('!\s+!', ' ', $tmp[1]); // multiple > single space + $tmp = explode(' ', trim($tmp)); + $cpu = $tmp[0]; + if ($cpu != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + } + + //db connections + switch ($db_type) { + case 'pgsql': + $sql = "select count(*) as connections from pg_stat_activity"; + break; + case 'mysql': + $sql = "show status where `variable_name` = 'Threads_connected'"; + break; + default: + unset($sql); + if ($db_path != '' && $dbfilename != '') { + $tmp = shell_exec("lsof ".realpath($db_path).'/'.$dbfilename); + $tmp = explode("\n", $tmp); + $connections = sizeof($tmp) - 1; + } + } + if ($sql != '') { + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetch(PDO::FETCH_NAMED); + $connections = $result['connections']; + unset ($sql, $prep_statement, $result); + } + if ($connections != '') { + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //channel count + if ($fp) { + $tmp = event_socket_request($fp, 'api show channels'); + $tmp = explode("\n", $tmp); + $tmp = preg_replace('!\s+!', ' ', trim($tmp[3])); + $tmp = explode(' ', $tmp); + $tmp = $tmp[0]; + $channels = (is_numeric($tmp)) ? $tmp : 0; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + //registration count + if ($fp && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/registrations/")) { + $tmp = event_socket_request($fp, 'api sofia xmlstatus profile internal reg'); + $registrations = substr_count($tmp, ''); + $registrations = (is_numeric($registrations)) ? $registrations : 0; + $tr_link = "href='".PROJECT_PATH."/app/registrations/status_registrations.php'"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $hud[$n]['html'] .= "\n"; + $c = ($c) ? 0 : 1; + } + + $hud[$n]['html'] .= "
".$text['label-item']."".$text['label-value']."
FusionPBX".software_version()."
".$text['label-switch']."".$switch_version." (".$switch_bits.")
".$text['label-switch_uptime']."".$uptime."
".$text['label-system_uptime']."".$uptime."
".$text['label-memory_usage']."".$percent."
".$text['label-disk_usage']."".$percent."
".$text['label-processor_usage']."".$cpu."%
".$text['label-database_connections']."".$connections."
".$text['label-channels']."".$channels."
".$text['label-registrations']."".$registrations."
\n"; + $n++; + } + +//output hud blocks + if (is_array($hud) && sizeof($hud) > 0) { + + //javascript function: send_cmd + if ((in_array('missed', $selected_blocks) || in_array('recent', $selected_blocks)) && permission_exists('xml_cdr_view')) { + echo "\n"; + } + + echo "\n"; + echo "\n"; + foreach ($hud as $index => $block) { + echo "\n"; + if ($index+1 < sizeof($hud)) { echo ""; } + } + echo ""; + echo "
".$block['title']."

".$block['html']."
    
"; + unset($hud); + } + + //call routing if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/calls/calls.php")) { if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) { @@ -109,7 +942,7 @@ //ring group forward if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/ring_groups/ring_group_forward.php")) { - if (permission_exists('ring_group_forward')) { //ring_group_forward + if (permission_exists('ring_group_forward')) { $is_included = "true"; echo "\n"; echo " \n"; diff --git a/themes/accessible/template.php b/themes/accessible/template.php index 7fb272575c..047262e6f6 100644 --- a/themes/accessible/template.php +++ b/themes/accessible/template.php @@ -439,12 +439,65 @@ table tr:last-child td:last-child { DIV.login_message { border: 1px solid #bae0ba; background-color: #eeffee; - -webkit-border-radius: 3px 3px 3px 3px; - -moz-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; padding: 20px; + margin-bottom: 15px; } +/* dashboard hud styles begin */ + + td.hud_box { + height: auto; + vertical-align: top; + padding: 15px; + background-color: #f5f7fa; + border: 1px solid #c6d4e8; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + text-align: center; + } + + b.hud_title { + color: #a4aebf; + } + + span.hud_voicemail_total { + cursor: pointer; + color: #004083; + font-size: 60px; + line-hight: 20px; + font-weight: bold; + } + + span.hud_voicemail_total:hover { + opacity: 0.7; + } + + sup.hud_voicemail_new { + font-weight: normal; + color: #03920a; + font-size: 30px; + line-hight: 10px; + } + + th.hud_heading { + font-size: 11px; + font-weight: bold; + color: black; + text-align: left; + } + + td.hud_text { + font-size: 11px; + color: black; + text-align: left; + } + +/* dashboard hud styles end */ + diff --git a/themes/enhanced/images/icon_cdr_inbound_connected.png b/themes/enhanced/images/icon_cdr_inbound_answered.png similarity index 100% rename from themes/enhanced/images/icon_cdr_inbound_connected.png rename to themes/enhanced/images/icon_cdr_inbound_answered.png diff --git a/themes/enhanced/images/icon_cdr_inbound_missed.png b/themes/enhanced/images/icon_cdr_inbound_cancelled.png similarity index 100% rename from themes/enhanced/images/icon_cdr_inbound_missed.png rename to themes/enhanced/images/icon_cdr_inbound_cancelled.png diff --git a/themes/enhanced/images/icon_cdr_inbound_failed.png b/themes/enhanced/images/icon_cdr_inbound_failed.png new file mode 100644 index 0000000000..9cecaf7315 Binary files /dev/null and b/themes/enhanced/images/icon_cdr_inbound_failed.png differ diff --git a/themes/minimized/images/icon_cdr_inbound_missed.png b/themes/enhanced/images/icon_cdr_inbound_voicemail.png similarity index 100% rename from themes/minimized/images/icon_cdr_inbound_missed.png rename to themes/enhanced/images/icon_cdr_inbound_voicemail.png diff --git a/themes/enhanced/images/icon_cdr_local_connected.png b/themes/enhanced/images/icon_cdr_local_answered.png similarity index 100% rename from themes/enhanced/images/icon_cdr_local_connected.png rename to themes/enhanced/images/icon_cdr_local_answered.png diff --git a/themes/minimized/images/icon_cdr_local_failed.png b/themes/enhanced/images/icon_cdr_local_cancelled.png similarity index 100% rename from themes/minimized/images/icon_cdr_local_failed.png rename to themes/enhanced/images/icon_cdr_local_cancelled.png diff --git a/themes/enhanced/images/icon_cdr_local_failed.png b/themes/enhanced/images/icon_cdr_local_failed.png index 8c0132286b..4b18366aab 100644 Binary files a/themes/enhanced/images/icon_cdr_local_failed.png and b/themes/enhanced/images/icon_cdr_local_failed.png differ diff --git a/themes/enhanced/images/icon_cdr_local_voicemail.png b/themes/enhanced/images/icon_cdr_local_voicemail.png new file mode 100644 index 0000000000..8c0132286b Binary files /dev/null and b/themes/enhanced/images/icon_cdr_local_voicemail.png differ diff --git a/themes/enhanced/images/icon_cdr_outbound_connected.png b/themes/enhanced/images/icon_cdr_outbound_answered.png similarity index 100% rename from themes/enhanced/images/icon_cdr_outbound_connected.png rename to themes/enhanced/images/icon_cdr_outbound_answered.png diff --git a/themes/minimized/images/icon_cdr_outbound_failed.png b/themes/enhanced/images/icon_cdr_outbound_cancelled.png similarity index 100% rename from themes/minimized/images/icon_cdr_outbound_failed.png rename to themes/enhanced/images/icon_cdr_outbound_cancelled.png diff --git a/themes/enhanced/images/icon_cdr_outbound_failed.png b/themes/enhanced/images/icon_cdr_outbound_failed.png index cf1f4cd1aa..1d2946dc48 100644 Binary files a/themes/enhanced/images/icon_cdr_outbound_failed.png and b/themes/enhanced/images/icon_cdr_outbound_failed.png differ diff --git a/themes/enhanced/template.php b/themes/enhanced/template.php index f881e95ed4..9067dd00fb 100644 --- a/themes/enhanced/template.php +++ b/themes/enhanced/template.php @@ -1009,6 +1009,7 @@ legend { -moz-border-radius: 3px; border-radius: 3px; padding: 20px; + margin-bottom: 15px; } /* operator panel styles begin */ @@ -1201,11 +1202,63 @@ legend { /* operator panel styles end */ -SPAN.playback_progress_bar { - background-color: #c43e42; - height: 1px; - display: inline-block; - } + SPAN.playback_progress_bar { + background-color: #c43e42; + height: 1px; + display: inline-block; + } + +/* dashboard hud styles begin */ + + td.hud_box { + height: auto; + vertical-align: top; + padding: 15px; + background-color: #f5f7fa; + border: 1px solid #c6d4e8; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + text-align: center; + } + + b.hud_title { + color: #a4aebf; + } + + span.hud_voicemail_total { + cursor: pointer; + color: #004083; + font-size: 60px; + line-hight: 20px; + font-weight: bold; + } + + span.hud_voicemail_total:hover { + opacity: 0.7; + } + + sup.hud_voicemail_new { + font-weight: normal; + color: #03920a; + font-size: 30px; + line-hight: 10px; + } + + th.hud_heading { + font-size: 11px; + font-weight: bold; + color: black; + text-align: left; + } + + td.hud_text { + font-size: 11px; + color: black; + text-align: left; + } + +/* dashboard hud styles end */ diff --git a/themes/minimized/images/icon_cdr_inbound_connected.png b/themes/minimized/images/icon_cdr_inbound_answered.png similarity index 100% rename from themes/minimized/images/icon_cdr_inbound_connected.png rename to themes/minimized/images/icon_cdr_inbound_answered.png diff --git a/themes/minimized/images/icon_cdr_inbound_cancelled.png b/themes/minimized/images/icon_cdr_inbound_cancelled.png new file mode 100644 index 0000000000..fd2fe0fe42 Binary files /dev/null and b/themes/minimized/images/icon_cdr_inbound_cancelled.png differ diff --git a/themes/minimized/images/icon_cdr_inbound_failed.png b/themes/minimized/images/icon_cdr_inbound_failed.png new file mode 100644 index 0000000000..9cecaf7315 Binary files /dev/null and b/themes/minimized/images/icon_cdr_inbound_failed.png differ diff --git a/themes/minimized/images/icon_cdr_inbound_voicemail.png b/themes/minimized/images/icon_cdr_inbound_voicemail.png new file mode 100644 index 0000000000..fd2fe0fe42 Binary files /dev/null and b/themes/minimized/images/icon_cdr_inbound_voicemail.png differ diff --git a/themes/minimized/images/icon_cdr_local_connected.png b/themes/minimized/images/icon_cdr_local_answered.png similarity index 100% rename from themes/minimized/images/icon_cdr_local_connected.png rename to themes/minimized/images/icon_cdr_local_answered.png diff --git a/themes/minimized/images/icon_cdr_local_cancelled.png b/themes/minimized/images/icon_cdr_local_cancelled.png new file mode 100644 index 0000000000..8c0132286b Binary files /dev/null and b/themes/minimized/images/icon_cdr_local_cancelled.png differ diff --git a/themes/minimized/images/icon_cdr_local_voicemail.png b/themes/minimized/images/icon_cdr_local_voicemail.png new file mode 100644 index 0000000000..8c0132286b Binary files /dev/null and b/themes/minimized/images/icon_cdr_local_voicemail.png differ diff --git a/themes/minimized/images/icon_cdr_outbound_connected.png b/themes/minimized/images/icon_cdr_outbound_answered.png similarity index 100% rename from themes/minimized/images/icon_cdr_outbound_connected.png rename to themes/minimized/images/icon_cdr_outbound_answered.png diff --git a/themes/minimized/images/icon_cdr_outbound_cancelled.png b/themes/minimized/images/icon_cdr_outbound_cancelled.png new file mode 100644 index 0000000000..cf1f4cd1aa Binary files /dev/null and b/themes/minimized/images/icon_cdr_outbound_cancelled.png differ diff --git a/themes/minimized/template.php b/themes/minimized/template.php index 9212e98e54..1c1828399a 100644 --- a/themes/minimized/template.php +++ b/themes/minimized/template.php @@ -1012,6 +1012,7 @@ legend { -moz-border-radius: 3px; border-radius: 3px; padding: 20px; + margin-bottom: 15px; } /* operator panel styles begin */ @@ -1204,11 +1205,69 @@ legend { /* operator panel styles end */ -SPAN.playback_progress_bar { - background-color: #c43e42; - height: 1px; - display: inline-block; - } + SPAN.playback_progress_bar { + background-color: #c43e42; + height: 1px; + display: inline-block; + } + +/* dashboard hud styles begin */ + + td.hud_box { + height: auto; + vertical-align: top; + padding: 15px; + border: 1px solid #c6d4e8; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + text-align: center; + background-color: #f5f7fa; + background-image: -ms-linear-gradient(left, #edf1f7 0%, #f9fbfe 30%, #f9fbfe 70%, #edf1f7 100%); + background-image: -moz-linear-gradient(left, #edf1f7 0%, #f9fbfe 30%, #f9fbfe 70%, #edf1f7 100%); + background-image: -o-linear-gradient(left, #edf1f7 0%, #f9fbfe 30%, #f9fbfe 70%, #edf1f7 100%); + background-image: -webkit-gradient(linear, left, right, color-stop(0, #edf1f7), color-stop(0.30, #f9fbfe), color-stop(0.70, #f9fbfe), color-stop(1, #edf1f7)); + background-image: -webkit-linear-gradient(left, #edf1f7 0%, #f9fbfe 30%, #f9fbfe 70%, #edf1f7 100%); + background-image: linear-gradient(to right, #edf1f7 0%, #f9fbfe 30%, #f9fbfe 70%, #edf1f7 100%); + } + + b.hud_title { + color: #a4aebf; + } + + span.hud_voicemail_total { + cursor: pointer; + color: #004083; + font-size: 60px; + line-hight: 20px; + font-weight: bold; + } + + span.hud_voicemail_total:hover { + opacity: 0.7; + } + + sup.hud_voicemail_new { + font-weight: normal; + color: #03920a; + font-size: 30px; + line-hight: 10px; + } + + th.hud_heading { + font-size: 11px; + font-weight: bold; + color: black; + text-align: left; + } + + td.hud_text { + font-size: 11px; + color: black; + text-align: left; + } + +/* dashboard hud styles end */