1571 Commits
Author SHA1 Message Date
FusionPBX 8564133d7b Fix the domain when using Show ALL 2025-04-02 11:38:21 -06:00
FusionPBX 50e222b3e4 Add yealink_force_voice_ring_volume
Forced ringer volume: 0 - 15
2025-03-27 18:06:44 -06:00
frytimo fff4365b1c Fix call recordings maintenance path (#7335) 2025-03-25 14:56:20 -06:00
FusionPBX 9f7371659d Set enabled to true by default 2025-03-24 18:33:34 -06:00
FusionPBX 90bae99e3d Add div with class card 2025-03-24 18:32:32 -06:00
FusionPBX e0b8adf376 CDR http_enabled default to false
Using the file system by default instead of HTTP POST
2025-03-22 17:12:14 -06:00
FusionPBX 062c9ec8b8 Update xml_cdr.php 2025-03-22 17:02:05 -06:00
frytimo d546c30837 Use auth_id instead of user_id for pcode 36 (#7328) 2025-03-21 09:44:55 -06:00
frytimo d5c54fa4b0 Fix user id instead of auth id used in grandstream template (#7327) 2025-03-20 23:51:32 -06:00
fusionate 9cf8da5a4a Access Control - Edit: Escape submitted values in dig command. 2025-03-20 09:53:17 -06:00
FusionPBX bde4163c25 Add fax to the add fax_files table if the file exists 2025-03-19 13:27:29 -06:00
FusionPBX c75e573e84 Fix Call Detail Records with invalid xml 2025-03-13 10:13:54 -06:00
FusionPBX 3ddf6e4df5 Update login.htm 2025-03-07 12:35:27 -07:00
FusionPBX 3ffd58ce26 Fix server 2 server address and sip transport 2025-03-03 12:44:33 -07:00
FusionPBX 155875b6bf Minor version update 2025-03-01 21:00:19 -07:00
FusionPBX 0fd4f8ba00 Fix the status voicemail
Moved voicemail status after missed calls. This way, it will show the status of voicemail when it goes to voicemail.

There is still a field in the CDR for missed_call, and this will still be set to true for calls that go to voicemail.
2025-02-28 17:29:09 -07:00
FusionPBX 5fbc6dcc03 Add enable-rfc-5626 to the internal profile 2025-02-27 10:53:26 -07:00
FusionPBX db5dcf4a03 Fix a voicemail bug
Fix the voicemail link
Use only one keep local feature
Deprecate the voicemail_local_after_forward
2025-02-20 15:44:53 -07:00
FusionPBX e88c43c272 Add 922 as another emergency test number 2025-02-19 10:38:19 -07:00
FusionPBX cea56a7643 Allow the @ in caller_id_name 2025-02-17 11:57:05 -07:00
FusionPBX 5db8c82d11 Voicemail: Rename voicemail filesystem folder if Voicemail ID changes 2025-02-15 20:39:44 -07:00
FusionPBX 60d60a2b1d Fix invalid XML CDR 2025-02-15 19:07:35 -07:00
FusionPBX d490d6d5ab Send CDR with invalid xml to failed/invalid_xml 2025-02-15 18:24:46 -07:00
FusionPBX 6163d27962 Update app_config.php 2025-02-15 12:10:09 -07:00
FusionPBX 4604509bfd Do not save event_guard logs to transactions 2025-02-15 12:02:03 -07:00
FusionPBX a8f0c03746 Send the fax with primary and alternative routes 2025-02-14 15:52:03 -07:00
FusionPBX 181092d399 Add two fax variables 2025-02-14 13:39:13 -07:00
FusionPBX ff36efcb49 Add two fax variables 2025-02-14 13:10:19 -07:00
FusionPBX f1e981b824 Fix the fifo agent delete 2025-02-13 21:52:19 -07:00
FusionPBX a0c112bc7e Allow # and * in the sanitized caller ID 2025-02-11 13:29:26 -07:00
FusionPBX 9da6a9b19c Fix password when the permission is not assigned 2025-02-07 17:34:01 -07:00
FusionPBX 8ab4b2b6c2 Change value of yealink_voice_vad to 0
A value of 0 disables voice activity detection. VAD when enabled on a Yealink T54W made the audio at the beginning of the call start at the beginning of the call and sometimes took 1 to 30 seconds to start.

Recommend changing this value on all systems using Yealink to use 0 to disable voice activity detection. Currently yealink_voice_vad is used in t46s, t41s, and t54w
2025-02-06 12:14:04 -07:00
FusionPBX 76de2bee83 Fix the login destination alternate path 2025-02-05 18:10:15 -07:00
FusionPBX 7f2f0df9b8 Fax queue setting prefer_local default false
This allows control over whether to prefer sending to the voip provider or attempt local fax call.
2025-02-04 18:40:46 -07:00
FusionPBX 73c37b6562 Fix the call recording length 2025-02-02 18:27:28 -07:00
FusionPBX 97580a057a Fix the devices domain names column 2025-02-02 18:02:31 -07:00
FusionPBX b857f092fa Add uuid to the custom recording name 2025-02-01 00:24:18 -07:00
FusionPBX 1f456c5077 Use the settings class use database::new() 2025-01-31 21:41:05 -07:00
FusionPBX 62b9f692df Add setting call_recordings record_extension default value mp3
Call recording file format options: wav, mp3
2025-01-31 17:14:43 -07:00
FusionPBX ce114a4bb2 Update destination_edit.php
- Use one database connection
- Use the settings class
- Use setting call_recordings record_extension this fixes a problem where the recording extension may not be set.
2025-01-31 17:12:33 -07:00
FusionPBX 31ec917c64 Add record_stereo and record_stereo_swap 2025-01-31 16:46:49 -07:00
FusionPBX 0ac25b2769 Minor version update 2025-01-29 22:27:18 -07:00
FusionPBX 88197dd51b logged in direct to the dashboard 2025-01-27 13:58:39 -07:00
FusionPBX e0ebdaf2b6 Add forgot password translations 2025-01-27 12:51:04 -07:00
FusionPBX 07639f4cf2 Fix the forget password feature 2025-01-27 11:55:39 -07:00
FusionPBX 2f99b86917 Fix provision edit to use text type instead of numeric #7229 2025-01-24 16:11:14 -07:00
frytimo 4b75567ad8 use lowercase matching domain name (#7230)
When the domain name has upper and lower case letters. The domain UUID results in not found in app/provision
2025-01-24 15:57:15 -07:00
frytimo ba1dc820eb suppress access on null php notice in new is_connected method (#7228) 2025-01-23 13:44:36 -07:00
frytimo 5ef71889fe add is_connected method to database (#7226) 2025-01-23 11:52:44 -07:00
FusionPBX 5815699489 Add more debug details and return false 2025-01-22 20:36:29 -07:00
FusionPBX 5d4d7a0fd6 Enhance message array debug details 2025-01-22 20:08:59 -07:00
FusionPBX 9dbc493844 Replace exit; with return false; 2025-01-22 19:27:58 -07:00
fusionate 64476fa512 Voicemails - List: Restore search functionality. 2025-01-16 11:20:51 -07:00
FusionPBX e6c89018a1 Fix issue with sending local faxes
When sip_to_user or sip_req_user are used then we need to add these variables so that it can find the correct inbound route.
2025-01-15 19:47:43 -07:00
FusionPBX b869123e1c Fix server_address_primary
This was showing as a select box instead of input-type text .
2025-01-13 12:59:57 -07:00
FusionPBX df745a2838 Removed domain_enabled to fix a bug for those using BDR
An issue occurs if the domain_enabled data type is text rather than boolean. The upgrade schema data types will correct the data type except when using BDR. The alter table for changing data types doesn't work because of BDR.
2025-01-13 11:12:13 -07:00
FusionPBX ca28a06cea Remove the pdo.php include
The pdo.php file was replaced by the database class
2025-01-08 12:19:18 -07:00
FusionPBX 28040957bd Add the settings_array to the class constructor
- More efficient to pass in the database object
- Added an option to pass in the domain_name
2025-01-07 22:21:59 -07:00
FusionPBX 9ed10a4dec Add multi-cast settings to all yealinks 2025-01-07 19:47:58 -07:00
FusionPBX e1729aad3a Fix the device line default values and use the settings class 2025-01-07 19:47:57 -07:00
FusionPBX 2593b6bd6f Use the domain_name as the context 2025-01-07 19:47:48 -07:00
FusionPBX edac98d8c2 Update the context for the operator
Use the domain_name as the context.
2025-01-07 19:47:47 -07:00
FusionPBX d9cd2d84e7 Change the agent.contact size from 255 to 1024 2025-01-07 19:47:47 -07:00
FusionPBX 933d06d96d Show newest emails first 2025-01-07 19:47:39 -07:00
frytimo 44983289fa xml_cdr catch edge case of failed import when no start stamp is present (#7207)
* xml_cdr catch edge case of failed import when no start stamp is present

* xml_cdr catch edge case of failed import when no start stamp is present
2025-01-07 19:47:38 -07:00
chansizzle 8f24b921a9 update cpm_ans to be cpm_answered (#7204)
The sql aliases the calculation as cpm_answered. Without this change the CDR Statistics Call Per Minute will always be zero.
2025-01-07 19:47:38 -07:00
FusionPBX 3940fb8219 Fix the duration using the created_epoch 2024-12-26 10:58:59 -07:00
FusionPBX 303935b9d2 Fix greeting when using phrases
After saving a phrase for the greeting it would save but it wouldn't show the correct label. It would continue to play the phrase but show the UUID.
2024-12-23 12:25:22 -07:00
FusionPBX f0d2a80ab7 Fix greeting when using phrases
After saving a phrase for the greeting it would save but it wouldn't show the correct label. It would continue to play the phrase but show the UUID.
2024-12-23 12:19:23 -07:00
FusionPBX 0af94ee1e3 Sanitize the caller ID name and number 2024-12-20 11:08:47 -07:00
FusionPBX d463a7c5b3 Update app_languages.php 2024-12-17 12:50:13 -07:00
FusionPBX 9815d319e6 Fix the device ADD button.
Also, permission_exists function uses the permission::new() method and this made it efficient enough to continue to use the permission_exists function.
2024-12-13 10:40:03 -07:00
FusionPBX 312c8659af Fix a bug where transfer is part of recording name 2024-12-10 13:45:26 -07:00
FusionPBX c36455e28f Call Center responsive design update
Fix the display running out of the content area for different screen sizes.
2024-12-07 13:34:22 -07:00
FusionPBX 492b188d0d Use the PHP_BINARY constant 2024-12-02 18:00:54 -07:00
FusionPBX e6a1093a38 Use the PHP_BINARY constant 2024-12-02 17:59:29 -07:00
FusionPBX c3fd2bae2e Set the Yealink default to 4 PAI-RPID-FROM
Change to a better default value.
2024-12-02 11:57:55 -07:00
frytimo 31c8f87c80 fix voicemail message length and size display (#7188) 2024-11-30 12:10:40 -07:00
frytimo 152881e34c fix voicemail message count when viewing all domains (#7187) 2024-11-30 12:10:23 -07:00
FusionPBX 8b7bd29456 Fix temporary permissions 2024-11-29 14:06:08 -07:00
FusionPBX 1b675c1b56 Method new allow null
Needed to support temporary permissions
2024-11-29 14:03:49 -07:00
frytimo c836a3b226 parse windows 1256 encoding type in email to fax (#7183) 2024-11-27 14:21:57 -07:00
FusionPBX 80c2b9bab2 Fix permission handling
- Required when not using a $_SESSION
- Singleton permssion method named new
2024-11-27 13:33:00 -07:00
FusionPBX 2a9a1229dd Fix CSS missing characters
Disable the ob_gzhandler
2024-11-27 09:33:59 -07:00
FusionPBX bbc7dea2f1 Return an empty array if there are no groups 2024-11-20 13:53:51 -07:00
FusionPBX 28f94e1268 Fix ring group missed call to show in CDR 2024-11-19 13:45:39 -07:00
FusionPBX 3ef0f1d593 Fix the sql query 2024-11-15 14:33:17 -07:00
FusionPBX fbafcc438c Create three_way.lua 2024-11-15 14:16:45 -07:00
fusionate cc3637e248 Fax Server - Sent List: Fix Destination value. 2024-11-14 19:04:55 -07:00
FusionPBX ffd1bbd4fc Fixed Call Flow Summary for outbound calls 2024-11-14 17:14:33 -07:00
fusionate 6d37675273 Fax Server - Fax to Email: Remove unnecessary $included variable. 2024-11-14 13:50:17 -07:00
fusionate 8ca1b0d27b Fax Server - Fax to Email: Fix population of cover page labels. 2024-11-14 13:49:06 -07:00
FusionPBX 25c8b93423 Fix the voicemail transcribe title 2024-11-13 17:47:49 -07:00
FusionPBX c273c8021f IVR Menu direct_dial_digits_max set default to 8 2024-11-12 15:40:28 -07:00
FusionPBX 0aaa4829e7 Use include internal on answered, missed and voicemail
This hides local calls which could also be calls to feature codes. Only add these feature code calls to the count if directed to show internal calls.
2024-11-08 21:34:07 -07:00
FusionPBX 50d81556f5 Fix the destination summary when server using UTC
Set the PHP time zone to fix the destination summary report. Without the time zone set it would use the server operating system time zone.  If the time zone is set to UTC when it rolled over to a new date ahead of the local time zone it would make the report show 0 results.
2024-11-08 17:44:58 -07:00
FusionPBX 8dcebaabc9 Fix the extension summary and call flow summary
Set the time zone in PHP so that it is correct inside the class method for the extension summary and the call flow summary
2024-11-08 17:30:10 -07:00
FusionPBX ec208915f2 Yealink boolean and numeric use text
The provisioning template delivers the value as a string
2024-11-04 10:21:17 -07:00
FusionPBX 96d91dde9c Use the yealink_trust_certificate directly
Value should be 0 or 1
2024-11-04 10:10:07 -07:00
FusionPBX 5464b4451f Add missing $ 2024-11-04 08:19:15 -07:00
FusionPBX 9006dc408f Update http_auth to use boolean 2024-11-01 14:18:44 -06:00
FusionPBX 6bc2fccbb0 Fix for the device template
If the device vendor matches then use the alternate device template
2024-11-01 12:35:06 -06:00
FusionPBX b49ebeeaa9 Fix lua streamfile 2024-10-31 19:34:06 -06:00
FusionPBX 2c862bd97e Fix a typo on the database object name 2024-10-30 16:50:41 -06:00
FusionPBX bbf53595a7 Update extension_edit.php 2024-10-30 14:12:07 -06:00
FusionPBX 58b8ded449 Minor version update 5.3.4 2024-10-29 15:20:21 -06:00
FusionPBX 5d8980742b Fix page load time for call_recordings
The page load time was slow when there were no call recordings for the domain.

Remove domain_uuid is null as this isn't needed for call recordings.
2024-10-28 11:01:24 -06:00
FusionPBX 7f8ed9037b Remove the session when the password is changed 2024-10-27 18:05:06 -06:00
FusionPBX dcde377064 Replace the empty function with isset
Don't use empty when value can be 0
2024-10-27 11:09:06 -06:00
FusionPBX 1ef51535fb Fix the use of the settings object 2024-10-25 12:47:56 -06:00
frytimo 8f575fe555 Use boolean in conditional statement (#7171) 2024-10-24 14:56:38 -06:00
FusionPBX d68ffb65c7 Provision settings adjust types
If the type is boolean with a value of 0 or 1, use type text; if it is numeric, use type text.

The template default setting uses a string for the template values, and a boolean type is used with conditions.
2024-10-23 15:12:09 -06:00
frytimo 955439dea3 Use boolean in the if statement (#7169) 2024-10-23 14:04:06 -06:00
frytimo ae2679e97c update template to match new boolean in settings (#7168)
* update template to match new boolean in settings

* Update email.php
2024-10-23 12:14:54 -06:00
FusionPBX e54d10a4e9 provision enabled default to boolean 2024-10-23 12:12:13 -06:00
FusionPBX 273531302e Update provision enabled use boolean 2024-10-23 12:11:12 -06:00
FusionPBX 9a5271fa92 Update boolean provision.php 2024-10-23 12:09:47 -06:00
FusionPBX 6f4b522e9e Update boolean provision 2024-10-23 12:08:40 -06:00
FusionPBX 648385a85c Update boolean devices.php 2024-10-23 12:04:23 -06:00
frytimo 33a6a4cd01 update template to match new boolean in settings (#7167) 2024-10-23 12:01:13 -06:00
FusionPBX d91c7b4fe9 Update boolean settings
Settings of type boolean need to be set as boolean.
2024-10-23 12:00:01 -06:00
FusionPBX e83510c426 Fix the condition for smtp_from 2024-10-23 11:34:53 -06:00
FusionPBX d4b677ce6b Fix the databases.php file 2024-10-22 09:48:18 -06:00
FusionPBX 8d2aefa41e Fix local fax calls
Use loopback for sending local calls to other domains.
2024-10-21 16:53:10 -06:00
FusionPBX 55ba425b57 Fix a provisioning bug 2024-10-21 15:27:28 -06:00
FusionPBX 7308ae1a52 Update hangup_rx.lua 2024-10-17 13:11:27 -06:00
FusionPBX 2f16d2bc05 Add contact string to hover 2024-10-17 12:00:20 -06:00
FusionPBX 000a32ad01 Prevent a nil error 2024-10-17 02:33:29 -06:00
FusionPBX b9dd9af354 Update hangup_rx.lua
Prevent error if the value of x is nil.
2024-10-17 02:30:02 -06:00
FusionPBX 0a08b522f6 Fix play recording in CDR 2024-10-16 16:18:59 -06:00
FusionPBX 40fe1e8a43 fix waveform image background (#7160) 2024-10-16 15:52:51 -06:00
FusionPBX d4cc8600e6 Update app_defaults.php 2024-10-16 11:53:57 -06:00
FusionPBX 16515b1a81 Update fax sending order 2024-10-15 12:22:48 -06:00
FusionPBX e6772deec3 Update the condition for boolean 2024-10-10 17:24:17 -06:00
FusionPBX d4ca64c2d1 User logs fix failed 2024-10-10 16:28:59 -06:00
FusionPBX 8fe2199e82 Before using is_numeric cast the value to int
Without this cc_queue_joined_epoch, cc_queue_answered_epoch, and other values were seen as a string
2024-10-07 14:29:43 -06:00
FusionPBX e112cc0a63 Fix call center agent save 2024-10-07 13:07:39 -06:00
FusionPBX b490ce7cc0 Update authentication.php 2024-10-06 10:33:27 -06:00
FusionPBX 381fd03bd3 Fix the FIFO lag time
This is also known as the wrap-up time after the call ends with the agent.
2024-10-04 01:39:46 -06:00
FusionPBX 8ae86bca9f Re-use the database connection 2024-10-03 23:42:34 -06:00
FusionPBX 9cc6d45772 Fax - Sent: Add time sent to cover sheet. 2024-10-02 17:59:06 -06:00
FusionPBX aa4a4bf763 Fix valet_park use sip_refer_to
The referred-by domain can't be used as some phones use the domain of the tenant and some of their IP address. For this reason, replaced with sip_refer_to.
2024-10-02 13:39:10 -06:00
FusionPBX b1c24b3843 Removed for better backwards PHP compatibility 2024-10-02 11:37:10 -06:00
FusionPBX 33035d7af2 Fix valet park when call is sent to a different domain
When crossing domains we need to use park with the correct domain. This change uses the referred by to get the proper domain name.
2024-10-01 16:43:17 -06:00
FusionPBX 1b02aa0e05 Add permission call_recording_transcribe 2024-09-30 17:47:39 -06:00
FusionPBX 391f4c6322 Fix call screen to end recording with dtmf and silence 2024-09-30 10:05:49 -06:00
FusionPBX a9c37688f1 Fix provision auto_insert_enabled 2024-09-28 11:06:42 -06:00
Alex 24640276ea Add content card to voicemail greetings (#7143)
* Add content card to voicemail greetings

* Update voicemail_greeting_edit.php
2024-09-26 15:57:22 -06:00
FusionPBX 1393a29607 Allow right click open in new window 2024-09-26 09:47:54 -06:00
FusionPBX 3b61bb645a Add the domain_name variable
Without the domain_name variable in some cases the confirm option doesn't work.
2024-09-26 08:45:53 -06:00
FusionPBX d77e862ac1 More efficient use of the database object 2024-09-23 19:34:49 -06:00
FusionPBX 85d7c8e60c Fix voicemail greeting for base64
- Use the settings class
- Re-use the database object
- Update the indentation
2024-09-23 18:18:40 -06:00
FusionPBX 4b7e90c3ff Restore previous caller ID behavior
If the caller ID was updated then update the caller ID
2024-09-23 13:01:47 -06:00
FusionPBX 72470b5863 Fix permission_exists fax_file_edit 2024-09-21 21:13:40 -06:00
FusionPBX 52a320ec54 Fixed the registration count
- Fixed on the dashboard for those with superadmin group
- Fixed the count in the SIP status page
2024-09-21 12:39:10 -06:00
FusionPBX 91b845dc71 Default value for create recording should always be false 2024-09-20 23:10:00 -06:00
FusionPBX c2107802d8 Add ignore early media for external calls 2024-09-20 16:19:26 -06:00
FusionPBX 7ed752ef7a Get the domain_name with a different variable
Get the domain_name with a different variable if the domain_name is not set
2024-09-20 16:17:05 -06:00
FusionPBX 02ce497e5c Use ring group destination confirm true when call screen is enabled 2024-09-20 13:16:06 -06:00
markjcrane fbe358816f Remove the CSS card overflow it cut off the date-time picker 2024-09-20 10:57:56 -06:00
markjcrane 00c0fbe06d Remove carriage return per line and leave only line feeds 2024-09-19 17:24:16 -06:00
markjcrane 26530d6fe0 Fix end of file line only use one line feed at the end of the file 2024-09-19 16:44:08 -06:00
FusionPBX c766b5c634 Align SEARCH and other buttons to the right 2024-09-18 18:46:55 -06:00
FusionPBX 5b66aa1aa7 Show only default extension type
Hide virtual extensions
2024-09-18 11:53:42 -06:00
FusionPBX fca042e996 Update the border radius 2024-09-18 11:38:37 -06:00
FusionPBX 937b470630 FIFO Queues added to destination select list
- This was missed in the destination select list and  should be there by default.
- Also add a new permission fifo_destinations
2024-09-17 22:53:17 -06:00
FusionPBX 4490631485 Fix voicemail base64 greeting 2024-09-17 17:47:22 -06:00
FusionPBX bfa0046dd4 Add ring group call screen translations 2024-09-16 23:57:29 -06:00
FusionPBX 9a24c9fa42 Update version to 5.3.3
Major version update. A new branch 5.3 branch created from this point.
2024-09-16 21:44:20 -06:00
FusionPBX fa23ffe255 Disable Call Block dashboard by default 2024-09-16 21:41:31 -06:00
FusionPBX 61d68e2f7d Update the domain dashboard order 2024-09-16 21:38:36 -06:00
FusionPBX adeb3ac8a7 Add Contacts to the dashboard 2024-09-16 21:21:28 -06:00
FusionPBX e4a8efa0b9 Add event guard to the dashboard 2024-09-16 21:20:12 -06:00
FusionPBX e7434f3560 Update more theme settings 2024-09-16 19:56:29 -06:00
FusionPBX 9d1e8d1110 Update a few more theme settings 2024-09-16 19:45:10 -06:00
FusionPBX 4f87a17761 Update multiple theme settings 2024-09-16 19:40:49 -06:00
FusionPBX aa9c7a18ed Update button theme colors 2024-09-16 19:00:29 -06:00
FusionPBX f42e11cabe Update menu theme colors 2024-09-16 18:55:55 -06:00
fusionate 7fc0f19032 Dashboard: Default color adjustments. 2024-09-16 18:30:34 -06:00
FusionPBX 7a77f25057 Update the card theme settings enable by default 2024-09-16 18:29:27 -06:00
fusionate cc08aa724d Dashboard: Widget counter pill style adjustments. 2024-09-16 18:22:28 -06:00
FusionPBX 4dd7336d32 Update the colors used on the dashboard theme 2024-09-16 18:18:14 -06:00
fusionate fd032f4ad4 Dashboard: Widget counter pill style adjustments. 2024-09-16 18:09:04 -06:00
FusionPBX fe4d329657 Update config.php 2024-09-16 15:00:41 -06:00
FusionPBX 944e032b47 Update the domains icon 2024-09-16 14:50:17 -06:00
FusionPBX c134903615 Add domains count dashboard widget 2024-09-16 14:46:36 -06:00
FusionPBX cabb0d39b6 Add domain dashboard config 2024-09-16 14:45:51 -06:00
FusionPBX a82bd419c6 Add dashboard icon to the list 2024-09-16 14:40:28 -06:00
FusionPBX e6fea6295a Add translation for progress bar 2024-09-16 14:37:58 -06:00
FusionPBX 493ea83cc3 Add icon and icons 2024-09-16 14:33:49 -06:00
Alex 01e41b09a1 Update system_status.php (#7134) 2024-09-16 14:14:17 -06:00
FusionPBX 340c6e17f3 Add ring group call screening 2024-09-15 16:47:53 -06:00
FusionPBX 795343379c Handled in its own dashboard widget
For this reason remove the registration count from system status.
2024-09-14 21:49:53 -06:00
FusionPBX 540efc355f Move the get_memory_details functions 2024-09-14 21:38:14 -06:00
FusionPBX 5e75879518 Add email queue audio string
This enables sending base64 to the transcription class
2024-09-14 21:27:02 -06:00
FusionPBX 384492ab7e Update the icon color 2024-09-14 16:18:29 -06:00
Alex ca10a3e518 Update registrations.php (#7133) 2024-09-14 16:12:37 -06:00
FusionPBX cee08c8eb7 Update the registration widget 2024-09-14 13:16:22 -06:00
Alex 7edc65fce4 Fixed alignment on dashboard system status progress bars (#7132) 2024-09-14 10:56:18 -06:00
FusionPBX 624877541b Update dashboard_edit.php 2024-09-14 03:56:45 -06:00
FusionPBX a31484d414 Update dashboard.php 2024-09-14 03:55:20 -06:00
FusionPBX 0357a08a25 Correct the icon name 2024-09-14 03:52:21 -06:00
FusionPBX 02054ae683 Add the missed call icon 2024-09-14 03:45:08 -06:00
FusionPBX 8d5a190063 Add the dashboard icons 2024-09-14 03:40:08 -06:00
FusionPBX a9f61e8cfc Update missed, recent calls and new messages 2024-09-14 03:10:55 -06:00
FusionPBX c406761897 Update system_status.php 2024-09-13 21:32:08 -06:00
FusionPBX 70b081726e Call forward widget simple by default 2024-09-13 19:30:51 -06:00
FusionPBX 88b76a4e6d Dashboard widgets collapsed by default 2024-09-13 19:28:13 -06:00
FusionPBX 8e9527a1c1 Update system_status widget add memory details
Completed work on disk usage percentage
2024-09-13 19:15:15 -06:00
FusionPBX aad87759ac Remove expanded row span change 2024-09-13 19:10:45 -06:00
Alex 5e6d494796 Add progress bar to system status dashboard (#7131)
* Add progress bar to system status dashboard

* Update dashboard_edit.php

* Update app_languages.php

* Update config.php
2024-09-13 17:00:21 -06:00
FusionPBX 8c67b31441 Update config.php 2024-09-13 16:41:05 -06:00
Anthony 2de3c6f3bd Added Turkish & adjusted translations in dialplan_inbound & outbound (#7130)
* Update app_languages.php

* Added Turkish & adjusted translations in dialplan_inbound/app_languages.php
2024-09-13 15:15:23 -06:00
FusionPBX 69c0827669 Add system status
Disable system cpu and disk usage dashboard widgets
2024-09-13 15:14:05 -06:00
FusionPBX 4af96791a5 Create system_disk_usage.php 2024-09-13 15:09:35 -06:00
FusionPBX 2f4954fad1 Send base64 string to the send_mail function 2024-09-12 18:38:11 -06:00
FusionPBX 3429f12850 Add email_base64 to the send_mail function 2024-09-12 18:32:50 -06:00
FusionPBX 8edc5d1205 User edit add a Settings button 2024-09-12 09:41:01 -06:00
fusionate f073dbe152 Theme: Style adjustments. 2024-09-11 18:35:50 -06:00
fusionate 102b9ee9cb Dialplan - Edit: Fix card. 2024-09-11 18:08:31 -06:00
FusionPBX 70dc966a5a Disable the row description background 2024-09-11 12:51:15 -06:00
FusionPBX 6296fb1f73 Update fax_advanced.php
The IMAP FAX settings for advanced were part of the fax_edit.php these settings were moved to the fax advanced file. 

This update focuses the code only on the Advanced settings its intended to manage.
2024-09-11 09:26:09 -06:00
frytimo 414e0b2a21 fix fax caller id number empty (#7129) 2024-09-11 09:09:14 -06:00
FusionPBX 2032e4937e Support sip_port value of 0
Change empty to !isset to account for sip_port that can be set to 0.
2024-09-10 13:40:44 -06:00
FusionPBX e86ec20547 Update background_video
- Uses type array
- Use the first item in the array
2024-09-10 04:03:44 -06:00
FusionPBX 86df5a2e6a Remove transcription from voicemails index.lua
Transcription was moved to the email queue
2024-09-10 01:08:55 -06:00
FusionPBX 6d7b3a9249 Update fax_emails.php
Add additional logging information
2024-09-09 21:06:30 -06:00
FusionPBX c5be2b27e9 Update fax_emails.php
- Get the domain name more efficiently
- Add the domain name to the output
2024-09-09 20:38:26 -06:00
fusionate 8e410a4b19 Theme - Side Menu: Better position submenu icons. 2024-09-09 18:47:42 -06:00
fusionate b05ebfc440 Menu - Edit: Add icon preview to items list. 2024-09-09 18:42:20 -06:00
fusionate 4ecb9650e0 Theme: Add settings to control color/hover of list row text links. 2024-09-09 18:28:39 -06:00
fusionate 418fc49ba8 Theme - Body Header: Add settings to control link text color/hover. 2024-09-09 17:43:07 -06:00
fusionate d8877203c7 Menu Edit - Item List: Fix count. 2024-09-09 17:42:23 -06:00
fusionate 6295dbe4fb Theme - Side Menu: Fix sub menu icons. 2024-09-09 17:02:45 -06:00
fusionate dbd59bb70a Theme - Fixed Menu: Fix submenu icon formatting in second column. 2024-09-09 16:42:20 -06:00
Alex 0c5a2ca784 Update streams.php (#7127)
* Update streams.php

* Update call_center_queue.php

* Update menu.php

* Update vars.php

* Update dashboard.php

* Update dashboard_edit.php
2024-09-09 15:25:24 -06:00
Anthony 20283be299 Added Turkish & adjusted translations in dialplans/app_languages.php (#7128) 2024-09-09 15:24:42 -06:00
fusionate 8c155bf066 Theme - Side Menu: More side menu pin scrubbing. 2024-09-09 14:14:17 -06:00
fusionate d67bb02736 Theme - Side Menu: Scrub side menu pin. 2024-09-09 14:13:27 -06:00
fusionate 8f36cd3218 Theme - Side Menu: More adjustments. 2024-09-09 14:11:32 -06:00
fusionate 0d9400de54 Theme - Side Menu: More updates. 2024-09-09 13:51:23 -06:00
fusionate b8689d8f57 Theme - Side Menu: More updates. 2024-09-09 13:22:44 -06:00
FusionPBX 214a24bc39 Simplify voicemail transcription
This is done by deprecating default setting voicemail transcribe_enabled.

Instead control this with the voicemail_transcription_enabled permission  and per voicemail.
2024-09-09 12:58:36 -06:00
fusionate 259ac1212d Theme - Side Menu: More adjustments. 2024-09-09 12:36:16 -06:00
fusionate f4fbb34e5f Theme - Side Menu: More adjustments. 2024-09-09 12:29:49 -06:00
fusionate 6059c1e7d1 Theme - Side Menu: Adjustments. 2024-09-09 10:53:12 -06:00
FusionPBX 3b19f4a464 function permisison_exists remove operator
It was added by a contributor who hasn't used it anywhere in the project. For this reason its being removed.
2024-09-09 09:31:54 -06:00
frytimo 2085c950ee Use isset in permission exists for improved efficiency(#7126)
Using isset on the key name of the array allows it to use a hash table lookup to improve the lookup times for a permission. The permission name is not set if it does not exist for the current user.
2024-09-09 09:14:45 -06:00
FusionPBX 04125ef651 Deprecate ZRTP and inbound-late-negotiation disable by default 2024-09-07 17:38:48 -06:00
fusionate 76d76c8c56 Dashboard: Fix action bar sticky. 2024-09-07 13:12:53 -06:00
FusionPBX 6f55603e12 Update 018_global-variables.xml 2024-09-07 09:50:29 -06:00
FusionPBX 349889ad15 Update vars.xml
Remove a few irrelevant switch variables
2024-09-07 09:47:18 -06:00
FusionPBX ba64a3604d Global variables add ringback and transfer ringback
Add ringback and transfer_ringback to the global-variables dialplan default enabled false.
2024-09-07 09:44:31 -06:00
FusionPBX 1418b5afc7 Fix the new default setting custom search 2024-09-07 09:21:09 -06:00
fusionate d131f00a4e Theme: New Settings to control body header shadow color and size. Add overflow on content cards for small screens. 2024-09-06 20:51:32 -06:00
frytimo d4fdd1ce6b Add back button to fax queue page. Move permission_exists outside loop (#7125)
* Add back button to fax queue page. Move permission_exists outside loop

* move to permission array instead of individual permission variables
2024-09-06 20:27:19 -06:00
frytimo 9f6d828799 pass objects to authentication plugins when possible (#7123)
* pass objects to authentication plugins when possible
Pass the settings and authentication objects to the plugins to re-use existing objects

* Update authentication.php
2024-09-06 18:20:26 -06:00
fusionate d311dc14e9 Theme: Adjustment to make mobile side menu better. 2024-09-06 17:10:27 -06:00
Alex b43bcb9a13 Added the heading counter div (#7124) 2024-09-06 16:43:42 -06:00
fusionate e2eb190c98 [Revert] Theme: Adjust content card display style. 2024-09-06 15:49:02 -06:00
FusionPBX 2f93054f45 Fixed fifo agent member login and logout 2024-09-06 15:26:36 -06:00
fusionate 4a2d9290be Theme: Adjust content card display style. 2024-09-06 15:15:02 -06:00
fusionate 4fe331b433 Contact - Edit: Move primary indicator to prevent wrapping in left column. 2024-09-06 13:41:46 -06:00
fusionate ff28c5e4ae Contacts - Edit: Integrate content cards. 2024-09-06 13:13:08 -06:00
fusionate 7cd891187c Default Settings: Implement new heading counter style. 2024-09-06 13:12:02 -06:00
fusionate 41afe02b1e Theme: New Default Settings for header counter style. 2024-09-06 13:11:26 -06:00
Alex c01403cce8 Added content card div to devices (#7122) 2024-09-06 11:20:03 -06:00
FusionPBX 2182ebd0b4 Added the content card div 2024-09-05 23:37:34 -06:00
Alex cb6edd88ef Added content card to applications (#7121) 2024-09-05 17:10:04 -06:00
FusionPBX 54565ede41 Fix a bug where logo was overridden 2024-09-05 10:28:53 -06:00
frytimoandTim Fry 7b94e9434e fix authentication logging of cidr fail (#7120)
Correct variable name to use when logging a cidr failed login attempt

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-09-05 09:30:22 -06:00
FusionPBX 4dfcba93b7 Update code for line key variables
Search and replace the variables such as user_id, display_name, and other preset variables to match the correct line key. Focused on it working with multiple line keys.
2024-09-04 20:21:03 -06:00
fusionate 21be3354b1 Theme: Fix issue in last commit. 2024-09-04 20:00:49 -06:00
fusionate 65b957c2f7 Theme: Fix sub menu indicator icons, and date/time picker icons after Font Awesome upgrade. 2024-09-04 19:31:09 -06:00
fusionate 3fc209025e Theme: Additional Default Settings to control the style of content cards. 2024-09-04 19:01:16 -06:00
fusionate bf7526f0ef Multiple Apps: Integrate content cards. 2024-09-04 17:51:23 -06:00
frytimo a965c78735 fix empty session username (#7119) 2024-09-04 17:09:16 -06:00
fusionate d234fb185a Multiple Apps: Integrate content cards. 2024-09-04 16:55:24 -06:00
FusionPBX 73c15de84c Add card_shadow_color and card_background_color 2024-09-04 15:51:05 -06:00
fusionate ffb6876bd8 Default Settings: Use language variable for new Custom category filter. 2024-09-04 14:48:51 -06:00
fusionate 5a8613ec0a Adjustment in method used to update Font Awesome icon valuse in * Settings. 2024-09-04 14:36:25 -06:00
frytimo 7dde6ceb85 fix default settings showing all settings as bold (#7118) 2024-09-04 14:12:30 -06:00
fusionate 2eab5c623e Side Menu: Explicitly set content container width when side_menu_pin enabled to avoid issues with browser caching the css. 2024-09-04 13:49:44 -06:00
FusionPBX 86a4df04cf Regenerate session every 15 minutes 2024-09-04 12:37:06 -06:00
frytimoandTim Fry b529d2a535 regenerate the session after cidr check is complete and then log (#7117)
Logging after all checks are complete ensures the session ID is correct when logging it in the user_logs table

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-09-04 12:06:09 -06:00
Alex 369b8dd049 Fixed minor visual bug and added missing labels (#7116)
* Fixed minor visual bug and added missing labels

* Update app_languages.php

* Update css.php
2024-09-04 11:33:11 -06:00
FusionPBX 2b1cba9a39 Add a permission called destination_local 2024-09-04 10:34:52 -06:00
FusionPBX 91db42f1e3 Categories are ordered by the SQL Query 2024-09-03 22:54:35 -06:00
FusionPBX 3b521d5150 Add a custom category 2024-09-03 22:48:17 -06:00
FusionPBX 757c085ec1 Update dashboard_edit.php 2024-09-03 20:59:30 -06:00
FusionPBX 8c15185774 Update css.php
Re-adding this as it was accidently removed by a commit
2024-09-03 17:41:10 -06:00
FusionPBX ad1b8fbabb Add hostname to the user logs 2024-09-03 17:33:29 -06:00
fusionate cbb01cea1e Dashboard: Rever style to apply background color. 2024-09-03 15:03:38 -06:00
FusionPBX c533b7dd22 Update css.php 2024-09-03 14:18:05 -06:00
FusionPBX 5f36a746d5 update css.php
Fixed the sytnax issue
2024-09-03 14:03:59 -06:00
FusionPBX 1bfa5fed9b Add setting background_color_enabled 2024-09-03 13:57:48 -06:00
FusionPBX f8e363de2f Update css.php to use background_color_enabled 2024-09-03 13:42:54 -06:00
fusionate a975f6dcb9 Dashboard: Adjust style method to apply background color hover transition universally. 2024-09-03 11:46:57 -06:00
fusionate 0f06ded327 Dashboard: Resolve chart padding and label issue. 2024-09-03 10:50:45 -06:00
FusionPBX 452ddc9539 Add the session status to user logs 2024-09-02 23:42:52 -06:00
FusionPBX ffd0545a22 Update session regenerate 2024-09-02 22:48:02 -06:00
MarBifrost b4edb3c3a0 Additional corrections to the Georgian translation (#7115)
* Corrections in Georgian translation

* Additional corrections to the Georgian translation
2024-09-02 09:00:55 -06:00
FusionPBX 651da82b90 Share the $database with the function
After removing the new database connection from the function. This caused a bug that is fixed by using the global option in from of the variable to  share it with the function.
2024-09-01 09:44:42 -06:00
FusionPBX 4443519aa1 Add subcontent for shadow and background color
Add css options for background color
2024-09-01 02:18:35 -06:00
MarBifrost 906b3edf03 Corrections in Georgian translation (#7113) 2024-08-31 10:02:51 -06:00
Alex 77db4aa9dc Added dashboard_shadow_color default setting (#7114)
* Added dashboard_shadow_color default setting

* Update css.php

* Update app_config.php
2024-08-30 14:44:56 -06:00
FusionPBX 0cc12aac52 Allow : in the text pattern 2024-08-29 22:38:17 -06:00
FusionPBX a0cd465052 Allow ? and = for the text pattern
Required for Account Settings link
2024-08-29 22:29:04 -06:00
FusionPBX c474b1a59b Update the dashboard settings 2024-08-29 22:15:55 -06:00
FusionPBX 5ca4207526 Add dashboard device icon 2024-08-29 16:28:53 -06:00
FusionPBX a828add956 Add dashboard registration icon 2024-08-29 16:25:26 -06:00
FusionPBX 0d747ae3d6 Fix permisisons for call detail records export 2024-08-29 11:35:05 -06:00
FusionPBX b17ce08f7c Fixed voicemail messages show no results
We removed the pointers &$row because two bugs were found that used them. However, this code uses the pointers. This bug fix resolves this problem.
2024-08-29 11:17:18 -06:00
FusionPBX cc145b1554 Update app_languages.php
Fix the syntax
2024-08-29 10:42:35 -06:00
FusionPBX 7d41385304 Clear the buffer before sending the PDF output 2024-08-29 10:04:18 -06:00
NorwayFun 56704d419f Localizaton: Finishing remaining files for Georgian (#7112) 2024-08-29 04:20:23 -06:00
FusionPBX f6ce98ad45 Improved database connection handling 2024-08-29 04:04:04 -06:00
Mihir Gajjar 273a45bbb6 Yealink Wifi Settings variables (#7094)
* Update y000000000067.cfg

Update the Yealink T42S template to add variables for Wifi settings.

* Update y000000000065.cfg

Update the Yealink T48S template to add variables for Wifi settings.

* Update y000000000066.cfg

Update the Yealink T46S template to add variables for Wifi settings.

* Update y000000000068.cfg

Update the Yealink T41S template to add variables for Wifi settings.

* Update y000000000069.cfg

Update the Yealink T27g template to add variables for Wifi settings.

* Update y000000000046.cfg

Update the Yealink T29G template to add variables for Wifi settings.

* Update y000000000028.cfg

Update the Yealink T46G template to add variables for Wifi settings.

* Update y000000000035.cfg

Update the Yealink T48G template to add variables for Wifi settings.
2024-08-29 03:41:09 -06:00
FusionPBX e0ed81a5ba Re-use the Database connection 2024-08-29 03:35:38 -06:00
FusionPBX 9347d682bf Update user settings
Re-use the database connection
2024-08-29 03:10:28 -06:00
FusionPBX 5b9e886183 Update conference center
Re-use the database connection
2024-08-29 03:03:09 -06:00
FusionPBX e160c23268 Update contacts database connection 2024-08-29 02:56:50 -06:00
FusionPBX 15d616f949 Update domain_edit.php
Re-use the database connection
2024-08-29 02:44:59 -06:00
FusionPBX 83c286c513 Update menu_item_edit.php
Re-use the database connection
2024-08-29 02:40:43 -06:00
FusionPBX 34661e9dc7 Update app_languages.php 2024-08-29 02:07:19 -06:00
FusionPBX 029fbefeba Update app_languages.php 2024-08-29 01:59:47 -06:00
FusionPBX 032b6fca3e Update translations 2024-08-29 01:57:18 -06:00
FusionPBX d76c4893da Update resources/app_languages.php
Add missing translations
2024-08-28 23:39:44 -06:00
FusionPBX 54484dedd5 Update dashboard content widget 2024-08-28 12:57:27 -06:00
FusionPBX af15a8e5bc Update dashboard_edit.php
Sanitize the data before being added to the database
2024-08-28 12:17:22 -06:00
FusionPBX a81cbe4db2 Allow line feeds in the text 2024-08-28 12:16:22 -06:00
FusionPBX 16658e5114 Update the dashboard
Sanitize the data from the dashboard
Use tabs instead of space indentation
2024-08-28 11:30:04 -06:00
FusionPBX 88bfb18e5a Add hold_accum_seconds to the xml_cdr table 2024-08-28 10:05:48 -06:00
NorwayFun aabc2f33a8 Localization: Add full support for Georgian language (#7110)
* Translating apps to Georgian

* Translating apps to Georgian

* Translating more apps to Georgian

* Translating more apps to Georgian

* Translating more apps to Georgian

* Translating more apps to Georgian

* Translating more apps to Georgian

* Translating theme to Georgian

* Translating core to Georgian

* Translating core to Georgian

* Translating core to Georgian by Marie

* Translating core to Georgian

* Translating resources to Georgian by Marie

* Translating core to Georgian

* fix app_languages.php
2024-08-28 09:59:02 -06:00
FusionPBX 5702102850 Order the dashboard first by order number then by name 2024-08-27 18:17:47 -06:00
FusionPBX 5b969a8d19 Update config.php 2024-08-27 18:12:50 -06:00
FusionPBX 43e72c974d Fix the disk usage for FreeBSD 2024-08-27 14:34:41 -06:00
fusionate 805954ce36 Dashboard: Add Background Gradient & Angle Controls 2024-08-27 13:58:11 -06:00
FusionPBX 3b1f73f847 Update event_guard.php 2024-08-27 11:09:37 -06:00
FusionPBX 49d885f19f Update voicemails.php
Prevent an error when the voicemails array is empty
2024-08-27 00:46:20 -06:00
FusionPBX 979917468c Use uuidgen on FreeBSD 2024-08-26 20:33:05 -06:00
FusionPBX d45f6ddae0 Update event guard for freebsd 2024-08-25 19:31:05 -06:00
FusionPBX a7b1644436 Update the dashboard path 2024-08-22 18:12:43 -06:00
Alex 1a9353ac88 Update parent.php (#7109)
* Update parent.php

* Update dashboard_edit.php

* Update app_defaults.php
2024-08-22 17:59:12 -06:00
fusionate ac94e22a1d Fax Server: Pull in language file for email template replacements. 2024-08-22 17:20:36 -06:00
fusionate 5a456b9b86 Fax Server: Add missing translations on Fax File field. 2024-08-22 16:43:27 -06:00
fusionate 12eead4b4d Fax Server: Add option for Download Link on received fax notifications, instead of attachment. 2024-08-22 16:11:06 -06:00
fusionate 9eaef8a242 Email Template [en-us,fax]: Fix subject. 2024-08-22 15:56:46 -06:00
FusionPBX a5f153d419 Remove image meta data
- Reading the image and resaving it the image metadata is removed.
- This meta data is removed to protect privacy
2024-08-22 15:12:03 -06:00
frytimo 2cbb4dbc31 remove instances where a pointer is used in a foreach loop for value (#7108) 2024-08-22 12:41:10 -06:00
fusionate 0583c5b429 Fax Server - Advanced: Make Back button return to Edit page. 2024-08-22 11:26:23 -06:00
FusionPBX 7cd482889a Remove the ampersand from &$row
This broke the conference center list on PHP 7.4
2024-08-22 10:23:44 -06:00
FusionPBX b0aab10872 Simplify the dashboard path 2024-08-21 16:58:44 -06:00
Anthony 0563292557 Added translations to fifo/app_languages.php (#7105) 2024-08-21 12:53:27 -06:00
FusionPBX 8cfad20fd0 Update app_config.php 2024-08-20 17:44:08 -06:00
FusionPBX c1863a26e4 Update index.php 2024-08-20 17:42:46 -06:00
FusionPBX 8419ca346d Create parent.php 2024-08-20 17:41:22 -06:00
FusionPBX c71b1180ac Update app_languages.php 2024-08-20 17:32:31 -06:00
FusionPBX d1b1e3ac39 Update app_languages.php 2024-08-20 17:29:44 -06:00
fusionate daa88790de Access Controls - Edit: Add Node IP addresses (via dig) by domain name in CIDR field. 2024-08-20 16:55:26 -06:00
Anthony 831f720638 Added translations to app_languages.php files (#7104)
* Added translations to fax_queue/app_languages.php

* Added translations to recordings/app_languages.php

* Added translations to emergency/app_languages.php
2024-08-20 08:51:20 -06:00
FusionPBX 8cc646aece Add login option for domain name for text input or select
Restoring a feature we had in previous versions.
Not a commonly used feature
2024-08-19 18:57:05 -06:00
frytimo 027a78243a Fix bug where a global profile doesn't show up in the device list (#7103)
* Fix bug where a global profile doesn't show up in the device list
2024-08-19 09:50:08 -06:00
wouam31200 e502f2d9d1 Add yealink auto provision settings (#7091)
* Update {$mac}.cfg
2024-08-19 09:48:36 -06:00
FusionPBX a5a7a8530a Update voicemail.php
Don't run the query if there are no assigned voicemails
2024-08-16 15:10:05 -06:00
FusionPBX 83efb46e8e Update app_defaults.php 2024-08-16 14:58:12 -06:00
FusionPBX 0fef717961 Update the dashboard_label_enabled defaults 2024-08-16 10:11:24 -06:00
frytimoandTim Fry d7035fecaa exit for loop when matching token for slight performance increase (#7092)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-08-15 14:10:08 -06:00
Alex e57053a3f3 Rename dashboard heading default settings (#7098)
* Update app_config.php

* Update css.php

* Update dashboard_edit.php

* Update dashboard_edit.php

* Update app_config.php
2024-08-15 14:09:24 -06:00
Anthony 02527b2342 Added translations to dashboard/app_languages.php (#7100) 2024-08-15 14:08:57 -06:00
FusionPBX b7b3073d58 Device lines for the current domain 2024-08-14 22:34:39 -06:00
FusionPBX 193a03291c Update content.php
- Use vertical align for short text and align top for larger amounts of text.
- Adjust values for a row spand of 1, 2, or 3 for height and max-height
2024-08-14 19:14:17 -06:00
FusionPBX f38a51d380 Update app_config.php 2024-08-14 17:48:22 -06:00
Alex 43d102b51c Added label enabled dashboard setting (#7096)
* Added label enabled dashboard setting
2024-08-14 17:44:11 -06:00
FusionPBX 62d2e3e9a6 Update 010_user_exists.xml
- Add enabled true
- Add limit_max enabled false
2024-08-14 14:57:05 -06:00
FusionPBX 6600bbdfc6 Update the indentation 2024-08-14 13:03:03 -06:00
frytimo 301fb2b974 remove all $_SESSION references and use single database object (#7095)
Updates:
- use config object to find and load config file
- use single database object with config passed in constructor
- use settings object with database passed in constructor
- parse command line options with for loop so order no longer matters
- store all passed options in the super global $_REQUEST array for easy reference and debugging
- add debug and debug_level options for command line
- allow dumping the command line arguments when debug_level is 3 or higher
- add config option in command line to set location of config file
- add a shutdown function to allow for the exit command to be used but still output to either console or file
- add extra checks for options that are needed during runtime
- remove old PHP version 4 code
- add is_file check when checking for a valid .tiff file because file_exists returns true if it's a directory or file
2024-08-14 12:59:53 -06:00
FusionPBX 257fa78fc6 sip_transport is stored in the datbase in lower case 2024-08-14 01:51:42 -06:00
Antonio Fernandez b3f9176538 remove footer bottom margin (#7093) 2024-08-12 18:31:06 -06:00
fusionate 5416a4dd69 Minor adjustment to comments in previous commit. 2024-08-12 16:33:52 -06:00
fusionate 0e3a861cf5 Dashboard - Edit, Menu Item - Edit: Integrate icon search. 2024-08-12 16:25:21 -06:00
fusionate 37af618998 Extension - List: Show registration status icon (when permitted). 2024-08-12 12:15:40 -06:00
fusionate 4b23913555 Update Font Awesome to v6.6.x, adjust some icon references. 2024-08-09 18:14:52 -06:00
frytimo 10bd1b9f9f add multiple line export feature (#7090)
* move permissions to top of page and use single database object

* use a domain array instead of session

* use a domain array instead of session

* add multiple line export feature
Exporting devices with multiple lines did not show headers for extra columns if the first device listed only had a single line and the other devices had multiple lines. This adds a feature to export multiple lines for devices using the "duplicate column feature" so that the import feature can detect and import all lines for the device.

* Update device_download.php
2024-08-09 17:57:53 -06:00
FusionPBX 64b565d974 This line overwrites the $uuid
We only want to get the uuid one time. This resolves that issue.
2024-08-09 10:52:21 -06:00
Mihir Gajjar cc7197322c Updated Snom D735 Template (#7087)
Snom D735 has a known issue where the lights on the phone won't illuminate when in use. It still functions correctly but without any lights. I talked with Snom support and they provided me with the string that needs to be changed in the template.

This issue started from Snom firmware version 10.1.127.10

Release Notes - https://service.snom.com/display/wiki/10.1.127.10+Release
2024-08-09 10:31:23 -06:00
FusionPBX 78d24e16dd If the uuid variable is empty try call_uuid
Found a case where the variables -> uuid doesn't exist found call_uuid as an alternative.
2024-08-09 10:06:17 -06:00
Alex a5a579cadc Fix spacing when you click on the expand/collapse all button (#7089) 2024-08-08 16:24:13 -06:00
FusionPBX 0044f0b69e Update permissions handling for performance
- For pages using large number of permission like these
- Creating a permission array that is populated with permission_exists
- Then using the permission array is more efficient
2024-08-08 16:17:28 -06:00
FusionPBX 0829062cc7 Remove the http_domain_filter
The reason its removed from the class is http_domain_filter was moved to provision/index.php
2024-08-07 15:18:02 -06:00
frytimo 56ca4ee695 Remove files not used in project (#7086) 2024-08-07 14:23:30 -06:00
frytimo be68bfb915 honor the domain_filter setting in default settings (#7085)
It was found that the domain_filter was not working when provisioning devices. This can lead to conflicts if a device address is in multiple domains or a valid device address is sent for another domain. This enforces the check so that if http_domain_filter is enabled and the domain name does not match the device specified, it will reject the request.
2024-08-07 14:09:26 -06:00
FusionPBX ba3ab5a8c9 Use parent_name as its more intuitive
Also replace $this->name with $this->app_name
2024-08-06 17:07:16 -06:00
7630056bb8 Remove the unset($database) statements (#7084)
* Remove the unset($database) statements
The database object is a global variable that contains a database object reference and should not be unset.

* Update event_guard.php

* Update event_guard.php

* Update event_guard.php

---------

Co-authored-by: Tim Fry <tim@fusionpbx.com>
Co-authored-by: FusionPBX <markjcrane@gmail.com>
2024-08-06 13:19:45 -06:00
FusionPBX c960575796 Update database.php 2024-08-06 11:28:32 -06:00
FusionPBX 46bbb31391 Update database.php
- preset empty values for variables and arrays
- use $table_name instead of $this->name
2024-08-06 02:52:55 -06:00
FusionPBX 1c22b49d5a Pass the database object to the settings object 2024-08-06 02:40:50 -06:00
FusionPBX 1252649a0c Replace $db with $database 2024-08-05 19:52:45 -06:00
markjcrane 22ba339505 Allow one line feed at the end of the file 2024-08-05 18:27:59 -06:00
FusionPBX b05c0534b4 Send the database object into the function 2024-08-05 16:56:51 -06:00
FusionPBX a69b4d91f1 Update database handling 2024-08-05 16:19:34 -06:00
FusionPBX dbe37f275b Update app_defaults.php 2024-08-05 15:55:08 -06:00
FusionPBX 032a24cb28 Update domains.php 2024-08-05 15:52:51 -06:00
FusionPBX 163403acc7 Re-use the database object 2024-08-05 15:07:13 -06:00
FusionPBX cd1cc70044 Remove redundant database objects
This reduces database connections and improves performance.
2024-08-05 14:22:17 -06:00
FusionPBX 00c803f53e Use the database more efficiently 2024-08-05 12:16:36 -06:00
FusionPBX e24edd47f0 Use database::new() 2024-08-05 09:58:14 -06:00
FusionPBX a84c69a1dc Use the database object efficiently 2024-08-05 09:53:11 -06:00
FusionPBX 096fd4f898 Remove redundant new database objects 2024-08-05 09:31:20 -06:00
FusionPBX 30735f6587 Update menu_item_list.php 2024-08-05 09:28:19 -06:00
FusionPBX 2c4adc6d21 Add parent dashboard parent
Added for future use. Currently does nothing.
2024-08-04 10:33:19 -06:00
FusionPBX fa68129eaf Update template.php 2024-08-03 22:41:26 -06:00
FusionPBX 63ec63f32b Add background_video_enabled (#7083)
Added this to allow disabling video so that global default and individual domains can use different settings.
2024-08-03 22:35:11 -06:00
FusionPBX eb93adba0b Add title-follow_me 2024-08-02 15:18:11 -06:00
FusionPBX c3a6e22f38 Change title-call-block to title-call_block 2024-08-02 15:14:57 -06:00
FusionPBX 3e9aaf7bfe Dashboard name translation 2024-08-02 14:06:35 -06:00
FusionPBX 14f2d9df85 Add title logout and account settings 2024-08-02 13:58:27 -06:00
FusionPBX b7467e7e11 Update conference center dashboard url 2024-08-02 13:13:56 -06:00
FusionPBX cdcc0ee73e Add user logout icon 2024-08-02 13:11:04 -06:00
FusionPBX e9cd4dd1ec Add fax group to the fax dashboard 2024-08-02 12:51:13 -06:00
FusionPBX 90933eaaf7 Fix the ring group dashboard permissions 2024-08-02 12:49:21 -06:00
FusionPBX 11def15cdc Fix dashboard_group_uuid conflict 2024-08-02 12:38:33 -06:00
FusionPBX aeeb9e991e Add account settings icon 2024-08-02 12:31:43 -06:00
FusionPBX 8fd37c6c3c Delete needs to include dashboard_groups 2024-08-02 12:19:08 -06:00
FusionPBX 720be4a68b By default FAX permissions remove user
- Reason for change is not everyone uses FAX
- There is a fax group adding users to that group who need FAX maybe a better option.
- There is still the option of assign the fax permissions to the user and then protect those permissions.
2024-08-02 12:06:08 -06:00
FusionPBX 8ffa56ac38 Fix database transaction edit 2024-08-02 11:54:14 -06:00
FusionPBX 0c157bd7ce Update header.php
Fix indentation and create a new database object only if it is not defined.
2024-08-02 11:35:05 -06:00
FusionPBX b93d3e8050 Fix intermittent issue with the Sub Menu 2024-08-02 11:22:14 -06:00
frytimo 2d16cba7fb update voicemail constructor to use domain and user uuids for settings (#7080)
If the settings object is not passed in the parameters the settings object that was created did not have the current domain uuid or user uuid set. This would cause default settings that were copied to the domain to be ignored. Ensuring the domain_uuid and user_uuid are initialized before the setting object and then passing them to the settings object constructor will make sure that the values would be returned when a request to the settings object is made.
2024-08-02 09:46:54 -06:00
Mendel 82129ff8ed Update {$mac}.cfg (#7081)
changed the sip server port to work with the t34w
2024-08-02 09:39:39 -06:00
FusionPBX e2ab9129b6 Add dashboard width and height
Used when opening a new browser window
2024-08-01 23:34:30 -06:00
FusionPBX b3f31af5a8 If data is global then domain_uuid set to null
This means transaction is global. If there is a domain_uuid use the domain ID from the data.
2024-08-01 18:02:15 -06:00
fusionate d86217247e Voicemail - send_email (script): Assume direct sox call (for now). 2024-08-01 12:12:39 -06:00
fusionate d79c7b1cb9 Voicemail: Integrate message forward intro playback in web interface, and prepend intro on emailed audio file. 2024-08-01 10:27:15 -06:00
FusionPBX a020979947 Add destination_number variable 2024-07-31 17:26:36 -06:00
FusionPBX ac07414b9d Update send.lua
Add domain_name and message variables
Add error prevention
Pass thru the domain_name, event_subclass and mesage
2024-07-31 17:19:57 -06:00
FusionPBX 3804efe4e1 Update voicemail.php 2024-07-31 13:41:08 -06:00
frytimo 3fc320ea39 method messages in object voicemail erases the property voicemail_uuid (#7079)
The method overwrites the object property initially set when the method is called. This causes any subsequent calls to be incorrect. Removing this keeps the initial objects property intact. The method voicemail_messages is only used internally from the messages method for getting message details in the voicemails. This has been set to a private method to reflect this type of use.

Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-31 13:19:58 -06:00
frytimo cb94f2c02b voicemail messages function is called twice. second call removes list (#7078)
When voicemail is called the first time, it correctly displays the list of voicemail messages. When it is called a second time the function returns an empty array and gives an empty display. This removes the second call to method 'messages' in 'voicemail' object.

authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-31 12:26:26 -06:00
FusionPBX 4b04d701ec Update dashboard permissions 2024-07-30 22:18:29 -06:00
FusionPBX 77dd833b55 Update some of the dashboard icons 2024-07-30 22:15:38 -06:00
FusionPBX fbec08e579 Update voicemail_messages.php 2024-07-30 20:34:04 -06:00
FusionPBX 8c7e2044fb Update voicemail.php 2024-07-30 20:32:47 -06:00
FusionPBX 24a398f98f Update app_menu.php
Using a redirect now we can use one menu to handle regular users and admins.
2024-07-30 18:52:07 -06:00
FusionPBX 90852f54db Update voicemails.php 2024-07-30 18:50:55 -06:00
Antonio Fernandez 440ffb69db set fax failed when missing (#7077) 2024-07-30 16:31:11 -06:00
FusionPBX 52e5da9a23 Update config.php 2024-07-30 14:41:02 -06:00
Alex a793eb9573 Update index.php (#7076) 2024-07-30 11:41:06 -06:00
FusionPBX 6285413dd9 Fix a bug to delete email after send or forward 2024-07-30 11:34:47 -06:00
FusionPBX 0c32c43e9a update the dashboard 2024-07-29 22:33:44 -06:00
FusionPBX 7101c3f44a Fix the destination url 2024-07-29 22:29:51 -06:00
FusionPBX 8539bfb2cc Update config.php 2024-07-29 22:14:44 -06:00
FusionPBX 89ad2172f3 Update config.php 2024-07-29 22:11:39 -06:00
FusionPBX ffbd37f936 Update config.php 2024-07-29 21:31:30 -06:00
FusionPBX 06759afe42 Update config.php 2024-07-29 21:29:52 -06:00
Alex 33e491a75d Fix dashboard widget hover transition (#7075)
* Fix dashboard widget hover transition

The background colors were being set twice

* Update dashboard_edit.php

* Update index.php
2024-07-29 21:25:05 -06:00
FusionPBX 2d00362105 Add dashboard call forward 2024-07-29 16:38:03 -06:00
FusionPBX 82d1f4eb88 Add more dashboard widgets 2024-07-29 16:32:49 -06:00
FusionPBX b1f64e88b5 Use the default setting text color 2024-07-29 12:33:28 -06:00
FusionPBX dc14285cfd Default setting used for the background color 2024-07-29 12:27:06 -06:00
FusionPBX a4f86db557 Use the right dashboard_uuid 2024-07-29 12:18:54 -06:00
FusionPBX ecfbeba6ea Update config.php 2024-07-29 10:58:04 -06:00
FusionPBX 2da57eea9c Update the user dashboard 2024-07-29 10:56:33 -06:00
Antonio Fernandez f47bdcdc99 generate uuid changes (#7070)
* generate uuid changes
2024-07-29 10:45:22 -06:00
FusionPBX e481a58a86 More efficient use of the database 2024-07-29 09:00:59 -06:00
FusionPBX 7abcda7996 Update the dashboard order 2024-07-29 08:49:01 -06:00
FusionPBX 7566dd1f4b Update the dashboard settings 2024-07-28 10:42:16 -06:00
FusionPBX 22c57f9340 Fill in dashboard details 2024-07-28 10:36:36 -06:00
FusionPBX d1105f70ba Update config.php 2024-07-28 10:18:38 -06:00
FusionPBX 436a5831ac Update icon for the IVR Menu 2024-07-28 02:48:58 -06:00
FusionPBX 5dd8758823 Update config.php 2024-07-28 02:44:16 -06:00
FusionPBX 8c054181f0 Add recordings dashboard 2024-07-28 02:41:22 -06:00
FusionPBX ef5e39bf5e Update config.php 2024-07-28 02:33:55 -06:00
FusionPBX 1ad86744b0 Update config.php 2024-07-28 02:28:52 -06:00
FusionPBX 7d15164122 Add call detail records dashboard 2024-07-28 02:24:55 -06:00
FusionPBX 08d9f55038 Update the time conditions icon 2024-07-28 02:19:18 -06:00
FusionPBX 4d6852dc99 Add time conditions dashboard 2024-07-28 02:18:23 -06:00
FusionPBX 57f16636df Add users dashboard 2024-07-28 02:15:17 -06:00
FusionPBX a56e77ce78 Update the comment 2024-07-28 02:11:38 -06:00
FusionPBX fd9e998818 Add extensions dashboard 2024-07-28 02:10:02 -06:00
FusionPBX c302adef2e Add Destinations dashboard 2024-07-28 02:06:18 -06:00
FusionPBX 6c932fa3d9 Update the body_color and body_shadow_color 2024-07-27 22:13:23 -06:00
FusionPBX abfb0e41b9 Add conferences dashboard 2024-07-27 19:54:42 -06:00
FusionPBX 546fb7edb2 Update config.php 2024-07-27 19:44:59 -06:00
FusionPBX 4e2cde3432 Add the voicemails icon 2024-07-27 19:40:02 -06:00
FusionPBX 0a8bc73209 Add dashboard IVR Menus 2024-07-27 19:32:42 -06:00
FusionPBX abeb241a1b Add dashboard ring groups 2024-07-27 19:19:45 -06:00
FusionPBX 8db5c8e7eb Disable picture in picture for background video 2024-07-26 19:47:13 -06:00
FusionPBX f716ef5e87 Use one database object 2024-07-26 19:43:16 -06:00
FusionPBX a5d44ae44b Use the database more efficiently 2024-07-26 17:04:02 -06:00
FusionPBX e7e2f73004 Format the phone number for call recordings. 2024-07-26 16:32:49 -06:00
FusionPBX cdc8a8842c Call Block Update
- unify the process for preparing the call_block_number
- move the query for user_extensions outside and before the loop
- database used more efficiently
2024-07-26 14:33:50 -06:00
Antonio Fernandez 9ace83cad1 adding function to be used in app/messages (#7073) 2024-07-26 13:49:06 -06:00
frytimoandTim Fry 78f68d106f replace if_group with dialplan_edit permission (#7072)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-26 12:20:47 -06:00
FusionPBX 16c6d8d58b Fix call block for regular non admin users 2024-07-25 20:49:56 -06:00
FusionPBX fa16c8ad7c Update call_block.php
- Improve the database handling
- Get the country code from the destinations table
2024-07-25 13:24:40 -06:00
Alex fcfb22d4a0 Add adjust_form function back to dashboard path (#7069) 2024-07-25 12:27:43 -06:00
FusionPBX 1d7c239c37 Update app_languages.php 2024-07-25 03:52:42 -06:00
FusionPBX 390bc61cf6 Update the version to 5.3.2 2024-07-25 03:36:33 -06:00
FusionPBX 66e7f05558 Add field recording_voice to the recordings table 2024-07-25 03:24:44 -06:00
FusionPBX 50eb494fcc Update dashboard_edit.php
- Find the dashboard tools or widgets using a glob
- Use a select box to make it easier to configure
2024-07-24 19:57:59 -06:00
FusionPBX 2425dd4c45 update device_edit.php 2024-07-24 15:26:55 -06:00
FusionPBX 276bf0258f Video muted for Chrome to autoplay 2024-07-24 15:21:33 -06:00
frytimoandTim Fry bc5165572a Use ini_get to retrieve the session path instead of using session_path (#7067)
When using session_path, the session must be active and will automatically activate the session. This is a better method so that the session is never started.

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-24 11:28:34 -06:00
Antonio Fernandez 841cc6527e Groundwire added vendor (#7065)
* Added Groundwire vendor
2024-07-24 07:21:12 -06:00
fusionate 0e3fa58a1f Voicemail Message: Better handling of keep local after forward. 2024-07-24 00:00:35 -06:00
FusionPBX 1b2a47dd6c Add voicemail export 2024-07-23 22:59:58 -06:00
frytimo 46abe4897c use loose comparison instead of strict comparison (#7064)
Update comparison checks when testing the database status and
add a unified log message with a more detailed message from the
database when there is a failure

Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-23 19:58:13 -06:00
FusionPBX 64c6527ab8 Update device_keys.php 2024-07-23 15:58:45 -06:00
Antonio Fernandez 3285483665 changes to wallpaper settings for Avaya J-Series (#7063) 2024-07-23 15:17:26 -06:00
FusionPBX 06a6292ebb Allow removing an assigned user 2024-07-23 15:15:50 -06:00
FusionPBX f495b28356 Update field name from name to type 2024-07-23 14:29:28 -06:00
FusionPBX 48b2011091 Use mkdir when importing new voicemail boxes
In addition to making sure the voicemail directory exists for each voicemail box

Updated the settings class to use the settings object instead of the SESSION.
2024-07-23 13:39:30 -06:00
FusionPBX ac9497c232 Add toggle for when to create recording 2024-07-23 12:09:50 -06:00
jrmcclean 12a862217f Update require.php (#6860)
Added an option to check Windows ProgramData
2024-07-23 08:14:55 -06:00
jrmcclean ebd2251b99 Update install.php (#6861)
Added an options for Windows ProgramData folder
2024-07-23 08:14:05 -06:00
jrmcclean 9f20eaf429 Update index.php (#6862)
Added an option to check Windows ProgramData
2024-07-23 08:13:27 -06:00
jrmcclean 1d4f366b05 Update upgrade.php (#6863)
Added Paths for Windows as well new variable for $cache_location and $php_dir to accommodate windows values.
2024-07-23 08:12:44 -06:00
jrmcclean b20df9c33a Update config.php (#6865)
Added an option for Windows ProgramData
2024-07-23 08:11:58 -06:00
jrmcclean 96f6e87224 Update config.lua (#6864)
Added an option to check Windows ProgramData
2024-07-23 08:07:36 -06:00
Alex dac6e6a6e6 Update dashboard_edit.php (#7059)
* Update dashboard_edit.php
2024-07-23 07:46:45 -06:00
frytimo f80347504a enable foreground mode for services (#7061)
Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-23 07:40:49 -06:00
Anthony 2b3381f95c Added translations to resources/app_languages.php (#7062) 2024-07-23 07:38:33 -06:00
FusionPBX f40319ba91 Add dashboard content text align 2024-07-20 23:37:32 -06:00
FusionPBX d368f4376c Update default_settings.php 2024-07-20 22:05:56 -06:00
FusionPBX f959c3717c Update contacts.php
- Add trim
- Adjust indentation
2024-07-20 20:23:17 -06:00
FusionPBX bd38191857 Use a permission array 2024-07-19 17:51:00 -06:00
frytimo 8f71f5cf4b reduce permission_exists calls from 7,000+ to just 7 (#7056)
Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-19 17:39:19 -06:00
FusionPBX a49ca88ce2 Add dashboard_width and dashboard_height 2024-07-19 17:36:37 -06:00
Anthony b451ad44fe Added translations to resources/app_languages.php (#7058) 2024-07-19 17:29:22 -06:00
FusionPBX f45b6f4033 Add dashboard window size
- Add window width and height
2024-07-19 17:03:21 -06:00
Antonio Fernandez 5cc9f93be8 Find Snom MAC via UA (#7057)
* Find Snom MAC via UA
2024-07-19 13:38:03 -06:00
FusionPBX 2d933a60ee Update extension_edit.php
Empty option enables ability to see if the value is empty.
2024-07-18 23:43:36 -06:00
FusionPBX cb7fd1e4ac Use the object format_address method 2024-07-18 23:35:58 -06:00
FusionPBX 8beecfbb89 - Update call block permissions
The call_block_all permission was pulling double duty. 
- Changed the code to use call_block_all only for SHOW ALL to call block across all domains.
- Permission call_block_extension will be used instead for the purpose of showing the extension list. 
- If someone doesn't call_block_permission then their assigned extensions will be use with each call block item they add.
2024-07-18 17:13:22 -06:00
Antonio Fernandez dcf1f9d17c Update database.php (#7053)
Fix for table_exists method on mysql
2024-07-18 12:10:05 -06:00
Antonio Fernandez fcc2eed4fa Update provision.php (#7054)
unset the $sql var where needed
2024-07-18 12:07:10 -06:00
frytimo cd9c6e95cb Use the __DIR__ to include require.php (#7055)
Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-18 12:06:27 -06:00
fusionate c78d300145 Voicemail - Messages: New permission to control visibility of Transcribe feature. 2024-07-16 11:12:27 -06:00
FusionPBX d7e8893325 Update voicemail_messages.php
Initializing the new object for messages prevents a problem where running the message method twice on the same object returns no results.

Running once to get the count and then using that result with paging to get the voicemail messages.
2024-07-16 11:01:40 -06:00
FusionPBX be6afaf948 Update voicemail.php
- Allowing passing the database object into the constructor
- Add the database object in the constructor
- replace $_SESSION['domain_uuid'] and $_SESSION['user_uuid'] with $this->domain_uuid and $this->user_uuid
2024-07-16 10:05:06 -06:00
FusionPBX 215b4d0df7 Prevent empty caller id from blocking calls
Improved the following
- Prevent empty caller id name and number from blocking calls
- Fixed the call block count so it would increment each time it has blocked a call
2024-07-15 23:06:23 -06:00
FusionPBX 79a8d6c8ca Update fax_files.php 2024-07-15 18:18:34 -06:00
FusionPBX d1c2dfa10a Update fax file download 2024-07-15 17:24:10 -06:00
Antonio Fernandez 1aa9a93bb5 fix qrcode generation on BSD (#7052) 2024-07-14 09:51:44 -06:00
Antonio Fernandez 541db7b5c9 Fix for BSDs core classes (#7051) 2024-07-14 09:51:20 -06:00
FusionPBX 42a3969836 Update provision.php
Used to replace the domain name in the yealink_provision_url
2024-07-12 18:04:14 -06:00
FusionPBX b59b7ba98a Update page.lua
If announce delay is true then add an option for a preset recording filename and length
2024-07-12 11:32:12 -06:00
FusionPBX 3bed9c8a5e Update contact phone number search
Update the phone search to use the country code and phone number or the phone number alone.
2024-07-12 02:48:44 -06:00
FusionPBX fa672d21af Add grandstream_transfer_mode_via_vpk 2024-07-11 17:37:55 -06:00
FusionPBX ef03e60a0b Add setting yealink_ps_enabled 2024-07-11 14:49:26 -06:00
Antonio Fernandez cd79bf0a2e added a better template setting for directory (#7041) 2024-07-11 14:25:16 -06:00
Anthony fd22d407b8 Added translations to app files (#7050)
* Added missing translations to core/xml_cdr

* Added missings translations to app/time_conditions

* Added missing transaltions to app/sip_profiles

* Added missing translations to app/registrations
2024-07-10 17:35:13 -06:00
Antonio Fernandez a295de67c1 added avaya J139 plus other changes to avaya (#7049)
* added avaya J139 plus other changes to avaya

* fixed a few avaya settings

* added wallpaper descriptions
2024-07-10 17:34:26 -06:00
fusionate ea7fb60533 Voicemail Messages: Add Resend feature, fix manual Transcription if voicemail stored as base64. 2024-07-10 16:28:41 -06:00
frytimoandTim Fry 5af4610a9c Ensure the 'transcribe_' is prepended to the class name (#7048)
Class name requires the transcribe_ prepended before PHP checks to see
if the class actually exists as the engine must have 'transcribe_' in
front of the classes.

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-10 14:02:23 -06:00
frytimoandTim Fry 8cfdb40acc Database transactions maintenance (#7047)
* add database_maintenance function to database_transactions

* update database_maintenance function in database_transactions
New changes in the maintenance application required changes to any
existing functions already created

---------

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-09 12:52:05 -06:00
frytimoandTim Fry d1594da57e implement changes in to the fax queue class (#7044)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-09 12:51:36 -06:00
frytimoandTim Fry 72a66f555a specify the cdr category for xml_cdr (#7046)
* update xml_cdr with the latest changes to the maintenance application
Update the public static function database_maintenance in xml_cdr
class to use the newest changes in the maintenance class. Constants are
now defined in the class for the table names and subcategories.

* update app_config file with necessary default setting changes

* remove constants

* use empty instead of null check

---------

Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-09 12:51:11 -06:00
frytimoandTim Fry abf5ffb9f0 implement changes in to the event_guard class (#7045)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-09 12:50:34 -06:00
frytimo d7f05621c7 Implement changes in to the session class (#7042) 2024-07-09 12:50:01 -06:00
frytimo d68c1a08d8 Call recordings maintenance changes (#7039)
* add filesystem maintenance method to the call_recordings class

* Add filesystem maintenance default setting to the app_config
Set filesystem_retention_days default setting to 90 days in the 
app_config.php file to allow the maintenance service to delete older
files.
2024-07-09 09:19:50 -06:00
FusionPBX 555d52cbb3 Add FAX PDF View
Added an iframe to  display the PDF
2024-07-08 22:40:42 -06:00
Antonio Fernandez da7a748a8a added notes about avaya firmware (#7040) 2024-07-08 14:43:41 -06:00
FusionPBX 41de2177e1 Update provision.php
Fix bug to pass the parameters including settings and database.
2024-07-08 13:37:58 -06:00
frytimo 50f1601a4d update voicemail with the latest changes to the maintenance application (#7035)
* update voicemail with the latest changes to the maintenance application
Update the public static function filesystem_maintenance in voicemail
class to use the newest changes in the maintenance class. The
maintenance class now has a constant defined for the subcategory used
within the project.

* update app_config file with necessary default setting changes

---------

Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-06 20:45:25 -06:00
Antonio Fernandez adbb9f9fd8 fix for Avaya buttons (#7038) 2024-07-05 20:01:30 -06:00
FusionPBX e08943ebc2 Wrap isset grandstream_wifi_enabled
Add a condition around the wifi settings. This allows manually setting up the wifi settings on the phone without the device provisioning. If someone wants to use the provisioning config for wifi then set grandstream_wifi_enabled value to true.
2024-07-05 18:02:59 -06:00
frytimo 0ea012c494 Update database_maintenance (#7037) 2024-07-05 17:37:50 -06:00
Antonio Fernandez 9ec26f0244 Enhanced Avaya J-Series support (#7036)
* Updates to Avaya J-Series support

* small J189 fixes
2024-07-05 17:07:45 -06:00
FusionPBX 56aea7c66d Domain settings array override default settings
Domain setting array types override the default settings set as type
2024-07-04 18:05:37 -06:00
FusionPBX 0ff2503240 Update index.php
Minor changes. Use the provision array to get the cidr details.
2024-07-04 18:01:50 -06:00
FusionPBX 1d7bcbe0ee Device disabled send message to syslog 2024-07-04 17:58:12 -06:00
frytimo 766aeeefae email_send_remove_extra_database_objects (#7034)
Use a single instance of the object instead
2024-07-04 11:53:44 -06:00
frytimo 2b87349e7d remove the manual inclusion of classes to let autoloader handle it (#7033)
By including the class manually with the include statement, the class
has a possibility of loading twice. This will cause a fatal error if
classes are already loaded.
2024-07-04 09:12:34 -06:00
FusionPBX c0e1b1a6b5 Changed the order of missed_call conditions
Move billsec condition near the end but before voicemail.

If a call center call was missed but answered by an extension with the exit action then the call wasn't technically missed.
2024-07-03 14:35:13 -06:00
frytimo 9beef70b94 fix missing class exists check for transcribe engine (#7032)
Add a class_exists check to ensure transcribe engine exists before
attempting the use of the class.
2024-07-02 09:30:26 -06:00
Alex 482768c1aa Added maintenance and running labels (#7031) 2024-07-01 11:22:58 -06:00
FusionPBX 54e7b85142 Update functions.php 2024-06-28 13:10:15 -06:00
FusionPBX 1f077ebc2b Bug FIX - Deny device_address 000000000000
Polycom will make a request with a device address of 000000000000 as well as another request with the real device mac address.

The issue was 000000000000 was on another tenant and it delivered contacts from the other tenant.
2024-06-28 12:18:29 -06:00
Antonio Fernandez b51b97f495 Fixed comment (#7028) 2024-06-28 09:56:01 -06:00
Antonio Fernandez 9081f59ca9 bug fix in device_by.php (#7027) 2024-06-28 09:55:43 -06:00
Antonio Fernandez d1dc1f59ca bug fix for transcription (#7030) 2024-06-28 09:53:50 -06:00
frytimo 7d493c3287 smtp_from_name was accidentally set to smtp_from (#7029)
This uses the settings default value to set smtp_from_name to be set to
smtp_from if it does not have it's own value. The isset check on line
248 is no longer needed because smtp_from_name will always have a value
2024-06-28 08:47:17 -06:00
frytimoandTim Fry 5ea753295d add maintenance function to the xml_cdr (#7025)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-27 11:27:09 -06:00
frytimoandTim Fry a863faaae2 fix the user_uuid missing from transaction tables (#7026)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-27 11:26:16 -06:00
FusionPBX 23093f6a14 Add new permissions
- xml_cdr_json_view
- xml_cdr_json_delete
- xml_cdr_flow_view
- xml_cdr_flow_delete
- xml_cdr_log_view
- xml_cdr_log_delete
2024-06-27 10:33:38 -06:00
FusionPBX 6be515de9e Add a missing $ 2024-06-26 21:50:49 -06:00
FusionPBX 315a3d322f Provision class use settings and database object
Credit for these changes go to frytimo changes curated by Mark
2024-06-26 21:23:24 -06:00
FusionPBX 71334c9655 Removed session server temp directory
This session variables is no longer used
2024-06-26 07:48:41 -06:00
FusionPBX efce99375b Template engine use sys_get_temp_dir
Used to get the operating system temp directory.
2024-06-26 07:28:37 -06:00
FusionPBX 7d2941124e Update provision.php
Use sys_get_temp_dir() to get the temp directory
2024-06-25 20:13:46 -06:00
FusionPBX 2bb2bb79eb Update install.php
Use sys_get_temp_dir() to get the temp directory
2024-06-25 20:12:57 -06:00
FusionPBX eb4104bd9a Update footer.php
Use sys_get_temp_dir() to get the temp directory
2024-06-25 19:53:47 -06:00
frytimo 49b2505f0c Voicemail maintenance (#7023)
* add database_maintenance

* add filesystem_maintenance

* use modified time instead of create time

* Update voicemail.php
2024-06-25 13:07:42 -06:00
FusionPBX 4369ab6380 Update email_send.php
Email transcription has a value no need to transcribe again so run the transcription when the value is empty.
2024-06-24 18:12:49 -06:00
FusionPBX b6257bbda2 Update email_send.php 2024-06-24 17:34:19 -06:00
Anthony 47a17af7cc Added Turkish translations to core/groups/app_languages.php (#7020) 2024-06-24 16:02:28 -06:00
frytimoandTim Fry 820a7231dc format class for comments to be at the same tab stop (#7018)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-24 08:26:34 -06:00
FusionPBX 3215f50826 Update domains.php 2024-06-22 19:31:38 -06:00
frytimo fcd64fcce6 Remove session from provisioning (#7014)
* use single database object, use settings class

* add common domain functions

* use settings class
2024-06-22 19:28:04 -06:00
fusionate 81af0fefd1 Voicemail - Edit: Add option to Keep Local After Forward (or not). 2024-06-21 17:24:06 -06:00
Alex 1ef5f1dab0 Dashboard - Icon widget hover settings (#7016)
* Update system_counts.php

* Update system_cpu_status.php

* Update system_status.php

* Update voicemails.php

* Update missed_calls.php

* Update recent_calls.php

* Update index.php

* Update app_defaults.php

* Update app_defaults.php

* Update index.php

* Update index.php

* Update dashboard_edit.php

* Update index.php

* Update app_defaults.php

* Update css.php

* Update icon.php

* Update dashboard_edit.php

* Update app_config.php

* Update app_defaults.php

* Update css.php

* Update app_languages.php

* Update index.php

* Update dashboard_edit.php
2024-06-21 16:44:31 -06:00
FusionPBX 63e2316885 voicemail transcription to show or not show 2024-06-21 16:27:58 -06:00
fusionate 2403fcc20e Voicemail - Edit: Show Transcription disabled if value empty. 2024-06-21 16:16:05 -06:00
frytimoandTim Fry 4eb9892256 update templates with checking for codec to be set to 'true' (#7015)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-21 14:34:52 -06:00
fusionate f97bfef62a Outbound Route - Add: Append dialplan expression abbreviation to call_direction-outbound dialplan name if Description empty. 2024-06-21 12:25:19 -06:00
fusionate a5e991a1f2 Outbound Route - Add: Disable dialplan if Enabled is false. 2024-06-21 10:17:54 -06:00
Anthony be678d2694 Added Turkish translations to core app_languages.php (#7012)
* Added Turkish translations to core databases

* Added Turkish trasnaltions to core default_settings

* Added Turkish translations to core domain_settings

* Added Turkish translations to core domains
2024-06-20 11:27:45 -06:00
FusionPBX 64c33b21c1 Call center queue context
When the user doesn't have call center queue context permission get the context from the database.
2024-06-19 16:53:14 -06:00
Antonio Fernandez 25ba853618 clarified one of the transcription default setting (#7003)
* clarified one of the transcription default setting

* shortened the description
2024-06-18 15:59:28 -06:00
Antonio Fernandez 17c385a15c added some blocked status msgs (#7011) 2024-06-18 15:53:48 -06:00
FusionPBX a5e31a82dd Update template.php 2024-06-18 14:10:37 -06:00
Antonio Fernandez 1b9c746f00 added snom_ui_theme variable to snom templates (#7010)
* added snom_ui_theme variable to snom templates

* made the Dark theme default just like Snom docs
2024-06-18 09:33:06 -06:00
FusionPBX 02db089d8f New setting background_video 2024-06-18 09:32:19 -06:00
fusionate 7499606fcb Dashboard - Icon & Content Widgets: Better integration of color settings. 2024-06-17 15:27:59 -06:00
fusionate 1d35bf9a81 Dashboard - App Defaults: Support additional defined fields from dashboard config.php file. 2024-06-17 15:24:23 -06:00
fusionate eb2870f5aa Dashboard - Edit: Minor adjustments. 2024-06-17 15:23:38 -06:00
FusionPBX 577e929a4c Create send.lua 2024-06-17 15:01:02 -06:00
fusionate 0f48b98ced Ringbacks [Class]: Fix PHP 8.x warning. 2024-06-14 16:28:51 -06:00
fusionate 5455fd96a8 FIFO Queues - Delete: Remove dialplan record as well. 2024-06-14 16:28:15 -06:00
FusionPBX e302122e90 Add new permission user_password 2024-06-14 14:43:11 -06:00
FusionPBX b54ad9cd08 Create fifo member.lua 2024-06-13 22:42:37 -06:00
FusionPBX b38532a9b3 Update fifo_edit.php 2024-06-13 22:36:46 -06:00
FusionPBX 8dec7c5f41 Remove the dashboard description. 2024-06-13 17:22:39 -06:00
Anthony e2c8f67f7b Added translations to app/fifo/app_languages.php (#7009) 2024-06-13 16:58:16 -06:00
Antonio FernandezandTim Fry ac876402b3 add function to return the config object used to create the database object (#6998) (#7006)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-13 14:53:30 -06:00
FusionPBX dd4cde850d Clear the cache 2024-06-13 14:17:50 -06:00
FusionPBX 9a55466677 Update app_languages.php 2024-06-13 14:08:29 -06:00
Anthony 86e588a589 Added/Adjusted translations in core app_languages.php files (#7008)
* Added translations to core/dashboard

* Added Turkish translations to core/menu

* Added Turkish translations to core/install
2024-06-13 13:47:30 -06:00
FusionPBX 6d968e8e3c Update app_config.php 2024-06-13 12:18:58 -06:00
FusionPBX f11c6669ef Update app_languages.php 2024-06-13 12:08:22 -06:00
FusionPBX 9d7f95a7e6 Update FIFO to version 2.0 2024-06-13 11:46:34 -06:00
fusionate 30c8fe9a51 Dashboard - Widgets: Add Content widget, enhance Icon widget. 2024-06-13 10:48:24 -06:00
Alex 7640cd21c9 Dashboard - Add row span setting (#7007) 2024-06-12 16:49:34 -06:00
FusionPBX 1998df7c70 Add the required .xml to the file name 2024-06-12 13:01:36 -06:00
FusionPBX 0f01ac7311 Set the context to global 2024-06-12 12:52:04 -06:00
FusionPBX c40ddd5a4d Create 070_default_ringback 2024-06-11 18:26:37 -06:00
Antonio Fernandez f61ee41c91 remove unused variables (#7002) 2024-06-11 14:12:13 -06:00
FusionPBX 48140218f3 Only set ringback if a value is provided 2024-06-11 10:40:11 -06:00
FusionPBX 20cf6c8255 Remove default rinback
Ringback is not always us-ring. This is not a good default. It can also override the ringback from the inbound destinations and other places where ringback can be set.
2024-06-11 10:27:37 -06:00
frytimoandTim Fry 5fda9b2dda allow auto_loader to search in traits directories (#7005)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-11 10:17:02 -06:00
FusionPBX 9e2ab9b8c3 Add destination ringback 2024-06-11 10:16:40 -06:00
fusionate e692dc35c4 Dashboard - Icon: Mitigate PHP 8.x warning. 2024-06-10 13:03:02 -06:00
Anthony eaabcf95f1 Added/Adjusted translations in core app_languages.php files (#7004)
* Added/Adjusted translations in user_logs/app_languages.php

* Added/Adjusted translations in core/upgrade

* Added/Adjusted translations in core/notifications
2024-06-10 11:29:31 -06:00
frytimoandTim Fry f0a80426eb add function to return the config object used to create the database object (#6998)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-08 09:57:33 -06:00
Anthony b7ddbd533c Added/Adjusted translations in core app_languages.php files (#7001)
* Added/Adjusted translations in user_logs/app_languages.php

* Added/Adjusted translations in core/upgrade

* Added/Adjusted translations in core/notifications
2024-06-08 09:56:06 -06:00
fusionate a33975dc29 Voicemail - Messages: Implement paging. 2024-06-07 15:18:14 -06:00
fusionate cb2b1b4132 Voicemails - List: Minor code adjustments. 2024-06-07 15:12:29 -06:00
FusionPBX e553e619bf Extension column add nowrap 2024-06-06 14:27:09 -06:00
FusionPBX c9c4683d0e Update index.lua 2024-06-05 23:20:20 -06:00
FusionPBX 737da5bfee Allow matching prefix in call block 2024-06-05 18:13:32 -06:00
Antonio Fernandez cfc1cd4325 status message fix for emergency numbers (#7000) 2024-06-05 16:36:58 -06:00
Alex 5aa944e3e7 Dashboard - Fixed minor bug with details state (#6999) 2024-06-05 10:02:59 -06:00
Antonio Fernandez cca0c80780 Converted name to first/last name in snom (#6997) 2024-06-05 08:35:42 -06:00
FusionPBX c22d03e33f Update app_config.php 2024-06-05 08:34:34 -06:00
fusionate e61868a4ec Fax Server: Implement Read/Unread Toggle. 2024-06-05 06:34:07 -06:00
Antonio Fernandez fbe10bbe04 added emergency numbers default settings for Snom (#6996) 2024-06-04 11:26:13 -06:00
frytimo c176192c13 move dollar sign to inside the curly brace (#6991) 2024-06-03 13:32:19 -06:00
frytimo 968c05374f do not exit when unable to connect to freeswitch socket (#6992) 2024-06-03 13:31:32 -06:00
frytimo 058d9aba37 fix failing to save dialplan details xml in proper order (#6994) 2024-06-03 13:30:59 -06:00
Alex f6e6750efc Dashboard - Minor changes (#6993) 2024-06-03 11:40:05 -06:00
fusionate d48208456b Voicemail Greetings - Edit: Fix issue where no greetings present. 2024-05-31 15:21:23 -06:00
fusionate b678c6e9ce Recording - Edit: Fix waveform generation for newly created OpenAI generated audio files, misc adjustments. 2024-05-31 15:01:09 -06:00
fusionate 7d105c79e6 Voicemail Greetings: Integrate AI greeting generation, fix waveform image generation for OpenAI audio files. 2024-05-31 15:00:15 -06:00
frytimo 642c0acb79 introduce new service framework (#6990) 2024-05-31 12:40:46 -06:00
frytimo 30b38e7d86 Add methods to handle device and add documentation (#6989) 2024-05-31 11:19:03 -06:00
fusionate 684e0a1b6f Recording - Edit: Minor HTML adjustment. 2024-05-31 09:20:45 -06:00
fusionate 703675c2c7 Recording - Edit: Hide Delete button on Add. 2024-05-31 09:02:15 -06:00
fusionate 3dd8404daf Voicemails - List: Generate Greetings count. 2024-05-31 08:48:50 -06:00
fusionate 3d2f27ee0b Recordings - List: Restore Upload button after Upload cancelled. 2024-05-31 08:33:44 -06:00
FusionPBX 0f284c7a98 Minor version update 5.3.1 2024-05-30 21:29:13 -06:00
fusionate e14dc89488 Time Conditions - Edit: Adjust width of Setting order input width. 2024-05-30 18:57:17 -06:00
FusionPBX fb7d4e5cc3 Update new extension_range 2024-05-30 18:45:45 -06:00
chansizzle 4cdddba430 Add suggested extension ranges (#6871) 2024-05-30 17:58:05 -06:00
FusionPBX d17300c308 Create 082_default_hold_music.xml 2024-05-30 11:40:27 -06:00
FusionPBX a6002f9959 Update xml_cdr_log.php 2024-05-30 02:53:51 -06:00
FusionPBX f084004047 Update xml_cdr_log.php 2024-05-30 02:52:45 -06:00
FusionPBX a60db81896 Ring group handle number alias 2024-05-30 00:09:21 -06:00
FusionPBX 873f431f80 Operator Panel prevent warnings
- Prevent PHP Warnings
- Save vertical space by removing extra br tags
  - Important to fit as many extensions on the page as possible for mid-sized businesses.
2024-05-29 17:09:18 -06:00
FusionPBX 4f70217802 Operator panel group extensions default false 2024-05-29 17:05:04 -06:00
frytimo a4f352aa27 Add check for file fax_active.php to exist before showing link to page (#6966)
Task #8 - File not found: fax_active.php
2024-05-29 16:13:56 -06:00
Antonio Fernandez ef7877f7e7 Adding snom_answer_after_policy default setting (#6988) 2024-05-29 15:12:01 -06:00
FusionPBX 3ceea47824 Update content.php 2024-05-29 14:08:09 -06:00
Antonio Fernandez cf8087916b New feature: Caller id number startswith (#6987)
* Destination Condition for CID Starts With added

* Translations for CID Starts with added

* changed "startswith" to prefix in app_languages

* added prefix where it needs to be

* Update destination_edit.php
2024-05-29 11:32:51 -06:00
Antonio Fernandez 08a7bb3d8e Added some missed field for auto lowercase (#6986)
I missed a few fields that should have been added to my previous commit
2024-05-29 11:26:05 -06:00
Antonio Fernandez 0ae13e26c5 C520 directory changes to template (#6982)
* added directory to Snom C520

* uri change

* minor changes to the template

* added number_type in xml to fix directory
2024-05-29 11:25:10 -06:00
Antonio Fernandez 03c78e45bc Snom firmware fix (#6958)
* Fixed file names for Snom firmware D8xx

* fixed default firmware files for D7xx and D3xx
2024-05-29 11:24:30 -06:00
chansizzle 94341120c2 Update valet_park to include 59 in the park_lot variable (#6984)
included 59 in the park_lot variable so the BLF status will work.
2024-05-28 23:13:00 -06:00
FusionPBX 34460af51c Update index.php 2024-05-28 23:04:53 -06:00
Antonio Fernandez cabdda88b3 Fix importing extensions (#6985)
This commit will lower the case on all boolean values since if you enter the value as not all lower-case the value will be invalid.
2024-05-28 17:40:15 -06:00
FusionPBX 5ca870a045 Update fifo_member.lua 2024-05-28 14:37:53 -06:00
fusionate c27f287651 Voicemail - Messages: Option to manually submit audio to AI for transcription, if enabled. 2024-05-28 13:08:41 -06:00
fusionate e128bdd850 Dashboard - New Messages: Mitigate PHP 8.x+ warnings. 2024-05-28 08:08:17 -06:00
FusionPBX 1da698887b Deprecate old contact app defaults.
This was added to help with the upgrade for systems 8 years ago.  This is no longer needed.
2024-05-27 13:59:10 -06:00
frytimo a7f4dd0340 update grandstream template to use NTP provisioning variable (#6983) 2024-05-27 13:10:05 -06:00
FusionPBX a2aa5ea67f Add class parsedown.php 2024-05-25 13:23:38 -06:00
FusionPBX 0e3eae29ab Add a new Yealink T34W template 2024-05-24 13:03:22 -06:00
FusionPBX b07c34d262 Complete the T44W template 2024-05-24 12:44:16 -06:00
FusionPBX 05c0b4cc96 Add Yealink template for the T44W 2024-05-24 12:28:53 -06:00
FusionPBX 5672944a5d Add the extension name to CDR 2024-05-23 14:31:56 -06:00
FusionPBX c5547092d3 Update index.lua 2024-05-22 11:57:56 -06:00
FusionPBX a31452eb48 Update index.lua 2024-05-22 11:45:49 -06:00
FusionPBX ac20b8208c Update call control
Add ability to set the enabled context and the disabled context
2024-05-22 11:39:06 -06:00
FusionPBX c441844a46 Call Control
Used to enable or disable calling based on the call group.
2024-05-22 10:49:39 -06:00
Antonio Fernandez 4c78076227 Adding Snom C520 template (#6980)
* Adding Snom C520 template

* fix
2024-05-21 23:21:22 -06:00
frytimo 46b7c5536a Prevent deleting the email when fax sender is not authorized (#6981)
* Prevent deleting the email when fax sender is not authorized
2024-05-21 22:51:50 -06:00
fusionate e6860a54b9 CDR - Details: Add button to Transcribe via AI, if enabled. 2024-05-21 16:07:44 -06:00
fusionate 003b6d7aa8 CDR [Class]: Mitigate PHP 8.x warnings. 2024-05-21 15:33:15 -06:00
fusionate 353bef172d CDR - List: Make Delete button (if allowed) function like other pages. 2024-05-21 15:26:02 -06:00
fusionate 67b1f245b3 Resources - Languages: Add missing translations. 2024-05-21 15:16:01 -06:00
fusionate 1f8542b9cc Call Recordings: Option to manually submit audio to AI for transcription, if enabled. 2024-05-21 14:59:23 -06:00
fusionate 7312b9ab67 CDR: Create record_transcription field, drop deprecated recording_file, recording_name fields. 2024-05-21 13:29:48 -06:00
FusionPBX d2b90714c0 Add Greek language and alphabetical order
Also, change the language order. Put the languages in alphabetical order
2024-05-17 14:38:11 -06:00
FusionPBX 54c57bdb18 Update greek sounds to use voice serena 2024-05-17 14:32:05 -06:00
Anthony b751b01161 Added translations to description-ping_max under app/gateways/app_languages.php (#6979) 2024-05-17 10:44:41 -06:00
FusionPBX e95ea23ce9 Change concurrent_outbound_limit to limit_max 2024-05-16 09:38:31 -06:00
denisent 1b83d95935 Make extension concurrent outbound limit a default setting (#6968)
* Make extension concurrent outbound limit a default setting

* Make extension concurrent outbound limit a default setting
2024-05-16 09:34:43 -06:00
Alex b35b447344 Update Chartjs and Sortablejs (#6978)
* minor bug fix

* fix spacing of legend

* remove extra line break

* minor bug fix

* Update dashboard_edit.php

* Update chart.min.js

* Update sortable.min.js
2024-05-16 09:27:00 -06:00
FusionPBX 5286dbbb1b Add isset with variable last_app 2024-05-15 14:47:07 -06:00
FusionPBX a16ec80ce4 Update the caller ID when using intercept
When intercept is used then use the last_sent_callee_id_name and last_sent_callee_id_number for the caller ID information.
2024-05-15 14:24:52 -06:00
FusionPBX 17bc6ca382 Update app_languages.php 2024-05-15 10:42:10 -06:00
Antonio Fernandez fc76af2d88 Fixed description for gateway pi-min and ping-max (#6975) 2024-05-15 10:34:27 -06:00
Anthony fe7009e7c7 Added missing translations to core app_languages.php files. (#6977)
* Added missing translations to core/users/app_languages.php

* Added missing translations to core/user_settings/app_languages.php
2024-05-15 10:13:11 -06:00
FusionPBX 475696ecff Check for valid fax numbers
Validate the fax destination number
- Check outbound routes
- Check valid extension
- Set the status to failed for all other numbers
2024-05-14 12:49:13 -06:00
FusionPBX 1a10543851 Use an underscore for phrase agent_status 2024-05-14 12:11:22 -06:00
FusionPBX da1d5fca8c Update 380_hold_music.xml
- Use rtp_has_crypto
- Remove deprecated zrtp
2024-05-14 12:07:01 -06:00
FusionPBX 23fb7e6211 Add fifo agent_status phrase 2024-05-14 11:46:47 -06:00
FusionPBX 0b055bc31b Update fax_files.php
Make the code more efficient by using one database object.
2024-05-14 10:03:14 -06:00
FusionPBX 0a4e227706 Update extensions.php
Remove user_context from v_devices as its redundant when the domain_uuid is also used.
2024-05-13 14:32:13 -06:00
Alex 98d5e4fd67 Dashboard - Added chart cutout and text size default settings (#6976) 2024-05-13 14:20:33 -06:00
fusionate 2d3dca985d Upgrade - CLI (Manual & Menu): Mitigate PHP 8.x warnings, minor adjustments. 2024-05-13 14:19:34 -06:00
fusionate b369fad190 Upgrade - Menu & Permission Defaults: Mitigate PHP 8.x warnings. 2024-05-13 12:49:29 -06:00
fusionate 8ca960b127 Upgrade - Source: Mitigate PHP 8.x warning. 2024-05-13 12:22:01 -06:00
fusionate 5c73ea7bbb Destination Summary: Mitigate PHP 8.x warnings, fix search criteria on CSV export. 2024-05-13 12:17:14 -06:00
fusionate fc90314009 Destination Summary: Mitigate PHP 8.x warnings. 2024-05-13 11:46:51 -06:00
fusionate 0a419a7698 Voicemail - Edit: Mitigate PHP 8.x warnings. 2024-05-13 11:39:19 -06:00
fusionate e81220d997 Time Conditions - Edit: Mitigate PHP 8.x warnings. 2024-05-13 11:22:32 -06:00
Mihir Gajjar 69524a5162 Updated Snom D735 Template (#6867)
Snom D735 has a known issue where the lights on the phone won't illuminate when in use. It still functions correctly but without any lights. I talked with Snom support and they provided me with the string that needs to be changed in the template.

This issue started from Snom firmware version 10.1.127.10

Release Notes - https://service.snom.com/display/wiki/10.1.127.10+Release
2024-05-13 11:11:19 -06:00
fusionate 05cd649a73 Operator Panel: Mitigate PHP 8.x warnings. 2024-05-13 11:03:09 -06:00
fusionate 7556956763 CDR - Details: Mitigate PHP 8.x warnings. 2024-05-13 10:27:34 -06:00
FusionPBX 1a9eaef5f3 Update 240_page.xml
Changed this value to false as the check destination status will be checked by default. The purpose of this change to keep the original behavior.
2024-05-09 10:30:35 -06:00
FusionPBX 4f7c5789fc Improve the indentation 2024-05-09 10:25:27 -06:00
FusionPBX 50e0dd33e8 Page check destination status by default 2024-05-09 10:23:14 -06:00
Alex 301a1f69a0 Move dashboard defaults settings to theme (#6973) 2024-05-08 13:41:21 -06:00
Alex 66b57a7784 Dashboard - Add gradient background color settings (#6972)
* Dashboard - Add gradient background color setting
2024-05-08 09:54:18 -06:00
FusionPBX 8657a68d7e Update destinations.php
The &$row pointer caused a duplicate in the interface on the last row when used with updating the $row['action'] value. 

Used an alternative method to update the destinations array and it solved the appearance of a duplicate.
2024-05-06 17:33:48 -06:00
FusionPBX 04ee47ce8f Skip the cache if the SQL query timed out 2024-05-06 13:08:02 -06:00
FusionPBX 94e3d1edf6 Voicemail transcription use the new transcribe class 2024-05-05 16:47:32 -06:00
Antonio Fernandez 68b4b32519 Fix issue with some emails not getting pulled from IMAP (#6969)
* Fix issue with some emails not getting pulled from IMAP

* alert users of the ability to enter a domain name
2024-05-04 23:07:23 -06:00
fusionate 3c0a5ad774 Dialplans - Call Screen: Make temp recording filename unique to resolve appending bug. 2024-05-04 16:46:19 -06:00
FusionPBX 3bb8ee345e Allow multiple colors
Prepare an option for allowing multiple colors to be used with gradients.
2024-05-04 11:51:53 -06:00
fusionate 7c816a1e36 Upgrade: Populate missing translations. 2024-05-03 18:34:29 -06:00
fusionate 006409bdd9 Upgrade - Source Code: Additional minor adjustments. 2024-05-03 18:18:05 -06:00
fusionate 7ec902add2 Upgrade - Source Code: Preview link to view list of changed files before upgrading. 2024-05-03 17:32:17 -06:00
FusionPBX 80c5e589ab Bug fix for FAX forward 2024-05-03 13:17:14 -06:00
FusionPBX f30180d2b7 Bug fix send fax to a local extension 2024-05-03 13:13:51 -06:00
fusionate 58d2a9d754 CDR - Details: Mitigate PHP 8.x errors. 2024-05-02 15:42:47 -06:00
FusionPBX 1649087beb Add an emergency logs description 2024-05-02 15:07:48 -06:00
FusionPBX 85e439fdbf Prevent a warning by using isset 2024-05-02 14:05:30 -06:00
FusionPBX 55bebdec6d Set the label_call_status to prevent a warning 2024-05-02 07:32:53 -06:00
FusionPBX 8805c2f1c8 Use the settings class 2024-05-02 06:58:58 -06:00
FusionPBX d9c92c00e9 Update database.php add comments 2024-05-02 06:40:30 -06:00
FusionPBX 557afd01ad Call block save_call_detail_record default
Set to save the record by default. The reason is to have a record of it so that if it's abused it can be reported.
2024-05-01 09:15:49 -06:00
FusionPBX d11308b844 New setting save_call_detail_record
If blocked by call block option to save the call detail record true or false.
2024-04-30 18:21:42 -06:00
FusionPBX 6176ea2376 Update destinations.php
- Update the array to add actions before display.
- Use column names in the SQL select
- Use a SQL Left Join to get the domain name
2024-04-29 12:46:32 -06:00
FusionPBX 6f6d84e1cc Update conference_centers.php 2024-04-29 10:42:48 -06:00
FusionPBX 38d6f35d78 Define class parameters 2024-04-27 19:45:31 -06:00
FusionPBX 0c08780ca2 Update database.php 2024-04-27 19:29:50 -06:00
frytimo 0b8edef82c Config class rewrite (#6965)
* Use a singleton pattern in the database class to re-use the database object inside the permission_exists function.
2024-04-27 19:22:20 -06:00
FusionPBX 8a30f04125 Update upgrade.php changes apps to repos 2024-04-27 10:52:22 -06:00
frytimo aeee90d56e update auto_loader to use magic dir constant (#6963) 2024-04-26 13:49:56 -06:00
Alex 5eead0d88a Dashboard - Add disabled option to details state (#6962)
* Dashboard - Add disabled option to details state
2024-04-25 23:36:54 -06:00
FusionPBX 64e3a6792d Rename core/dashboard/resources/classes/dashboard/icon.php to core/dashboard/resources/dashboard/icon.php 2024-04-24 20:48:27 -06:00
FusionPBX 6ca5672d75 Update dashboard_edit.php
Fix the indentation
Set the dashboard_path default value.
2024-04-24 19:58:14 -06:00
Alex 1c8455a9b9 Dashboard - Minor adjustments (#6961) 2024-04-24 19:52:39 -06:00
FusionPBX d4ae2952a3 Add Dashboard settings URL and Icon 2024-04-24 19:49:16 -06:00
FusionPBX 0667f76c05 Add label-link and label-icon 2024-04-24 19:37:40 -06:00
Alex c38caaadc9 Update missed_calls.php (#6960) 2024-04-24 14:37:47 -06:00
Alex 28efea22fd Dashboard - Add background color settings (#6959)
* Dashboard - Add background color settings

* Update missed_calls.php

* Update recent_calls.php

* Update app_languages.php

* Update app_config.php

* Update dashboard_edit.php

* Update index.php

* Update css.php

* Update system_status.php

* Update system_cpu_status.php

* Update system_counts.php

* Update system_counts.php

* Update switch_status.php

* Update index.php

* Update system_counts.php

* Update domain_limits.php

* Update call_forward.php

* Update caller_id.php

* Update ring_group_forward.php
2024-04-24 14:14:24 -06:00
FusionPBX f8771c4f10 Move emergency setting to its own category. 2024-04-24 10:29:03 -06:00
frytimo c85e10ea09 include software_name in the global declaration (#6957) 2024-04-23 10:23:04 -06:00
frytimo 41eb7ac8d3 Fix empty line printing on console (#6956)
* fix empty line printing on console
2024-04-23 08:53:14 -06:00
frytimo 33ff85ee75 Commad line upgrade enhancements (#6955)
* Add new English language phrases for cli upgrade menu

* include a software name as a const for cli upgrade menu

* add it repos in app folder, internationalizations, and descriptions

* bug fix when response_source_update is empty change back to origin dir

* change original 'menu' to 'menus'. Allow calling menu from upgrade.php

* Update upgrade_menu.php
2024-04-22 17:15:09 -06:00
fusionate 4e8f60cb92 Voicemail Messages - Restore non-Base64 message audio waveform generation. 2024-04-22 15:33:55 -06:00
frytimo c4fd1c4842 Rename domains to app defaults in menu (#6954)
* rename 'Domains' to 'App Defaults' in menu options for clarity

* reorder app defaults to be after the schema like web interface
2024-04-22 12:56:31 -06:00
FusionPBX 9e71d87012 Recent Calls hide Lose Race 2024-04-22 12:16:30 -06:00
FusionPBX bd2f0b7442 Require domain_uuid and user_uuid 2024-04-22 08:48:58 -06:00
FusionPBX b6f68533d1 Update valet_park to exclude 5900 2024-04-22 08:17:08 -06:00
FusionPBX 375c7d228b Update require.php 2024-04-20 22:59:45 -06:00
FusionPBX 313de4c6dc Update authentication.php
Empty the permissions before assigning permission to the user during the login process.
2024-04-20 22:00:29 -06:00
FusionPBX 278f1d7453 Update permissions.php 2024-04-20 21:59:04 -06:00
FusionPBX 955a840ad6 Update permissions.php
If the $_SESSION['permissions'] isset then use it to prevent round trips to the database.
2024-04-20 20:54:06 -06:00
FusionPBX f3250db199 Update groups.php
Remove redundant database instances. 
$database new database;

Remove redundant app_name and app_uuid
2024-04-20 20:26:43 -06:00
FusionPBX 675ac2d433 Prevents an error when groups session is not set 2024-04-20 17:06:05 -06:00
FusionPBX c87e40301b Add a user class to store user details 2024-04-20 17:04:22 -06:00
FusionPBX 09719c7f36 Update authentication, groups and permissions classes 2024-04-20 16:51:53 -06:00
Alex 19e21d9997 Update missed_calls.php (#6953)
* Update missed_calls.php

* Update recent_calls.php

* Update voicemails.php
2024-04-19 17:36:16 -06:00
FusionPBX 2a1e36ca02 Add apps as a class variable
- Use self:$apps
- Replace $_SESSION['apps']
2024-04-19 11:07:30 -06:00
FusionPBX 768937b624 Update database.php
- Allow sending $params into the constructor.
- Add paramaters: domain_uuid and user_uuid
- Replace $user_uuid and the session variable with $this->user_uuid
- Use the SESSION as an alternative to the parameter
2024-04-19 09:48:05 -06:00
Alex 4e06ce8c14 Update voicemails.php (#6952) 2024-04-18 17:11:05 -06:00
Alex 808e2cbe66 Dashboard - Add chart type setting (#6951)
* Dashboard - Add chart type setting
2024-04-18 16:57:45 -06:00
FusionPBX 07ff90f97c Use $event_socket instead of $esl 2024-04-18 16:14:00 -06:00
fusionate 7b6bdb6fb1 Upgrade - Source Code: Minor adjustments to interface. 2024-04-18 11:51:13 -06:00
FusionPBX cffe54a136 Update app_languages.php 2024-04-17 21:04:28 -06:00
FusionPBX e607253bc6 Update layout for source and other repos 2024-04-17 20:58:47 -06:00
Alex 1412ed7f68 Dashboard - Add text color settings (#6950)
* Dashboard - Add text color setting
2024-04-17 16:01:54 -06:00
frytimo 37fd4692c1 Add command line menu for upgrade (#6949)
* use existing git_pull function from global functions
2024-04-17 15:04:34 -06:00
FusionPBX 1df3015e19 Allow using dsn_call_center
Allow using extra underscore so that it works with either values. 
- dsn_callcenter
- dsn_call_center
2024-04-17 10:47:22 -06:00
FusionPBX 30439ae14a Get speech settings from category speech 2024-04-17 08:52:53 -06:00
FusionPBX e81d711a92 Update xml_cdr.php
- Initialize the database class in the constructor
- Improve efficiency by removing extra database instances
- Bug fix. If cc_queue has been provided and call_center_queue_uuid is empty. Then use it to get the call_center_queue_uuid
2024-04-16 09:54:27 -06:00
fusionate 360cc3cdd3 Upgrade: Rework Source Code option to be more flexible. 2024-04-15 19:17:09 -06:00
FusionPBX c806aae310 Moved to speech and transcribe repos 2024-04-15 17:12:18 -06:00
FusionPBX 75439fb4e9 Update recording_edit.php
Use the speech and transcribe classes.
2024-04-15 15:38:54 -06:00
emak-Corey 27b2ddb906 [vm] Split new/saved message count macros + improve french translations (#6944)
* [vm] Split new/saved message count macros + fix french translations

* Update main_menu.lua
2024-04-15 09:32:13 -06:00
Ahron Greenberg (agree) 4435cf5bd0 [voicemail transcription] fix google v2 (#6946)
* v2 doesn't require to have api_key set
* allow setting setting a path to the application credentials
* check only ones if the file path exists
2024-04-15 09:26:44 -06:00
Antonio Fernandez 0646bcb93e Avaya J-Series phone support added (#6948)
* Added support for Avaya J-Series phones

* moved a file

* minor change to remove an invalid parameter
2024-04-15 09:26:02 -06:00
FusionPBX d6bef277d8 Update header.php 2024-04-13 14:42:32 -06:00
FusionPBX 92969d904c Update valet_park_auto
- Use lua valet_park
2024-04-12 12:00:52 -06:00
FusionPBX d8a8d4997e Show all messages in the fax queue
Including ones not assigned to a user
2024-04-11 16:04:44 -06:00
FusionPBX 8e76a940aa Move fax advanced to its own file 2024-04-11 13:23:09 -06:00
FusionPBX cf4f96070a Use valet_parking
Changed variable prefix from vale_park to valet_parking for consistency
2024-04-10 21:42:40 -06:00
FusionPBX d04802f1ba Add script valet_park
- Used to handle park in with a * prefix
- Supports *5901 - *5999
2024-04-10 21:31:20 -06:00
FusionPBX ea2274fe6f Validate the uuid used in intercept 2024-04-09 18:56:07 -06:00
FusionPBX 179745f871 Make Call Center variables more robust 2024-04-09 17:20:38 -06:00
Ahron Greenberg (agree) 199e573041 [email_queue] don't run exec on each iteration (#6945) 2024-04-08 14:18:42 -06:00
Andy-Seattle bbabb4f861 Handle ERR no such channel during call intercepts (#6943)
When call center is not enabled, during a standard call intercept sometimes we are seeing an error as follows:
call_center_queue_uuid=-ERR%20No%20such%20channel!%0A
cc_queue_joined_epoch=-ERR%20No%20such%20channel!%0A
Normally it returns call_center_queue_uuid=_undef_ but occasionally shows the ERR message.
When the epoch variable is set to this it causes the XML CDR service to continually stop and start at the same CDR which raises the CPU load on the server significantly until the CDR is deleted.
This code fix will handle the ERR message in the same way as _undef_.
2024-04-05 17:36:25 -06:00
frytimo 2f31b5addd if_group caused no conferences to show when user not in the admin group (#6942)
* if_group caused no conferences to show when user not in the admin group

* if_group replaced to be conference_room_edit
2024-04-05 17:33:42 -06:00
FusionPBX 56fe5831af Bug fix replace dialed_user with dialed_extension 2024-04-03 11:22:02 -06:00
FusionPBX fefb58f5df Fix bug with extension missed call email
The dialed_user used to exist on all systems no longer the case. So using sip_to_user instead for backward compatibility.
2024-04-03 10:50:52 -06:00
FusionPBX 4313ee17cd Use autoloader to find the class
ringback class was moved to app/switch/resources/classes
2024-04-02 17:22:40 -06:00
Alex a66477824a Use dialplan_global permission (#6940)
You can disable this permission to hide global dialplans from the list
2024-04-02 15:05:53 -06:00
frytimo 614986cd7a use a single database instead of using new database in user_edit (#6939) 2024-04-02 11:55:32 -06:00
FusionPBX 0e658a486f Update user_edit.php
Move the validation earlier in the code
2024-04-02 11:01:43 -06:00
FusionPBX 2d97968a52 Update cmd.php 2024-04-02 10:58:33 -06:00
FusionPBX bd8cfc9851 Security: Validate the user_status variable 2024-04-02 10:52:02 -06:00
FusionPBX 71bc204417 Update calls_exec.php
Minor updates
2024-04-02 10:34:20 -06:00
FusionPBX 92f5f4abe4 Update destinations.php 2024-04-02 09:43:16 -06:00
FusionPBX 2e7ebaf1c4 Moved ringbacks to app/switch/resources/classes
Moved resources/classes/ringbacks.php to app/switch/resources/classes/ringbacks.php
2024-04-02 09:26:08 -06:00
FusionPBX 463aa5213f Add object property streams. 2024-04-02 09:24:25 -06:00
frytimo c595df34b2 variable expanded_all was not initialized causing warning (#6938) 2024-04-02 09:23:37 -06:00
frytimo 4377336add variable conference_center_greeting was not initialized causing warning (#6937) 2024-04-02 09:15:44 -06:00
frytimo e47b2e3710 Fix $x was not initialized on first iteration of for loop (#6936) 2024-04-02 09:09:36 -06:00
Anthony d4b3d8682b Added bulk translations to app/recordings/app_languages.php (#6935) 2024-04-01 14:16:34 -06:00
FusionPBX 2cca127111 Update app_languages.php 2024-04-01 13:38:36 -06:00
FusionPBX 7dc021dc4e Disable the model 2024-03-30 23:48:49 -06:00
FusionPBX e8798b3fe1 Model picked up automatically
So for now the model is not required
2024-03-30 19:42:23 -06:00
FusionPBX 2c3f2ffd61 Update AI text speech
- elevenlabs
  - update curl code
  - automatically determine the model
2024-03-30 19:23:03 -06:00
FusionPBX db5cae89e4 Remove the default recording voice
Update the recording if a voice has been selected.
2024-03-30 15:19:50 -06:00
frytimo 502ba07c53 Ai elevenlabs io engine (#6932)
* allow settings to load domain and user settings

* ensure the engine is also enabled before attempting to create a new object

* add default values to stop undefined variable warnings

* enforce all models to set and return voices and languages

* enforce all models to set and return languages

* ensure speech_enabled is set by the current session

* create elevenlabs implementation of ai speech

* Update ai_elevenlabs.php
2024-03-30 14:16:16 -06:00
denisent 883c32d932 Add grandstream gdms acs url default setting (#6934)
* add grandstream gdms acs url default setting

* add grandstream gdms acs url default setting

* add grandstream gdms acs url default setting
2024-03-30 13:52:50 -06:00
FusionPBX 3b0325a2e3 Recording name replace a space with a dash 2024-03-30 12:03:16 -06:00
FusionPBX fb241f5085 Change the value to true
These settings are enabled false by default
2024-03-30 10:30:46 -06:00
FusionPBX 088abe4f4c Improve Ring group context handling
If the user doesn't have the correct permission then keep the ring_group_context  value from the database
2024-03-30 09:35:24 -06:00
FusionPBX 911888e949 Update ivr_menu_edit.php 2024-03-30 08:28:42 -06:00
fusionate cd2d2cf632 Default Settings - List: Mask *_key subcategory values. 2024-03-29 10:19:05 -06:00
wouam31200 2c6b36e356 Add features.enhanced_dss_keys.enable = {$yealink_enhanced_dss_keys} (#6910)
* Add features.enhanced_dss_keys.enable = {$yealink_enhanced_dss_keys}
2024-03-28 22:15:30 -06:00
frytimo 6bd159a717 settings was being set in constructor but property was missing (#6931) 2024-03-28 22:13:01 -06:00
frytimo 6fd5d7cda4 Fix user_email missing from object properties (#6929) 2024-03-28 22:10:36 -06:00
frytimo 758cb2ec60 set to compare instead of assignment in the message error checking (#6933) 2024-03-28 22:07:04 -06:00
frytimo ff55a36980 after doing a database restore, the permission may not yet exist (#6930) 2024-03-28 08:59:30 -06:00
Alex 2cfbe63a5f Cover Page Option (#6928)
Subject and Message Required
2024-03-27 22:10:58 -06:00
demonspork 9952026016 Removed unused dialplan is_loopback (#6927) 2024-03-27 22:10:26 -06:00
FusionPBX 2171a5f11a Use the name to find the Select Option Group translation. 2024-03-27 09:11:43 -06:00
frytimo a9886a8ba9 Add str_starts_with and str_ends_with to PHP versions older than 8 (#6832)
* Add str_starts_with and str_ends_with to PHP versions older than 8

* Update functions.php
2024-03-26 16:42:44 -06:00
FusionPBX 027e0757d1 Update the voices array for key and value 2024-03-25 14:01:21 -06:00
FusionPBX 311febaf0b Add user_uuid 2024-03-25 13:46:02 -06:00
FusionPBX 71fefde828 Update recordings.php 2024-03-25 13:44:34 -06:00
FusionPBX 6c41c42a40 Fixed set_language error in transcribe
Changed two methods:
get_language_enabled to is_language_enabled
get_translate_enabled to is_translate_enabled
2024-03-25 12:10:16 -06:00
FusionPBX 21c63c3171 Update destination_edit.php 2024-03-24 10:20:12 -06:00
FusionPBX b96a0f6d48 Use the settings object 2024-03-24 08:47:14 -06:00
frytimo 2064c33fb7 AI bug fixes and update interfaces (#6925)
* allow settings to load domain and user settings

* ensure engine is also enabled before attempting to create a new object

* add default values to stop undefined variable warnings

* enforce all models to set and return voices and languages

* enforce all models to set and return languages

* ensure speech_enabled is set by the current session
2024-03-24 08:37:17 -06:00
FusionPBX 93a180878e Update app_languages.php 2024-03-23 20:00:56 -06:00
FusionPBX b79774db88 Update the AI settings 2024-03-23 19:50:40 -06:00
FusionPBX b50085f5cd Add AI default settings 2024-03-23 19:42:30 -06:00
FusionPBX 1a34181008 Add a recording message textarea
- Add speech to text
- Add text to speech
2024-03-23 19:24:32 -06:00
FusionPBX 2756e71e37 Update the new ai class
- Add voices and languages
- Change classname audio_ to ai_
2024-03-23 17:17:21 -06:00
FusionPBX 4fd7fd385b Add label-translate 2024-03-23 14:16:23 -06:00
FusionPBX 67c39ad4a2 Prevent a conflict with the settings object
- Changed from settings to settings_array.
- Prevents a conflict with the settings object.
2024-03-23 13:53:58 -06:00
FusionPBX 7868073b73 Add ai classe and interfaces to the core 2024-03-22 23:14:12 -06:00
Antonio Fernandez 6ec11d32a9 Update {$mac}.xml (#6920) 2024-03-22 21:50:51 -06:00
Antonio Fernandez fe8503c063 Update {$mac}.xml (#6921) 2024-03-22 21:50:36 -06:00
Antonio Fernandez ff2434aca4 Update {$mac}.xml (#6922) 2024-03-22 21:50:19 -06:00
Antonio Fernandez 316a9f7273 Update {$mac}.xml (#6923) 2024-03-22 21:50:06 -06:00
FusionPBX 63d215192d Use an array in auto_loader
- Added a search for interfaces
- Updated the indentation
2024-03-21 10:33:05 -06:00
FusionPBX e179aaeb22 Disable aggressive-nat-detection by default 2024-03-21 09:16:19 -06:00
chansizzle b9555b191c Create snom PA1 plus (#6914)
PA1plus is the product replacement for PA1
2024-03-18 08:33:19 -06:00
Antonio Fernandez 8abfa880fd added new Snom D8XX series phones (#6916) 2024-03-18 08:32:16 -06:00
fusionate 4d728d47e4 Voicemail: Make waveform image generation work when using base64 message storage. 2024-03-16 13:48:59 -06:00
fusionate b2246b3c46 Voicemail: Rework method used for emailed message Download Link to audio file. 2024-03-16 13:46:38 -06:00
frytimo 2264e2c0ed Add read and write codec to columns displayed (#6913)
* add read and write codec to columns displayed

* update the column display name to be Codecs
2024-03-16 10:56:28 -06:00
denisent e279b0c7b6 Add echo_canceller and echo_suppressor variables (#6827)
* add echo_canceller and echo_suppressor variables
2024-03-16 10:52:32 -06:00
FusionPBX 0b37b04621 Add stun_server, custom CA rule. and blind transfer on speed dial 2024-03-15 23:47:30 -06:00
fusionate fe971649b1 Voicemail [Class]: More adjustments to restore emailed messaage Download link functionality. 2024-03-14 13:59:01 -06:00
FusionPBX 10a4974bd6 Bug fix add bridge_uuid 2024-03-14 13:10:52 -06:00
fusionate 649d740206 Voicemail: Adjust emailed message Listen link to generate message waveform. 2024-03-13 18:09:45 -06:00
fusionate a22d766d6a Voicemail: Fix emailed direct message Download feature. 2024-03-13 18:08:14 -06:00
FusionPBX 41e95766c6 Update GXP templates 2024-03-13 17:56:35 -06:00
FusionPBX 5c696b6eb3 Add a description for the change 2024-03-13 11:12:48 -06:00
fusionate cac884d672 Device - Edit: Adjust detection of valid line ports. 2024-03-13 10:43:27 -06:00
FusionPBX e0f4309076 New setting call_log_enabled default false 2024-03-12 17:44:46 -06:00
FusionPBX fe5a974dd8 Create xml_cdr_log.php 2024-03-12 09:46:30 -06:00
FusionPBX e6ca01a7af Add Call Logs and CDR JSON, and Call Flows.
Move the CDR JSON and and Call Flows data to their own tables and add a new table for the Call Log.
2024-03-11 18:51:36 -06:00
FusionPBX 4eed5eaba1 Improve the fax prefix description 2024-03-08 08:37:41 -07:00
FusionPBX 7539a88488 Update intercept.lua 2024-03-07 16:22:08 -07:00
FusionPBX 1f10b6a161 Fixed intercept
Remove from SQL where as the call_uuid is not always used
2024-03-07 14:38:32 -07:00
FusionPBX ad9e175cb9 Remove gswave deprecated by Grandstream 2024-03-07 10:39:54 -07:00
chansizzle 3893ca3838 Remove fields to display the installed firmware version (#6912)
Deleted elements which were making registrations page displaying device and firmware correctly. With the included elements the device and firmware displayed as "snomPA1/x.x.x". Removing the elements allows the device and firmware to display the installed firmware like "snomPA1/8.7.5.75".
2024-03-07 09:44:55 -07:00
FusionPBX 3213d4bab3 IVR Menu - Allow caller_id_name and number variables 2024-03-05 18:28:19 -07:00
FusionPBX 3c17fe6ad4 Update language/sv/vm/sounds.xml fix xml 2024-03-05 12:49:10 -07:00
frytimo 9573cfd9a9 fix transcription bug showing when not enabled in default settings (#6911) 2024-03-05 10:58:22 -07:00
FusionPBX 9810ac81b9 Add tables xml_cdr_json, xml_cdr_flow, call_logs 2024-03-04 23:41:41 -07:00
FusionPBX 19f0a37ad9 Update the GXP Template
grandstream_nat_traversal
    options: No, STUN, KeepAlive, UPnP, Auto, VPN

grandstream_distinctive_ringtone_* (1-10)

grandstream_lan_port_vlan
    Number: 0 - 4095

grandstream_pc_port_vlan
    Number: 0 - 4095

grandstream_pc_mode
    options: Enabled, Disabled, Mirrored

grandstream_stun_server

grandstream_headset_key_mode
    options: DefaultMode, ToggleHeadsetOrSpeaker

grandstream_headset_ringtone
    options: Normal, PlantronicsEHS

grandstream_headset_type
    options: Normal, PlantronicsEHS

grandstream_headset_rx_gain
    Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0

grandstream_headset_tx_gain
    Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0

grandstream_screensaver_enable
    options: No, Yes,  OnIfNoVPKIsActive

grandstream_screensaver_source
    options: Default, USB, Download
2024-03-04 23:16:55 -07:00
FusionPBX 5b90e3380a Update the GXP Template
grandstream_nat_traversal
    options: No, STUN, KeepAlive, UPnP, Auto, VPN

grandstream_distinctive_ringtone_* (1-10)

grandstream_lan_port_vlan
    Number: 0 - 4095

grandstream_pc_port_vlan
    Number: 0 - 4095

grandstream_pc_mode
    options: Enabled, Disabled, Mirrored

grandstream_stun_server

grandstream_headset_key_mode
    options: DefaultMode, ToggleHeadsetOrSpeaker

grandstream_headset_ringtone
    options: Normal, PlantronicsEHS

grandstream_headset_type
    options: Normal, PlantronicsEHS

grandstream_headset_rx_gain
    Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0

grandstream_headset_tx_gain
    Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0

grandstream_screensaver_enable
    options: No, Yes,  OnIfNoVPKIsActive

grandstream_screensaver_source
    options: Default, USB, Download
2024-03-04 22:38:26 -07:00
FusionPBX bf4623ccb8 Update index.lua
Use the original_caller_id_number in the diversion header.
2024-03-04 19:09:30 -07:00
FusionPBX 2553caa2b1 Add required diversion header 2024-03-04 16:50:37 -07:00
FusionPBX 422a9d7eb6 Use the line register_expires 2024-03-04 14:48:41 -07:00
FusionPBX 95cf9917e2 Grandstream GXP2135 fix register_expires, DND, and call forward 2024-03-04 13:53:56 -07:00
FusionPBX 472d6e8210 Remove self closing tag when a value is provided 2024-03-04 13:38:50 -07:00
FusionPBX a4e32409ed GXP2170 fix register_expires, DND, and call forward 2024-03-04 13:32:00 -07:00
FusionPBX 722a2806ee Remove self closing tag for *78 and *79 2024-03-04 13:28:17 -07:00
FusionPBX a93519e310 Fix the register_expires, DND and grandstream firmware 2024-03-04 13:22:25 -07:00
FusionPBX 46e4afb6f3 Grandstream 2160 Fix keys assignments over 6 2024-03-04 13:16:34 -07:00
FusionPBX 27a894a59f Grandstream 2140 Fix keys assignments over 4 2024-03-04 13:13:38 -07:00
FusionPBX 77d8aecf5c Add register_expires and *78 and *79 2024-03-04 13:05:47 -07:00
FusionPBX fb9b67a274 Grandstream 2130 Fix keys assignments over 3 2024-03-04 12:55:09 -07:00
FusionPBX 4cfcbd0c9c Grandstream 2135 Fix keys over 8 2024-03-04 12:50:37 -07:00
FusionPBX 7d06f5dc9e Grandstream 2170 Fix keys over 12 2024-03-04 12:40:44 -07:00
fusionate 61c5b6e005 Time Conditions: Better support for date-time based presets. 2024-03-04 12:28:25 -07:00
FusionPBX f873ee7757 Update settings.php
Reverting mixed type until more people have migrated off of PHP 7.4
2024-03-04 09:35:17 -07:00
FusionPBX 1acb30a7fe Prevent an error 2024-03-02 18:13:25 -07:00
FusionPBX b1589bac86 Move the ring group destination description 2024-03-02 15:31:03 -07:00
FusionPBX e3733381eb Update the version of the Master Branch
This is not a release yet it's a version for the Master Branch. We are doing this to separate it from the current release.
2024-03-01 18:35:27 -07:00
FusionPBX 3896629817 Fix the order by for IVR Menu Options 2024-03-01 18:26:44 -07:00
FusionPBX bb8c4c0e66 Include ORIGINATOR_CANCEL for missed calls 2024-03-01 14:08:47 -07:00
frytimo ebe12ef338 allow setting a default value (#6908) 2024-03-01 10:26:51 -07:00
FusionPBX 0626fc1c9a Add yealink_app_unavailable from another template. 2024-02-29 09:51:56 -07:00
fusionate c0d26a9279 Operator Panel: Permission check adjustment. 2024-02-28 13:12:15 -07:00
fusionate 3f6fa8d2f9 Operator Panel: Add permission to show or hide (default) unregistered extensions. 2024-02-28 12:59:49 -07:00
fusionate 07f532afab Operator Panel: Restore drag/drop calling and transfer. 2024-02-27 11:18:44 -07:00
FusionPBX fb1b8e7a38 Use a join to get the domain_name 2024-02-26 09:28:17 -07:00
frytimo d5cbebadd8 add domain column when showing all domains (#6905) 2024-02-26 08:57:36 -07:00
FusionPBX 672922def0 Ring group destination adde per user music on hold 2024-02-24 21:06:17 -07:00
FusionPBX ebcd78ed4f Fix fax from address when sending an outbound fax 2024-02-23 15:42:38 -07:00
FusionPBX 4d9160b1cd Extension summary add voicemail column and use the CDR status 2024-02-22 21:04:14 -07:00
Alex 7436d8e651 Update xml_cdr_inc.php (#6903) 2024-02-22 15:54:18 -07:00
FusionPBX cdc11c5d16 Fix duration if null set to 0
If gmdate gets a null it uses the system time. This affected canceled calls.
2024-02-22 09:19:57 -07:00
FusionPBX 102d973f11 Fix the Yealink Conference templates 2024-02-21 16:30:29 -07:00
fusionate dc0f985b2f Check Auth: Unset temporary $name variable. 2024-02-21 15:04:09 -07:00
FusionPBX 717ee2d8fc Update destinations.php
- Use the database object more efficiently
- Access the get method with this->get
- Bypass cached destinations to avoid problems
2024-02-21 11:23:58 -07:00
frytimo b47f9c3219 add default value for ring time delay before voicemail (#6900)
* add default value for ring time delay before voicemail

* Update app_config.php
2024-02-20 22:04:24 -07:00
Anthony 80c670d945 Added bulk Turkish translations to app_languages.php files (#6901)
* Added Turkish translations to access_controls/app_languages.php

* Added Turkish translations to basic_operator_panel/app_languages.php

* Added Turkish translations to bridges/app_languages.php

* Added Turkish translations to call_block/app_languages.php

* Added Turkish translations to call_broadcast/app_languages.php

* Added Turkish translations to call_flows/app_languages.php
2024-02-20 21:59:53 -07:00
FusionPBX 746413cbfe Update recent_calls.php
- Simplify SQL time format
- Use SQL limit to be more efficient
- Use the call detail record status
2024-02-20 14:48:24 -07:00
FusionPBX 195b46e9e4 Update app_languages.php add no_answer 2024-02-20 14:30:43 -07:00
FusionPBX cdee086045 Use SQL limit for missed calls 2024-02-20 14:16:53 -07:00
FusionPBX 76bcd70824 Use the domain time_format 12h or 24h 2024-02-20 13:57:29 -07:00
FusionPBX 61d40a62ee Simplify the time format 2024-02-20 13:41:21 -07:00
FusionPBX 53f6f040c1 Update the URL to use status 2024-02-20 13:24:27 -07:00
FusionPBX 60d4a7c1be Use the call status missed to find missed calls 2024-02-20 13:12:52 -07:00
FusionPBX dbc88b847a Replace voicemail_answer_stamp with voicemail_message_seconds
The voicemail_answer_stamp value exists if the call reaches voicemail. The voicemail_message_seconds is set if the caller leaves a voicemail message.
2024-02-20 12:47:10 -07:00
FusionPBX 359a323c1f Don't use voicemail_id to determine call status
This is an unreliable way to detect if the call when to voicemail.
2024-02-20 12:28:59 -07:00
FusionPBX 06480cbc3d Fix bug with sipnetic use server_address
The registration domain should use server_address not the outbound_proxy_primary address.
2024-02-19 14:56:46 -07:00
Alex 5e6bc5b3ed Update call_broadcast_send.php (#6896) 2024-02-19 11:34:28 -07:00
FusionPBX 1b5d66e85e Refresh each subscription publication 2024-02-17 08:34:47 -07:00
FusionPBX 632c2ee10f Update 310_extension-to-voicemail.xml
Quote the interpolated part of the regexes between \Q and \E
2024-02-13 18:03:32 -07:00
Anthony f80293e163 Added Greek & Turkish translations to app app_laguages.php files (#6895)
* Added Greek & Turkish translations to fifo/app_languages.php

* Added Greek & Turkish translations to fifo_list/app_languages.php

* Added Greek & Turkish translations to gswave/app_languages.php

* Added bulk translations to gateways/app_languages.php
2024-02-13 12:28:13 -07:00
Antonio Fernandez 91cfa5f778 added missing fax_email permission (#6894)
This permission is referenced in the fax_edit.php code and allows you to enter a confirmation email for faxes that are sent. Without this permission it is no editable.
2024-02-12 16:11:46 -07:00
FusionPBX 5ce4ad4879 Update diversion header 2024-02-12 12:57:01 -07:00
frytimo 2a613840ec avoid user/pass connection request removal in GRP TR-069 settings (#6890) 2024-02-12 11:38:50 -07:00
FusionPBX 1326e8804f Update app_config.php 2024-02-12 10:46:31 -07:00
FusionPBX 77be489350 Update app_config.php 2024-02-12 10:42:58 -07:00
FusionPBX 12f121190b Add emergency_email_address setting by default 2024-02-12 10:38:27 -07:00
FusionPBX 1ca084cd76 Fix the spelling of label 2024-02-12 10:19:49 -07:00
Anthony d32e543de6 Added Greek & Turkish translations to app app_laguages.php files (#6893)
* Added Turkish & Greek translations to fax/app_languages.php

* Added Greek & Turkish translations to emergency/app_languages.php
2024-02-12 10:17:59 -07:00
FusionPBX aefbf62094 Add order by desc 2024-02-10 15:38:46 -07:00
FusionPBX 490c26ab52 Fix the emergency lua script 2024-02-10 15:35:41 -07:00
FusionPBX e753ce9175 Update emergency logs 2024-02-10 14:36:52 -07:00
fusionate 8c21a3cd83 Call Recordings - List: Restore proper column widths. 2024-02-09 15:40:06 -07:00
fusionate 9b3eb31ac3 Voicemail [Class]: Resolve fclose() error on null object. 2024-02-09 13:16:34 -07:00
fusionate cf51a862e7 CDR: Audio waveform generation integration. 2024-02-09 13:14:22 -07:00
fusionate b8540ac7e8 Voicemails: Audio waveform generation integration. 2024-02-09 13:14:04 -07:00
fusionate 2eb7e7844f Voicemail Greetings: Audio waveform generation integration. 2024-02-09 13:12:34 -07:00
fusionate e3ea4977a1 Ring Groups: Audio waveform generation integration. 2024-02-09 13:12:14 -07:00
fusionate 1b1acd754c Recordings: Audio waveform generation integration. 2024-02-09 13:11:40 -07:00
fusionate f55fbabb87 Music on Hold: Audio waveform generation integration. 2024-02-09 13:11:14 -07:00
fusionate 81a6b947fe IVR Menus: Audio waveform generation integration. 2024-02-09 13:10:57 -07:00
fusionate 1dbe76dfe4 Conference Centers: Audio waveform generation integration. 2024-02-09 13:10:24 -07:00
fusionate b11901ad4d Call Recordings: Audio waveform generation integration. 2024-02-09 13:09:52 -07:00
fusionate 1dae61de51 Call Flows: Audio waveform generation integration. 2024-02-09 13:09:29 -07:00
fusionate 3001fa151f Call Centers: Audio waveform generation integration. 2024-02-09 13:09:07 -07:00
fusionate adf8062378 Themes [Default]: Audio waveform support and new setting integration. 2024-02-09 13:07:19 -07:00
fusionate 0be7204762 Functions: Mods to support color manipulations for waveform generation. 2024-02-09 13:05:38 -07:00
fusionate 504d3a6bf2 Waveform [Class]: Support audio file waveform generation. 2024-02-09 13:04:45 -07:00
frytimo d309308824 Change default DHCP value to SNOM recommendation (#6889)
* change default DHCP  value to match SNOM recommendation

* modify the name to be snom_dhcp
2024-02-09 10:29:03 -07:00
frytimo a17b63e616 Use the settings class in the cache class (#6891) 2024-02-09 10:21:55 -07:00
FusionPBX 6890c21e92 Set directory_setting.local_directory.enable default value to 1 2024-02-08 16:34:30 -07:00
FusionPBX b123e32658 Use {$yealink_rport} variable 2024-02-08 16:15:34 -07:00
frytimo c51d485668 use $app_name and $app_uuid for database transaction (#6881) 2024-02-08 11:13:50 -07:00
Ahron Greenberg (agree) 441bd77a5b Fix dnd toggle sends wrong state in feature sync event (#6886) 2024-02-08 11:12:47 -07:00
frytimo 535eba25fa Change domain to server_address (#6888)
template should use account.1.server_address
2024-02-08 11:12:24 -07:00
FusionPBX 18f59eeb61 Disable ws and wss by default 2024-02-07 17:51:21 -07:00
markjcrane 52411c858a Add el-gr language 2024-02-07 13:17:18 -07:00
Antonio Fernandez ae851864be Fixed link for GSWave (#6887) 2024-02-06 21:30:33 -07:00
FusionPBX bbb71439d0 Bug Fix: missed_call handling and voicemail status
Call going to voicemail for an extension was showing status answered instead of voicemail and missed call
2024-02-06 15:24:46 -07:00
FusionPBX b16b6e844e Bug Fix: Clean buffer before sending the rendered template 2024-02-06 12:30:09 -07:00
FusionPBX f97a67fb27 Bug Fix: Use the HTTP_HOST if the domain_uuid is empty 2024-02-05 18:58:16 -07:00
fusionate ebb68cccf5 Fax Server: Add date to cover sheet (if any), on Send. 2024-02-06 00:30:46 +00:00
FusionPBX 192e651722 Remove the single quote
Escape with a back slash didn't work
2024-02-05 17:22:42 -07:00
FusionPBX 1f5b979d0d Add escape_quote quoted values 2024-02-05 17:10:20 -07:00
FusionPBX 951c36b70b Add more fax permissions 2024-02-05 13:35:06 -07:00
Antonio Fernandez 42cf20a976 added descriptions to RG Destinations (#6885) 2024-02-05 10:57:12 -07:00
paulc97 6538e1c6d6 Translations for Emergency Logs and Time Conditions (#6879)
* Create app_languages.php

* Update emergency.php to use app_language

* Update app_languages.php

add translations for Weekdays and Months

* Update time_condition_edit.php

make month and day of week use translations
2024-02-05 10:53:34 -07:00
Antonio Fernandez 4bb8bbe8a4 Update app_config.php (#6884) 2024-02-05 10:49:12 -07:00
fusionate b33487a437 Operator Panel: Fix mispelling in code. 2024-02-03 05:22:32 +00:00
FusionPBX 9cdc0ac0ef Fix a bug with emergency_outbound_caller_id_number
Set call_date moved so it didn't overwrite another variable
2024-02-02 19:59:39 -07:00
frytimo 4fbd767c05 Fix bug where a dialplan detail item was deleted but still shows in the XML dialplan (#6875)
* Fix bug where a dialplan detail item was deleted but still shows in the
XML dialplan.

* Update dialplan_edit.php
2024-02-02 09:17:00 -07:00
fusionate bdbb8cef2d Voicemail: File to playback Recorded Name. 2024-02-02 00:36:36 +00:00
FusionPBX 537e241399 Add device location and description 2024-01-31 21:33:37 -07:00
fusionate 5fcde5caeb Remove deprecated language files within the Voicemails app. 2024-01-31 17:18:04 +00:00
fusionate 0433789355 Update Switch language files with missing macro. 2024-01-31 17:13:52 +00:00
FusionPBX d994c21ae1 Rename class scripts to switch_files 2024-01-30 18:02:39 -07:00
fusionate 143f85cd4f Voicemail Languages: Uncomment new options (doh!). 2024-01-31 00:37:19 +00:00
fusionate aafbce9583 Voicemail: Add Delete option (7) from endpoint for message/greeting/name recording. 2024-01-30 23:53:47 +00:00
Alex 4004a698c4 Added more Greek and Turkish translations (#6880)
* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php

* Update app_menu.php

* Update app_languages.php
2024-01-30 16:17:24 -07:00
fusionate b7045176ac Voicemail - Edit: Manage recorded name for Company Directory. 2024-01-30 17:10:19 +00:00
FusionPBX 3e62819779 Fix issue where smtp from would send as <> 2024-01-29 13:20:17 -07:00
fusionate 0316248bef Dialplan XML - Edit: Remove old Ace Editor control icons. 2024-01-24 21:00:25 +00:00
fusionate 814a363dfe Email Templates - Edit: Remove old Ace Editor control icons. 2024-01-24 20:57:19 +00:00
fusionate da67642e96 System Status: Remove old Ace Editor control icons. 2024-01-24 20:55:57 +00:00
fusionate 5f22dc17d0 Dialplan XML - Edit: Ace Editor icon change. 2024-01-24 20:49:06 +00:00
fusionate d6f93adeac Email Queue - Edit: Ace Editor icon change. 2024-01-24 20:48:49 +00:00
fusionate 6cb09bc2d0 Email Templates - Edit: Ace Editor icon change. 2024-01-24 20:48:33 +00:00
fusionate 7d84742212 System Status: Ace Editor icon change. 2024-01-24 20:48:02 +00:00
fusionate adf8a70200 Theme and language updates for upcoming ACE Editor changes. 2024-01-24 20:46:18 +00:00
FusionPBX 8b90eee5a3 Major version update release 5.2.0 2024-01-24 13:11:53 -07:00
FusionPBX 9d5bc340a4 Add the theme title setting 2024-01-24 12:51:13 -07:00
fusionate 02de5334e5 Restore default branding in window title. 2024-01-24 19:16:36 +00:00
fusionate 3938398b1f Email Queue - Edit: Hide Response field if response disabled. 2024-01-24 18:41:12 +00:00
FusionPBX 7231a37a57 Enable clearing the email_response 2024-01-24 11:13:57 -07:00
FusionPBX 6ec3c53c1f Email Queue save response false by default 2024-01-24 11:04:51 -07:00
FusionPBX 2d8f591534 Update send.php
Spelling correction and use domain_uuid to find settings
2024-01-24 10:58:12 -07:00
fusionate 657cbb1b48 System Status: Enhance Support Information section. 2024-01-24 16:49:10 +00:00
FusionPBX 7a24e2aa1f Update app_languages.php 2024-01-24 08:26:54 -07:00
FusionPBX 8b08756e0b Add a new permission system_view_support 2024-01-24 08:18:16 -07:00
FusionPBX 560a51cff7 Security - Update session validation and regenerate session id on login 2024-01-23 23:11:28 -07:00
FusionPBX cfbfd8ab52 Update system.php fix the quotes. 2024-01-23 21:08:53 -07:00
FusionPBX 04d08eb76c Update labels 2024-01-23 16:18:11 -07:00
frytimo 4e9dd1cdc9 Create information area for bug reports or errors to the Support Team (#6876)
* initial commit for system information bug report data

* add javascript to copy to clipboard

* add javascript to copy to clipboard

* Update copy_to_clipboard.js

* Update system.php

* Update app_languages.php

Add other languages

* move function file to resources/functions directory

* use the array returned from system_information function

* Update app_languages.php

* update path locations

* remove require files

* Merge origin/create_json_page_for_bug_report into create_json_page_for_bug_report
2024-01-23 16:11:51 -07:00
frytimo 1cba516bdc add Multi-cast variables to Yealink t54w provisioning template (#6877) 2024-01-23 15:51:13 -07:00
FusionPBX dce6406791 Update check_auth.php 2024-01-22 23:45:00 -07:00
FusionPBX ee202cd61d Security - validate session 2024-01-22 14:20:28 -07:00
FusionPBX 34321b2b1d Fix destination_context use public not null 2024-01-22 11:20:04 -07:00
FusionPBX 8e0c3b57e5 Fixed a few bugs in destination_summary.php 2024-01-20 21:20:34 -07:00
Andy Binder 6427dfa5ac Update Snom provisioning templates. (#6852) 2024-01-20 17:09:12 -07:00
paulc97 184dbd6d0b make time_condition_edit.php use time_format var (#6872)
Use the existing default Varriable time_format to adjust the options of the selects of "hours of day" and "time of day" accordingly
2024-01-20 17:00:58 -07:00
Antonio Fernandez 0de35ef4d7 Update indentation for blf_subscribe.lua (#6873) 2024-01-20 16:46:26 -07:00
frytimo a2c54d98b4 ensure $git_repo is an array and has elements before access (#6874) 2024-01-20 16:45:23 -07:00
fusionate 08659badc0 Destinations - List: Show all selected Actions, including Other actions. 2024-01-19 20:28:28 +00:00
fusionate ec934c3895 Log Viewer: Default to 512KB with other options. 2024-01-18 23:27:43 +00:00
FusionPBX 51fe5f1d4b Update xml_cdr.php 2024-01-18 14:13:44 -07:00
FusionPBX 32f8711b14 Set inline to true for Caller ID prefix 2024-01-17 15:14:27 -07:00
fusionate 0fe2f20375 Domains - Delete: Fix issue deleting multiple domains at once. 2024-01-17 21:33:23 +00:00
frytimo 0b977f044d Force close port (#6870)
* force close profile sip ports

* create force_close_port function

* force close profile sip ports
2024-01-17 09:05:28 -07:00
FusionPBX 81fbd31524 Add new permission ivr_menu_audio_edit 2024-01-16 11:51:14 -07:00
FusionPBX 9afb69dbda Update voicemail_greetings.php 2024-01-16 08:45:46 -07:00
FusionPBX 4d29fd8a98 Fix the voicemail greeting base64 upload 2024-01-16 08:44:22 -07:00
FusionPBX 0faa26e58f page.lua detect transfer return to sender 2024-01-15 13:28:09 -07:00
Krushali Shah 7f35e8178b Added User Column in Fax Queue. (#6848)
* enable/disable codec settings for all accounts

The template for codec enable settings was taking a value as 1 if it was set in the settings. It was not taking the actual value inside it. So I have edited the templates to check the value if it's set to true.

* Update fax_queue.php

I added a user column in the Fax Queue to see which user sent the fax.

* Update app_languages.php

Added field for User
2024-01-13 18:46:56 -07:00
Andy Binder 0e3283c76a Yealink corrections (#6851) 2024-01-13 18:29:24 -07:00
FusionPBX 4ebdcdf4b2 Update CDR new call center search 2024-01-13 17:07:11 -07:00
Antonio Fernandez 69fc0c8378 Added CDR dropdown for showing CC Queue calls (#6869)
* Added dropdown for filtering Call Center Queues

* added more translations

* fixed the wrong permission that I had originally

* added the  Call Center dropdown to advanced search
2024-01-13 14:14:51 -07:00
fusionate e665299fe4 Recording/Sound/Audio/Greeting/Voicemail - Playback: Fast Forward and Rewind with Left and Right arrow keys. 2024-01-12 22:34:51 +00:00
FusionPBX 59324ef997 Update page.lua
Control default recording max_length, silence_threshold, silence_seconds

Use the following default settings
- recording_max_length
- recording_silence_threshold, 
- recording_silence_seconds
2024-01-12 14:56:50 -07:00
Antonio Fernandez a4bfd1f20f added delayed paging (#6771)
* added delayed paging

* Modified the code to use sched_api as requested

* added the beep
2024-01-12 14:52:16 -07:00
FusionPBX c44d1825cf Add cc_side and call_center_queue_uuid 2024-01-12 13:57:48 -07:00
FusionPBX 869719aa05 Add presence_id for inbound destinations 2024-01-12 12:09:15 -07:00
FusionPBX c7038a78d9 Use feature key sync or dnd off/on code not both 2024-01-12 10:19:51 -07:00
FusionPBX f1bf0c6674 Add missing select closing tag 2024-01-10 18:11:19 -07:00
FusionPBX 5af47bb6ea Update language translation 2024-01-10 17:57:06 -07:00
FusionPBX fd538950c9 Update to use required default_ prefix 2024-01-10 17:40:04 -07:00
FusionPBX 5c6dd8bfb3 Add extension_language, extension_dialect and extension_voice 2024-01-10 16:32:29 -07:00
FusionPBX 50720e2af0 Update extension language 2024-01-10 16:21:37 -07:00
FusionPBX 5b022623c2 Get the list of installed languages 2024-01-10 16:12:32 -07:00
FusionPBX eb11cbbeed Add permission extension_language 2024-01-10 16:05:59 -07:00
FusionPBX 0ea2d00289 Add an option for extension language 2024-01-10 15:55:00 -07:00
fusionate ad86456b33 Prevent an error with array - in default_settings() method 2024-01-10 22:25:41 +00:00
FusionPBX bca1d8a573 Prevent an error with array
This is required for PHP 8.1 and higher. This is required for because PHP 8.1 introduced stricter type checking.
2024-01-10 15:08:20 -07:00
FusionPBX 23757cc2ae Create 075_default_language.xml
Added this to set default language only when its not already set. This is more flexible then setting it in global-variables or domain-variables.
2024-01-10 14:36:14 -07:00
fusionate ae5cb03547 CDR: Add permission for Account Code inclusion. 2024-01-10 21:34:53 +00:00
FusionPBX 530967f28a When using natural_sort cast to text 2024-01-10 12:22:36 -07:00
FusionPBX d428119f4f Fix natural_sort cast to text
If item being sorted is numeric data type need to cast to text.

This would usually be fixed during the upgrade. However BDR prevents using standard alter table data type commands.
2024-01-10 11:37:10 -07:00
FusionPBX 13d8a44f81 Update Yealink vlan settings 2024-01-09 11:49:10 -07:00
FusionPBX e0bb35b63b Add caller_destination to allowed variables 2024-01-09 10:20:25 -07:00
FusionPBX be652845cc Add sip_req_user to allowed variables 2024-01-09 10:05:18 -07:00
FusionPBX 776334844b Destination Summary update Total Calls
Purpose of  total calls is count calls to the destination number. This means calls from the server to the call center agent should be excluded.
2024-01-09 00:22:53 -07:00
Anthony e45904649b Added bulk translations to core app_languages.php files (#6868)
* Added Turkish translations to call_center_active/app_languages.php

* Added Turkish & Greek translations to extensions/app_languages.php
2024-01-08 18:02:39 -07:00
FusionPBX 94e5629012 Add authorized option
If set to authorized=true then logout will not require a password.
2024-01-08 15:02:46 -07:00
FusionPBX 521303265a Update xml_cdr_details.php 2024-01-05 18:08:25 -07:00
FusionPBX f63524a164 If exists use category fax from and from name 2024-01-05 17:24:08 -07:00
FusionPBX 113d97978a Set the email from address and name 2024-01-05 17:21:29 -07:00
FusionPBX e8699b37c9 Use voicemail from and from name
When category voicemail from and from name are provided use them.  If not provided then use category email from and from name.
2024-01-05 16:51:56 -07:00
FusionPBX aee125f23a Create send.php 2024-01-05 15:07:06 -07:00
FusionPBX 4032560291 Update y000000000107.cfg for yealink t43u
If feature_key_sync is set to 1 then make sure the off_code and on_code is not set

features.dnd.off_code =
features.dnd.on_code =
2024-01-04 23:02:29 -07:00
FusionPBX d0c3c93859 Destination summary unique callers
Use caller id number instead of name
2024-01-04 13:54:03 -07:00
fusionate 6a01e84316 Call Block - List: Restore Action column values. 2024-01-03 22:48:56 +00:00
fusionate 64591e413e Voicemail - Greetings: Margin adjustment on Delete button. 2024-01-03 22:33:46 +00:00
fusionate 365ac1c4ab Voicemail - Greetings: Hide Add button if max greetings reached (9). 2024-01-03 22:31:48 +00:00
Anthony 46954992a9 Added bulk translations to app/destinations files (#6866)
* Update destinations/app_languages.php

* Update destinations/app_menu.php
2024-01-03 10:54:42 -07:00
Anthony 010011dfa6 Added Greek & Turkish translations to core app_languages.php files (#6859)
* Added Greek & Turkish translations to core app_languages.php files

* Added Greek & Turkish translations to core app_languages.php files

* Added Greek & Turkish translations to core app_languages.php files
2024-01-03 10:54:15 -07:00
FusionPBX 6b9a530cf2 [Bug Fix] Extensions correct the template
Needed to add a few more items to the where clause to get the correct templates.
- domain_uuid
- server_address
2024-01-03 10:41:06 -07:00
FusionPBX fff13633be Add a new destination summary report 2024-01-02 18:54:22 -07:00
FusionPBX 0b968828fd Update app_menu.php 2024-01-02 14:28:20 -07:00
FusionPBX 07c50e45ab Update app_languages.php 2024-01-02 14:27:48 -07:00
fusionate f4d8ec9182 Email [Class]: Remove redundant if statements, simplify logic. 2023-12-29 18:19:59 +00:00
FusionPBX d0c3840a18 Minor version update 5.1.5 2023-12-29 10:03:04 -07:00
chansizzle e253681e54 improved title case (#6858) 2023-12-28 08:44:33 -07:00
FusionPBX 4e622d9b10 Handle no answer for unset status 2023-12-27 13:08:15 -07:00
fusionate e36003f907 Extension - Edit: Include password when determining assigned device lines. 2023-12-27 19:29:19 +00:00
fusionate 9a741780e9 Voicemail - Edit: Hide audio playback button on Default Greeting. 2023-12-27 18:43:18 +00:00
fusionate 212f91dd6c CDR - List: Hide broken direction icon if invalid Status. 2023-12-27 18:42:32 +00:00
FusionPBX 7de2ae0d23 Use last_bridge_hangup_cause to determine status 2023-12-27 11:37:36 -07:00
FusionPBX 4919633568 Create debian.service 2023-12-26 20:45:54 -07:00
FusionPBX 89ab37ce9d Create xml_cdr.php 2023-12-26 20:43:59 -07:00
jrmcclean 4484c9ad5f Update install.php (#6853)
* Update install.php

Update config directory for windows from www folder to Programdata directory
2023-12-22 15:32:42 -07:00
Anthony d002628237 Added Greek & Turkish translations to core app_languages.php files (#6856)
* Added Greek translations to dialplans/app_languages.php

* Added Turkish & Greek translations to email_queue/app_languages.php

* Added Greek translations to dialplan_outbound/app_languages.php

* Added Greek translations to dialplan_inbound/app_languages.php
2023-12-22 15:31:34 -07:00
denisent 6d3671840d account.3.fallback.timeout typo (#6855) 2023-12-21 20:39:42 -07:00
denisent 06aec4b707 account.3.fallback.timeout typo (#6854) 2023-12-21 20:39:13 -07:00
fusionate c3f20602e7 Upgrade: Minor layout adjustments. 2023-12-22 00:23:29 +00:00
fusionate 0e4f933da2 Functions: Minor clean up. 2023-12-22 00:09:26 +00:00
fusionate f6700881b2 Upgrade - Source Code: Offer optional apps source update. 2023-12-22 00:05:55 +00:00
fusionate cb58bd4fb1 Fax Queue - Update comments. 2023-12-21 19:30:51 +00:00
demonspork df6d56d148 Support updating optional installed apps via git (#6513)
* WIP: Support updating optional installed apps via git

* support app source update via cli

* Update app_languages.php

* Update index.php

* Refactor App Git updating

Refactor Optional App Git updating for more resilience and better handling of ssh remotes and to only update each repository once.

* git app updates fix gui updates for repo based updating
2023-12-21 12:28:04 -07:00
FusionPBX 7d819c4822 Use isset and if statements
Changed ifelse to if statement to make sure it evaluates each condition.
2023-12-20 13:59:33 -07:00
FusionPBX b9686aeae7 Set call center cancel call to missed 2023-12-20 13:49:48 -07:00
fusionate 7e674efe8b Call Forwarding - No Answer: Adjust failure_handler lua script to capture ALLOTTED_TIMEOUT disposition. 2023-12-19 19:44:45 +00:00
FusionPBX 4ecae0bc15 Minor version update 5.1.4 2023-12-18 16:12:40 -07:00
FusionPBX 9a6c8c68cb Update call_center_queue_edit.php 2023-12-18 11:03:07 -07:00
FusionPBX 71123be725 Change type array to text 2023-12-18 10:48:40 -07:00
FusionPBX d4da6d0a93 Use setting call_center record_name 2023-12-18 10:35:16 -07:00
FusionPBX f35ddec748 Add new setting call_center record_name 2023-12-18 10:33:47 -07:00
FusionPBX f587c41bb4 Add additional record template variables 2023-12-18 10:19:56 -07:00
FusionPBX ac599a1b48 Update {$mac}.cfg 2023-12-16 16:37:00 -07:00
FusionPBX 2866580c7c Add new permission and translation 2023-12-16 13:12:23 -07:00
FusionPBX 79817dc205 Add device template and outbound number columns
New Permissions
- extension_device_address
- extension_device_template

Add column Outbound Number for the outbound caller ID number
2023-12-16 13:08:34 -07:00
FusionPBX 38786cacbe Integrate device address in the extensions SQL query. 2023-12-16 11:56:30 -07:00
K-Flagman fbb2af9bad Device address in extensions list (#6811)
* Update app_config.php

adding permissions for showing MAC address in the extension list

* Update extensions.php

Adding a new column with MAC address info if it exists for the extension.

* Renamed the permission to access of extension address

* Fixed fields where we used deprecated "device mac address"

Also added support for "show all" button (load device list for current domain or get all devices)
2023-12-16 11:15:22 -07:00
frytimo 10e7b485e7 Schema change object property db instead of database->db (#6833) 2023-12-16 07:54:20 -07:00
fusionate ce8399a7a0 Theme: Add CSS for vertical resize of Ace Editor in Email Templates, Dialplan XML, etc 2023-12-16 00:27:21 +00:00
Andrew Alexander 3a0a7b48f1 openai transcription support (#6850)
* openai transcription support

* Update transcribe.php

* Update transcribe.php
2023-12-14 18:39:11 -07:00
FusionPBX 7a0aa3c4e0 Show the time since last agent call 2023-12-14 17:11:08 -07:00
FusionPBX eee9006c1f Add format_seconds function 2023-12-14 17:01:32 -07:00
FusionPBX 6b178a30c4 Adding time zone handling for call block 2023-12-13 16:43:53 -07:00
FusionPBX 6ea76efe15 Update app_defaults.php 2023-12-13 14:58:09 -07:00
volga629-1 50f9c2b3df E911 plugin (#6822)
* E911 Service plugin

Emergency Services availability is crucial part of FusionPBX.
This plugin Introduce  match need it visibility  into E911 services.
2023-12-13 14:46:58 -07:00
FusionPBX 3a854aa24a Get the snom local IP address
Show the local IP address on the Registrations page.
2023-12-13 14:28:55 -07:00
FusionPBX 40998fdac1 Fix color_adjust rgb error 2023-12-12 16:44:52 -07:00
FusionPBX 16ee4900b0 Factory defaulted phone middle softkey Contacts button is enabled by default. For that reason set directory_setting.local_directory.enabl to 1. 2023-12-11 17:58:05 -07:00
FusionPBX 942a4fc547 Rename yealink_rport_1 to yealink_rport. T58W , t5x, and vp530 2023-12-11 16:18:27 -07:00
Andy Binder 3be682c8cd prevent dupicates (#6841) 2023-12-11 13:24:57 -07:00
Andy Binder 15a4cca7ac German translation updates (#6846) 2023-12-11 12:32:54 -07:00
FusionPBX 2e032cd115 Update email_send.php
Move the 'transcribe enabled' message
2023-12-11 12:32:27 -07:00
FusionPBX 87f722e59d check if transcribe_enabled is enabled
We are checking this already on the voicemail. This checks the setting for transcribe_enabled in default and domain settings.
2023-12-11 12:21:15 -07:00
FusionPBX b919848425 Only include transcribe.php if enabled 2023-12-11 11:51:19 -07:00
FusionPBX 8a2688cfc5 Update email_queue.php 2023-12-11 11:48:58 -07:00
FusionPBX 88a4dbf3e6 Prevent error when the google_url is incorrect 2023-12-11 11:43:55 -07:00
FusionPBX cea06a548e Add provider_uuid to destinations dialplan xml and XML CDR 2023-12-09 23:07:36 -07:00
FusionPBX d48f4a0b89 Use not empty arround the arrays 2023-12-09 22:51:48 -07:00
FusionPBX a066277460 Fix Active calls SHOW ALL button 2023-12-08 21:43:02 -07:00
FusionPBX ee6b2a4d84 Check if empty to prevent errors 2023-12-08 21:24:52 -07:00
FusionPBX dedafeccc8 Account for dialplan_detail_enabled false 2023-12-08 16:19:17 -07:00
FusionPBX c7e687512f Add links on the column names 2023-12-08 10:04:53 -07:00
Anthony 3b297ad641 Added Greek translations to app_languages.php files (#6845)
* Added Greek translations to conferences_active/app_languages.php

* Added Greek translations to database_transactions/app_languages.php

* Added Greek translations to destinations/app_languages.php

* Added Greek translations to devices/app_languages.php
2023-12-07 18:41:31 -07:00
fusionate c1ad629d95 Operator Panel - Consistify refresh button, minor adjustments. 2023-12-08 01:41:01 +00:00
Ahron Greenberg (agree) e050827598 [dashboard] Fix memory exhaustion on system counts (#6844)
Getting all rows from the database caused PHP to exhaust the memory on systems with a huge amount of VM messages. This was fixed by querying from the database just the total counts.
2023-12-07 18:40:23 -07:00
frytimo 9f204a7cac move explode of $line inside of if block to fix php warning for line 93 (#6842) 2023-12-07 18:38:57 -07:00
frytimo 1664bef5d9 use empty check instead of string check to prevent php warning (#6843) 2023-12-07 18:38:01 -07:00
fusionate 1ceb2fcbc9 Calls Active - Add eavesdrop function, and appropriate permission. 2023-12-08 01:37:22 +00:00
FusionPBX 47161fae80 yealink multicast variables 2023-12-07 15:52:46 -07:00
FusionPBX 4c60313ed7 Remove deprecated fields id and v_id 2023-12-04 13:27:20 -07:00
FusionPBX 341dbe6eff Remove deprecated field ID
This was done so long ago that it can now be fully removed.
2023-12-04 10:44:38 -07:00
frytimo 3a4c2f72e2 Event socket bug fix and more docs (#6823)
* Add documentation to methods. Use is_resource for added type detection

* Allow connect to specify timeout in microseconds with default 30,000

* Update calling mechanism for event sockets

* Update project for new singleton event sockets

* remove unused variable

* catch errors on closing the socket
2023-12-02 17:16:18 -07:00
FusionPBX 44567f7a05 Updated call center use aliases
This fixes the call center context for the destination select list.
2023-12-01 14:58:35 -07:00
Andy Binder c3d625805f Correct german translations. (#6838) 2023-11-29 17:43:18 -07:00
FusionPBX 5d587fdd17 Add default value for queue_context 2023-11-29 13:57:43 -07:00
FusionPBX 142b4c4d5a Add default value for conference_context 2023-11-29 13:48:47 -07:00
Alex fa607d4bba Add context field to conference and call center queue (#6836)
* Update conference_edit.php

* Update app_config.php

* Update app_config.php

* Update call_center_queue_edit.php

* Update call_center_queue_edit.php
2023-11-29 13:26:48 -07:00
Andy Binder b0d87807b8 Check empty array (#6835) 2023-11-29 13:15:16 -07:00
Andy Binder c59f58b4ff If there are contact permissions enabled, assign the current user. (#6837) 2023-11-29 13:14:22 -07:00
fusionate 4fcc933c74 CDR - Export: Use language variables for PDD and MOS headings. 2023-11-28 00:15:29 +00:00
fusionate dab5b2d0d2 CDR - Export: Fix PDF export for Chrome. 2023-11-27 23:25:02 +00:00
FusionPBX 07392a64d8 Update Call Forward back button
Use history.back for the back button
2023-11-27 11:27:37 -07:00
fusionate 9e8adfc510 Device - Edit: Hide Device Provisioned IP and http/s links if empty. 2023-11-24 23:38:34 +00:00
fusionate 17077532d2 Device - Edit: Add Default Settings to set quantity of new Keys and Settings rows. Check all Delete box for Keys now selects vendor Key groups. 2023-11-24 23:29:46 +00:00
fusionate 0d079fdaba Device - Edit: Code reduction. 2023-11-24 22:13:52 +00:00
fusionate 546feeb190 Device - Edit: Remove deprecated code. 2023-11-24 21:59:42 +00:00
fusionate d9bf2e3c7b Device - Edit: Set device key vendor on device key type change. 2023-11-24 21:33:41 +00:00
fusionate 06aba14a59 Device - Edit: Fix character transposition (typo). 2023-11-24 21:32:22 +00:00
FusionPBX 3b550eb6e4 CC pass through hold_music variable 2023-11-24 09:32:39 -07:00
FusionPBX 2a0f2f53a0 Update assigned method use SQL IN 2023-11-23 11:51:47 -07:00
FusionPBX 837b2181ed Fixed EXPORT missing min and max duration 2023-11-21 10:50:07 -07:00
Anthony 624856090e Added Greek translations to app_languages.php files in fusionpbx/app/ (#6834)
* Added Greek translations to call_forward/app_languages.php

* Added Greek translations to call_recordings/app_languages.php

* Added Greek translations to active_calls/app_languages.php

* Added Greek translations to click_to_call/app_languages.php

* Added Greek translations to conference_center/app_languages.php

* Added Greek translations to conference_controls/app_languages.php

* Added Greek translations to conference_profiles/app_languages.php

* Added Greek translations to conferences/app_languages.php
2023-11-20 16:40:51 -07:00
FusionPBX 6f7be99083 Update call_center_agents.php 2023-11-19 22:29:32 -07:00
FusionPBX b19a67b1b1 Update agent status only when it has changed 2023-11-19 21:46:34 -07:00
FusionPBX edb0180bcf Add call_center queue_login options: dynamic or static (default) 2023-11-15 23:17:43 -07:00
FusionPBX cb5fbc68b1 Agent Status Dashboard Update
Fixes some problems on the agent status dashboard
2023-11-15 21:34:53 -07:00
FusionPBX 5e0c27d592 User Status was hidden by an in accessible session variable use user_status permission. There permission is more consistent with the rest of the project. 2023-11-15 08:28:49 -07:00
FusionPBX aa3a412523 Use !empty instead of count 2023-11-14 22:00:02 -07:00
FusionPBX d806fb1ede Use (?:\+1|1)? instead of \+?1? 2023-11-14 16:36:04 -07:00
frytimo 12fb45c99f Update logging class (#6829)
* logging class improvements

* remove alias

* adjust line print out for field order

* refactor class name to be inline with framework standard

* fix writing direct to write method
2023-11-13 18:55:52 -07:00
K-Flagman 2bbce23ff2 Ring groups extensions range (#6824)
Now you can use hyphen to set range for extensions in destinations list of ring group.
Example Destination: 2010-2030
2023-11-13 18:50:25 -07:00
agree 90946bbc07 [security] xml validate ringback fields (#6819) 2023-11-12 19:09:34 -07:00
FusionPBX 608031522a Update 2130 back to previous numbers.
On  version 1.0.11.79  firmware it seems to need these numbers.
2023-11-11 11:15:50 -07:00
FusionPBX 1a42c2083e yealink_summer_time default to 2 2023-11-09 13:51:30 -07:00
FusionPBX 968706dac2 Using this->apps more consistently
A previous commit moved from $apps to $this->apps but missed some required uses of the $apps array.
2023-11-08 14:18:24 -07:00
FusionPBX 0378f484c5 Update gxp2130 key numbers
The key numbers shown in the template are correct for most keys on the gpx2130.
2023-11-07 11:32:58 -07:00
fusionate 8bd5bc04dd Fax: Remove deprecated fax_send_greeting elements. 2023-11-07 15:40:34 +00:00
fusionate 99c9486ede Voicemail - Edit: Make audio playback code consistent with other apps. 2023-11-07 02:23:12 +00:00
fusionate e8d7ac6d03 Ring Group - Edit: Make audio playback code consistent with other apps. 2023-11-07 02:22:33 +00:00
fusionate 328e3de7c5 Conference Center - Edit: Make audio playback code consistent with other apps. 2023-11-07 02:22:16 +00:00
fusionate 09f92fef5f Call Flow - Edit: Make audio playback code consistent with other apps. 2023-11-07 02:21:54 +00:00
fusionate 62d67f3557 IVR Menu - Edit: Make playback code consistent with other apps, add playback of selected Invalid and Exit Sounds (Recordings and Sounds). 2023-11-07 02:20:45 +00:00
fusionate ff6a3ea71d Call Center Queue - Edit: Add playback of selected Greeting and Announce Sound (Recordings and Sounds). 2023-11-07 01:56:39 +00:00
fusionate 73e3cb6ce1 Conference Center - Edit: Remove temporary code, clean up. 2023-11-07 00:56:19 +00:00
FusionPBX c12dd29293 Add ring_group_domain to the admin group 2023-11-06 13:13:03 -07:00
fusionate dd3c14e0d1 Ring Group - Edit: Adjust permission block scope for playback code. 2023-11-06 19:51:56 +00:00
fusionate 2e01fc06c5 Conference Center - Edit: Adjust permission block scope for playback code. 2023-11-06 19:51:38 +00:00
fusionate 3dcca2aa3c Call Flow - Edit: Adjust permission block scope for playback code. 2023-11-06 19:51:02 +00:00
fusionate 22756de281 Call Flow - Edit: Add playback of selected Sound & Alternate Sound (Recordings and Sounds). 2023-11-06 19:45:40 +00:00
fusionate 548ea55660 Voicemail - Edit: Consistency updates for Greeting selection/playback code. 2023-11-06 19:44:21 +00:00
fusionate d04343043e Ring Group - Edit: Consistency updates for Greeting selection code. 2023-11-06 19:43:35 +00:00
fusionate c649b9d7b0 Conference Center - Edit: Use sounds class for Greeting selection. 2023-11-06 19:42:34 +00:00
fusionate 145025946a Sounds [Class]: Update to support use on Conference Center Greeting. 2023-11-06 19:42:02 +00:00
fusionate e5f2a697bf Voicemail - Edit: Add playback of selected Greeting. 2023-11-06 17:12:07 +00:00
FusionPBX 2ed2ac63ae Add table exists and set row exists 2023-11-03 23:55:35 -06:00
fusionate 10513ef745 Conference Center - Edit: Add playback of selected Greeting (Recordings and Sounds). 2023-11-04 01:06:01 +00:00
fusionate afc7487a40 Ring Group - Edit: Minor adjustments. 2023-11-04 01:05:01 +00:00
fusionate d058b97f64 Theme: Adjust select box left padding for Firefox. 2023-11-03 20:33:50 +00:00
fusionate 64ba5e268c Ring Group - Edit: Add playback of selected Greeting (Recordings and Sounds). 2023-11-03 20:33:02 +00:00
frytimoandFusionPBX 372db3cc50 Patch contacts calling multiple schemas (#6826)
* improve performance for contacts app_defaults

* add app_name and app_uuid as constants in class

* performance boost by removing scanning app_defaults twice

* Update app_defaults.php

* Update schema.php

---------

Co-authored-by: FusionPBX <markjcrane@gmail.com>
2023-11-03 14:04:07 -06:00
FusionPBX 5712df1118 Update dialplan_edit.php
Fix the indentation and use not empty.
2023-11-03 13:34:45 -06:00
FusionPBX fa123ff069 Build dialplan xml from the array. More efficient to save data and xml in one step. 2023-11-03 02:18:57 -06:00
FusionPBX 9da5a10a77 Change the permission to device_profile_view 2023-11-02 23:37:42 -06:00
FusionPBX fd2516a297 Update timezones.conf.xml with tabs 2023-11-02 17:02:28 -06:00
FusionPBX 3c57c72044 Revert timezones.conf.xml 2023-11-02 16:59:25 -06:00
FusionPBX 05c52a3fdc Update timezones.conf.xml 2023-11-02 16:51:09 -06:00
FusionPBX 65b6600e82 Changing format from 11/02 to 02 Nov
Reason for the change better worldwide support. Problem with numeric dates is that it can have a date 07/09 and does mean July 9 or September 7. In the US its standard month then day. However this isn't universal. This makes the dates confusing. So changed this to day and abbreviated month.
2023-11-02 12:45:38 -06:00
FusionPBX 71349f56b2 Fixed ring group hold_music
This commit fixes a problem for music on hold defined in global-variables and domain-variables dialplans.
2023-11-02 12:18:28 -06:00
FusionPBX 86373fd3b4 Update permission for device profiles. Use device_profile_view, device_profile_select and device_profile_edit 2023-11-01 18:43:53 -06:00
FusionPBX 3b5e21a0d8 Update app_config.php 2023-11-01 18:36:28 -06:00
volga629-1 8ed5dd4c76 New Devices permissions profile select and edit. (#6821)
* Device select permissions

* Apply device select permissions.

* Fix missing index

Fix missing index
2023-11-01 18:33:13 -06:00
FusionPBX ac1cb868b8 Update GRP series phones to support memory keys and expansion modules 2023-11-01 17:29:58 -06:00
FusionPBX 3e367ca388 Support Grandstream GXP200EXT Expansion modules 2023-11-01 15:42:34 -06:00
FusionPBX de1f1af13a Add grandstream_ip_address_mode 2023-10-31 15:48:04 -06:00
markjcrane b19e3aee4f Add icon for outbound missed 2023-10-31 14:33:43 -06:00
FusionPBX a3dbdf7b70 Unset the domain at the before next loop 2023-10-30 20:49:21 -06:00
FusionPBX 12964eb83e Prevent an error by casting to int 2023-10-30 20:29:56 -06:00
fusionate 834be519ba Device - Edit: Make Provision button use first Line found on local server. 2023-10-30 19:19:56 +00:00
FusionPBX ac6db02fab Update Grandstream GRP phones with version 2 templates no p-codes 2023-10-28 22:35:55 -06:00
FusionPBX 77a13ad9ea Update Grandstream version 2 templates. No P-codes 2023-10-28 02:31:24 -06:00
FusionPBX d3f37c0f84 Add Accept-Ranges for HTTP content delivery 2023-10-27 23:56:57 -06:00
FusionPBX 16b64e42fc Add a new import for bridges 2023-10-27 21:01:23 -06:00
FusionPBX 9b1493d567 Prevent a warning if the bridge variables are disabled 2023-10-27 20:26:33 -06:00
fusionate 935774d3c0 Device - Edit: Increase width of Keys and Settings input fields. 2023-10-27 18:45:25 +00:00
FusionPBX a391bcc977 Add version and fix LastName 2023-10-26 15:05:09 -06:00
emak-Corey e5025d394f Fix vm_disk_quota (#6814)
The current condition #vm_disk_quota <= #message_sum is checking the lengths of vm_disk_quota and message_sum, not their actual values. So, it won't compare the numeric values for your intended logic.

If they're strings that can be safely converted to numbers, use tonumber():

if (vm_disk_quota and message_sum and tonumber(vm_disk_quota) <= tonumber(message_sum)) then
  -- your code
end

This will compare them as numbers, ensuring that vm_disk_quota is less than or equal to message_sum.
2023-10-26 13:53:38 -06:00
agree 37d7c43e17 [dialplan] Bind digit bleg without a lua script (#6817) 2023-10-26 13:27:31 -06:00
FusionPBX 3514a489d1 After application conference skip the row 2023-10-25 11:23:38 -06:00
FusionPBX 72fd0fe343 Move code for calculating the duration 2023-10-25 11:13:20 -06:00
FusionPBX 6ff5a8df3c Update column order duration first and status last 2023-10-25 10:52:42 -06:00
FusionPBX cb65e7f66e Prevent an warning by using preg_quote
This accounts for special characters like a * in the value.
2023-10-25 10:41:03 -06:00
FusionPBX 57d8d52336 Add Call Detail Record status no answer 2023-10-25 09:37:17 -06:00
Alex fd1820c399 Update app_languages.php (#6816) 2023-10-25 09:29:45 -06:00
markjcrane 8593b49b0c Add inbound and local busy 2023-10-25 09:28:45 -06:00
FusionPBX 3630d29872 Add a new status no_answer 2023-10-25 09:03:04 -06:00
markjcrane 4796e4ada2 Add icon cdr no_answer 2023-10-25 08:58:07 -06:00
FusionPBX 42c21e715e Update footer.php 2023-10-24 20:05:21 -06:00
FusionPBX bc5d938434 Minor version update 5.1.3 2023-10-24 17:09:07 -06:00
agree a785292811 [eavesdrop] Fix eavesdropping wrong uuid (#6815)
If the extension is in a call and also receives calls at the same time, the query will return more than one uuid causing to eavesdrop the wrong channel.
2023-10-24 17:07:55 -06:00
FusionPBX 2be533687d Add permissions for call detail record details. Purpose to hide advanced details from the admin group. 2023-10-24 17:06:39 -06:00
markjcrane 713e79a57d Add a local missed icon 2023-10-24 16:02:01 -06:00
FusionPBX d7e2ab900b Call Detail Record add status and use billsec for the duration 2023-10-24 15:58:13 -06:00
markjcrane d7280b5040 Add icon for busy 2023-10-24 14:57:42 -06:00
markjcrane ac214929dd Add an icon for missed calls 2023-10-24 11:21:26 -06:00
fusionate d5ae60897c Footer: Fix Domain Selector for superadmin when Domain Reseller app installed and Login Destination set. 2023-10-24 16:57:54 +00:00
FusionPBX f09b04eb01 Only add default value if application was not found 2023-10-23 16:13:07 -06:00
FusionPBX 1e06e3aa1c Move the find_app method to the xml_cdr class 2023-10-23 15:15:58 -06:00
FusionPBX b2e05fb0f6 IVR Menu: allow sending the ${uuid} variable 2023-10-23 14:25:04 -06:00
FusionPBX d6fb5ac7b8 Call Flow Summary add the IVR Menus status to routed 2023-10-21 20:57:11 -06:00
FusionPBX 115e9e0055 Use lower case status values to match the translation labels. 2023-10-21 13:26:26 -06:00
FusionPBX 134188e383 Add support for the status translations. 2023-10-21 13:25:07 -06:00
FusionPBX 588d96ea6f Add translations for waited, parked, unparked, and routed 2023-10-21 13:23:09 -06:00
FusionPBX 026b2f4f44 CDR Call Flow Summary add a status for Call Flows 2023-10-21 10:40:31 -06:00
FusionPBX b05fd42b0c In the destinations array use the feature code extension for the Call Flow
There are two call flow feature categories in the destination select list. One is used for routing call flows and the other is used to toggle the call flow between destinations.
2023-10-21 10:23:14 -06:00
FusionPBX 032673c922 When finding matches add regular expression matching 2023-10-21 10:11:49 -06:00
FusionPBX f09efd3a14 Add the extension value to the destinations array 2023-10-21 10:09:00 -06:00
FusionPBX ea05178018 Add new rows when callee_id_number exists 2023-10-20 22:16:48 -06:00
FusionPBX 19a6252e1f Make the IVR Menu invalid sound optional. 2023-10-20 16:38:02 -06:00
FusionPBX 1f91a8e713 Update command for a default label one time. 2023-10-20 15:49:30 -06:00
FusionPBX 9fb99cc137 Add additional error handling 2023-10-19 20:02:55 -06:00
FusionPBX 8158518837 CDR call flow array add bridged_time, answer_time and update park 2023-10-19 19:49:51 -06:00
FusionPBX 100ccc0db2 Call Flows allow feature code and alternate destination to be optional. If feature code is empty and pin number is provided then require the pin number. 2023-10-19 19:35:36 -06:00
fusionate fb834ccf8a Ring Groups - List: Clean up of order by. 2023-10-19 18:55:49 +00:00
fusionate 0e9fd9aaa6 Extensions - List: Minor adjustment to order by, remove deprecated method of natural_sort() integration. 2023-10-19 18:55:19 +00:00
fusionate 1b2bcf2719 Voicemails - List: Implement natural sorting of Voicemail ID column. 2023-10-19 18:54:30 +00:00
fusionate c6a924f492 Time Conditions - List: Implement natural sorting of Number column. 2023-10-19 18:54:07 +00:00
fusionate 2832e7ab66 Conferences - List: Implement natural sorting of Extension column. 2023-10-19 18:53:29 +00:00
fusionate 124428961a Conference Centers - List: Implement natural sorting of Extension column. 2023-10-19 18:52:54 +00:00
fusionate a6f29aadeb Call Flows - List: Implement natural sorting of Extension column. 2023-10-19 18:52:26 +00:00
fusionate 9244b65acc Call Center - List: Implement natural sorting of Extension column. 2023-10-19 18:49:54 +00:00
fusionate 4fcd98638b Order By [Function]: Only use natural sort function for PostgreSQL databases. 2023-10-19 18:45:42 +00:00
fusionate f1ab4c365e Destination/Action Select: Implement natural sorting for multiple apps. 2023-10-19 18:02:00 +00:00
MD Riaz bca1e75e02 illogical condition specified in fax_send (#6812) 2023-10-19 11:21:24 -06:00
fusionate 6487688b50 Fax Server - List: Implement natural sorting of Extension column. 2023-10-19 16:49:13 +00:00
fusionate a14dd3d71c Call Forward - List: Implement natural sorting of Extension column. 2023-10-19 16:48:45 +00:00
fusionate 1926e60b6e IVR Menu - List: Implement natural sorting of Extension column. 2023-10-19 16:48:13 +00:00
fusionate 0de8570dd3 Order By [Function]: Updated to support natural sorting. 2023-10-19 16:46:48 +00:00
FusionPBX 82f82bd87c Update xml_cdr_details.php 2023-10-18 21:28:01 -06:00
FusionPBX 6ce57690ee Update the call_flow_summary array add a new row for inbound calls 2023-10-18 21:26:25 -06:00
FusionPBX ab0fc211d8 Use SQL concat as its safer with NULL values. 2023-10-18 21:18:39 -06:00
FusionPBX fce21d36c3 Use SQL concat as its safer with NULL values. 2023-10-18 21:14:54 -06:00
fusionate 2d9bec9295 Call Recordings: Added ability to do bulk download. 2023-10-19 00:40:50 +00:00
Anthony 4b5bf191f6 Added Greek translations to FusionPBX apps (#6813)
* Added Greek translations to call_broadcast/app_languages.php

* Added Greek translations to call_center_active/app_languages.php

* Added Greek translations to call_centers/app_languages.php

* Added Greek translations to call_flows/app_languages.php
2023-10-18 15:32:35 -06:00
fusionate 92e9c526d6 Menu [Class]: Minor adjustmemt to HTML output. 2023-10-18 13:13:39 +00:00
fusionate 291c03fc75 Call Block - Delete: Update class to allow delete of Global call blocks, if call_block_domain permission exists. 2023-10-17 22:35:29 +00:00
FusionPBX 7c98190bde Add new class methods called call_flow and call_flow_summary 2023-10-17 16:21:17 -06:00
fusionate aee8664098 Call Block: Add Domain field for global support. 2023-10-17 21:43:09 +00:00
frytimo 77e4bb9865 Reorder project path and project root defines (#6787)
* reorder the project_root and project_path define so isset is called
before the config key project.root is used

* ensure project path begins with a '/'

* rewrite for empty string in project_path

* Update require.php
2023-10-16 21:54:56 -06:00
fusionate dd1ba159ab Menu - Split longer submenus into two columns of items. 2023-10-17 00:27:59 +00:00
FusionPBX 694d701757 Auto decode when urlencoding is detected 2023-10-16 09:55:20 -06:00
FusionPBX 4b7a93d4a9 Add CDR call summary status messages 2023-10-15 02:20:22 -06:00
FusionPBX 7d5aacf326 Add application details for valet park 2023-10-15 00:15:32 -06:00
FusionPBX 247a1c76c7 Update xml_cdr_details
- Add the time zone
- Add timestamps to the array
- Improve the call summary array
2023-10-14 22:15:32 -06:00
FusionPBX c7ae3b3a63 [SECURITY] Prevent showing Missed and Recent Calls to users that are not in xml_cdr_domain group and not assigned any extensions. 2023-10-13 14:25:02 -06:00
FusionPBX 1ebf3d0826 Works better for this code block to run after building the primary array. 2023-10-13 05:07:01 -06:00
FusionPBX 47bdb893c5 Call Flow Summary when the count array is 1 then use start_epoch and end_epoch 2023-10-13 04:52:58 -06:00
FusionPBX 6381e52d60 Update CDR call summary to improve call centers, conferences. and park. Added an option to debug. Also using transfer_time, bridge_time, and created_time. 2023-10-13 04:18:47 -06:00
FusionPBX a35de4aba3 Call Summary fix voicemails name and extra row 2023-10-13 01:52:09 -06:00
FusionPBX d5f39cf0b2 Call Flow Summary add name, application, link, and a new summary style. Controlled by summary_style setting. 2023-10-12 23:58:11 -06:00
FusionPBX 4dbd4e10a3 Add missing default settings 2023-10-11 17:27:11 -06:00
FusionPBX 76404a03da Clear the $array variable before its used again 2023-10-11 16:57:50 -06:00
FusionPBX d02ab9de91 manage-presence to a default value of true 2023-10-10 20:13:32 -06:00
Anthony 8b39073265 Added Greek translations to app_languages.php under fusionpbx/apps (#6810)
* Added Greek translations to access_controls/app_language.php

* Added Greek translations to basic_operator_panel/app_language.php

* Added Greek translations to bridges/app_languages.php
2023-10-09 22:23:59 -06:00
FusionPBX 2ccc8c8b12 Change how the virtual extension is disabled
Made this change because if the XML is not generated then extension variables are not available. These variables are needed for call forward and follow me.
2023-10-09 19:52:13 -06:00
FusionPBX 21d5eb5a98 Assign ring_group_domain to the admin group 2023-10-09 10:28:01 -06:00
Anthony 84f487cba8 Added Greek translations for fusionpbx/core. (#6809)
* Added Greek translations to  domain_settings/app_languages.php

* Added Greek translations for domains/app_languages.php

* Added Greek translations for groups/app_languages.php

* Added Greek translations for menu/app_languages.php

* Added Greek translation for upgrade/app_languages.php

* Added Greek & Great Britain translations for user_logs/app_languages.php

* Added Greek translations for user_settings/app_languages.php

* Added Greek translations for users/app_languages.php
2023-10-06 13:46:03 -06:00
Anthony 575590d749 Added Greek translations in core. (#6808)
* Added Greek translations to databases app_languages.php

* Added Greek translation for default_settings/app_languages.php

* Added Greek translations for install/app_languages.php
2023-10-04 16:26:01 -06:00
fusionate bb140e05a3 Provisioning - Yealink [T54W]: Better remote and/or local wallpaper/background compatibility. 2023-10-04 21:22:30 +00:00
FusionPBX b9bef2ee9a Clear the dial_string variables
Clearing dial_string prevents poisoning the value for extensions in the ring group destinations that exist but are not registered.
2023-10-04 14:55:08 -06:00
FusionPBX 39d975a279 Add allowed API commands regex and sofia_contact 2023-10-04 12:27:45 -06:00
FusionPBX ab0f5d3295 Update agent state to waiting 2023-10-04 09:00:15 -06:00
fusionate 0e073230ce Fax Server - New: Tidy and add array check. 2023-10-04 00:09:58 +00:00
fusionate e1fe7435e4 Fax Server - New: Honor Fax > allowed_extension defined in Default/Domain Settings on Preview and Send. 2023-10-04 00:04:19 +00:00
FusionPBX f6a3881308 Removed magic quotes as it was deprecated in PHP 7.4 2023-10-02 12:47:12 -06:00
FusionPBX 3d2b12b88e Fixed the contact search 2023-10-02 11:44:05 -06:00
FusionPBX ebb8193add outbound_route_to_bridge break only after matching a route
Changing this to behave like a call in the dialplan only break if a matching outbound route has been found.
2023-09-29 16:56:30 -06:00
FusionPBX afc9061fef Get the fax_response from the fax_queue table 2023-09-28 23:12:58 -06:00
FusionPBX 3eb37e473e Update the version to 5.1.2 2023-09-28 15:04:55 -06:00
FusionPBX 725e617b61 Translation using double quotes so we are using single quotes. 2023-09-28 13:00:14 -06:00
FusionPBX c19899097d Send FAX when gateway fails try the next one 2023-09-28 12:41:12 -06:00
fusionate 7984ddeb64 Fax Queue - Edit: Add Response field and translations. 2023-09-28 18:37:36 +00:00
FusionPBX 3c170f8597 Check all active modules with one event socket request
This makes the modules page lighter on resources and load much faster.
2023-09-28 10:48:36 -06:00
emak-Corey 434b691883 Add ability to set custom logout destination (#6806)
Allow administrators to set a custom default setting called logout_destination which will redirect the user to a destination of their choosing.
2023-09-28 09:35:50 -06:00
OskarFranck 0773a346c2 Bulk changes of Swedish translations (#6807)
authored-by: oskfra <oskar.franck@bahnhof.net>
2023-09-28 09:32:34 -06:00
FusionPBX 7ab357380b simplify the while statement 2023-09-27 23:30:18 -06:00
FusionPBX bf8c6f8078 Simplify event_socket code 2023-09-27 23:23:56 -06:00
FusionPBX 7246961b9f Add multicast page provision variables for Yealink t43u 2023-09-27 08:50:04 -06:00
chansizzle e2ad49b26f added missing hyperlink text to dismiss login messages (#6805) 2023-09-25 17:09:42 -06:00
FusionPBX f8c6089f6c Dreprecated this file 2023-09-25 13:09:58 -06:00
FusionPBX 42015e4e41 This file was replaced by xml_cdr_import.php 2023-09-25 13:08:08 -06:00
FusionPBX 8f0c11fa6c Make sure to start the PHP SESSION 2023-09-25 13:01:40 -06:00
FusionPBX 09dd09305c Fix CDR import for HTTP POST
Add syslog server messages with more details when sending access denied.
2023-09-25 12:55:20 -06:00
FusionPBX aad0721b94 Add nowrap to profile name 2023-09-25 12:19:46 -06:00
fusionate 513177688f Active Calls: Adjust Created time to correct timezone. 2023-09-23 14:50:51 +00:00
fusionate 3cbe36c91f Voicemail [Script]: Return user to current message options after listening to message envelope, instead of returning to the root mailbox menu. 2023-09-23 04:46:32 +00:00
fusionate 2600c7d159 Voicemail: Honor switch > voicemail > dir value in Default/Domain Settings. 2023-09-23 03:51:51 +00:00
FusionPBX ceb6872aa6 Organize the SQL to be easier to read
Created code to handle a similar task for ring groups. Method used for ring groups is easier and more organized so updated this code to be similar.
2023-09-22 18:01:58 -06:00
FusionPBX 8329120436 Use ring_group_domain and ring_group_all permissions 2023-09-22 17:37:09 -06:00
FusionPBX 0a85ae340b Fix the ring group count 2023-09-22 17:29:31 -06:00
FusionPBX ba41028649 Add new ring_group_domain permission 2023-09-22 17:14:27 -06:00
FusionPBX 30e9cd66c2 Allow users to view assigned Ring Groups 2023-09-22 17:13:47 -06:00
FusionPBX b0a2f3340a Fix ring group delay timing
Use sofia_contact instead of user bridge alias. Added a useful note from @greenbea describing why there was a problem with follow me delay timing.

When you originate user/ext@domain, switch_ivr_originate will call the user endpoint. The user endpoint isn't a real endpoint. It is a shortcut to get the real dialstring from the user's XML and calls again switch_ivr_originate, so essentially, what happens is switch_ivr_originate reads twice originate_delay_start variable and waits double the time.

Your patch fixes the case when the endpoint is the user/ endpoint but will make the delay half the time if called with other endpoints like sofia.

The ultimate solution would be freeswitch to handle this in the user endpoint function. I would suggest that fusion manually get the user's dial string from the XML and call originate on it and not rely on the user (shortcut) endpoint for ring group and follow me.
2023-09-22 16:23:14 -06:00
FusionPBX 6030843ca8 Fix follow-me delay timing
Use sofia_contact instead of user bridge alias. Added a useful note from @greenbea describing why there was a problem with follow me delay timing.

When you originate user/ext@domain, switch_ivr_originate will call the user endpoint. The user endpoint isn't a real endpoint. It is a shortcut to get the real dialstring from the user's XML and calls again switch_ivr_originate, so essentially, what happens is switch_ivr_originate reads twice originate_delay_start variable and waits double the time.

Your patch fixes the case when the endpoint is the user/ endpoint but will make the delay half the time if called with other endpoints like sofia.

The ultimate solution would be freeswitch to handle this in the user endpoint function. I would suggest that fusion manually get the user's dial string from the XML and call originate on it and not rely on the user (shortcut) endpoint for ring group and follow me.
2023-09-22 16:01:59 -06:00
FusionPBX d13027a575 FAX cover page fixed hide logo when empty 2023-09-22 10:44:52 -06:00
FusionPBX 28fa49a84a Hide extension import button 2023-09-21 16:34:23 -06:00
FusionPBX 4d1194828d Simplify the permissions class 2023-09-21 12:07:32 -06:00
FusionPBX 89ce374d8d Failover for fax when there are multiple bridges
When the outbound route has more than one bridge statement use it for fail over.

One thing to keep in mind FreeSWITCH seems to limit the sized of the originate command. So we have to be careful how large the string is. If the originate string is too long it will be truncated and fail. For this reason commented out a few variables.
2023-09-21 00:07:42 -06:00
FusionPBX cfd773fbf4 Update switch.php 2023-09-20 22:36:55 -06:00
frytimo 9a982edc2e update the settings set method to use params instead of array (#6804)
* update the settings set method to use params instead of array

* remove test code
2023-09-20 17:59:37 -06:00
fusionate 518c32efe6 Misc: Mitigate PHP 8.1 warnings. 2023-09-20 20:49:27 +00:00
fusionate 044b91ec6c Destination - Edit: Mitigate PHP 8.1 warnings. 2023-09-20 19:13:33 +00:00
fusionate d4f7efa4eb Event Guard: Remove parameters from event_socket connect() method. 2023-09-20 18:50:41 +00:00
fusionate d9d17a6917 Misc: Remove parameters from event_socket_create() calls. 2023-09-20 18:43:17 +00:00
FusionPBX 8ee8e30b31 Save CDR to the file system 2023-09-20 11:25:36 -06:00
fusionate 2a54aa025c Misc: Remove parameters from event_socket_create() call. 2023-09-20 17:25:24 +00:00
fusionate e4bb0dda6a Footer: Resolve PHP 8.1 warning. 2023-09-20 17:19:19 +00:00
FusionPBX 2d51bba633 Update template name to gxv3240 2023-09-20 09:25:31 -06:00
fusionate a91f0cf346 CDR - Export: Integrate permissions on CSV output. 2023-09-20 01:58:13 +00:00
fusionate 5c9b02fec2 CDR - Export: Fix file name for Show All, correct average MOS value. 2023-09-20 01:24:46 +00:00
fusionate aab2880153 CDR - Export: Integrate permissions on PDF output. 2023-09-20 01:15:04 +00:00
fusionate 3659e07df9 CDR - Export: Include Caller Destination column in PDF. 2023-09-19 23:53:51 +00:00
chansizzle bcaec41841 add phone icon to the call button (#6802)
* add phone icon to the call button

* Update click_to_call.php
2023-09-19 16:37:39 -06:00
FusionPBX 169bf8788a Update code using the settings class 2023-09-19 12:56:08 -06:00
FusionPBX 4b9ff10eef Update email.php 2023-09-19 12:22:00 -06:00
FusionPBX 7f2934ff24 Use !empty when using the setting->get method 2023-09-19 12:17:04 -06:00
FusionPBX 0931324d13 Update email class to use the settings class 2023-09-19 12:14:58 -06:00
FusionPBX a7dce663a1 Simplified array structure as it changed when using the settings class 2023-09-19 11:40:18 -06:00
FusionPBX 24bdccdb0b Use the settings class instead of the SESSION 2023-09-18 14:59:21 -06:00
FusionPBX 925e37e31f Add yealink_dnd_allow to a few yealink templates 2023-09-18 09:44:03 -06:00
FusionPBX bf47bbcc47 Event Socket settings auto defaults or custom using config.conf 2023-09-16 15:07:41 -06:00
FusionPBX 0e55637bf6 Correct the description in the comment 2023-09-16 14:18:27 -06:00
FusionPBX 675811f79c Create event_socket.conf.lua 2023-09-16 04:34:23 -06:00
FusionPBX 3fbb536aa6 Update esl.lua get event_socket from default settings 2023-09-16 03:27:27 -06:00
FusionPBX bc9e5abaf8 Update directory.php 2023-09-16 02:19:29 -06:00
FusionPBX 551eda9080 Update fax_send.php 2023-09-16 02:15:35 -06:00
FusionPBX 905d175e59 Use settings class for fax send 2023-09-16 02:02:38 -06:00
FusionPBX fb8b6db71d Get event socket details from the settings class 2023-09-16 02:00:57 -06:00
FusionPBX c6d966395e Use settings class for app_defaults.php 2023-09-16 00:22:12 -06:00
FusionPBX 81b92075a9 Delete app/fax_queue/app_defaults.php 2023-09-15 23:26:33 -06:00
FusionPBX 602495abe9 Delete app/extension_settings/app_defaults.php 2023-09-15 23:25:29 -06:00
FusionPBX 882fae6d22 Delete app/call_forward/app_defaults.php
Removing this as it is empty and not used.
2023-09-15 23:18:52 -06:00
FusionPBX 13529f9b9f Update app_defaults.php 2023-09-15 23:03:20 -06:00
FusionPBX 66713b969b Update app_defaults.php 2023-09-15 23:01:12 -06:00
fusionate 98292e04c8 Group Permissions: Adjust button collapsing. 2023-09-15 13:27:08 +00:00
fusionate cb1f5a1429 Group Permissions: Tidy Protected column heading. 2023-09-15 13:24:11 +00:00
FusionPBX f1890976b2 Use settings class for the fax queue 2023-09-14 22:15:37 -06:00
FusionPBX 0011878dcd Use the settings class to get the event socket details 2023-09-14 21:23:27 -06:00
FusionPBX 7a0420f138 Use the settings class to get event_socket details 2023-09-14 21:18:23 -06:00
FusionPBX 7cb3c0b211 Fix the category and subcategory 2023-09-14 21:17:19 -06:00
FusionPBX 5afce93f03 Update email_queue to use settings class 2023-09-14 16:10:13 -06:00
FusionPBX 741f2a160e Add event socket and xml rpc values to default settings 2023-09-14 15:48:19 -06:00
FusionPBX 3f4c4702c5 Add set method to the settings class 2023-09-14 15:43:52 -06:00
FusionPBX f6b92fc565 Bypass permission check for command line 2023-09-14 15:42:56 -06:00
FusionPBX e5f6c3067a settings class use get and refine further 2023-09-14 12:28:38 -06:00
fusionate 8986a2c947 DISA [Script]: Add minor delay before first voice prompt. 2023-09-14 17:47:19 +00:00
fusionate efcf484e57 Ace Editor: Include license and version note. 2023-09-13 19:05:45 +00:00
fusionate cebab0b812 PHP/Script/Provision/XML Editor: Updated Ace to latest version (1.24.2). 2023-09-13 18:58:29 +00:00
FusionPBX 1880688813 Use settings class needed for the email_queue 2023-09-13 09:54:00 -06:00
FusionPBX 0ec6ed696c Create a new settings class 2023-09-13 09:46:52 -06:00
FusionPBX dd2fbf7745 Update destinations.php 2023-09-13 08:19:06 -06:00
FusionPBX 11df74853a Change variable from permission to permission_name 2023-09-11 11:54:36 -06:00
FusionPBX 5f688f2e1d Update functions.php 2023-09-11 11:43:31 -06:00
Andrew 702abf76ee Update sip_profile_edit.php (#6800)
add one space to fix sql error
2023-09-11 01:46:11 -06:00
FusionPBX 2c5724c6ed Add new class methods and use them 2023-09-11 01:45:19 -06:00
fusionate 6411f50750 Destination Select: Set minimum width on second select box. 2023-09-08 22:05:19 +00:00
FusionPBX 9684541dbe PHP 8.1 end function requires array 2023-09-08 09:33:54 -06:00
fusionate 7f48c0f676 Device - Edit: Integrate QR provisioning for Sipnetic softphone. 2023-09-07 23:26:27 +00:00
FusionPBX bd1ff0b9e7 Improved wordwrap on active calls 2023-09-07 16:02:19 -06:00
FusionPBX d8cc5d4ad5 Adjust version 2 command 2023-09-07 13:43:40 -06:00
FusionPBX 6036f36a8b Use gscloud for oauth2 for Google v2 2023-09-07 13:37:25 -06:00
FusionPBX 556c1fe284 Add Google API v2 speech transcription 2023-09-07 13:13:05 -06:00
FusionPBX d2bb186b33 Prevent an error for PHP 8.1 plus 2023-09-06 16:32:11 -06:00
FusionPBX eb2b530859 Check to see if the provider_prefix setting is enabled 2023-09-06 14:57:22 -06:00
FusionPBX 2ce9254ce5 Add provider_prefix when sending fax
Only add if it the provider_prefix is set in the domain-variables dialplan
2023-09-06 12:03:42 -06:00
FusionPBX 7d7a0cf603 Add fallback method to get caller_id 2023-09-06 10:38:17 -06:00
FusionPBX b5b69071fc Add respond 404 not found 2023-09-05 16:48:03 -06:00
FusionPBX 677824fe5a Save destination_number, sip_to_user, and sip_req_user 2023-09-02 10:37:29 -06:00
FusionPBX 0e2506aa8b Prevent an error if all Time conditions presets are disabled 2023-09-01 14:01:47 -06:00
FusionPBX c285a104f0 Fixed dynamic destinations when switching domains 2023-09-01 10:57:55 -06:00
FusionPBX 14e3cf5546 Order by the IVR menu option order then digits 2023-08-31 13:46:19 -06:00
FusionPBX 879eb67a8a Minor version update 5.1.1 2023-08-30 18:47:45 -06:00
fusionate a83d62e59c Default Settings - List: Show Copy even when only a single domain. 2023-08-31 00:09:49 +00:00
FusionPBX d9eae802ec Change double quotes to single quotes 2023-08-30 17:59:07 -06:00
Alex 5825e58451 Fixed translations (#6794)
* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_languages.php
2023-08-30 14:52:32 -06:00
FusionPBX 360edbf43f Update app_menu.php 2023-08-30 14:11:02 -06:00
FusionPBX 9c09269159 Set the search value to lower case 2023-08-30 13:48:35 -06:00
Anthony 4cc864d29a Fixing/Adding missing translations in app_languages and app_menu files (#6795) 2023-08-30 13:18:55 -06:00
FusionPBX 3a2593002f Sanitize the application data 2023-08-30 12:52:54 -06:00
FusionPBX 40a7ed7b15 xml sanitize allow $1 and $2
Continue to remove any ${variables}  in this format
2023-08-30 12:50:08 -06:00
FusionPBX 9f7f30a507 Update he-il for SIP profiles 2023-08-30 10:53:42 -06:00
FusionPBX 6edd6cda6b Fix the spelling for SESSION 2023-08-29 14:31:01 -06:00
FusionPBX 744ec4edaa Make sure voicemail_id is set before using it 2023-08-29 13:33:29 -06:00
sdwru 3b617cb35c Update switch.php (#6785)
Running install.php the first time after a manual (not using script) install on Debian 11, there is a failure due to $_SESSION['switch']['conf']['dir'] not yet existing.  Subsequent installs will work.  It's only on the first install that it fails.  There may be better ways but this is the fix I came up with that works for me.
2023-08-29 10:56:31 -06:00
jonathanblack1000 254d58f614 Second try fixing line keys on GXP2135 (#6793)
GXP2135 requires special handling on keys to handle line key vs BLF/Speed dial vs blank.
2023-08-29 10:55:19 -06:00
FusionPBX 988e2490c5 Set the switch session variable tusing the name
To be consistent the $_SESSION['switch'] variables currently require the name. Without this switch session variables are inconsistent.

This inconsistently caused a problem with creating the recording directory for new domains.
2023-08-28 15:07:31 -06:00
FusionPBX 4eb7fdf007 Update default and domain setting session array
In the "domains" class upgrade method, only set the value when either "default_setting_enabled" is true or "domain_setting_enabled" is equal to true.
2023-08-28 14:45:39 -06:00
FusionPBX 401a914726 Add recordings archive sub directory 2023-08-28 10:08:28 -06:00
FusionPBX 5de3e514df Add Fanvil mac addres detectection
Also arrange the code in alphabetical order
2023-08-28 09:37:02 -06:00
FusionPBX bf520a38d7 Save the category name and not the description in vars.xml 2023-08-26 23:03:38 -06:00
fusionate 959c72abc9 IVR Menu - Edit: Refine greeting playback experience. 2023-08-26 23:34:02 +00:00
fusionate b2a6c4eae2 Theme [CSS]: Update to support next commit to IVR Edit greeting playback. 2023-08-26 23:33:08 +00:00
fusionate 2a14368914 Template: Remove invalid paste. 2023-08-26 23:30:58 +00:00
FusionPBX 29f04383cb Inbound number not found send to the log 2023-08-26 15:29:58 -06:00
jonathanblack1000 c97ac88cd2 Fix line keys on GXP2135 and contribute GHP6xx template. (#6780) 2023-08-26 10:50:36 -06:00
Mihir Gajjar 9933b44335 Snom D735 Smartlabel Settings (#6776)
* Updated Snom template for Intercom policy

Allow to make changes to Snom intercom policy

* Updated Snom D735 template for setting the Smartlabel display mode

This settings allows to set a domain setting on how we want to see the labels on Snom D735 phones
2023-08-26 10:49:33 -06:00
K-Flagman ff578da24e Play button in IVR Menu edit (#6786)
* add play button for ivr long and short greetings
2023-08-26 10:17:04 -06:00
Luis Daniel Lucio Quiroz 97835fdd6a Update intercept.lua (#6788) 2023-08-26 10:12:52 -06:00
FusionPBX 88169f9e30 Use the call direction from the xml_cdr table 2023-08-25 16:13:02 -06:00
FusionPBX 85f6793a41 Set bridge statements variables 2023-08-25 16:05:33 -06:00
FusionPBX bc2e64af28 Change variable name caller_direction to call_direction 2023-08-25 15:21:08 -06:00
FusionPBX 2cf06240c5 Add 809 to outbound route continue_on_fail
This changes accounts for the following error.

Reason: SIP;cause=809;text="GATEWAY_DOWN"
2023-08-25 13:17:46 -06:00
FusionPBX bdef43ce3f Add a trim on the Bridge variables
When there is a space at the end and used in the string then FreeSWITCH will not add the variables to CDR variables.
2023-08-25 09:37:31 -06:00
FusionPBX 13550f214d Default the bridge variables to enabled false 2023-08-24 19:42:32 -06:00
FusionPBX cc454ff882 Switch from input text to textarea for destination_number 2023-08-24 14:41:40 -06:00
FusionPBX 18b3c41f47 Better bridge profile support 2023-08-24 14:28:19 -06:00
FusionPBX fac9bad46f Fix the default_language, default_dialect and default voice variables that were broken by xml.sanitize 2023-08-24 09:26:10 -06:00
FusionPBX 5439a80095 Account for dialplan_detail_enabled is null as enabled true
The interface treats dialplan_detail_enabled null as enabled so in the outbound_route_to_bridge treat it as enabled true.
2023-08-23 19:23:11 -06:00
FusionPBX dcd00c3a15 Find and use the firewall path
Needed as Debian 8 and 9 have a different iptables location than Debian 11
2023-08-23 15:29:04 -06:00
FusionPBX 9a19fb4f82 Add full path to iptables and pfctl
Full path to iptables needed now for Debian 11 since /usr/sbin is no longer in the path by default.
2023-08-23 10:09:24 -06:00
FusionPBX 5182e5e2d5 Change value to textarea 2023-08-22 16:58:47 -06:00
FusionPBX d109fad050 Add the closing foreach for the yealink t46s template 2023-08-22 12:11:56 -06:00
FusionPBX 595197279b Fix the yealink t41s template 2023-08-22 12:10:47 -06:00
FusionPBX 281a367715 Update the Yealink T46s to use a loop
This allows using any number of accounts (lines) the phone can support.
2023-08-22 11:11:47 -06:00
FusionPBX 1df1afa365 Make pdf from tif only if tiffinfo returns a result 2023-08-22 10:28:43 -06:00
FusionPBX 11c98a860e Get the extension_uuid using the voicemail_id 2023-08-22 10:01:24 -06:00
FusionPBX 85d194799f Update 240_page.xml change kick all to hup all
This removes the message when call ends that they have been kicked from the page (conference call)
2023-08-20 23:03:57 -06:00
FusionPBX 086189a769 Use the bridge parts array 2023-08-19 23:16:34 -06:00
FusionPBX a703a75480 Bridge statement builder 2023-08-19 22:50:39 -06:00
FusionPBX 5aa22da9e3 Add label-bridge_variables 2023-08-19 20:14:11 -06:00
FusionPBX 110f6189de Rename profile to bridge_profile 2023-08-19 18:40:55 -06:00
FusionPBX 1f75cfe2d8 Updated to simplify building bridge statement 2023-08-19 11:04:52 -06:00
FusionPBX 30f028e6be Add new bridge translations. 2023-08-19 11:00:38 -06:00
FusionPBX 0f26078e93 Add new bridge default settings 2023-08-19 10:59:40 -06:00
fusionate 30034610ac Voicemail [Class]: Adjust messages() method to avoid count() error if voicemail_messages() method return false. 2023-08-17 23:31:33 +00:00
fusionate 5d7232c0c7 Outbound Route - Add: Include hangup under Additional Options for Gateway and Alternate 1 & 2 2023-08-17 23:19:31 +00:00
FusionPBX 4ed611a187 When the toggle field and values are empty then use defaults 2023-08-15 21:37:05 -06:00
FusionPBX 18df561513 Moved the redirect to resources/require.php 2023-08-15 16:20:27 -06:00
FusionPBX 2ceb4453c5 If the config_file doesn't exist then redirect to the install.php 2023-08-15 16:19:22 -06:00
FusionPBX 9f004f696e Use trim on the file contents and use file_exists 2023-08-14 21:35:31 -06:00
FusionPBX 0fb78ee94e Enable setting a custom config_file path 2023-08-14 21:18:10 -06:00
FusionPBX 8ceaa5ce01 Add default setting call_center refresh numeric 1500 2023-08-14 20:28:42 -06:00
FusionPBX 71d2f47ca6 Update call_center_active.php 2023-08-14 20:24:23 -06:00
FusionPBX b74880f28e Add setting call_center refresh type numeric 2023-08-14 20:23:06 -06:00
FusionPBX f5bdf6662e Enable customizing the config_file path for LUA 2023-08-14 19:35:41 -06:00
FusionPBX 90cbc08551 Replace GLOB_BRACE as its not compatible with all systems 2023-08-14 12:04:00 -06:00
FusionPBX 4bf775897e Replace GLOB_BRACE as its not supported by all systems. 2023-08-14 11:27:40 -06:00
FusionPBX 93058bfc57 outbound_route_to_bridge check to see if the dialplan_detail_enabled is set to true 2023-08-10 15:16:17 -06:00
FusionPBX 956b8686f9 Bug fix use tonumber function to detect non numeric required for those using extension number alias 2023-08-10 13:57:30 -06:00
FusionPBX e8e6673be8 Remove some redudant code for finding record_path and record_name 2023-08-10 09:05:42 -06:00
FusionPBX 503b59267e Fix call center agent call recording
Issue was caused by xml sanitize and this change allows using strftime.
2023-08-09 11:13:09 -06:00
jacobbuscher-bt 719912f453 Fix time conditions using 'minute-of-day' switching 1 minute early (#6784)
Fix time conditions using 'minute-of-day' switching 1 minute early.

We are augmenting the value saved based on what select option is selected.

12:00 AM - 11:59 PM will now serialize as 1-1439 as expected
11:59 PM - 11:59 PM will now serialize as 1440-1439 which is unexpected behavior due to freeswitch's 'wrap around' behavior but acceptable.

Additional information
minute-of-day	1-1440	minute of the day (midnight = 1, 1am = 60, noon = 720, etc)
2023-08-08 14:24:14 -06:00
fusionate 6627e40e76 Default/Domain/User Settings: New setting setting_value_input_type to control Value input field type. 2023-08-04 22:38:41 +00:00
FusionPBX 0304dfffad Use empty record_name
Recording call through a ring group its not setting the record_name variable this picks up the recording from the file system.
2023-08-04 13:53:37 -06:00
fusionate 6000c8235c Dashboard - Ring Group Forward: Remove form elements if ring_group_forward permission not assigned. 2023-08-04 19:28:08 +00:00
fusionate 578dcc6256 Voicemail - Email [Function]: Send basic email even if email template is disabled. 2023-08-04 03:49:29 +00:00
FusionPBX 68f575b941 Fixed a problem for inbound destinations with more than one caller ID routing conditions.
Its a minor bug as it created the dialplan XML so the call will work. However the dialplan details needed the group incremented.
2023-08-03 12:18:02 -06:00
markjcrane 49f30603ce Disable Resync_Periodic by setting the value to 0 2023-08-03 10:01:16 -06:00
markjcrane 1c19fc17ba Enable_URI_Dialing_ set to Yes to support blf prefix like park+ 2023-08-03 08:50:48 -06:00
jacobbuscher-bt 2d872a3566 Finalize changing origination_callee_id_name from destination_number to caller_destination in domain_variables and variables dialplan. (#6782)
* Add the / character to the ALLOWED_CHARS variable to fix bug with front slashes being stripped. Previously was turning /var/lib/freeswitch into varlibfreeswitch

* Update app_defaults.php

Updating app defaults for Dialplan -> Domain Variables to set origination_callee_id_name to match the caller_destination instead of the destination number so that if you call another tenant in the same Fusion instance without is_local enabled the caller_destination shows instead of the tenant's called extension.

* Update app_defaults.php

Instead of removing the export all together we need to update it from destination_number to caller_destination.

* Update 020_domain-variables.xml

Set origination callee ID to caller_destination so internal calls don't show "Outbound Call"

---------

Authored-by: Jacob Buscher <jacob@bfitec.com>
2023-08-02 12:25:45 -06:00
jacobbuscher-bt 80580bb931 Fixing 'origination_callee_id_name' in domain variables dialplan (#6781)
Updating app defaults for Dialplan -> Domain Variables to set origination_callee_id_name to match the caller_destination instead of the destination number so that if you call another tenant in the same Fusion instance without is_local enabled the caller_destination shows instead of the tenant's called extension.

---------

Authored-by: Jacob Buscher <jacob@bfitec.com>
2023-08-01 18:19:26 -06:00
FusionPBX 167e5e1740 Create 080_caller_id.xml 2023-08-01 18:14:56 -06:00
FusionPBX 6832d9e081 Deprecate cidlookup dialplan 2023-08-01 18:08:05 -06:00
FusionPBX 2582511594 Update and rename contacts.lua to database.lua 2023-08-01 18:03:58 -06:00
FusionPBX b436200a61 Create index.lua 2023-08-01 18:02:02 -06:00
fusionate f61302190b Dashboard - Missed Calls: Apply domain time zone. 2023-08-01 20:33:51 +00:00
fusionate d68f9826f1 Dashboard - Recent Calls: Apply domain time zone. 2023-08-01 20:33:39 +00:00
FusionPBX bd513b3629 Rename inbound_lookup.lua to contacts.lua 2023-08-01 10:31:47 -06:00
FusionPBX 398278c7ea Create inbound_lookup.lua 2023-08-01 00:09:54 -06:00
fusionate d4d5799342 Email Queue - Job & Service: Fix variable issues to mitigate errors. 2023-08-01 00:14:00 +00:00
fusionate 2c298113f6 Destinations - Import/Export: Include Conditions and Actions. 2023-07-31 23:27:45 +00:00
fusionate ac6d9e5c45 Functions - Adjust is_json() function for better detection. 2023-07-31 23:27:15 +00:00
fusionate 3d6c1cbb99 Destinations - List: Adjust case on Type column value, Center Prefix, mitigate PHP 8.1 warning. 2023-07-31 23:26:03 +00:00
fusionate f88af8b502 Extensions - List: Hide Call Group if no permission to view. 2023-07-31 22:37:37 +00:00
fusionate bd12b748e6 Destinations - List: Resolve PHP 8.1 warning. 2023-07-31 21:07:30 +00:00
FusionPBX 5e04c63824 remove origination_callee_id_name from domain-variables dialplan
Removed for these reasons.
- Update the caller's display when making a call to the final destination number rather than the number that was called.
- It also modifies the phone history of called numbers
- Changes the number in Call Detail Records  to the final destination rather than Caller's Destination
2023-07-29 12:55:52 -06:00
FusionPBX 8b502d4355 Remove origination_callee_id_name from domain-variables dialplan 2023-07-29 11:18:36 -06:00
KRooney 0654f26a1a Patch 43 (#6778)
* Create D713

snom D713
2023-07-27 16:07:44 -06:00
Andy Binder 74bdf82dba Update event_guard.php (#6779) 2023-07-26 14:05:57 -06:00
FusionPBX ee610ccb1b convert the message_length value to a number
Fixed this error "attempt to compare number with a string"
2023-07-25 13:12:42 -06:00
FusionPBX e40cc6efd1 Prevent an error in PHP 8.1warning 2023-07-24 14:14:48 -06:00
FusionPBX ee591e730e Use !empty function instead of != '' 2023-07-22 15:21:01 -06:00
markjcrane cd91040eb5 Prevent edge case PHP 8.1 warnings for domain_uuid and domain_name 2023-07-22 14:21:11 -06:00
markjcrane 32409f88b2 Add new default settings login_text_color, login_text_size and login_text_font 2023-07-22 14:19:57 -06:00
markjcrane 6d2eae5987 Change the default login_text_color to #282828 2023-07-22 14:18:39 -06:00
FusionPBX 1bbe9b2f8a Prevent CPU number showing more than once on BSD 2023-07-22 09:50:11 -06:00
fusionate 7dd146689f Functions: Update for PHP 8.1 2023-07-19 02:15:16 +00:00
fusionate c4f3565a15 Provisioning: Updates to resolve PHP 8.1 warnings. 2023-07-17 22:52:03 +00:00
FusionPBX 0a2d29b20d Update {$mac}.cfg 2023-07-16 16:29:45 -06:00
FusionPBX f7b1ad53cd is_writable prevents an error writing to the file if its not writable 2023-07-16 00:44:18 -06:00
FusionPBX 5e69a3deda Update xml_cdr_details.php 2023-07-15 23:59:05 -06:00
FusionPBX 64c5eeb35e Update xml_cdr_details.php 2023-07-15 23:49:55 -06:00
FusionPBX 1b6bf49a62 Update xml_cdr_details.php 2023-07-15 23:43:19 -06:00
4202 changed files with 454666 additions and 241407 deletions
+1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "";
$apps[$x]['description']['nl-nl'] = "";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
+56 -21
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2022
Portions created by the Initial Developer are Copyright (C) 2018-2024
the Initial Developer. All Rights Reserved.
*/
@@ -118,10 +118,7 @@
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::api("reloadacl");
//redirect the user
header('Location: access_control_edit.php?id='.$id);
@@ -154,13 +151,14 @@
$array['access_controls'][0]['access_control_default'] = $access_control_default;
$array['access_controls'][0]['access_control_description'] = $access_control_description;
$y = 0;
if (is_array($access_control_nodes)) {
if (!empty($access_control_nodes) && is_array($access_control_nodes)) {
foreach ($access_control_nodes as $row) {
//validate the data
if (!is_uuid($row["access_control_node_uuid"])) { continue; }
if ($row["node_type"] != 'allow' && $row["node_type"] != 'deny') { continue; }
if (isset($row["node_cidr"]) && $row["node_cidr"] != '') {
$cidr_array = explode("/", str_replace("\\", "/", $row["node_cidr"]));
if (filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
if (isset($cidr_array[1]) && is_numeric($cidr_array[1])) {
@@ -172,23 +170,61 @@
$node_cidr = $row["node_cidr"].'/32';
}
}
elseif(filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
else if(filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
//valid IPv6 address
$node_cidr = $row["node_cidr"];
}
//build the sub array
if (!empty($node_cidr)) {
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = $row["access_control_node_uuid"];
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $row["node_type"];
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $node_cidr;
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = $row["node_description"];
$y++;
//unset values
unset($cidr_array, $node_cidr);
}
//digs to attempt
else {
$digs[] = [
'type'=>$row['node_type'],
'value'=>$row['node_cidr'],
'description'=>$row['node_description'],
];
}
}
//build the sub array
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = $row["access_control_node_uuid"];
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $row["node_type"];
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $node_cidr;
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = $row["node_description"];
$y++;
//unset values
unset($cidr_array, $node_cidr);
}
//attempt digs
if (!empty($digs) && is_array($digs)) {
foreach ($digs as $dig) {
$response = shell_exec("dig +noall +answer ".escapeshellarg($dig['value'])." | awk '{ print $5 }'");
if (!empty($response)) {
$lines = explode("\n", $response);
foreach ($lines as $l => $line) {
if (!empty($line) && filter_var($line, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
//check for duplicate
if (!empty($array['access_controls'][0]['access_control_nodes']) && is_array($array['access_controls'][0]['access_control_nodes'])) {
foreach ($array['access_controls'][0]['access_control_nodes'] as $n => $node) {
if ($node['node_cidr'] == $line.'/32') { continue 2; }
}
}
//add to array
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = uuid();
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $dig['type'];
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $line.'/32';
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = !empty($dig['description']) ? $dig['description'] : $dig['value'];
$y++;
}
}
}
}
}
}
//save the data
@@ -204,10 +240,7 @@
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::async("reloadacl");
//redirect the user
if (isset($action)) {
@@ -326,6 +359,7 @@
}
}
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -440,6 +474,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>";
echo "<br /><br />";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -162,6 +162,8 @@
echo "</div>\n";
echo $text['description-import']."\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
//loop through the lines and fields
@@ -195,6 +197,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
echo "<input name='action' type='hidden' value='import'>\n";
@@ -370,6 +373,7 @@
echo $text['description-import']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
@@ -440,6 +444,7 @@
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
echo "<input name='type' type='hidden' value='csv'>\n";
+8 -3
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
Portions created by the Initial Developer are Copyright (C) 2018-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -44,8 +44,11 @@
//define variable
$search = '';
//add the settings object
$settings = new settings(["domain_uuid" => $_SESSION['domain_uuid'], "user_uuid" => $_SESSION['user_uuid']]);
//set from session variables
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
$list_row_edit_button = $settings->get('theme', 'list_row_edit_button', 'false');
//get the http post data
if (!empty($_POST['access_controls'])) {
@@ -154,7 +157,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-access_controls']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-access_controls']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo button::create(['label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'type'=>'button','id'=>'button_reload','link'=>'access_controls_reload.php'.(!empty($search) ? '?search='.urlencode($search) : null),'style'=>'margin-right: 15px;']);
if (permission_exists('access_control_add')) {
@@ -189,6 +192,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) {
@@ -239,6 +243,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+4 -11
View File
@@ -40,18 +40,11 @@
//set the variables
$search = $_REQUEST['search'] ?? '';
//create event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
//run the command
$result = rtrim(event_socket_request($fp, 'api reloadacl'));
//run the command
$result = rtrim(event_socket::api('reloadacl'));
//add message
message::add($result, 'alert');
//close the connection
fclose($fp);
}
//add message
message::add($result, 'alert');
//redirect
$search = preg_replace('#[^a-zA-Z0-9_\-\.]# ', '', $search);
+1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Gérer les listes de contrôle d'accès";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "წვდომის კონტროლის სიების მართვა";
$apps[$x]['description']['nl-nl'] = "Beheer toegangs controle lijsten";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
+7 -18
View File
@@ -29,12 +29,11 @@
//add the access control list to the database
$sql = "select count(*) from v_access_controls ";
$database = new database;
$num_rows = $database->select($sql, null, 'column');
if ($num_rows == 0) {
//set the directory
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
$xml_dir = $setting->get('switch','conf').'/autoload_configs';
$xml_file = $xml_dir."/acl.conf.xml";
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/switch/resources/conf/autoload_configs/acl.conf';
@@ -54,7 +53,6 @@
$xml_string .= " <node type=\"allow\" cidr=\"192.168.0.0/16\"/>\n";
$xml_string .= " </list>\n";
$xml_string .= " <list name=\"providers\" default=\"deny\">\n";
//$xml_string .= " <node type=\"allow\" domain=\"".$_SESSION['domain_name']."\"/>\n";
$xml_string .= " </list>\n";
$xml_string .= " </network-lists>\n";
$xml_string .= "</configuration>\n";
@@ -76,10 +74,9 @@
$array['access_controls'][0]['access_control_name'] = $access_control_name;
$array['access_controls'][0]['access_control_default'] = $access_control_default;
$p = new permissions;
$p = permissions::new();
$p->add('access_control_add', 'temp');
$database = new database;
$database->app_name = 'access_controls';
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
$database->save($array, false);
@@ -109,10 +106,9 @@
$array['access_control_nodes'][0]['node_cidr'] = $node_cidr;
$array['access_control_nodes'][0]['node_description'] = $node_description;
$p = new permissions;
$p = permissions::new();
$p->add('access_control_node_add', 'temp');
$database = new database;
$database->app_name = 'access_controls';
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
$database->save($array, false);
@@ -134,13 +130,11 @@
//rename domains access control to providers
$sql = "select count(*) from v_access_controls ";
$sql .= "where access_control_name = 'domains' ";
$database = new database;
$num_rows = $database->select($sql, null, 'column');
if ($num_rows > 0) {
//update the access control name
$sql = "update v_access_controls set access_control_name = 'providers' ";
$sql .= "where access_control_name = 'domains' ";
$database = new database;
$database->execute($sql, null);
unset($sql);
@@ -148,7 +142,6 @@
$sql = "update v_sip_profile_settings set sip_profile_setting_value = 'providers' ";
$sql .= "where (sip_profile_setting_name = 'apply-inbound-acl' or sip_profile_setting_name = 'apply-register-acl') ";
$sql .= "and sip_profile_setting_value = 'domains'; ";
$database = new database;
$database->execute($sql, null);
unset($sql);
@@ -158,24 +151,21 @@
$cache->delete("configuration:sofia.conf:".gethostname());
//create the event socket connection
if (!$fp) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
}
$esl = event_socket::create();
//reload the acl
event_socket_request($fp, "api reloadacl");
event_socket::async("reloadacl");
//rescan each sip profile
$sql = "select sip_profile_name from v_sip_profiles ";
$sql .= "where sip_profile_enabled = 'true'; ";
$database = new database;
$sip_profiles = $database->select($sql, null, 'all');
if (is_array($sip_profiles)) {
foreach ($sip_profiles as $row) {
if ($fp) {
if ($esl->is_connected()) {
$command = "sofia profile '".$row['sip_profile_name']."' rescan";
//echo $command."\n";
$result = event_socket_request($fp, "api ".$command);
$result = event_socket::api($command);
//echo $result."\n";
}
}
@@ -187,7 +177,6 @@
$sql .= "where access_control_uuid not in ( ";
$sql .= " select access_control_uuid from v_access_controls ";
$sql .= ")";
$database = new database;
$database->execute($sql, null);
unset($sql);
+66
View File
@@ -6,12 +6,14 @@ $text['title-access_controls']['ar-eg'] = "عناصر التحكم في الوص
$text['title-access_controls']['de-at'] = "Zugriffskontrolle";
$text['title-access_controls']['de-ch'] = "Zugriffskontrolle";
$text['title-access_controls']['de-de'] = "Zugriffskontrolle";
$text['title-access_controls']['el-gr'] = "Έλεγχοι πρόσβασης";
$text['title-access_controls']['es-cl'] = "Controles de acceso";
$text['title-access_controls']['es-mx'] = "Controles de acceso";
$text['title-access_controls']['fr-ca'] = "Contrôle d'accès";
$text['title-access_controls']['fr-fr'] = "Contrôle d'accès";
$text['title-access_controls']['he-il'] = "בקרת גישה";
$text['title-access_controls']['it-it'] = "Controllo Accessi";
$text['title-access_controls']['ka-ge'] = "წვდომების კონტროლი";
$text['title-access_controls']['nl-nl'] = "Toegangs Controle";
$text['title-access_controls']['pl-pl'] = "Kontrola dostępu";
$text['title-access_controls']['pt-br'] = "Controles de Acesso";
@@ -20,6 +22,7 @@ $text['title-access_controls']['ro-ro'] = "Controale de acces";
$text['title-access_controls']['ru-ru'] = "Контроль доступа";
$text['title-access_controls']['sv-se'] = "Åtkomstkontroll";
$text['title-access_controls']['uk-ua'] = "контроль доступу";
$text['title-access_controls']['tr-tr'] = "Erişim Kontrolleri";
$text['title-access_controls']['zh-cn'] = "访问控制";
$text['title-access_controls']['ja-jp'] = "アクセス制御";
$text['title-access_controls']['ko-kr'] = "액세스 제어";
@@ -30,12 +33,14 @@ $text['title-access_control_nodes']['ar-eg'] = "العقد";
$text['title-access_control_nodes']['de-at'] = "Knoten";
$text['title-access_control_nodes']['de-ch'] = "Knoten";
$text['title-access_control_nodes']['de-de'] = "Knoten";
$text['title-access_control_nodes']['el-gr'] = "Κόμβοι";
$text['title-access_control_nodes']['es-cl'] = "Nodos";
$text['title-access_control_nodes']['es-mx'] = "Nodos";
$text['title-access_control_nodes']['fr-ca'] = "nœuds";
$text['title-access_control_nodes']['fr-fr'] = "nœuds";
$text['title-access_control_nodes']['he-il'] = "בלוטות";
$text['title-access_control_nodes']['it-it'] = "Nodi";
$text['title-access_control_nodes']['ka-ge'] = "კვანძები";
$text['title-access_control_nodes']['nl-nl'] = "Knooppunten";
$text['title-access_control_nodes']['pl-pl'] = "węzły";
$text['title-access_control_nodes']['pt-br'] = "Nodes";
@@ -44,6 +49,7 @@ $text['title-access_control_nodes']['ro-ro'] = "Noduri";
$text['title-access_control_nodes']['ru-ru'] = "Узлы";
$text['title-access_control_nodes']['sv-se'] = "Noder";
$text['title-access_control_nodes']['uk-ua'] = "вузли";
$text['title-access_control_nodes']['tr-tr'] = "Düğümler";
$text['title-access_control_nodes']['zh-cn'] = "节点";
$text['title-access_control_nodes']['ja-jp'] = "ノード";
$text['title-access_control_nodes']['ko-kr'] = "노드";
@@ -54,12 +60,14 @@ $text['title-access_control_node']['ar-eg'] = "العقدة";
$text['title-access_control_node']['de-at'] = "Netzknoten";
$text['title-access_control_node']['de-ch'] = "Netzknoten";
$text['title-access_control_node']['de-de'] = "Netzknoten";
$text['title-access_control_node']['el-gr'] = "Κόμβος";
$text['title-access_control_node']['es-cl'] = "Nodo";
$text['title-access_control_node']['es-mx'] = "Nodo";
$text['title-access_control_node']['fr-ca'] = "noeud";
$text['title-access_control_node']['fr-fr'] = "noeud";
$text['title-access_control_node']['he-il'] = "צומת";
$text['title-access_control_node']['it-it'] = "Nodo";
$text['title-access_control_node']['ka-ge'] = "კვანძი";
$text['title-access_control_node']['nl-nl'] = "Knooppunt";
$text['title-access_control_node']['pl-pl'] = "węzeł";
$text['title-access_control_node']['pt-br'] = "Nó";
@@ -68,6 +76,7 @@ $text['title-access_control_node']['ro-ro'] = "Nod";
$text['title-access_control_node']['ru-ru'] = "Узел";
$text['title-access_control_node']['sv-se'] = "Nod";
$text['title-access_control_node']['uk-ua'] = "вузол";
$text['title-access_control_node']['tr-tr'] = "Düğüm";
$text['title-access_control_node']['zh-cn'] = "节点";
$text['title-access_control_node']['ja-jp'] = "ノード";
$text['title-access_control_node']['ko-kr'] = "마디";
@@ -78,12 +87,14 @@ $text['title-access_control']['ar-eg'] = "التحكم في الوصول";
$text['title-access_control']['de-at'] = "Zugangskontrolle";
$text['title-access_control']['de-ch'] = "Zugangskontrolle";
$text['title-access_control']['de-de'] = "Zugangskontrolle";
$text['title-access_control']['el-gr'] = "Έλεγχος πρόσβασης";
$text['title-access_control']['es-cl'] = "Control de acceso";
$text['title-access_control']['es-mx'] = "Control de acceso";
$text['title-access_control']['fr-ca'] = "Contrôle d'accès";
$text['title-access_control']['fr-fr'] = "Contrôle d'accès";
$text['title-access_control']['he-il'] = "בקרת גישה";
$text['title-access_control']['it-it'] = "Controllo Accesso";
$text['title-access_control']['ka-ge'] = "წვდომის კონტროლი";
$text['title-access_control']['nl-nl'] = "Toegangs Controle";
$text['title-access_control']['pl-pl'] = "Kontrola dostępu";
$text['title-access_control']['pt-br'] = "Controle de acesso";
@@ -92,6 +103,7 @@ $text['title-access_control']['ro-ro'] = "Controlul accesului";
$text['title-access_control']['ru-ru'] = "Управление доступом";
$text['title-access_control']['sv-se'] = "Åtkomstkontroll";
$text['title-access_control']['uk-ua'] = "Управління доступом";
$text['title-access_control']['tr-tr'] = "Giriş kontrolu";
$text['title-access_control']['zh-cn'] = "访问控制";
$text['title-access_control']['ja-jp'] = "アクセス制御";
$text['title-access_control']['ko-kr'] = "액세스 제어";
@@ -102,12 +114,14 @@ $text['title_description-access_controls']['ar-eg'] = "قائمة التحكم
$text['title_description-access_controls']['de-at'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-ch'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-de'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['el-gr'] = "Access control list can allow or deny ranges of IP addresses";
$text['title_description-access_controls']['es-cl'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['es-mx'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['fr-fr'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['he-il'] = " רשימת בקרת גישה יכולה לאפשר או למנוע טווחים של כתובות IP.";
$text['title_description-access_controls']['it-it'] = "Le liste per il controllo di accesso permettono o negano l'accesso a range di IP.";
$text['title_description-access_controls']['ka-ge'] = "წვდომის კონტროლის სიას IP მისამართების შუალედების დაშვება ან აკრძალვა შეუძლია";
$text['title_description-access_controls']['nl-nl'] = "Toegang Controle lijst kan IP adres reeks toestaan of verbieden.";
$text['title_description-access_controls']['pl-pl'] = "Lista kontroli dostępu może umożliwić lub zablokować zakresy adresów IP.";
$text['title_description-access_controls']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
@@ -116,6 +130,7 @@ $text['title_description-access_controls']['ro-ro'] = "Lista de control al acces
$text['title_description-access_controls']['ru-ru'] = "Контроль доступа может разрешить или запретить диапазоны IP адресов.";
$text['title_description-access_controls']['sv-se'] = "Åtkomstkontrollista kan tillåta eller neka intervall av IP-adresser.";
$text['title_description-access_controls']['uk-ua'] = "Список контролю доступу може дозволити або заборонити діапазони IP-адрес.";
$text['title_description-access_controls']['tr-tr'] = "Erişim kontrol listesi IP adres aralıklarına izin verebilir veya reddedebilir.";
$text['title_description-access_controls']['zh-cn'] = "访问控制列表可以允许或拒绝 IP 地址范围。";
$text['title_description-access_controls']['ja-jp'] = "アクセス コントロール リストでは、IP アドレスの範囲を許可または拒否できます。";
$text['title_description-access_controls']['ko-kr'] = "액세스 제어 목록은 IP 주소 범위를 허용하거나 거부할 수 있습니다.";
@@ -126,12 +141,14 @@ $text['label-node_type']['ar-eg'] = "اكتب";
$text['label-node_type']['de-at'] = "Art";
$text['label-node_type']['de-ch'] = "Art";
$text['label-node_type']['de-de'] = "Art";
$text['label-node_type']['el-gr'] = "Τύπος";
$text['label-node_type']['es-cl'] = "Escribe";
$text['label-node_type']['es-mx'] = "Escribe";
$text['label-node_type']['fr-ca'] = "Type";
$text['label-node_type']['fr-fr'] = "Type";
$text['label-node_type']['he-il'] = "סוג";
$text['label-node_type']['it-it'] = "Tipo";
$text['label-node_type']['ka-ge'] = "ტიპი";
$text['label-node_type']['nl-nl'] = "Type";
$text['label-node_type']['pl-pl'] = "typ";
$text['label-node_type']['pt-br'] = "Tipo";
@@ -140,6 +157,7 @@ $text['label-node_type']['ro-ro'] = "Tip";
$text['label-node_type']['ru-ru'] = "Тип";
$text['label-node_type']['sv-se'] = "Typ";
$text['label-node_type']['uk-ua'] = "Тип";
$text['label-node_type']['tr-tr'] = "Tip";
$text['label-node_type']['zh-cn'] = "类型";
$text['label-node_type']['ja-jp'] = "タイプ";
$text['label-node_type']['ko-kr'] = "유형";
@@ -150,12 +168,14 @@ $text['label-node_domain']['ar-eg'] = "مجال";
$text['label-node_domain']['de-at'] = "Domäne";
$text['label-node_domain']['de-ch'] = "Domäne";
$text['label-node_domain']['de-de'] = "Domäne";
$text['label-node_domain']['el-gr'] = "Τομέα";
$text['label-node_domain']['es-cl'] = "Dominio";
$text['label-node_domain']['es-mx'] = "Dominio";
$text['label-node_domain']['fr-ca'] = "Domaine";
$text['label-node_domain']['fr-fr'] = "Domaine";
$text['label-node_domain']['he-il'] = "תחום";
$text['label-node_domain']['it-it'] = "Dominio";
$text['label-node_domain']['ka-ge'] = "დომენი";
$text['label-node_domain']['nl-nl'] = "Domein";
$text['label-node_domain']['pl-pl'] = "domeny";
$text['label-node_domain']['pt-br'] = "Domínio";
@@ -164,6 +184,7 @@ $text['label-node_domain']['ro-ro'] = "Domeniu";
$text['label-node_domain']['ru-ru'] = "Домен";
$text['label-node_domain']['sv-se'] = "Domän";
$text['label-node_domain']['uk-ua'] = "домен";
$text['label-node_domain']['tr-tr'] = "İhtisas";
$text['label-node_domain']['zh-cn'] = "领域";
$text['label-node_domain']['ja-jp'] = "ドメイン";
$text['label-node_domain']['ko-kr'] = "도메인";
@@ -174,12 +195,14 @@ $text['label-node_description']['ar-eg'] = "وصف";
$text['label-node_description']['de-at'] = "Beschreibung";
$text['label-node_description']['de-ch'] = "Beschreibung";
$text['label-node_description']['de-de'] = "Beschreibung";
$text['label-node_description']['el-gr'] = "Περιγραφή";
$text['label-node_description']['es-cl'] = "Descripción";
$text['label-node_description']['es-mx'] = "Descripción";
$text['label-node_description']['fr-ca'] = "Description";
$text['label-node_description']['fr-fr'] = "Description";
$text['label-node_description']['he-il'] = "תיאור";
$text['label-node_description']['it-it'] = "Descrizione";
$text['label-node_description']['ka-ge'] = "აღწერა";
$text['label-node_description']['nl-nl'] = "Beschrijving";
$text['label-node_description']['pl-pl'] = "opis";
$text['label-node_description']['pt-br'] = "Descrição";
@@ -188,6 +211,7 @@ $text['label-node_description']['ro-ro'] = "Descriere";
$text['label-node_description']['ru-ru'] = "Описание";
$text['label-node_description']['sv-se'] = "Beskrivning";
$text['label-node_description']['uk-ua'] = "опис";
$text['label-node_description']['tr-tr'] = "Tanım";
$text['label-node_description']['zh-cn'] = "描述";
$text['label-node_description']['ja-jp'] = "説明";
$text['label-node_description']['ko-kr'] = "설명";
@@ -198,12 +222,14 @@ $text['label-node_cidr']['ar-eg'] = "CIDR";
$text['label-node_cidr']['de-at'] = "CIDR";
$text['label-node_cidr']['de-ch'] = "CIDR";
$text['label-node_cidr']['de-de'] = "CIDR";
$text['label-node_cidr']['el-gr'] = "CIDR";
$text['label-node_cidr']['es-cl'] = "CIDR";
$text['label-node_cidr']['es-mx'] = "CIDR";
$text['label-node_cidr']['fr-ca'] = "CIDR";
$text['label-node_cidr']['fr-fr'] = "CIDR";
$text['label-node_cidr']['he-il'] = "CIDR";
$text['label-node_cidr']['it-it'] = "CIDR";
$text['label-node_cidr']['ka-ge'] = "CIRD";
$text['label-node_cidr']['nl-nl'] = "CIDR";
$text['label-node_cidr']['pl-pl'] = "CIDR";
$text['label-node_cidr']['pt-br'] = "CIDR";
@@ -212,6 +238,7 @@ $text['label-node_cidr']['ro-ro'] = "CIDR";
$text['label-node_cidr']['ru-ru'] = "CIDR";
$text['label-node_cidr']['sv-se'] = "CIDR";
$text['label-node_cidr']['uk-ua'] = "CIDR";
$text['label-node_cidr']['tr-tr'] = "CIDR";
$text['label-node_cidr']['zh-cn'] = "CIDR";
$text['label-node_cidr']['ja-jp'] = "CIDR";
$text['label-node_cidr']['ko-kr'] = "CIDR";
@@ -222,12 +249,14 @@ $text['label-deny']['ar-eg'] = "تنكر";
$text['label-deny']['de-at'] = "verbieten";
$text['label-deny']['de-ch'] = "verbieten";
$text['label-deny']['de-de'] = "verbieten";
$text['label-deny']['el-gr'] = "αρνούμαι";
$text['label-deny']['es-cl'] = "Negar";
$text['label-deny']['es-mx'] = "Negar";
$text['label-deny']['fr-ca'] = "nier";
$text['label-deny']['fr-fr'] = "nier";
$text['label-deny']['he-il'] = "להכחיש";
$text['label-deny']['it-it'] = "nega";
$text['label-deny']['ka-ge'] = "უარყოფა";
$text['label-deny']['nl-nl'] = "verbieden";
$text['label-deny']['pl-pl'] = "odrzuć";
$text['label-deny']['pt-br'] = "negar";
@@ -236,6 +265,7 @@ $text['label-deny']['ro-ro'] = "Nega";
$text['label-deny']['ru-ru'] = "запретить";
$text['label-deny']['sv-se'] = "förneka";
$text['label-deny']['uk-ua'] = "правда";
$text['label-deny']['tr-tr'] = "reddetmek";
$text['label-deny']['zh-cn'] = "否定";
$text['label-deny']['ja-jp'] = "拒否";
$text['label-deny']['ko-kr'] = "부인하다";
@@ -246,12 +276,14 @@ $text['label-allow']['ar-eg'] = "السماح";
$text['label-allow']['de-at'] = "erlauben";
$text['label-allow']['de-ch'] = "erlauben";
$text['label-allow']['de-de'] = "erlauben";
$text['label-allow']['el-gr'] = "επιτρέπω";
$text['label-allow']['es-cl'] = "Permitir";
$text['label-allow']['es-mx'] = "Permitir";
$text['label-allow']['fr-ca'] = "permettre";
$text['label-allow']['fr-fr'] = "permettre";
$text['label-allow']['he-il'] = "לאפשר";
$text['label-allow']['it-it'] = "permetti";
$text['label-allow']['ka-ge'] = "დაშვება";
$text['label-allow']['nl-nl'] = "toestaan";
$text['label-allow']['pl-pl'] = "zezwól";
$text['label-allow']['pt-br'] = "permitir";
@@ -260,6 +292,7 @@ $text['label-allow']['ro-ro'] = "Permite";
$text['label-allow']['ru-ru'] = "разрешить";
$text['label-allow']['sv-se'] = "tillåta";
$text['label-allow']['uk-ua'] = "дозволяти";
$text['label-allow']['tr-tr'] = "izin vermek";
$text['label-allow']['zh-cn'] = "允许";
$text['label-allow']['ja-jp'] = "許可する";
$text['label-allow']['ko-kr'] = "허용하다";
@@ -270,12 +303,14 @@ $text['label-access_control_name']['ar-eg'] = "اسم";
$text['label-access_control_name']['de-at'] = "Name";
$text['label-access_control_name']['de-ch'] = "Name";
$text['label-access_control_name']['de-de'] = "Name";
$text['label-access_control_name']['el-gr'] = "Ονομα";
$text['label-access_control_name']['es-cl'] = "Nombre";
$text['label-access_control_name']['es-mx'] = "Nombre";
$text['label-access_control_name']['fr-ca'] = "Nom";
$text['label-access_control_name']['fr-fr'] = "Nom";
$text['label-access_control_name']['he-il'] = "שם";
$text['label-access_control_name']['it-it'] = "Nome";
$text['label-access_control_name']['ka-ge'] = "სახელი";
$text['label-access_control_name']['nl-nl'] = "Naam";
$text['label-access_control_name']['pl-pl'] = "Imię";
$text['label-access_control_name']['pt-br'] = "Nome";
@@ -284,6 +319,7 @@ $text['label-access_control_name']['ro-ro'] = "Nume";
$text['label-access_control_name']['ru-ru'] = "Имя";
$text['label-access_control_name']['sv-se'] = "namn";
$text['label-access_control_name']['uk-ua'] = "ім'я";
$text['label-access_control_name']['tr-tr'] = "İsim";
$text['label-access_control_name']['zh-cn'] = "姓名";
$text['label-access_control_name']['ja-jp'] = "名前";
$text['label-access_control_name']['ko-kr'] = "이름";
@@ -294,12 +330,14 @@ $text['label-access_control_default']['ar-eg'] = "افتراضي";
$text['label-access_control_default']['de-at'] = "Standard";
$text['label-access_control_default']['de-ch'] = "Standard";
$text['label-access_control_default']['de-de'] = "Standard";
$text['label-access_control_default']['el-gr'] = "Προκαθορισμένο";
$text['label-access_control_default']['es-cl'] = "Defecto";
$text['label-access_control_default']['es-mx'] = "Defecto";
$text['label-access_control_default']['fr-ca'] = "Par défaut";
$text['label-access_control_default']['fr-fr'] = "Par défaut";
$text['label-access_control_default']['he-il'] = "ברירת מחדל";
$text['label-access_control_default']['it-it'] = "Predefinito";
$text['label-access_control_default']['ka-ge'] = "ნაგულისხმევი";
$text['label-access_control_default']['nl-nl'] = "Standaard";
$text['label-access_control_default']['pl-pl'] = "Domyślnie";
$text['label-access_control_default']['pt-br'] = "Padrão";
@@ -308,6 +346,7 @@ $text['label-access_control_default']['ro-ro'] = "Implicit";
$text['label-access_control_default']['ru-ru'] = "По умолчанию";
$text['label-access_control_default']['sv-se'] = "Standard";
$text['label-access_control_default']['uk-ua'] = "дефолт";
$text['label-access_control_default']['tr-tr'] = "Varsayılan";
$text['label-access_control_default']['zh-cn'] = "默认";
$text['label-access_control_default']['ja-jp'] = "デフォルト";
$text['label-access_control_default']['ko-kr'] = "기본";
@@ -318,12 +357,14 @@ $text['label-access_control_nodes']['ar-eg'] = "العقد";
$text['label-access_control_nodes']['de-at'] = "Knoten";
$text['label-access_control_nodes']['de-ch'] = "Knoten";
$text['label-access_control_nodes']['de-de'] = "Knoten";
$text['label-access_control_nodes']['el-gr'] = "Κόμβοι";
$text['label-access_control_nodes']['es-cl'] = "Nodos";
$text['label-access_control_nodes']['es-mx'] = "Nodos";
$text['label-access_control_nodes']['fr-ca'] = "nœuds";
$text['label-access_control_nodes']['fr-fr'] = "nœuds";
$text['label-access_control_nodes']['he-il'] = "בלוטות";
$text['label-access_control_nodes']['it-it'] = "Nodi";
$text['label-access_control_nodes']['ka-ge'] = "კვანძები";
$text['label-access_control_nodes']['nl-nl'] = "Knooppunten";
$text['label-access_control_nodes']['pl-pl'] = "węzły";
$text['label-access_control_nodes']['pt-br'] = "Nodes";
@@ -332,6 +373,7 @@ $text['label-access_control_nodes']['ro-ro'] = "Noduri";
$text['label-access_control_nodes']['ru-ru'] = "Узлы";
$text['label-access_control_nodes']['sv-se'] = "Noder";
$text['label-access_control_nodes']['uk-ua'] = "вузли";
$text['label-access_control_nodes']['tr-tr'] = "Düğümler";
$text['label-access_control_nodes']['zh-cn'] = "节点";
$text['label-access_control_nodes']['ja-jp'] = "ノード";
$text['label-access_control_nodes']['ko-kr'] = "노드";
@@ -342,12 +384,14 @@ $text['label-access_control_description']['ar-eg'] = "وصف";
$text['label-access_control_description']['de-at'] = "Beschreibung";
$text['label-access_control_description']['de-ch'] = "Beschreibung";
$text['label-access_control_description']['de-de'] = "Beschreibung";
$text['label-access_control_description']['el-gr'] = "Περιγραφή";
$text['label-access_control_description']['es-cl'] = "Descripción";
$text['label-access_control_description']['es-mx'] = "Descripción";
$text['label-access_control_description']['fr-ca'] = "Description";
$text['label-access_control_description']['fr-fr'] = "Description";
$text['label-access_control_description']['he-il'] = "תיאור";
$text['label-access_control_description']['it-it'] = "Descrizione";
$text['label-access_control_description']['ka-ge'] = "აღწერა";
$text['label-access_control_description']['nl-nl'] = "Omschrijving";
$text['label-access_control_description']['pl-pl'] = "opis";
$text['label-access_control_description']['pt-br'] = "Descrição";
@@ -356,6 +400,7 @@ $text['label-access_control_description']['ro-ro'] = "Descriere";
$text['label-access_control_description']['ru-ru'] = "Описание";
$text['label-access_control_description']['sv-se'] = "Beskrivning";
$text['label-access_control_description']['uk-ua'] = "опис";
$text['label-access_control_description']['tr-tr'] = "Tanım";
$text['label-access_control_description']['zh-cn'] = "描述";
$text['label-access_control_description']['ja-jp'] = "説明";
$text['label-access_control_description']['ko-kr'] = "설명";
@@ -366,12 +411,14 @@ $text['description-node_type']['ar-eg'] = "حدد نوع.";
$text['description-node_type']['de-at'] = "Wählen Sie den Typ.";
$text['description-node_type']['de-ch'] = "Wählen Sie den Typ.";
$text['description-node_type']['de-de'] = "Wählen Sie den Typ.";
$text['description-node_type']['el-gr'] = "Επιλέξτε τον τύπο";
$text['description-node_type']['es-cl'] = "Seleccione el tipo.";
$text['description-node_type']['es-mx'] = "Seleccione el tipo.";
$text['description-node_type']['fr-ca'] = "Sélectionnez le type";
$text['description-node_type']['fr-fr'] = "Sélectionnez le type";
$text['description-node_type']['he-il'] = "בחר את הסוג.";
$text['description-node_type']['it-it'] = "Seleziona il tipo.";
$text['description-node_type']['ka-ge'] = "აირჩიეთ ტიპი.";
$text['description-node_type']['nl-nl'] = "Selecteer het type.";
$text['description-node_type']['pl-pl'] = "Wybierz rodzaj.";
$text['description-node_type']['pt-br'] = "Selecione o tipo.";
@@ -380,6 +427,7 @@ $text['description-node_type']['ro-ro'] = "Selectați tipul.";
$text['description-node_type']['ru-ru'] = "Выберите тип.";
$text['description-node_type']['sv-se'] = "Välj typ.";
$text['description-node_type']['uk-ua'] = "Виберіть тип.";
$text['description-node_type']['tr-tr'] = "Türü seçin.";
$text['description-node_type']['zh-cn'] = "选择类型。";
$text['description-node_type']['ja-jp'] = "タイプを選択してください。";
$text['description-node_type']['ko-kr'] = "유형을 선택합니다.";
@@ -390,12 +438,14 @@ $text['description-node_domain']['ar-eg'] = "أدخل اسم المجال.";
$text['description-node_domain']['de-at'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['de-ch'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['de-de'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['el-gr'] = "Εισαγάγετε το όνομα τομέα.";
$text['description-node_domain']['es-cl'] = "Introduzca el nombre de dominio.";
$text['description-node_domain']['es-mx'] = "Introduzca el nombre de dominio.";
$text['description-node_domain']['fr-ca'] = "Entrez le nom de domaine.";
$text['description-node_domain']['fr-fr'] = "Entrez le nom de domaine.";
$text['description-node_domain']['he-il'] = " הזן את שם הדומיין.";
$text['description-node_domain']['it-it'] = "Inserisci il dominio.";
$text['description-node_domain']['ka-ge'] = "შეიყვანეთ დომენის სახელი";
$text['description-node_domain']['nl-nl'] = "Voer de domeinnaam in.";
$text['description-node_domain']['pl-pl'] = "Wprowadź nazwę domeny.";
$text['description-node_domain']['pt-br'] = "Digite o nome de domínio.";
@@ -404,6 +454,7 @@ $text['description-node_domain']['ro-ro'] = "Introduceți numele de domeniu.";
$text['description-node_domain']['ru-ru'] = "Введите имя домена.";
$text['description-node_domain']['sv-se'] = "Ange domännamnet.";
$text['description-node_domain']['uk-ua'] = "Введіть ім'я домену.";
$text['description-node_domain']['tr-tr'] = "Alan adını girin.";
$text['description-node_domain']['zh-cn'] = "输入域名。";
$text['description-node_domain']['ja-jp'] = "ドメイン名を入力します。";
$text['description-node_domain']['ko-kr'] = "도메인 이름을 입력합니다.";
@@ -414,12 +465,14 @@ $text['description-node_description']['ar-eg'] = "أدخل الوصف.";
$text['description-node_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-node_description']['es-cl'] = "Introduzca la descripción.";
$text['description-node_description']['es-mx'] = "Introduzca la descripción.";
$text['description-node_description']['fr-ca'] = "Entrez la description.";
$text['description-node_description']['fr-fr'] = "Entrez la description.";
$text['description-node_description']['he-il'] = " הזן את התיאור.";
$text['description-node_description']['it-it'] = "Inserisci la descrizione.";
$text['description-node_description']['ka-ge'] = "შეიყვანეთ აღწერა";
$text['description-node_description']['nl-nl'] = "Voer de beschrijving in.";
$text['description-node_description']['pl-pl'] = "Wprowadź opis.";
$text['description-node_description']['pt-br'] = "Digite a descrição.";
@@ -428,6 +481,7 @@ $text['description-node_description']['ro-ro'] = "Introduceți descrierea.";
$text['description-node_description']['ru-ru'] = "Введите описание.";
$text['description-node_description']['sv-se'] = "Ange beskrivningen.";
$text['description-node_description']['uk-ua'] = "Введіть опис.";
$text['description-node_description']['tr-tr'] = "Açıklamayı girin.";
$text['description-node_description']['zh-cn'] = "输入说明。";
$text['description-node_description']['ja-jp'] = "説明を入力します。";
$text['description-node_description']['ko-kr'] = "설명을 입력합니다.";
@@ -438,12 +492,14 @@ $text['description-node_cidr']['ar-eg'] = "أدخل نطاق IP CIDR.";
$text['description-node_cidr']['de-at'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['de-ch'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['de-de'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['el-gr'] = "Εισαγάγετε το εύρος IP CIDR.";
$text['description-node_cidr']['es-cl'] = "Introduzca el rango de direcciones IP CIDR.";
$text['description-node_cidr']['es-mx'] = "Introduzca el rango de direcciones IP CIDR.";
$text['description-node_cidr']['fr-ca'] = "Entrez la plage IP CIDR.";
$text['description-node_cidr']['fr-fr'] = "Entrez la plage IP CIDR.";
$text['description-node_cidr']['he-il'] = " הזן את טווח ה- IP CIDR.";
$text['description-node_cidr']['it-it'] = "Inserisci il range IP CIDR.";
$text['description-node_cidr']['ka-ge'] = "შეიყვანეთ IP CIDR შუალედი(Range)";
$text['description-node_cidr']['nl-nl'] = "Voer het IP CIDR reeks in.";
$text['description-node_cidr']['pl-pl'] = "Wprowadź zakres IP CIDR.";
$text['description-node_cidr']['pt-br'] = "Digite o intervalo IP CIDR.";
@@ -452,6 +508,7 @@ $text['description-node_cidr']['ro-ro'] = "Introduceți intervalul de IP CIDR.";
$text['description-node_cidr']['ru-ru'] = "Введите диапазон IP CIDR.";
$text['description-node_cidr']['sv-se'] = "Ange IP CIDR sortimentet.";
$text['description-node_cidr']['uk-ua'] = "Введіть діапазон IP-CIDR.";
$text['description-node_cidr']['tr-tr'] = "IP CIDR aralığını girin.";
$text['description-node_cidr']['zh-cn'] = "输入 IP CIDR 范围。";
$text['description-node_cidr']['ja-jp'] = "IP CIDR 範囲を入力します。";
$text['description-node_cidr']['ko-kr'] = "IP CIDR 범위를 입력합니다.";
@@ -462,12 +519,14 @@ $text['description-access_control_name']['ar-eg'] = "أدخل اسم.";
$text['description-access_control_name']['de-at'] = "Namen eingeben.";
$text['description-access_control_name']['de-ch'] = "Namen eingeben.";
$text['description-access_control_name']['de-de'] = "Namen eingeben.";
$text['description-access_control_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-access_control_name']['es-cl'] = "Introduzca el nombre.";
$text['description-access_control_name']['es-mx'] = "Introduzca el nombre.";
$text['description-access_control_name']['fr-ca'] = "Entrez le nom.";
$text['description-access_control_name']['fr-fr'] = "Entrez le nom.";
$text['description-access_control_name']['he-il'] = " הזן את השם.";
$text['description-access_control_name']['it-it'] = "Inserisci il nome.";
$text['description-access_control_name']['ka-ge'] = "შეიყვანეთ სახელი.";
$text['description-access_control_name']['nl-nl'] = "Voer de naam in.";
$text['description-access_control_name']['pl-pl'] = "Wpisz nazwę.";
$text['description-access_control_name']['pt-br'] = "Digite o nome.";
@@ -476,6 +535,7 @@ $text['description-access_control_name']['ro-ro'] = "Introduceți numele.";
$text['description-access_control_name']['ru-ru'] = "Введите имя.";
$text['description-access_control_name']['sv-se'] = "Ange namnet.";
$text['description-access_control_name']['uk-ua'] = "Введіть ім'я.";
$text['description-access_control_name']['tr-tr'] = "Adı girin.";
$text['description-access_control_name']['zh-cn'] = "输入名称。";
$text['description-access_control_name']['ja-jp'] = "名前を入力します。";
$text['description-access_control_name']['ko-kr'] = "이름을 입력하세요.";
@@ -486,12 +546,14 @@ $text['description-access_control_description']['ar-eg'] = "دخل وصف";
$text['description-access_control_description']['de-at'] = "Beschreibung eingeben.";
$text['description-access_control_description']['de-ch'] = "Beschreibung eingeben.";
$text['description-access_control_description']['de-de'] = "Beschreibung eingeben.";
$text['description-access_control_description']['el-gr'] = "Εισαγάγετε την περιγραφή";
$text['description-access_control_description']['es-cl'] = "Introduzca la descripción";
$text['description-access_control_description']['es-mx'] = "Introduzca la descripción";
$text['description-access_control_description']['fr-ca'] = "Entrez la description.";
$text['description-access_control_description']['fr-fr'] = "Entrez la description.";
$text['description-access_control_description']['he-il'] = " הזן את התיאור";
$text['description-access_control_description']['it-it'] = "Inserisci la descrizione";
$text['description-access_control_description']['ka-ge'] = "შეიყვანეთ აღწერა";
$text['description-access_control_description']['nl-nl'] = "Voer de omschrijving in.";
$text['description-access_control_description']['pl-pl'] = "Wprowadź opis";
$text['description-access_control_description']['pt-br'] = "Digite a descrição.";
@@ -500,6 +562,7 @@ $text['description-access_control_description']['ro-ro'] = "Introduceți descrie
$text['description-access_control_description']['ru-ru'] = "Введите описание";
$text['description-access_control_description']['sv-se'] = "Ange en beskrivning";
$text['description-access_control_description']['uk-ua'] = "Введіть опис";
$text['description-access_control_description']['tr-tr'] = "Açıklamayı girin";
$text['description-access_control_description']['zh-cn'] = "输入描述";
$text['description-access_control_description']['ja-jp'] = "説明を入力してください";
$text['description-access_control_description']['ko-kr'] = "설명을 입력하세요";
@@ -510,12 +573,14 @@ $text['description-access_control_default']['ar-eg'] = "حدد نوع الافت
$text['description-access_control_default']['de-at'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['de-ch'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['de-de'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['el-gr'] = "Επιλέξτε τον προεπιλεγμένο τύπο.";
$text['description-access_control_default']['es-cl'] = "Seleccione el tipo de defecto.";
$text['description-access_control_default']['es-mx'] = "Seleccione el tipo de defecto.";
$text['description-access_control_default']['fr-ca'] = "Sélectionnez le type de défaut";
$text['description-access_control_default']['fr-fr'] = "Sélectionnez le type de défaut";
$text['description-access_control_default']['he-il'] = " בחר את סוג ברירת המחדל.";
$text['description-access_control_default']['it-it'] = "Scegli il tipo di default.";
$text['description-access_control_default']['ka-ge'] = "აირჩიეთ ნაგულისხმევი ტიპი.";
$text['description-access_control_default']['nl-nl'] = "Selecteer het standaard type.";
$text['description-access_control_default']['pl-pl'] = "Wybierz typ domyślny.";
$text['description-access_control_default']['pt-br'] = "Selecione o tipo de padrão.";
@@ -524,6 +589,7 @@ $text['description-access_control_default']['ro-ro'] = "Selectați tipul implici
$text['description-access_control_default']['ru-ru'] = "Выберите тип по умолчанию.";
$text['description-access_control_default']['sv-se'] = "Välj standardtypen.";
$text['description-access_control_default']['uk-ua'] = "Вибір типу за замовчуванням.";
$text['description-access_control_default']['tr-tr'] = "Varsayılan türü seçin.";
$text['description-access_control_default']['zh-cn'] = "选择默认类型。";
$text['description-access_control_default']['ja-jp'] = "デフォルトのタイプを選択します。";
$text['description-access_control_default']['ko-kr'] = "기본 유형을 선택합니다.";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Contrôles d'accès";
$apps[$x]['menu'][$y]['title']['he-il'] = "בקרת גישה";
$apps[$x]['menu'][$y]['title']['it-it'] = "Controlli Accesso";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "წვდომების კონტროლი";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Toegangs Controle";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Kontrola dostępu";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Controles de Acesso";
@@ -6,6 +6,7 @@
* @method null download
*/
if (!class_exists('access_controls')) {
class access_controls {
/**
@@ -24,10 +25,9 @@ if (!class_exists('access_controls')) {
public function __construct() {
//assign private variables
$this->app_name = 'access_controls';
$this->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
$this->list_page = 'access_controls.php';
$this->app_name = 'access_controls';
$this->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
$this->list_page = 'access_controls.php';
}
/**
@@ -36,126 +36,120 @@ if (!class_exists('access_controls')) {
public function delete($records) {
//assign private variables
$this->permission_prefix = 'access_control_';
$this->table = 'access_controls';
$this->uuid_prefix = 'access_control_';
$this->permission_prefix = 'access_control_';
$this->table = 'access_controls';
$this->uuid_prefix = 'access_control_';
if (permission_exists($this->permission_prefix.'delete')) {
if (permission_exists($this->permission_prefix . 'delete')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->list_page);
exit;
}
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'], 'negative');
header('Location: ' . $this->list_page);
exit;
}
//delete multiple records
if (is_array($records) && @sizeof($records) != 0) {
if (is_array($records) && @sizeof($records) != 0) {
//build the delete array
foreach($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
$array['access_control_nodes'][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p->add('access_control_node_delete', 'temp');
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
unset($array);
//revoke temporary permissions
$p->delete('access_control_node_delete', 'temp');
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
//set message
message::add($text['message-delete']);
}
unset($records);
//build the delete array
foreach ($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->uuid_prefix . 'uuid'] = $record['uuid'];
$array['access_control_nodes'][$x][$this->uuid_prefix . 'uuid'] = $record['uuid'];
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = permissions::new();
$p->add('access_control_node_delete', 'temp');
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
unset($array);
//revoke temporary permissions
$p->delete('access_control_node_delete', 'temp');
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
event_socket::async("reloadacl");
//set message
message::add($text['message-delete']);
}
unset($records);
}
}
}
public function delete_nodes($records) {
//assign private variables
$this->permission_prefix = 'access_control_node_';
$this->table = 'access_control_nodes';
$this->uuid_prefix = 'access_control_node_';
$this->permission_prefix = 'access_control_node_';
$this->table = 'access_control_nodes';
$this->uuid_prefix = 'access_control_node_';
if (permission_exists($this->permission_prefix.'delete')) {
if (permission_exists($this->permission_prefix . 'delete')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate('/app/access_controls/access_control_nodes.php')) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->list_page);
exit;
}
$token = new token;
if (!$token->validate('/app/access_controls/access_control_nodes.php')) {
message::add($text['message-invalid_token'], 'negative');
header('Location: ' . $this->list_page);
exit;
}
//delete multiple records
if (is_array($records) && @sizeof($records) != 0) {
if (is_array($records) && @sizeof($records) != 0) {
//build the delete array
foreach($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
unset($array);
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
//set message
message::add($text['message-delete']);
}
unset($records);
//build the delete array
foreach ($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->uuid_prefix . 'uuid'] = $record['uuid'];
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
unset($array);
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
event_socket::async("reloadacl");
//set message
message::add($text['message-delete']);
}
unset($records);
}
}
}
@@ -165,118 +159,111 @@ if (!class_exists('access_controls')) {
public function copy($records) {
//assign private variables
$this->permission_prefix = 'access_control_';
$this->table = 'access_controls';
$this->uuid_prefix = 'access_control_';
$this->permission_prefix = 'access_control_';
$this->table = 'access_controls';
$this->uuid_prefix = 'access_control_';
if (permission_exists($this->permission_prefix.'add')) {
if (permission_exists($this->permission_prefix . 'add')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->list_page);
exit;
}
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'], 'negative');
header('Location: ' . $this->list_page);
exit;
}
//copy the checked records
if (is_array($records) && @sizeof($records) != 0) {
if (is_array($records) && @sizeof($records) != 0) {
//get checked records
foreach($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$uuids[] = "'".$record['uuid']."'";
}
}
//create insert array from existing data
if (is_array($uuids) && @sizeof($uuids) != 0) {
//primary table
$sql = "select * from v_".$this->table." ";
$sql .= "where ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
$y = 0;
foreach ($rows as $x => $row) {
$primary_uuid = uuid();
//copy data
$array[$this->table][$x] = $row;
//overwrite
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid;
$array[$this->table][$x]['access_control_description'] = trim($row['access_control_description'].' ('.$text['label-copy'].')');
//nodes sub table
$sql_2 = "select * from v_access_control_nodes where access_control_uuid = :access_control_uuid";
$parameters_2['access_control_uuid'] = $row['access_control_uuid'];
$database = new database;
$rows_2 = $database->select($sql_2, $parameters_2, 'all');
if (is_array($rows_2) && @sizeof($rows_2) != 0) {
foreach ($rows_2 as $row_2) {
//copy data
$array['access_control_nodes'][$y] = $row_2;
//overwrite
$array['access_control_nodes'][$y]['access_control_node_uuid'] = uuid();
$array['access_control_nodes'][$y]['access_control_uuid'] = $primary_uuid;
//increment
$y++;
}
}
unset($sql_2, $parameters_2, $rows_2, $row_2);
}
}
unset($sql, $parameters, $rows, $row);
}
//save the changes and set the message
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p->add('access_control_node_add', 'temp');
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
unset($array);
//revoke temporary permissions
$p->delete('access_control_node_add', 'temp');
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
//set message
message::add($text['message-copy']);
}
unset($records);
//get checked records
foreach ($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$uuids[] = "'" . $record['uuid'] . "'";
}
}
//create insert array from existing data
if (is_array($uuids) && @sizeof($uuids) != 0) {
//primary table
$sql = "select * from v_" . $this->table . " ";
$sql .= "where " . $this->uuid_prefix . "uuid in (" . implode(', ', $uuids) . ") ";
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
$y = 0;
foreach ($rows as $x => $row) {
$primary_uuid = uuid();
//copy data
$array[$this->table][$x] = $row;
//overwrite
$array[$this->table][$x][$this->uuid_prefix . 'uuid'] = $primary_uuid;
$array[$this->table][$x]['access_control_description'] = trim($row['access_control_description'] . ' (' . $text['label-copy'] . ')');
//nodes sub table
$sql_2 = "select * from v_access_control_nodes where access_control_uuid = :access_control_uuid";
$parameters_2['access_control_uuid'] = $row['access_control_uuid'];
$database = new database;
$rows_2 = $database->select($sql_2, $parameters_2, 'all');
if (is_array($rows_2) && @sizeof($rows_2) != 0) {
foreach ($rows_2 as $row_2) {
//copy data
$array['access_control_nodes'][$y] = $row_2;
//overwrite
$array['access_control_nodes'][$y]['access_control_node_uuid'] = uuid();
$array['access_control_nodes'][$y]['access_control_uuid'] = $primary_uuid;
//increment
$y++;
}
}
unset($sql_2, $parameters_2, $rows_2, $row_2);
}
}
unset($sql, $parameters, $rows, $row);
}
//save the changes and set the message
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = permissions::new();
$p->add('access_control_node_add', 'temp');
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
unset($array);
//revoke temporary permissions
$p->delete('access_control_node_add', 'temp');
//clear the cache
$cache = new cache;
$cache->delete("configuration:acl.conf");
//create the event socket connection
event_socket::async("reloadacl");
//set message
message::add($text['message-copy']);
}
unset($records);
}
}
}
}
}
?>
}
?>
+196
View File
@@ -0,0 +1,196 @@
<?php
//application details
$apps[$x]['name'] = "Avaya";
$apps[$x]['uuid'] = "194d9272-2fd9-4b42-8992-63915d18f8eb";
$apps[$x]['category'] = "Vendor";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "1.0";
$apps[$x]['license'] = "";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "";
$apps[$x]['description']['en-gb'] = "";
$apps[$x]['description']['ar-eg'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['es-cl'] = "";
$apps[$x]['description']['es-mx'] = "";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-fr'] = "";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "";
$apps[$x]['description']['nl-nl'] = "";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
$apps[$x]['description']['pt-pt'] = "";
$apps[$x]['description']['ro-ro'] = "";
$apps[$x]['description']['ru-ru'] = "";
$apps[$x]['description']['sv-se'] = "";
$apps[$x]['description']['uk-ua'] = "";
//default settings
$y=0;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c58b1c0f-b0c9-42a2-a971-4da25fa9fafa";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j139_firmware_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Firmware filename URL for J139 Phone";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "98c04df8-35c8-4465-a52b-f1b7cdf08c30";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j179_firmware_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Firmware filename URL for J179 Phone";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d2e19a7d-d3b3-4b49-b267-938f66845bdf";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j169_firmware_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Firmware filename URL for J169 Phone";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "053f9829-1f4d-4292-a308-e447dc4483b9";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_jem24_firmware_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Firmware filename URL for JEM 24 Expansion Module";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "bbc7f7c7-d8a9-4f13-bf1d-a16ee0855c36";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_dialplan";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "XXX|XXXX,*XX,1XXXXXXXXXX,XXXXXXXXXX";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "|:Pattern separator, X: any single digit, []: used to specify one digit with valid digits inside the brackets. a - dash may be used for ranges.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ab3fc35c-fb8b-4dd0-ba0d-b0883cd31c45";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_time_zone";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "-5:00";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Timezone offset";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0c3b36b2-a638-4d8e-8619-8fde234e6349";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_dst_start";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "2SunMar2L";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Example, 2SunMar2L which corresponds to the second Sunday in March at 2 AM local time";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "09922e2a-6d3f-4833-8a50-40b1942a7bb0";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_dst_stop";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1SunNov2L";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Example, 1SunNov2L which corresponds to the first Sunday in November at 2 AM local time";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "cd9143fb-54f7-4bf7-acea-d7ea775c9876";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_key_customization";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Setting to allow or disallow users to change the buttons on the phone. 0 - Blocked, 1 - Limited (User customization is allowed for Applications and Contacts), 2 - Full";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b67d14cb-5d1f-46bf-baa5-2500a9135b5d";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j189_wallpaper_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "800 x 480 pixels max. JPG only. Max file size is 256KB";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "554de3b3-444a-4221-9d15-524be3ef71a8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j189_wallpaper_filename";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The filename of the default wallpaper to be displayed";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "90222f45-3996-4b74-89bc-68f12ad78afe";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j189_secondary_wallpaper_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "240 x 320 pixels max. JPG only. Max file size is 256KB";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1b08fd61-246f-4053-a053-568e7128e3e1";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j189_secondary_wallpaper_filename";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The filename of the default wallpaper to be displayed";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "75d92d17-6096-47ec-89f6-bbf17479fb85";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j179_wallpaper_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "320 x 240 pixels max. JPG only. Max file size is 256KB";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7b45e899-53ac-41b5-94c6-b485a41f66ff";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j179_wallpaper_filename";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The filename of the default wallpaper to be displayed";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "4244f3b6-78cd-46a2-bdbd-e0d8452c4de3";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j139_wallpaper_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "320 x 240 pixels max. JPG only. Max file size is 256KB";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "234e2429-11dc-4a62-be81-79737085284c";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j139_wallpaper_filename";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The filename of the default wallpaper to be displayed";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "30cbfda7-f068-463f-80a4-aeecf8c48eaf";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j169_wallpaper_url";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "320 x 240 pixels max. JPG only. Max file size is 256KB";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7e29deec-d19a-4ff2-ab5b-513fa824e4ed";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_j169_wallpaper_filename";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The filename of the default wallpaper to be displayed";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a53f2369-19fb-449d-8daa-189707b79cc6";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_ntp_server";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
?>
+1
View File
@@ -0,0 +1 @@
For Provisioning to work propery you will need to be on firmware 4.1.4.0.5 and greater
+10 -1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "ოპერატორის პანელი სტატუსს აჩვენებს.";
$apps[$x]['description']['nl-nl'] = "Bedieningspaneel laat de status zien";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
@@ -72,9 +73,17 @@
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "group_extensions";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set if extensions are grouped by call_group when viewing all extensions.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0d3b16b0-5cd6-4d0e-8b58-967972362ef8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "operator_panel";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "show_unregistered";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set whether unregistered extensions are displayed or not.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a9ccd174-5ae1-4f90-8ee2-b79a183a04f8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "operator_panel_main_background_color";
+65 -2
View File
@@ -6,12 +6,14 @@ $text['title-operator_panel']['ar-eg'] = "لوحة المشغل";
$text['title-operator_panel']['de-at'] = "Bedienfeld";
$text['title-operator_panel']['de-ch'] = "Bedienfeld";
$text['title-operator_panel']['de-de'] = "Bedienfeld";
$text['title-operator_panel']['el-gr'] = "Πίνακας χειριστή";
$text['title-operator_panel']['es-cl'] = "Panel de Operador";
$text['title-operator_panel']['es-mx'] = "Panel de Operador";
$text['title-operator_panel']['fr-ca'] = "Panneau de commande";
$text['title-operator_panel']['fr-fr'] = "Panneau de commande";
$text['title-operator_panel']['he-il'] = "לוח מפעיל";
$text['title-operator_panel']['it-it'] = "Pannello Operatore";
$text['title-operator_panel']['ka-ge'] = "ოპერატორის პანელი";
$text['title-operator_panel']['nl-nl'] = "Operator paneel";
$text['title-operator_panel']['pl-pl'] = "Panel operatora";
$text['title-operator_panel']['pt-br'] = "Painel do operador";
@@ -20,6 +22,7 @@ $text['title-operator_panel']['ro-ro'] = "Panoul operator";
$text['title-operator_panel']['ru-ru'] = "Панель Оператора";
$text['title-operator_panel']['sv-se'] = "Telefonist Panel";
$text['title-operator_panel']['uk-ua'] = "Оператори";
$text['title-operator_panel']['tr-tr'] = "Operatör Paneli";
$text['title-operator_panel']['zh-cn'] = "操作面板";
$text['title-operator_panel']['ja-jp'] = "オペレーターパネル";
$text['title-operator_panel']['ko-kr'] = "운영자 패널";
@@ -30,12 +33,14 @@ $text['label-status_on_demand']['ar-eg'] = "على الطلب";
$text['label-status_on_demand']['de-at'] = "Bei Bedarf";
$text['label-status_on_demand']['de-ch'] = "Bei Bedarf";
$text['label-status_on_demand']['de-de'] = "Bei Bedarf";
$text['label-status_on_demand']['el-gr'] = "Κατα παραγγελια";
$text['label-status_on_demand']['es-cl'] = "A Pedido";
$text['label-status_on_demand']['es-mx'] = "A Pedido";
$text['label-status_on_demand']['fr-ca'] = "Sur Demande";
$text['label-status_on_demand']['fr-fr'] = "Sur Demande";
$text['label-status_on_demand']['he-il'] = "על פי דרישה";
$text['label-status_on_demand']['it-it'] = "Su Richiesta";
$text['label-status_on_demand']['ka-ge'] = "მოთხოვნით";
$text['label-status_on_demand']['nl-nl'] = "Op Aanvraag";
$text['label-status_on_demand']['pl-pl'] = "Na żądanie";
$text['label-status_on_demand']['pt-br'] = "A pedido";
@@ -44,6 +49,7 @@ $text['label-status_on_demand']['ro-ro'] = "La cerere";
$text['label-status_on_demand']['ru-ru'] = "По требованию";
$text['label-status_on_demand']['sv-se'] = "På Begäran";
$text['label-status_on_demand']['uk-ua'] = "На Демі";
$text['label-status_on_demand']['tr-tr'] = "Talep üzerine";
$text['label-status_on_demand']['zh-cn'] = "一经请求";
$text['label-status_on_demand']['ja-jp'] = "オンデマンド";
$text['label-status_on_demand']['ko-kr'] = "주문형";
@@ -54,12 +60,14 @@ $text['label-status_on_break']['ar-eg'] = "في استراحة";
$text['label-status_on_break']['de-at'] = "In Pause";
$text['label-status_on_break']['de-ch'] = "In Pause";
$text['label-status_on_break']['de-de'] = "In Pause";
$text['label-status_on_break']['el-gr'] = "Σε διάλειμμα";
$text['label-status_on_break']['es-cl'] = "En Pausa";
$text['label-status_on_break']['es-mx'] = "En Pausa";
$text['label-status_on_break']['fr-ca'] = "En Pause";
$text['label-status_on_break']['fr-fr'] = "En Pause";
$text['label-status_on_break']['he-il'] = "בהפסקה";
$text['label-status_on_break']['it-it'] = "In Pausa";
$text['label-status_on_break']['ka-ge'] = "შესვენებაზე";
$text['label-status_on_break']['nl-nl'] = "In de wacht";
$text['label-status_on_break']['pl-pl'] = "Na przerwie";
$text['label-status_on_break']['pt-br'] = "Em pausa";
@@ -68,6 +76,7 @@ $text['label-status_on_break']['ro-ro'] = "In pauza";
$text['label-status_on_break']['ru-ru'] = "Пауза";
$text['label-status_on_break']['sv-se'] = "På Rast";
$text['label-status_on_break']['uk-ua'] = "Прорив";
$text['label-status_on_break']['tr-tr'] = "Molada";
$text['label-status_on_break']['zh-cn'] = "休息时";
$text['label-status_on_break']['ja-jp'] = "休んで";
$text['label-status_on_break']['ko-kr'] = "쉬는 중";
@@ -78,12 +87,14 @@ $text['label-status_logged_out_or_unknown']['ar-eg'] = "تم تسجيل الخر
$text['label-status_logged_out_or_unknown']['de-at'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['de-ch'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['de-de'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['el-gr'] = "Αποσυνδέθηκε / άγνωστο";
$text['label-status_logged_out_or_unknown']['es-cl'] = "Desconectado / Desconocido";
$text['label-status_logged_out_or_unknown']['es-mx'] = "Desconectado / Desconocido";
$text['label-status_logged_out_or_unknown']['fr-ca'] = "Déconnexion / Unknown";
$text['label-status_logged_out_or_unknown']['fr-fr'] = "Déconnexion / Unknown";
$text['label-status_logged_out_or_unknown']['he-il'] = "מנותק / לא ידוע";
$text['label-status_logged_out_or_unknown']['it-it'] = "Sloggato/Sconosciuto";
$text['label-status_logged_out_or_unknown']['ka-ge'] = "გასული / უცნობია";
$text['label-status_logged_out_or_unknown']['nl-nl'] = "Afgelogged / Onbekend";
$text['label-status_logged_out_or_unknown']['pl-pl'] = "Wylogowany / Nieznany";
$text['label-status_logged_out_or_unknown']['pt-br'] = "Desligar / Desconhecido";
@@ -92,6 +103,7 @@ $text['label-status_logged_out_or_unknown']['ro-ro'] = "Deconectat/Necunoscut";
$text['label-status_logged_out_or_unknown']['ru-ru'] = "Вышел из системы / Неизвестен";
$text['label-status_logged_out_or_unknown']['sv-se'] = "Utloggad / Okänd";
$text['label-status_logged_out_or_unknown']['uk-ua'] = "Увійти / Невідомо";
$text['label-status_logged_out_or_unknown']['tr-tr'] = "Çıkış Yapıldı / Bilinmiyor";
$text['label-status_logged_out_or_unknown']['zh-cn'] = "注销/未知";
$text['label-status_logged_out_or_unknown']['ja-jp'] = "ログアウト/不明";
$text['label-status_logged_out_or_unknown']['ko-kr'] = "로그아웃됨/알 수 없음";
@@ -102,12 +114,14 @@ $text['label-status_logged_out']['ar-eg'] = "تسجيل الخروج";
$text['label-status_logged_out']['de-at'] = "Abgemeldet";
$text['label-status_logged_out']['de-ch'] = "Abgemeldet";
$text['label-status_logged_out']['de-de'] = "Abgemeldet";
$text['label-status_logged_out']['el-gr'] = "Αποσυνδέθηκα";
$text['label-status_logged_out']['es-cl'] = "Desconectado";
$text['label-status_logged_out']['es-mx'] = "Desconectado";
$text['label-status_logged_out']['fr-ca'] = "Déconnexion";
$text['label-status_logged_out']['fr-fr'] = "Déconnexion";
$text['label-status_logged_out']['he-il'] = "התנתק";
$text['label-status_logged_out']['it-it'] = "Sloggato";
$text['label-status_logged_out']['ka-ge'] = "გასული";
$text['label-status_logged_out']['nl-nl'] = "Afgelogged";
$text['label-status_logged_out']['pl-pl'] = "Wylogowany";
$text['label-status_logged_out']['pt-br'] = "Desligado";
@@ -116,6 +130,7 @@ $text['label-status_logged_out']['ro-ro'] = "Delogat";
$text['label-status_logged_out']['ru-ru'] = "Вышел из системы";
$text['label-status_logged_out']['sv-se'] = "Utloggad";
$text['label-status_logged_out']['uk-ua'] = "Увійти";
$text['label-status_logged_out']['tr-tr'] = "Çıkış yapıldı";
$text['label-status_logged_out']['zh-cn'] = "登出";
$text['label-status_logged_out']['ja-jp'] = "ログアウトしました";
$text['label-status_logged_out']['ko-kr'] = "로그아웃됨";
@@ -126,12 +141,14 @@ $text['label-status_do_not_disturb']['ar-eg'] = "لا تخل";
$text['label-status_do_not_disturb']['de-at'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['de-ch'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['de-de'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['el-gr'] = "Μην ενοχλείτε";
$text['label-status_do_not_disturb']['es-cl'] = "No Molestar";
$text['label-status_do_not_disturb']['es-mx'] = "No Molestar";
$text['label-status_do_not_disturb']['fr-ca'] = "Ne pas Déranger";
$text['label-status_do_not_disturb']['fr-fr'] = "Ne pas Déranger";
$text['label-status_do_not_disturb']['he-il'] = "נא לא להפריע";
$text['label-status_do_not_disturb']['it-it'] = "Non Disturbare";
$text['label-status_do_not_disturb']['ka-ge'] = "არ შემაწუხო";
$text['label-status_do_not_disturb']['nl-nl'] = "Niet Storen";
$text['label-status_do_not_disturb']['pl-pl'] = "Nie przeszkadzać (DND)";
$text['label-status_do_not_disturb']['pt-br'] = "Não perturbe";
@@ -140,6 +157,7 @@ $text['label-status_do_not_disturb']['ro-ro'] = "Nu deranjați";
$text['label-status_do_not_disturb']['ru-ru'] = "Просьба не беспокоить";
$text['label-status_do_not_disturb']['sv-se'] = "Stör Ej";
$text['label-status_do_not_disturb']['uk-ua'] = "Не турбувати";
$text['label-status_do_not_disturb']['tr-tr'] = "Rahatsız etmeyin";
$text['label-status_do_not_disturb']['zh-cn'] = "请勿打扰";
$text['label-status_do_not_disturb']['ja-jp'] = "邪魔しないでください";
$text['label-status_do_not_disturb']['ko-kr'] = "방해하지 마";
@@ -150,12 +168,14 @@ $text['label-status_available_on_demand']['ar-eg'] = "متاح (عند الطل
$text['label-status_available_on_demand']['de-at'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['de-ch'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['de-de'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['el-gr'] = "Διαθέσιμο (κατόπιν αιτήματος)";
$text['label-status_available_on_demand']['es-cl'] = "Disponible (A Pedido)";
$text['label-status_available_on_demand']['es-mx'] = "Disponible (A Pedido)";
$text['label-status_available_on_demand']['fr-ca'] = "Disponible (sur demande)";
$text['label-status_available_on_demand']['fr-fr'] = "Disponible (sur demande)";
$text['label-status_available_on_demand']['he-il'] = "זמין (לפי דרישה)";
$text['label-status_available_on_demand']['it-it'] = "Disponibile (Su Richiesta)";
$text['label-status_available_on_demand']['ka-ge'] = "ხელმისაწვდომია (მოთხოვნით)";
$text['label-status_available_on_demand']['nl-nl'] = "Beschikbaar (Op Aaanvraag)";
$text['label-status_available_on_demand']['pl-pl'] = "Dostępny (na żądanie)";
$text['label-status_available_on_demand']['pt-br'] = "Disponivel (A pedido)";
@@ -164,6 +184,7 @@ $text['label-status_available_on_demand']['ro-ro'] = "Disponibil (la cerere)";
$text['label-status_available_on_demand']['ru-ru'] = "Доступен (по требованию)";
$text['label-status_available_on_demand']['sv-se'] = "Tillgänglig (På Begäran)";
$text['label-status_available_on_demand']['uk-ua'] = "Доступний (на вимогу)";
$text['label-status_available_on_demand']['tr-tr'] = "Mevcut (Talep Üzerine)";
$text['label-status_available_on_demand']['zh-cn'] = "可用(按需)";
$text['label-status_available_on_demand']['ja-jp'] = "あり(オンデマンド)";
$text['label-status_available_on_demand']['ko-kr'] = "사용 가능(주문형)";
@@ -174,12 +195,14 @@ $text['label-status_available']['ar-eg'] = "متاح";
$text['label-status_available']['de-at'] = "Verfügbar";
$text['label-status_available']['de-ch'] = "Verfügbar";
$text['label-status_available']['de-de'] = "Verfügbar";
$text['label-status_available']['el-gr'] = "Διαθέσιμος";
$text['label-status_available']['es-cl'] = "Disponible";
$text['label-status_available']['es-mx'] = "Disponible";
$text['label-status_available']['fr-ca'] = "Disponible";
$text['label-status_available']['fr-fr'] = "Disponible";
$text['label-status_available']['he-il'] = "זמין";
$text['label-status_available']['it-it'] = "Disponibile";
$text['label-status_available']['ka-ge'] = "ხელმისაწვდომია";
$text['label-status_available']['nl-nl'] = "Beschikbaar";
$text['label-status_available']['pl-pl'] = "Dostępny";
$text['label-status_available']['pt-br'] = "Disponível";
@@ -188,6 +211,7 @@ $text['label-status_available']['ro-ro'] = "Disponibil";
$text['label-status_available']['ru-ru'] = "Доступен";
$text['label-status_available']['sv-se'] = "Tillgänglig";
$text['label-status_available']['uk-ua'] = "В наявності";
$text['label-status_available']['tr-tr'] = "Mevcut";
$text['label-status_available']['zh-cn'] = "可用的";
$text['label-status_available']['ja-jp'] = "利用可能";
$text['label-status_available']['ko-kr'] = "사용 가능";
@@ -198,12 +222,14 @@ $text['label-refresh_pause']['ar-eg'] = "وقفة التحديث";
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-de'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['el-gr'] = "Ανανέωση";
$text['label-refresh_pause']['es-cl'] = "Actualizar Pausa";
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa";
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser";
$text['label-refresh_pause']['fr-fr'] = "Pause Actualiser";
$text['label-refresh_pause']['he-il'] = "עצור רענון";
$text['label-refresh_pause']['it-it'] = "Interrompi";
$text['label-refresh_pause']['ka-ge'] = "განახლების შეჩერება";
$text['label-refresh_pause']['nl-nl'] = "Stop verversen";
$text['label-refresh_pause']['pl-pl'] = "Pauzuj odświeżanie";
$text['label-refresh_pause']['pt-br'] = "Pausar atualização";
@@ -212,6 +238,7 @@ $text['label-refresh_pause']['ro-ro'] = "Întrerupeți reîmprospătarea";
$text['label-refresh_pause']['ru-ru'] = "Приостановить обновление";
$text['label-refresh_pause']['sv-se'] = "Paus Uppdatera";
$text['label-refresh_pause']['uk-ua'] = "Пауза Refresh";
$text['label-refresh_pause']['tr-tr'] = "Yenilemeyi Duraklat";
$text['label-refresh_pause']['zh-cn'] = "暂停刷新";
$text['label-refresh_pause']['ja-jp'] = "リフレッシュを一時停止";
$text['label-refresh_pause']['ko-kr'] = "새로고침 일시중지";
@@ -222,12 +249,14 @@ $text['label-refresh_enable']['ar-eg'] = "تمكين التحديث";
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-de'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['el-gr'] = "Ενεργοποίηση ανανέωσης";
$text['label-refresh_enable']['es-cl'] = "Activar Actualizar";
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar";
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser";
$text['label-refresh_enable']['fr-fr'] = "Activer Actualiser";
$text['label-refresh_enable']['he-il'] = "אפשר רענון";
$text['label-refresh_enable']['it-it'] = "Abilita Aggiornamento";
$text['label-refresh_enable']['ka-ge'] = "განახლების ჩართვა";
$text['label-refresh_enable']['nl-nl'] = "Start verversen";
$text['label-refresh_enable']['pl-pl'] = "Włącz odświeżanie";
$text['label-refresh_enable']['pt-br'] = "Habilitar atualização";
@@ -236,6 +265,7 @@ $text['label-refresh_enable']['ro-ro'] = "Activați Reîmprospătare";
$text['label-refresh_enable']['ru-ru'] = "Включить обновление";
$text['label-refresh_enable']['sv-se'] = "Aktivera Uppdatering";
$text['label-refresh_enable']['uk-ua'] = "Увімкнути Refresh";
$text['label-refresh_enable']['tr-tr'] = "Yenilemeyi Etkinleştir";
$text['label-refresh_enable']['zh-cn'] = "启用刷新";
$text['label-refresh_enable']['ja-jp'] = "リフレッシュを有効にする";
$text['label-refresh_enable']['ko-kr'] = "새로 고침 활성화";
@@ -246,12 +276,14 @@ $text['label-recording']['ar-eg'] = "تسجيل";
$text['label-recording']['de-at'] = "Aufnahme";
$text['label-recording']['de-ch'] = "Aufnahme";
$text['label-recording']['de-de'] = "Aufnahme";
$text['label-recording']['el-gr'] = "Εγγραφή";
$text['label-recording']['es-cl'] = "Grabación de Llamadas";
$text['label-recording']['es-mx'] = "Grabación de Llamadas";
$text['label-recording']['fr-ca'] = "Enregistrement de L'appel";
$text['label-recording']['fr-fr'] = "Enregistrement de L'appel";
$text['label-recording']['he-il'] = "מקליט";
$text['label-recording']['it-it'] = "Registrazione";
$text['label-recording']['ka-ge'] = "ჩაწერა";
$text['label-recording']['nl-nl'] = "Opnemend";
$text['label-recording']['pl-pl'] = "Nagrywanie";
$text['label-recording']['pt-br'] = "Gravação de chamadas";
@@ -260,6 +292,7 @@ $text['label-recording']['ro-ro'] = "Înregistrare";
$text['label-recording']['ru-ru'] = "Запись";
$text['label-recording']['sv-se'] = "Inspelning";
$text['label-recording']['uk-ua'] = "Запис";
$text['label-recording']['tr-tr'] = "Kayıt";
$text['label-recording']['zh-cn'] = "记录";
$text['label-recording']['ja-jp'] = "録音";
$text['label-recording']['ko-kr'] = "녹음";
@@ -270,12 +303,14 @@ $text['label-record']['ar-eg'] = "سِجِلّ";
$text['label-record']['de-at'] = "Aufnehmen";
$text['label-record']['de-ch'] = "Aufnehmen";
$text['label-record']['de-de'] = "Aufnehmen";
$text['label-record']['el-gr'] = "Ρεκόρ";
$text['label-record']['es-cl'] = "Registro";
$text['label-record']['es-mx'] = "Registro";
$text['label-record']['fr-ca'] = "Enregistrer";
$text['label-record']['fr-fr'] = "Enregistrer";
$text['label-record']['he-il'] = "הקלטה";
$text['label-record']['it-it'] = "Registrazione";
$text['label-record']['ka-ge'] = "ჩაწერა";
$text['label-record']['nl-nl'] = "Opnemen";
$text['label-record']['pl-pl'] = "Nagrywanie";
$text['label-record']['pt-br'] = "Registro";
@@ -284,6 +319,7 @@ $text['label-record']['ro-ro'] = "Record";
$text['label-record']['ru-ru'] = "Воспроизведение";
$text['label-record']['sv-se'] = "Spela In";
$text['label-record']['uk-ua'] = "Запис";
$text['label-record']['tr-tr'] = "Kayıt";
$text['label-record']['zh-cn'] = "记录";
$text['label-record']['ja-jp'] = "記録";
$text['label-record']['ko-kr'] = "기록";
@@ -294,12 +330,14 @@ $text['label-other_extensions']['ar-eg'] = "ملحقات أخرى";
$text['label-other_extensions']['de-at'] = "Andere Nebenstellen";
$text['label-other_extensions']['de-ch'] = "Andere Nebenstellen";
$text['label-other_extensions']['de-de'] = "Andere Nebenstellen";
$text['label-other_extensions']['el-gr'] = "Άλλες επεκτάσεις";
$text['label-other_extensions']['es-cl'] = "Otras Extensiones";
$text['label-other_extensions']['es-mx'] = "Otras Extensiones";
$text['label-other_extensions']['fr-ca'] = "Autres Extensions";
$text['label-other_extensions']['fr-fr'] = "Autres Extensions";
$text['label-other_extensions']['he-il'] = "שלוחות אחרות";
$text['label-other_extensions']['it-it'] = "Altri Interni";
$text['label-other_extensions']['ka-ge'] = "სხვა გაფართოებები";
$text['label-other_extensions']['nl-nl'] = "Andere toestellen";
$text['label-other_extensions']['pl-pl'] = "Inne numery wewnętrzne";
$text['label-other_extensions']['pt-br'] = "Outras extensões";
@@ -308,6 +346,7 @@ $text['label-other_extensions']['ro-ro'] = "Alte extensii";
$text['label-other_extensions']['ru-ru'] = "Другие внутренние номера";
$text['label-other_extensions']['sv-se'] = "Annan Anknytning";
$text['label-other_extensions']['uk-ua'] = "Інші розширення";
$text['label-other_extensions']['tr-tr'] = "Diğer Uzantılar";
$text['label-other_extensions']['zh-cn'] = "其他扩展";
$text['label-other_extensions']['ja-jp'] = "その他の拡張子";
$text['label-other_extensions']['ko-kr'] = "기타 확장";
@@ -318,12 +357,14 @@ $text['label-no_extensions_found']['ar-eg'] = "لم يتم العثور على
$text['label-no_extensions_found']['de-at'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['de-ch'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['de-de'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['el-gr'] = "Δεν βρέθηκαν επεκτάσεις.";
$text['label-no_extensions_found']['es-cl'] = "No hay extensiones encontrados.";
$text['label-no_extensions_found']['es-mx'] = "No hay extensiones encontrados.";
$text['label-no_extensions_found']['fr-ca'] = "Aucun extensions trouvés.";
$text['label-no_extensions_found']['fr-fr'] = "Aucun extensions trouvés.";
$text['label-no_extensions_found']['he-il'] = "לא נמצאו שלוחות";
$text['label-no_extensions_found']['it-it'] = "Nessun interno trovato.";
$text['label-no_extensions_found']['ka-ge'] = "გაფართოებები აღმოჩენილი არაა";
$text['label-no_extensions_found']['nl-nl'] = "Geen toestellen gevonden.";
$text['label-no_extensions_found']['pl-pl'] = "Nie znaleziono numerów wewnętrznych";
$text['label-no_extensions_found']['pt-br'] = "Não foi encontrada nenhuma extensão";
@@ -332,6 +373,7 @@ $text['label-no_extensions_found']['ro-ro'] = "Nu s-au găsit extensii.";
$text['label-no_extensions_found']['ru-ru'] = "Внутренних номеров не найдено.";
$text['label-no_extensions_found']['sv-se'] = "Ingen anknytning funnen.";
$text['label-no_extensions_found']['uk-ua'] = "Не знайдено розширення.";
$text['label-no_extensions_found']['tr-tr'] = "Uzantı bulunamadı.";
$text['label-no_extensions_found']['zh-cn'] = "未找到扩展。";
$text['label-no_extensions_found']['ja-jp'] = "拡張子が見つかりません。";
$text['label-no_extensions_found']['ko-kr'] = "확장 프로그램이 없습니다.";
@@ -342,12 +384,14 @@ $text['label-hangup']['ar-eg'] = "تشبث";
$text['label-hangup']['de-at'] = "Abwürgen";
$text['label-hangup']['de-ch'] = "Abwürgen";
$text['label-hangup']['de-de'] = "Abwürgen";
$text['label-hangup']['el-gr'] = "Κονάνθρωπος";
$text['label-hangup']['es-cl'] = "Finalizar Llamada";
$text['label-hangup']['es-mx'] = "Finalizar Llamada";
$text['label-hangup']['fr-ca'] = "Tuer Appel";
$text['label-hangup']['fr-fr'] = "Tuer Appel";
$text['label-hangup']['he-il'] = "הפסק";
$text['label-hangup']['it-it'] = "Abbatti";
$text['label-hangup']['ka-ge'] = "გათიშვა";
$text['label-hangup']['nl-nl'] = "Ophangen";
$text['label-hangup']['pl-pl'] = "Rozłączenie się";
$text['label-hangup']['pt-br'] = "Chamada final";
@@ -356,6 +400,7 @@ $text['label-hangup']['ro-ro'] = "Rezistă";
$text['label-hangup']['ru-ru'] = "Убить";
$text['label-hangup']['sv-se'] = "Lägg På";
$text['label-hangup']['uk-ua'] = "вбити";
$text['label-hangup']['tr-tr'] = "Telefonu kapatmak";
$text['label-hangup']['zh-cn'] = "不挂断";
$text['label-hangup']['ja-jp'] = "ちょっとまって";
$text['label-hangup']['ko-kr'] = "잠깐만";
@@ -366,12 +411,14 @@ $text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionner";
$text['label-eavesdrop']['fr-fr'] = "Espionner";
$text['label-eavesdrop']['he-il'] = "לְצוֹתֵת";
$text['label-eavesdrop']['it-it'] = "Ascolta";
$text['label-eavesdrop']['ka-ge'] = "მიყურადება";
$text['label-eavesdrop']['nl-nl'] = "Afluisteren";
$text['label-eavesdrop']['pl-pl'] = "Podsłuchiwanie";
$text['label-eavesdrop']['pt-br'] = "Investigar";
@@ -380,6 +427,7 @@ $text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
$text['label-eavesdrop']['ru-ru'] = "Подслушивать";
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
$text['label-eavesdrop']['uk-ua'] = "підслуховувати";
$text['label-eavesdrop']['tr-tr'] = "Kulak misafiri olmak";
$text['label-eavesdrop']['zh-cn'] = "窃听";
$text['label-eavesdrop']['ja-jp'] = "盗聴";
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
@@ -390,12 +438,14 @@ $text['label-call_group']['ar-eg'] = "مجموعة الاتصال";
$text['label-call_group']['de-at'] = "Rufgruppe";
$text['label-call_group']['de-ch'] = "Rufgruppe";
$text['label-call_group']['de-de'] = "Rufgruppe";
$text['label-call_group']['el-gr'] = "Ομάδα κλήσεων";
$text['label-call_group']['es-cl'] = "Llamar a Grupo";
$text['label-call_group']['es-mx'] = "Llamar a Grupo";
$text['label-call_group']['fr-ca'] = "Groupe d'appel";
$text['label-call_group']['fr-fr'] = "Groupe d'appel";
$text['label-call_group']['he-il'] = "קבוצת חיוג";
$text['label-call_group']['it-it'] = "Gruppo di Chiamata";
$text['label-call_group']['ka-ge'] = "ჯგუფური დარეკვა";
$text['label-call_group']['nl-nl'] = "Oproep Groep";
$text['label-call_group']['pl-pl'] = "Grupa odbiorców rozmowy";
$text['label-call_group']['pt-br'] = "Grupo";
@@ -404,6 +454,7 @@ $text['label-call_group']['ro-ro'] = "Grup de apeluri";
$text['label-call_group']['ru-ru'] = "Группы вызова";
$text['label-call_group']['sv-se'] = "Ring Grupp";
$text['label-call_group']['uk-ua'] = "груповий виклик";
$text['label-call_group']['tr-tr'] = "Çağrı Grubu";
$text['label-call_group']['zh-cn'] = "呼叫组";
$text['label-call_group']['ja-jp'] = "通話グループ";
$text['label-call_group']['ko-kr'] = "통화 그룹";
@@ -414,12 +465,14 @@ $text['label-call_direction']['ar-eg'] = "اتجاه الاتصال";
$text['label-call_direction']['de-at'] = "Anruf Richtung";
$text['label-call_direction']['de-ch'] = "Anruf Richtung";
$text['label-call_direction']['de-de'] = "Anruf Richtung";
$text['label-call_direction']['el-gr'] = "Κατεύθυνση κλήσεων";
$text['label-call_direction']['es-cl'] = "Dirección de la llamada";
$text['label-call_direction']['es-mx'] = "Dirección de la llamada";
$text['label-call_direction']['fr-ca'] = "Sens de l'appel";
$text['label-call_direction']['fr-fr'] = "Sens de l'appel";
$text['label-call_direction']['he-il'] = "כיוון שיחה";
$text['label-call_direction']['it-it'] = "Direzione Chiamata";
$text['label-call_direction']['ka-ge'] = "ზარის მიმართულება";
$text['label-call_direction']['nl-nl'] = "Oproep richting";
$text['label-call_direction']['pl-pl'] = "Kierunek rozmowy";
$text['label-call_direction']['pt-br'] = "Direção da chamada";
@@ -428,6 +481,7 @@ $text['label-call_direction']['ro-ro'] = "Direcția de apel";
$text['label-call_direction']['ru-ru'] = "Направление вызова";
$text['label-call_direction']['sv-se'] = "Samtals Riktning";
$text['label-call_direction']['uk-ua'] = "напрямок виклику";
$text['label-call_direction']['tr-tr'] = "Çağrı Yönü";
$text['label-call_direction']['zh-cn'] = "呼叫方向";
$text['label-call_direction']['ja-jp'] = "通話方向";
$text['label-call_direction']['ko-kr'] = "통화 방향";
@@ -438,12 +492,14 @@ $text['label-filter']['ar-eg'] = "فيلم";
$text['label-filter']['de-at'] = "Filter...";
$text['label-filter']['de-ch'] = "Filter...";
$text['label-filter']['de-de'] = "Filter...";
$text['label-filter']['el-gr'] = "Φίλτρο...";
$text['label-filter']['es-cl'] = "Filtro...";
$text['label-filter']['es-mx'] = "Filtro...";
$text['label-filter']['fr-ca'] = "Filtre...";
$text['label-filter']['fr-fr'] = "Filtre...";
$text['label-filter']['he-il'] = "Filter...";
$text['label-filter']['he-il'] = "לְסַנֵן...";
$text['label-filter']['it-it'] = "Filtro...";
$text['label-filter']['ka-ge'] = "გაფილტვრა...";
$text['label-filter']['nl-nl'] = "Filter...";
$text['label-filter']['pl-pl'] = "Filter...";
$text['label-filter']['pt-br'] = "Filtro...";
@@ -452,6 +508,7 @@ $text['label-filter']['ro-ro'] = "Filtru...";
$text['label-filter']['ru-ru'] = "Фильтр";
$text['label-filter']['sv-se'] = "Filter...";
$text['label-filter']['uk-ua'] = "Фільтри";
$text['label-filter']['tr-tr'] = "Filtrele...";
$text['label-filter']['zh-cn'] = "筛选";
$text['label-filter']['ja-jp'] = "フィルター";
$text['label-filter']['ko-kr'] = "필터";
@@ -462,12 +519,14 @@ $text['description-eavesdrop_destination']['ar-eg'] = "حدد وجهة Eavesdrop
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-de'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['el-gr'] = "Επιλέξτε τον προορισμό EAVESDROP";
$text['description-eavesdrop_destination']['es-cl'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['fr-fr'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['he-il'] = "בחר ביעד האזנת סתר";
$text['description-eavesdrop_destination']['it-it'] = "Seleziona la Destinazione d'Ascolto";
$text['description-eavesdrop_destination']['ka-ge'] = "აირჩიეთ მოსმენის სამიზნე";
$text['description-eavesdrop_destination']['nl-nl'] = "Kies afluister bestemming";
$text['description-eavesdrop_destination']['pl-pl'] = "Wybierz destynację podsłuchiwanych rozmów";
$text['description-eavesdrop_destination']['pt-br'] = "Selecione o eavesdrop de destino";
@@ -476,6 +535,7 @@ $text['description-eavesdrop_destination']['ro-ro'] = "Selectați Destinația Ea
$text['description-eavesdrop_destination']['ru-ru'] = "Выберите подслушивание пункта назначения";
$text['description-eavesdrop_destination']['sv-se'] = "Välj Medlyssning Destination";
$text['description-eavesdrop_destination']['uk-ua'] = "Виберіть пункт призначення підслуховувати";
$text['description-eavesdrop_destination']['tr-tr'] = "Dinleme Hedefini Seçin";
$text['description-eavesdrop_destination']['zh-cn'] = "选择窃听目的地";
$text['description-eavesdrop_destination']['ja-jp'] = "盗聴先を選択";
$text['description-eavesdrop_destination']['ko-kr'] = "도청 대상 선택";
@@ -486,12 +546,14 @@ $text['button-all']['ar-eg'] = "الجميع";
$text['button-all']['de-at'] = "Alle";
$text['button-all']['de-ch'] = "Alle";
$text['button-all']['de-de'] = "Alle";
$text['button-all']['el-gr'] = "Ολα";
$text['button-all']['es-cl'] = "Todos";
$text['button-all']['es-mx'] = "Todos";
$text['button-all']['fr-ca'] = "Tous";
$text['button-all']['fr-fr'] = "Tous";
$text['button-all']['he-il'] = "הכל";
$text['button-all']['it-it'] = "Tutti";
$text['button-all']['ka-ge'] = "ყველა";
$text['button-all']['nl-nl'] = "Alle";
$text['button-all']['pl-pl'] = "Wszyscy";
$text['button-all']['pt-br'] = "Tudo";
@@ -500,8 +562,9 @@ $text['button-all']['ro-ro'] = "Toate";
$text['button-all']['ru-ru'] = "Все";
$text['button-all']['sv-se'] = "Alla";
$text['button-all']['uk-ua'] = "Всі";
$text['button-all']['tr-tr'] = "Tüm";
$text['button-all']['zh-cn'] = "全部";
$text['button-all']['ja-jp'] = "全て";
$text['button-all']['ko-kr'] = "모두";
?>
?>
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Panneau Operateur";
$apps[$x]['menu'][$y]['title']['he-il'] = "לוח מפעיל";
$apps[$x]['menu'][$y]['title']['it-it'] = "Pannello Operatore";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ოპერატორის პანელი";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Bedienings paneel";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Panel operatora";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Painel do operador";
+2 -2
View File
@@ -57,7 +57,7 @@ if (count($_GET) > 0) {
$direction = trim($_GET["direction"] ?? '');
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//allow specific commands
if (!empty($switch_cmd)) {
@@ -99,7 +99,7 @@ if (count($_GET) > 0) {
}
//run the command
$switch_result = event_socket_request($fp, 'api '.$api_cmd);
$switch_result = event_socket::api($api_cmd);
/*
//record stop
+17 -21
View File
@@ -65,7 +65,7 @@
//update the status
if (permission_exists("user_setting_edit")) {
//add the user_edit permission
$p = new permissions;
$p = permissions::new();
$p->add("user_edit", "temp");
//update the database user_status
@@ -97,15 +97,15 @@
//update the user_status
if (is_uuid($call_center_agent_uuid)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_cmd .= "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$esl = event_socket::create();
$switch_cmd = "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
$switch_result = event_socket::api($switch_cmd);
}
//update the user state
if (is_uuid($call_center_agent_uuid)) {
$cmd = "api callcenter_config agent set state ".$call_center_agent_uuid." Waiting";
$response = event_socket_request($fp, $cmd);
$response = event_socket::api($cmd);
}
//update do not disturb
@@ -153,7 +153,7 @@
}
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_edit', 'temp');
//execute update
@@ -260,7 +260,7 @@ unset($refresh_default);
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_reponse').innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
if (document.getElementById('sort')) {
if (document.getElementById('sort').value != "")
document.getElementById('sort1').value=document.getElementById('sort').value;
@@ -281,7 +281,7 @@ unset($refresh_default);
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
new loadXmlHttp(url, 'ajax_response');
refresh_start();
}
@@ -349,11 +349,11 @@ unset($refresh_default);
//refresh controls
function refresh_stop() {
clearInterval(interval_timer_id);
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">"; }
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_enable'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>"; }
}
function refresh_start() {
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()']); ?>"; }
refresh_stop();
interval_timer_id = setInterval( function() {
url = source_url;
@@ -369,7 +369,7 @@ unset($refresh_default);
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
new loadXmlHttp(url, 'ajax_response');
}, refresh);
}
@@ -405,7 +405,7 @@ unset($refresh_default);
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid, document.getElementById('eavesdrop_dest').value);
if (cmd != '') {
send_cmd(cmd)
send_cmd(cmd);
}
}
}
@@ -430,7 +430,7 @@ unset($refresh_default);
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
}
//hide/show destination input field
@@ -588,15 +588,11 @@ if (is_array($_SESSION['user']['extension'])) {
}
}
?>
<div id='ajax_reponse'></div>
<div id='cmd_reponse' style='display: none;'></div>
<br><br>
<?php
echo "<div id='ajax_response'></div>\n";
echo "<div id='cmd_response' style='display: none;'></div>\n";
echo "<br><br>\n";
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -77,7 +77,7 @@ if (!class_exists('basic_operator_panel')) {
//store extension status by user uuid
if (isset($extensions)) {
foreach($extensions as &$row) {
foreach ($extensions as $row) {
if ($row['user_uuid'] != '') {
$ext_user_status[$row['user_uuid']] = $row['user_status'];
unset($row['user_status']);
@@ -86,16 +86,18 @@ if (!class_exists('basic_operator_panel')) {
}
//send the command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api show channels as json');
$switch_result = event_socket::api('show channels as json');
if ($switch_result !== false) {
$fp = true;
$json_array = json_decode($switch_result, true);
} else {
$fp = false;
}
//build the response
$x = 0;
if (isset($extensions)) {
foreach($extensions as &$row) {
foreach ($extensions as $row) {
$user = $row['extension'];
if (!empty($row['number_alias'])) {
$user = $row['number_alias'];
@@ -141,7 +143,7 @@ if (!class_exists('basic_operator_panel')) {
//add the active call details
$found = false;
if (isset($json_array['rows'])) {
foreach($json_array['rows'] as &$field) {
foreach ($json_array['rows'] as $field) {
$presence_id = $field['presence_id'];
$presence = explode("@", $presence_id);
$presence_id = $presence[0];
@@ -205,8 +207,10 @@ if (!class_exists('basic_operator_panel')) {
if ($fp) {
if (is_uuid($field['uuid'])) {
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
$dump_array = json_decode($dump_result, true);
$dump_result = event_socket::api($switch_cmd);
if ($dump_result !== false) {
$dump_array = json_decode($dump_result, true);
}
if (is_array($dump_array)) {
foreach ($dump_array as $dump_var_name => $dump_var_value) {
$array[$x][$dump_var_name] = $dump_var_value;
+48 -32
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -60,13 +60,12 @@ if (is_array($activity)) {
}
if (!empty($groups)) {
$groups = array_unique($groups);
sort($groups);
sort($groups);
}
//get the valet info
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$valet_info = event_socket_request($fp, 'api valet_info park@'.$_SESSION['domain_name']);
$valet_info = event_socket::api('valet_info park@'.$_SESSION['domain_name']);
if ($valet_info !== false) {
//get an array of the valet call uuid and park numbers
if (isset($valet_info)) {
@@ -78,10 +77,10 @@ if ($fp) {
//unset($_SESSION['valet']);
foreach($valet_matches as $row) {
if (!isset($_SESSION['valet']['uuid']['caller_id_name'])) {
$_SESSION['valet'][$row[1]]['caller_id_name'] = event_socket_request($fp, 'api uuid_getvar '.$row[1].' caller_id_name');
$_SESSION['valet'][$row[1]]['caller_id_name'] = event_socket::api('uuid_getvar '.$row[1].' caller_id_name');
}
if (!isset($_SESSION['valet']['uuid']['caller_id_number'])) {
$_SESSION['valet'][$row[1]]['caller_id_number'] = event_socket_request($fp, 'api uuid_getvar '.$row[1].' caller_id_number');
$_SESSION['valet'][$row[1]]['caller_id_number'] = event_socket::api('uuid_getvar '.$row[1].' caller_id_number');
}
}
@@ -155,8 +154,8 @@ echo " </td>\n";
echo " <td valign='top' align='right' width='50%' nowrap>\n";
echo " <table cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>\n";
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">\n";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
echo " </td>\n";
if (permission_exists('operator_panel_eavesdrop')) {
@@ -165,8 +164,10 @@ if (permission_exists('operator_panel_eavesdrop')) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : escape($_REQUEST['eavesdrop_dest']))."\">\n";
echo " <img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 0px 5px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'>\n";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
if (is_array($_SESSION['user']['extensions'])) foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
if (is_array($_SESSION['user']['extensions'])) {
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
}
}
echo " </select>\n";
}
@@ -228,7 +229,7 @@ if (is_array($activity)) {
unset($block);
//filter by group, if defined
if ($_REQUEST['group'] != '' && substr_count($ext['call_group'], $_REQUEST['group']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
if ($_REQUEST['group'] != '' && substr_count($ext['call_group'] ?? '', $_REQUEST['group']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
//filter by extension or name, if defined
if (!empty($_REQUEST['filter'])) {
@@ -241,6 +242,11 @@ if (is_array($activity)) {
) { continue; }
}
//set the default values
$call_name = '';
$call_number = '';
$dir_icon = '';
//check if feature code being called
$format_number = (!empty($ext['dest']) && substr($ext['dest'], 0, 1) == '*') ? false : true;
@@ -292,14 +298,20 @@ if (is_array($activity)) {
else if ($ext['state'] == 'CS_EXCHANGE_MEDIA' && $ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'inbound') {
//valet park
$ext_state = 'active';
if (!empty($ext['dest'])) {
if (!empty($activity[$ext['dest']])) {
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
}
}
$call_number = format_phone($ext['dest']);
}
else if ($ext['state'] == 'CS_SOFT_EXECUTE' && $ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
//valet park
$ext_state = 'active';
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
if (empty($ext['dest']) && empty($activity[$ext['dest']])) {
$call_name = $activity[$ext['dest'] ?? '']['effective_caller_id_name'];
}
$call_number = format_phone($ext['dest'] ?? '');
}
else if ($ext['state'] == 'CS_CONSUME_MEDIA' || $ext['state'] == 'CS_EXCHANGE_MEDIA') {
if ($ext['state'] == 'CS_CONSUME_MEDIA' && $ext['callstate'] == 'RINGING' && $ext['direction'] == 'outbound') {
@@ -318,7 +330,7 @@ if (is_array($activity)) {
$ext_state = 'held';
}
$dir_icon = 'inbound';
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'] ?? '';
$call_number = format_phone($ext['cid_num']);
}
else {
@@ -335,12 +347,18 @@ if (is_array($activity)) {
}
}
}
if ($found_count > 0) {
if ($found_count > 0) {
//determine block style by state (if any) and register status
$style = !empty($ext_state) ? "op_ext op_state_".$ext_state : "op_ext";
$css_class = !empty($ext_state) ? "op_ext op_state_".$ext_state : "op_ext";
}
else {
$style = "off_ext";
//unregistered extension
if (!empty($_SESSION['operator_panel']['show_unregistered']['boolean']) && $_SESSION['operator_panel']['show_unregistered']['boolean'] == 'true') {
$css_class = "ur_ext";
}
else {
continue;
}
}
unset($extension_number, $found_count, $array);
@@ -348,7 +366,7 @@ if (is_array($activity)) {
if ($ext['uuid'] == $ext['call_uuid'] && empty($ext['variable_bridge_uuid'])) { // transfer an outbound internal call
$call_identifier = $activity[$call_number ?? null]['uuid'] ?? null;
}
else if (($ext['variable_call_direction'] == 'outbound' || $ext['variable_call_direction'] == 'local') && $ext['variable_bridge_uuid'] != '') { // transfer an outbound external call
else if ((!empty($ext['variable_call_direction']) && ($ext['variable_call_direction'] == 'outbound' || $ext['variable_call_direction'] == 'local')) && !empty($ext['variable_bridge_uuid'])) { // transfer an outbound external call
$call_identifier = $ext['variable_bridge_uuid'];
}
else {
@@ -429,15 +447,15 @@ if (is_array($activity)) {
}
//build the list of extensions
$block = "<div id='".escape($extension)."' class='".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".((!empty($ext_state) && $ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
$block .= "<table class='".$style."'>\n";
$block = "<div id='".escape($extension)."' class='".$css_class."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".(empty($ext_state) || ($ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
$block .= "<table class='".$css_class."'>\n";
$block .= " <tr>\n";
$block .= " <td class='op_ext_icon'>\n";
$block .= " <span name='".escape($extension)."'>\n"; // DRAG FROM
$block .= "<img id='".escape($call_identifier)."' class='op_ext_icon' src='resources/images/status_".$status_icon.".png' title='".$status_hover."' ".(($draggable) ? "draggable='true' ondragstart=\"drag(event, this.parentNode.getAttribute('name'));\" onclick=\"virtual_drag('".escape($call_identifier)."', '".escape($extension)."');\"" : "onfocus='this.blur();' draggable='false' style='cursor: not-allowed;'").">\n";
$block .= "</span>\n";
$block .= " </td>\n";
$block .= " <td class='op_ext_info ".$style."'>\n";
$block .= " <td class='op_ext_info ".$css_class."'>\n";
if ($dir_icon ?? '') {
$block .= " <img src='resources/images/".$dir_icon.".png' align='right' style='margin-top: 3px; margin-right: 1px; width: 12px; height: 12px; cursor: help;' draggable='false' alt=\"".$text['label-call_direction']."\" title=\"".$text['label-call_direction']."\">\n";
}
@@ -474,7 +492,7 @@ if (is_array($activity)) {
if (empty($ext['variable_bridge_uuid']) && $ext_state == 'ringing') {
$call_identifier_hangup_uuid = $ext['uuid'];
}
else if ($dir_icon == 'outbound') {
elseif ($dir_icon == 'outbound') {
$call_identifier_hangup_uuid = $ext['uuid'];
}
else {
@@ -553,19 +571,19 @@ if (sizeof($user_extensions) > 0) {
foreach ($valet_array as $row) {
$extension = $row['extension'];
$ext_state = 'active';
$style = "op_ext op_valet_park_active";
$css_class = "op_ext op_valet_park_active";
$draggable = false;
//build the list of park extensions
$valet_block .= "<div id='".escape($extension)."' class='".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'>\n"; // DRAG TO
$valet_block .= "<table class='".$style."'>\n";
$valet_block .= "<div id='".escape($extension)."' class='".$css_class."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'>\n"; // DRAG TO
$valet_block .= "<table class='".$css_class."'>\n";
$valet_block .= " <tr>\n";
$valet_block .= " <td class='op_ext_icon'>\n";
$valet_block .= " <span name='".escape($extension)."'>"; // DRAG FROM
$valet_block .= "<img id='".escape($call_identifier)."' class='op_ext_icon' src='resources/images/status_".$status_icon.".png' title='".$status_hover."' ".(($draggable) ? "draggable='true' ondragstart=\"drag(event, this.parentNode.getAttribute('name'));\" onclick=\"virtual_drag('".escape($call_identifier)."', '".escape($extension)."');\"" : "onfocus='this.blur();' draggable='false' style='cursor: not-allowed;'").">\n";
$valet_block .= "</span>\n";
$valet_block .= " </td>\n";
$valet_block .= " <td class='op_ext_info ".$style."'>\n";
$valet_block .= " <td class='op_ext_info ".$css_class."'>\n";
if ($dir_icon != '') {
$valet_block .= " <img src='resources/images/".$dir_icon.".png' align='right' style='margin-top: 3px; margin-right: 1px; width: 12px; height: 12px; cursor: help;' draggable='false' alt=\"".$text['label-call_direction']."\" title=\"".$text['label-call_direction']."\">\n";
}
@@ -641,11 +659,10 @@ if (sizeof($user_extensions) > 0) {
if (sizeof($grouped_extensions) > 0) {
//alphabetical order
ksort($grouped_extensions);
//loop through the groups
foreach ($grouped_extensions as $group => $extensions) {
echo "<div class=\"heading\"><strong>".ucwords(escape($group))."</strong></div>\n";
echo "<br><br>\n";
echo "<table width='100%'><tr><td>\n";
foreach ($extensions as $ext_block) {
echo $ext_block;
@@ -656,8 +673,7 @@ if (sizeof($grouped_extensions) > 0) {
//show the other extensions
if (sizeof($other_extensions) > 0) {
echo "<div class=\"heading\"><strong>".$text['label-other_extensions']."</strong></div>\n";
echo "<br><br>\n";
//echo "<div class=\"heading\"><strong>".$text['label-other_extensions']."</strong></div>\n";
echo "<table width='100%'><tr><td>\n";
foreach ($other_extensions as $ext_block) {
echo $ext_block;
+64 -2
View File
@@ -3,9 +3,9 @@
//application details
$apps[$x]['name'] = 'Bridges';
$apps[$x]['uuid'] = 'a6a7c4c5-340a-43ce-bcbc-2ed9bab8659d';
$apps[$x]['category'] = '';
$apps[$x]['category'] = 'switch';
$apps[$x]['subcategory'] = '';
$apps[$x]['version'] = '';
$apps[$x]['version'] = '1.2';
$apps[$x]['license'] = 'Mozilla Public License 1.1';
$apps[$x]['url'] = 'http://www.fusionpbx.com';
$apps[$x]['description']['en-us'] = '';
@@ -36,6 +36,9 @@
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'bridge_import';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
//destination details
$y = 0;
@@ -46,6 +49,7 @@
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and bridge_enabled = 'true'";
$apps[$x]['destinations'][$y]['order_by'] = "bridge_name asc";
$apps[$x]['destinations'][$y]['field']['bridge_uuid'] = "bridge_uuid";
$apps[$x]['destinations'][$y]['field']['uuid'] = "bridge_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "bridge_name";
$apps[$x]['destinations'][$y]['field']['description'] = "bridge_description";
$apps[$x]['destinations'][$y]['field']['destination'] = "bridge_destination";
@@ -117,4 +121,62 @@
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
//default settings
$y=0;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ebe37151-bbd0-4bf3-9c01-7a831943cb86";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'user';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9a64c041-0dcd-4eee-b196-6f300b87dff8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'gateway';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a082511d-cc2f-4b8a-a49c-f505971ef80f";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'profile';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f5b659a5-a375-4207-b3d1-cad5b3336f2e";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'loopback';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b97e4810-8a04-4305-9cd8-a43c57c71703";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'accountcode';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0d1b5374-9c7a-46a5-9a08-d32fd42d6f06";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'effective_caller_id_number';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "bdf5e430-ac50-4a15-b59d-b0c8a78fd410";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'call_direction=outbound';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
?>
+360 -3
View File
@@ -6,12 +6,14 @@ $text['title-bridges']['ar-eg'] = "الجسور";
$text['title-bridges']['de-at'] = "Brücken";
$text['title-bridges']['de-ch'] = "Brücken";
$text['title-bridges']['de-de'] = "Brücken";
$text['title-bridges']['el-gr'] = "Γέφυρες";
$text['title-bridges']['es-cl'] = "Puentes";
$text['title-bridges']['es-mx'] = "Puentes";
$text['title-bridges']['fr-ca'] = "Ponts";
$text['title-bridges']['fr-fr'] = "Ponts";
$text['title-bridges']['he-il'] = "גשרים";
$text['title-bridges']['it-it'] = "Ponti";
$text['title-bridges']['ka-ge'] = "ხიდები";
$text['title-bridges']['nl-nl'] = "Bruggen";
$text['title-bridges']['pl-pl'] = "Mostki";
$text['title-bridges']['pt-br'] = "pontes";
@@ -20,6 +22,7 @@ $text['title-bridges']['ro-ro'] = "Poduri";
$text['title-bridges']['ru-ru'] = "Мосты";
$text['title-bridges']['sv-se'] = "Broar";
$text['title-bridges']['uk-ua'] = "Мости";
$text['title-bridges']['tr-tr'] = "Köprüler";
$text['title-bridges']['zh-cn'] = "桥梁";
$text['title-bridges']['ja-jp'] = "橋";
$text['title-bridges']['ko-kr'] = "교량";
@@ -30,12 +33,14 @@ $text['title-bridge']['ar-eg'] = "كوبري";
$text['title-bridge']['de-at'] = "Brücke";
$text['title-bridge']['de-ch'] = "Brücke";
$text['title-bridge']['de-de'] = "Brücke";
$text['title-bridge']['el-gr'] = "Γέφυρα";
$text['title-bridge']['es-cl'] = "Puente";
$text['title-bridge']['es-mx'] = "Puente";
$text['title-bridge']['fr-ca'] = "Pont";
$text['title-bridge']['fr-fr'] = "Pont";
$text['title-bridge']['he-il'] = "לְגַשֵׁר";
$text['title-bridge']['it-it'] = "Ponte";
$text['title-bridge']['ka-ge'] = "ხიდი";
$text['title-bridge']['nl-nl'] = "Brug";
$text['title-bridge']['pl-pl'] = "Mostek";
$text['title-bridge']['pt-br'] = "Ponte";
@@ -44,6 +49,7 @@ $text['title-bridge']['ro-ro'] = "Pod";
$text['title-bridge']['ru-ru'] = "Мост";
$text['title-bridge']['sv-se'] = "Bro";
$text['title-bridge']['uk-ua'] = "Міст";
$text['title-bridge']['tr-tr'] = "Köprü";
$text['title-bridge']['zh-cn'] = "桥";
$text['title-bridge']['ja-jp'] = "橋";
$text['title-bridge']['ko-kr'] = "다리";
@@ -54,12 +60,14 @@ $text['title_description-bridge']['ar-eg'] = "إضافة عبارات الجسر
$text['title_description-bridge']['de-at'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['de-ch'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['de-de'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['el-gr'] = "Προσθέστε δηλώσεις γέφυρας στη λίστα επιλογής προορισμού.";
$text['title_description-bridge']['es-cl'] = "Agregue declaraciones de puente a la lista de selección de destino.";
$text['title_description-bridge']['es-mx'] = "Agregue declaraciones de puente a la lista de selección de destino.";
$text['title_description-bridge']['fr-ca'] = "Ajouter des déclarations de pont à la liste de sélection";
$text['title_description-bridge']['fr-fr'] = "Ajouter des déclarations de pont à la liste de sélection";
$text['title_description-bridge']['he-il'] = "הוסף הצהרות גשר לרשימת בחירת היעד.";
$text['title_description-bridge']['it-it'] = "Aggiungi istruzioni bridge allelenco di selezione della destinazione.";
$text['title_description-bridge']['ka-ge'] = "დაამატეთ ხიდის ოპერატორები სამიზნის არჩევის სიაში";
$text['title_description-bridge']['nl-nl'] = "Voeg bridge opdrachten toe aan bestemmings lijst.";
$text['title_description-bridge']['pl-pl'] = "Dodaj wyrażenia mostkowania do listy wyboru destynacji.";
$text['title_description-bridge']['pt-br'] = "Adicione instruções de ponte à lista de seleção de destino.";
@@ -68,22 +76,52 @@ $text['title_description-bridge']['ro-ro'] = "Adăugați declarații bridge la l
$text['title_description-bridge']['ru-ru'] = "Добавьте операторы моста в список выбора места назначения.";
$text['title_description-bridge']['sv-se'] = "Lägg till bryggsatser till destinationsvallistan.";
$text['title_description-bridge']['uk-ua'] = "Додайте оператори моста до списку вибору призначення.";
$text['title_description-bridge']['tr-tr'] = "Hedef seçim listesine köprü ifadeleri ekleyin.";
$text['title_description-bridge']['zh-cn'] = "将桥接语句添加到目标选择列表。";
$text['title_description-bridge']['ja-jp'] = "宛先選択リストにブリッジ ステートメントを追加します。";
$text['title_description-bridge']['ko-kr'] = "대상 선택 목록에 브리지 문을 추가합니다.";
$text['label-bridge_import']['en-us'] = "Bridge Import";
$text['label-bridge_import']['en-gb'] = "Bridge Import";
$text['label-bridge_import']['ar-eg'] = "استيراد الجسر";
$text['label-bridge_import']['de-at'] = "Bridge-Import";
$text['label-bridge_import']['de-ch'] = "Bridge-Import";
$text['label-bridge_import']['de-de'] = "Bridge-Import";
$text['label-bridge_import']['el-gr'] = "Εισαγωγή Γέφυρας";
$text['label-bridge_import']['es-cl'] = "Importación de puente";
$text['label-bridge_import']['es-mx'] = "Importación de puente";
$text['label-bridge_import']['fr-ca'] = "Importation de pont";
$text['label-bridge_import']['fr-fr'] = "Importation de pont";
$text['label-bridge_import']['he-il'] = "ייבוא גשר";
$text['label-bridge_import']['it-it'] = "Importazione del ponte";
$text['label-bridge_import']['ka-ge'] = "ხიდის იმპორტი";
$text['label-bridge_import']['nl-nl'] = "Bridge importeren";
$text['label-bridge_import']['pl-pl'] = "Import mostu";
$text['label-bridge_import']['pt-br'] = "Importação de ponte";
$text['label-bridge_import']['pt-pt'] = "Importação de ponte";
$text['label-bridge_import']['ro-ro'] = "Import de pod";
$text['label-bridge_import']['ru-ru'] = "Импорт моста";
$text['label-bridge_import']['sv-se'] = "Bridge Import";
$text['label-bridge_import']['uk-ua'] = "Імпорт міст";
$text['label-bridge_import']['tr-tr'] = "Köprü İçe Aktarımı";
$text['label-bridge_import']['zh-cn'] = "桥导入";
$text['label-bridge_import']['ja-jp'] = "ブリッジインポート";
$text['label-bridge_import']['ko-kr'] = "브릿지 임포트";
$text['label-bridge_name']['en-us'] = "Name";
$text['label-bridge_name']['en-gb'] = "Name";
$text['label-bridge_name']['ar-eg'] = "اسم";
$text['label-bridge_name']['de-at'] = "Name";
$text['label-bridge_name']['de-ch'] = "Name";
$text['label-bridge_name']['de-de'] = "Name";
$text['label-bridge_name']['el-gr'] = "Ονομα";
$text['label-bridge_name']['es-cl'] = "Nombre";
$text['label-bridge_name']['es-mx'] = "Nombre";
$text['label-bridge_name']['fr-ca'] = "Nom";
$text['label-bridge_name']['fr-fr'] = "Nom";
$text['label-bridge_name']['he-il'] = "שֵׁם";
$text['label-bridge_name']['it-it'] = "Nome";
$text['label-bridge_name']['ka-ge'] = "სახელი";
$text['label-bridge_name']['nl-nl'] = "Naam";
$text['label-bridge_name']['pl-pl'] = "Nazwa";
$text['label-bridge_name']['pt-br'] = "Nome";
@@ -92,6 +130,7 @@ $text['label-bridge_name']['ro-ro'] = "Nume";
$text['label-bridge_name']['ru-ru'] = "Имя";
$text['label-bridge_name']['sv-se'] = "namn";
$text['label-bridge_name']['uk-ua'] = "Імя";
$text['label-bridge_name']['tr-tr'] = "İsim";
$text['label-bridge_name']['zh-cn'] = "姓名";
$text['label-bridge_name']['ja-jp'] = "名前";
$text['label-bridge_name']['ko-kr'] = "이름";
@@ -102,12 +141,14 @@ $text['description-bridge_name']['ar-eg'] = "أدخل الاسم.";
$text['description-bridge_name']['de-at'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['de-ch'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['de-de'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-bridge_name']['es-cl'] = "Introduzca el nombre.";
$text['description-bridge_name']['es-mx'] = "Introduzca el nombre.";
$text['description-bridge_name']['fr-ca'] = "Entrez le nom";
$text['description-bridge_name']['fr-fr'] = "Entrez le nom";
$text['description-bridge_name']['he-il'] = "הזן את השם.";
$text['description-bridge_name']['it-it'] = "Inserisci il nome.";
$text['description-bridge_name']['ka-ge'] = "შეიყვანეთ სახელი";
$text['description-bridge_name']['nl-nl'] = "Voer naam in.";
$text['description-bridge_name']['pl-pl'] = "Wprowadź nazwę.";
$text['description-bridge_name']['pt-br'] = "Digite o nome.";
@@ -116,22 +157,79 @@ $text['description-bridge_name']['ro-ro'] = "Introduceți numele.";
$text['description-bridge_name']['ru-ru'] = "Введите имя.";
$text['description-bridge_name']['sv-se'] = "Ange namnet.";
$text['description-bridge_name']['uk-ua'] = "Введіть назву.";
$text['description-bridge_name']['tr-tr'] = "Adı girin.";
$text['description-bridge_name']['zh-cn'] = "输入名称。";
$text['description-bridge_name']['ja-jp'] = "名前を入力します。";
$text['description-bridge_name']['ko-kr'] = "이름을 입력하세요.";
$text['label-bridge_action']['en-us'] = "Action";
$text['label-bridge_action']['en-gb'] = "Action";
$text['label-bridge_action']['ar-eg'] = "الإجراء";
$text['label-bridge_action']['de-at'] = "Aktion";
$text['label-bridge_action']['de-ch'] = "Aktion";
$text['label-bridge_action']['de-de'] = "Aktion";
$text['label-bridge_action']['el-gr'] = "Δράση";
$text['label-bridge_action']['es-cl'] = "Acción";
$text['label-bridge_action']['es-mx'] = "Acción";
$text['label-bridge_action']['fr-ca'] = "Action";
$text['label-bridge_action']['fr-fr'] = "Action";
$text['label-bridge_action']['he-il'] = "פעולה";
$text['label-bridge_action']['it-it'] = "Azione";
$text['label-bridge_action']['ka-ge'] = "ქმედება";
$text['label-bridge_action']['nl-nl'] = "Aktie";
$text['label-bridge_action']['pl-pl'] = "Operacja";
$text['label-bridge_action']['pt-br'] = "Ação";
$text['label-bridge_action']['pt-pt'] = "Acção";
$text['label-bridge_action']['ro-ro'] = "Acțiune";
$text['label-bridge_action']['ru-ru'] = "Действие";
$text['label-bridge_action']['sv-se'] = "Aktion";
$text['label-bridge_action']['uk-ua'] = "Дія";
$text['label-bridge_action']['tr-tr'] = "Aksiyon";
$text['label-bridge_action']['zh-cn'] = "行动";
$text['label-bridge_action']['ja-jp'] = "アクション";
$text['label-bridge_action']['ko-kr'] = "행동";
$text['description-bridge_action']['en-us'] = "Select the bridge action.";
$text['description-bridge_action']['en-gb'] = "Select the bridge action.";
$text['description-bridge_action']['ar-eg'] = "حدد إجراء الجسر.";
$text['description-bridge_action']['de-at'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['de-ch'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['de-de'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['el-gr'] = "Επιλέξτε τη δράση γέφυρας.";
$text['description-bridge_action']['es-cl'] = "Seleccione la acción del puente.";
$text['description-bridge_action']['es-mx'] = "Seleccione la acción del puente.";
$text['description-bridge_action']['fr-ca'] = "Sélectionnez l'action de pont.";
$text['description-bridge_action']['fr-fr'] = "Sélectionnez l'action de pont.";
$text['description-bridge_action']['he-il'] = "בחר את פעולת הגשר.";
$text['description-bridge_action']['it-it'] = "Seleziona l'azione del ponte.";
$text['description-bridge_action']['ka-ge'] = "აირჩიეთ ხიდის ქმედება.";
$text['description-bridge_action']['nl-nl'] = "Selecteer de brugactie.";
$text['description-bridge_action']['pl-pl'] = "Wybierz akcję mostu.";
$text['description-bridge_action']['pt-br'] = "Selecione a ação da ponte.";
$text['description-bridge_action']['pt-pt'] = "Selecione a ação da ponte.";
$text['description-bridge_action']['ro-ro'] = "Selectați acțiunea bridge.";
$text['description-bridge_action']['ru-ru'] = "Выберите действие моста.";
$text['description-bridge_action']['sv-se'] = "Välj broåtgärd.";
$text['description-bridge_action']['uk-ua'] = "Виберіть дію моста.";
$text['description-bridge_action']['tr-tr'] = "Köprü eylemini seçin.";
$text['description-bridge_action']['zh-cn'] = "选择桥接动作。";
$text['description-bridge_action']['ja-jp'] = "ブリッジアクションを選択します。";
$text['description-bridge_action']['ko-kr'] = "브리지 작업을 선택합니다.";
$text['label-bridge_destination']['en-us'] = "Destination";
$text['label-bridge_destination']['en-gb'] = "Destination";
$text['label-bridge_destination']['ar-eg'] = "وجهة";
$text['label-bridge_destination']['de-at'] = "Ziel";
$text['label-bridge_destination']['de-ch'] = "Ziel";
$text['label-bridge_destination']['de-de'] = "Ziel";
$text['label-bridge_destination']['el-gr'] = "Προορισμός";
$text['label-bridge_destination']['es-cl'] = "Destino";
$text['label-bridge_destination']['es-mx'] = "Destino";
$text['label-bridge_destination']['fr-ca'] = "Destination";
$text['label-bridge_destination']['fr-fr'] = "Destination";
$text['label-bridge_destination']['he-il'] = "יַעַד";
$text['label-bridge_destination']['it-it'] = "Destinazione";
$text['label-bridge_destination']['ka-ge'] = "დანიშნულების პუნქტი";
$text['label-bridge_destination']['nl-nl'] = "Bestemming";
$text['label-bridge_destination']['pl-pl'] = "Destynacja";
$text['label-bridge_destination']['pt-br'] = "Destino";
@@ -140,6 +238,7 @@ $text['label-bridge_destination']['ro-ro'] = "Destinaţie";
$text['label-bridge_destination']['ru-ru'] = "Место назначения";
$text['label-bridge_destination']['sv-se'] = "Destination";
$text['label-bridge_destination']['uk-ua'] = "Пункт призначення";
$text['label-bridge_destination']['tr-tr'] = "Varış noktası";
$text['label-bridge_destination']['zh-cn'] = "目的地";
$text['label-bridge_destination']['ja-jp'] = "行き先";
$text['label-bridge_destination']['ko-kr'] = "목적지";
@@ -150,12 +249,14 @@ $text['description-bridge_destination']['ar-eg'] = "أدخل الوجهة.";
$text['description-bridge_destination']['de-at'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['de-ch'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['de-de'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['el-gr'] = "Εισαγάγετε τον προορισμό.";
$text['description-bridge_destination']['es-cl'] = "Introduce el destino.";
$text['description-bridge_destination']['es-mx'] = "Introduce el destino.";
$text['description-bridge_destination']['fr-ca'] = "Entrer la destination";
$text['description-bridge_destination']['fr-fr'] = "Entrer la destination";
$text['description-bridge_destination']['he-il'] = "הזן את היעד.";
$text['description-bridge_destination']['it-it'] = "Inserisci la destinazione.";
$text['description-bridge_destination']['ka-ge'] = "შეიყვანეთ დანიშნულების პუნქტი";
$text['description-bridge_destination']['nl-nl'] = "Voer de bestemming in.";
$text['description-bridge_destination']['pl-pl'] = "Wprowadź destynację.";
$text['description-bridge_destination']['pt-br'] = "Insira o destino.";
@@ -164,6 +265,7 @@ $text['description-bridge_destination']['ro-ro'] = "Introduceți destinația.";
$text['description-bridge_destination']['ru-ru'] = "Введите пункт назначения.";
$text['description-bridge_destination']['sv-se'] = "Ange destinationen.";
$text['description-bridge_destination']['uk-ua'] = "Введіть пункт призначення.";
$text['description-bridge_destination']['tr-tr'] = "Hedefi girin.";
$text['description-bridge_destination']['zh-cn'] = "输入目的地。";
$text['description-bridge_destination']['ja-jp'] = "目的地を入力します。";
$text['description-bridge_destination']['ko-kr'] = "목적지를 입력하세요.";
@@ -171,15 +273,17 @@ $text['description-bridge_destination']['ko-kr'] = "목적지를 입력하세요
$text['label-bridge_enabled']['en-us'] = "Enabled";
$text['label-bridge_enabled']['en-gb'] = "Enabled";
$text['label-bridge_enabled']['ar-eg'] = "ممكن";
$text['label-bridge_enabled']['de-at'] = "Ermöglicht";
$text['label-bridge_enabled']['de-ch'] = "Ermöglicht";
$text['label-bridge_enabled']['de-de'] = "Ermöglicht";
$text['label-bridge_enabled']['de-at'] = "Aktiviert";
$text['label-bridge_enabled']['de-ch'] = "Aktiviert";
$text['label-bridge_enabled']['de-de'] = "Aktiviert";
$text['label-bridge_enabled']['el-gr'] = "Ενεργοποιημένος";
$text['label-bridge_enabled']['es-cl'] = "Activada";
$text['label-bridge_enabled']['es-mx'] = "Activada";
$text['label-bridge_enabled']['fr-ca'] = "Activé";
$text['label-bridge_enabled']['fr-fr'] = "Activé";
$text['label-bridge_enabled']['he-il'] = "מופעל";
$text['label-bridge_enabled']['it-it'] = "Abilitato";
$text['label-bridge_enabled']['ka-ge'] = "ჩართულია";
$text['label-bridge_enabled']['nl-nl'] = "Geactiveerd";
$text['label-bridge_enabled']['pl-pl'] = "Aktywny";
$text['label-bridge_enabled']['pt-br'] = "Habilitado";
@@ -188,6 +292,7 @@ $text['label-bridge_enabled']['ro-ro'] = "Activat";
$text['label-bridge_enabled']['ru-ru'] = "Включено";
$text['label-bridge_enabled']['sv-se'] = "Aktiverad";
$text['label-bridge_enabled']['uk-ua'] = "Увімкнено";
$text['label-bridge_enabled']['tr-tr'] = "Etkinleştirilmiş";
$text['label-bridge_enabled']['zh-cn'] = "启用";
$text['label-bridge_enabled']['ja-jp'] = "有効";
$text['label-bridge_enabled']['ko-kr'] = "사용";
@@ -198,12 +303,14 @@ $text['description-bridge_enabled']['ar-eg'] = "حدد للتمكين أو ال
$text['description-bridge_enabled']['de-at'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['de-ch'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['de-de'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['el-gr'] = "Επιλέξτε για να ενεργοποιήσετε ή να απενεργοποιήσετε.";
$text['description-bridge_enabled']['es-cl'] = "Seleccione para habilitar o deshabilitar.";
$text['description-bridge_enabled']['es-mx'] = "Seleccione para habilitar o deshabilitar.";
$text['description-bridge_enabled']['fr-ca'] = "Sélectionnez pour activer ou désactiver";
$text['description-bridge_enabled']['fr-fr'] = "Sélectionnez pour activer ou désactiver";
$text['description-bridge_enabled']['he-il'] = "בחר כדי להפעיל או להשבית.";
$text['description-bridge_enabled']['it-it'] = "Selezionare per abilitare o disabilitare.";
$text['description-bridge_enabled']['ka-ge'] = "მონიშნეთ, რათა ჩართოთ, ან გამორთოთ";
$text['description-bridge_enabled']['nl-nl'] = "Kies aktiveer/deactiveer.";
$text['description-bridge_enabled']['pl-pl'] = "Wybierz czy aktywować lub dezaktywować.";
$text['description-bridge_enabled']['pt-br'] = "Selecione para habilitar ou desabilitar.";
@@ -212,6 +319,7 @@ $text['description-bridge_enabled']['ro-ro'] = "Selectați pentru a activa sau d
$text['description-bridge_enabled']['ru-ru'] = "Выберите, чтобы включить или отключить.";
$text['description-bridge_enabled']['sv-se'] = "Välj för att aktivera eller inaktivera.";
$text['description-bridge_enabled']['uk-ua'] = "Виберіть, щоб увімкнути або вимкнути.";
$text['description-bridge_enabled']['tr-tr'] = "Etkinleştirmek veya devre dışı bırakmak için seçin.";
$text['description-bridge_enabled']['zh-cn'] = "选择启用或禁用。";
$text['description-bridge_enabled']['ja-jp'] = "有効または無効を選択します。";
$text['description-bridge_enabled']['ko-kr'] = "활성화 또는 비활성화를 선택합니다.";
@@ -222,12 +330,14 @@ $text['label-bridge_description']['ar-eg'] = "وصف";
$text['label-bridge_description']['de-at'] = "Beschreibung";
$text['label-bridge_description']['de-ch'] = "Beschreibung";
$text['label-bridge_description']['de-de'] = "Beschreibung";
$text['label-bridge_description']['el-gr'] = "Περιγραφή";
$text['label-bridge_description']['es-cl'] = "Descripción";
$text['label-bridge_description']['es-mx'] = "Descripción";
$text['label-bridge_description']['fr-ca'] = "Description";
$text['label-bridge_description']['fr-fr'] = "Description";
$text['label-bridge_description']['he-il'] = "תיאור";
$text['label-bridge_description']['it-it'] = "Descrizione";
$text['label-bridge_description']['ka-ge'] = "აღწერა";
$text['label-bridge_description']['nl-nl'] = "Omschrijving";
$text['label-bridge_description']['pl-pl'] = "Opis";
$text['label-bridge_description']['pt-br'] = "Descrição";
@@ -237,6 +347,7 @@ $text['label-bridge_description']['ru-ru'] = "Описание";
$text['label-bridge_description']['sv-se'] = "Beskrivning";
$text['label-bridge_description']['uk-ua'] = "Опис";
$text['label-bridge_description']['tr-tr'] = "Açıklama";
$text['label-bridge_description']['tr-tr'] = "Tanım";
$text['label-bridge_description']['zh-cn'] = "描述";
$text['label-bridge_description']['ja-jp'] = "説明";
$text['label-bridge_description']['ko-kr'] = "설명";
@@ -247,12 +358,14 @@ $text['description-bridge_description']['ar-eg'] = "أدخل الوصف.";
$text['description-bridge_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-bridge_description']['es-cl'] = "Introduce la descripción.";
$text['description-bridge_description']['es-mx'] = "Introduce la descripción.";
$text['description-bridge_description']['fr-ca'] = "Entrez la description";
$text['description-bridge_description']['fr-fr'] = "Entrez la description";
$text['description-bridge_description']['he-il'] = "הזן את התיאור.";
$text['description-bridge_description']['it-it'] = "Inserisci la descrizione.";
$text['description-bridge_description']['ka-ge'] = "შეიყვანეთ აღწერა";
$text['description-bridge_description']['nl-nl'] = "Voer omschrijving in.";
$text['description-bridge_description']['pl-pl'] = "Wprowadź opis.";
$text['description-bridge_description']['pt-br'] = "Digite a descrição.";
@@ -261,8 +374,252 @@ $text['description-bridge_description']['ro-ro'] = "Introduceți descrierea.";
$text['description-bridge_description']['ru-ru'] = "Введите описание.";
$text['description-bridge_description']['sv-se'] = "Ange beskrivningen.";
$text['description-bridge_description']['uk-ua'] = "Введіть опис.";
$text['description-bridge_description']['tr-tr'] = "Açıklamayı girin.";
$text['description-bridge_description']['zh-cn'] = "输入说明。";
$text['description-bridge_description']['ja-jp'] = "説明を入力します。";
$text['description-bridge_description']['ko-kr'] = "설명을 입력합니다.";
$text['label-bridge_profile']['en-us'] = "Profile";
$text['label-bridge_profile']['en-gb'] = "Profile";
$text['label-bridge_profile']['ar-eg'] = "موجز";
$text['label-bridge_profile']['de-at'] = "Profil";
$text['label-bridge_profile']['de-ch'] = "Profil";
$text['label-bridge_profile']['de-de'] = "Profil";
$text['label-bridge_profile']['el-gr'] = "Προφίλ";
$text['label-bridge_profile']['es-cl'] = "Perfil";
$text['label-bridge_profile']['es-mx'] = "Perfil";
$text['label-bridge_profile']['fr-ca'] = "Profile";
$text['label-bridge_profile']['fr-fr'] = "Profile";
$text['label-bridge_profile']['he-il'] = "פרופיל";
$text['label-bridge_profile']['it-it'] = "Profilo";
$text['label-bridge_profile']['ka-ge'] = "პროფილი";
$text['label-bridge_profile']['nl-nl'] = "Profiel";
$text['label-bridge_profile']['pl-pl'] = "Profil";
$text['label-bridge_profile']['pt-br'] = "Perfil";
$text['label-bridge_profile']['pt-pt'] = "Perfil";
$text['label-bridge_profile']['ro-ro'] = "Profil";
$text['label-bridge_profile']['ru-ru'] = "Профиль";
$text['label-bridge_profile']['sv-se'] = "Profil";
$text['label-bridge_profile']['uk-ua'] = "Профіль";
$text['label-bridge_profile']['tr-tr'] = "Profil";
$text['label-bridge_profile']['zh-cn'] = "轮廓";
$text['label-bridge_profile']['ja-jp'] = "プロフィール";
$text['label-bridge_profile']['ko-kr'] = "프로필";
$text['description-bridge_profile']['en-us'] = "Enter the profile here.";
$text['description-bridge_profile']['en-gb'] = "Enter the profile here.";
$text['description-bridge_profile']['ar-eg'] = "أدخل ملف التعريف هنا.ا";
$text['description-bridge_profile']['de-at'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['de-ch'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['de-de'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['el-gr'] = "Εισαγάγετε το προφίλ εδώ.";
$text['description-bridge_profile']['es-cl'] = "Ingrese el perfil aquí.";
$text['description-bridge_profile']['es-mx'] = "Ingrese el perfil aquí.";
$text['description-bridge_profile']['fr-ca'] = "Sélectionnez le profil à utiliser pour cette passerelle";
$text['description-bridge_profile']['fr-fr'] = "Sélectionnez le profil à utiliser pour cette passerelle";
$text['description-bridge_profile']['he-il'] = "היכנסו לפרופיל כאן.";
$text['description-bridge_profile']['it-it'] = "Inserire qui il profilo.";
$text['description-bridge_profile']['ka-ge'] = "შეიყვანეთ პროფილი აქ.";
$text['description-bridge_profile']['nl-nl'] = "Voer het profiel hier in.";
$text['description-bridge_profile']['pl-pl'] = "Zdefiniuj ustawienia tego profilu";
$text['description-bridge_profile']['pt-br'] = "Defina as configurações para este perfil";
$text['description-bridge_profile']['pt-pt'] = "Insira o perfil aqui.";
$text['description-bridge_profile']['ro-ro'] = "Introduceți profilul aici.";
$text['description-bridge_profile']['ru-ru'] = "Выберите профиль, используемый для этого шлюза.";
$text['description-bridge_profile']['sv-se'] = "Definiera inställningar för denna profil.";
$text['description-bridge_profile']['uk-ua'] = "Введіть профіль тут.";
$text['description-bridge_profile']['tr-tr'] = "Profili buraya girin.";
$text['description-bridge_profile']['zh-cn'] = "在此处输入个人资料。";
$text['description-bridge_profile']['ja-jp'] = "ここにプロフィールを入力します。";
$text['description-bridge_profile']['ko-kr'] = "여기에 프로필을 입력하세요.";
$text['label-bridge_variables']['en-us'] = "Variables";
$text['label-bridge_variables']['en-gb'] = "Variables";
$text['label-bridge_variables']['ar-eg'] = "المتغيرات";
$text['label-bridge_variables']['de-at'] = "Variablen";
$text['label-bridge_variables']['de-ch'] = "Variablen";
$text['label-bridge_variables']['de-de'] = "Variablen";
$text['label-bridge_variables']['el-gr'] = "Μεταβλητές";
$text['label-bridge_variables']['es-cl'] = "variables";
$text['label-bridge_variables']['es-mx'] = "variables";
$text['label-bridge_variables']['fr-ca'] = "Variables";
$text['label-bridge_variables']['fr-fr'] = "Variables";
$text['label-bridge_variables']['he-il'] = "משתנים";
$text['label-bridge_variables']['it-it'] = "Variabili";
$text['label-bridge_variables']['ka-ge'] = "ცვლადები";
$text['label-bridge_variables']['nl-nl'] = "Variabelen";
$text['label-bridge_variables']['pl-pl'] = "Zmienne";
$text['label-bridge_variables']['pt-br'] = "Variáveis";
$text['label-bridge_variables']['pt-pt'] = "Variáveis";
$text['label-bridge_variables']['ro-ro'] = "Variabile";
$text['label-bridge_variables']['ru-ru'] = "Переменные";
$text['label-bridge_variables']['sv-se'] = "Variabler";
$text['label-bridge_variables']['uk-ua'] = "Змінні";
$text['label-bridge_variables']['tr-tr'] = "Değişkenler";
$text['label-bridge_variables']['zh-cn'] = "变量";
$text['label-bridge_variables']['ja-jp'] = "変数";
$text['label-bridge_variables']['ko-kr'] = "변수";
$text['description-bridge_variables']['en-us'] = "Set a value for the variable.";
$text['description-bridge_variables']['en-gb'] = "Set a value for the variable.";
$text['description-bridge_variables']['ar-eg'] = "قم بتعيين قيمة للمتغير.";
$text['description-bridge_variables']['de-at'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-ch'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-de'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['el-gr'] = "Ορίστε μια τιμή για τη μεταβλητή.";
$text['description-bridge_variables']['es-cl'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['es-mx'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['fr-fr'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['he-il'] = "הגדר ערך עבור המשתנה.";
$text['description-bridge_variables']['it-it'] = "Impostare un valore per la variabile.";
$text['description-bridge_variables']['ka-ge'] = "დააყენეთ ცვლადის მნიშვნელობა";
$text['description-bridge_variables']['nl-nl'] = "Stel een waarde in voor de variabele.";
$text['description-bridge_variables']['pl-pl'] = "Ustaw wartość zmiennej.";
$text['description-bridge_variables']['pt-br'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['pt-pt'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru variabilă.";
$text['description-bridge_variables']['ru-ru'] = "Установите значение для переменной.";
$text['description-bridge_variables']['sv-se'] = "Ställ in ett värde för variabeln.";
$text['description-bridge_variables']['uk-ua'] = "Установіть значення для змінної.";
$text['description-bridge_variables']['tr-tr'] = "Değişken için bir değer belirleyin.";
$text['description-bridge_variables']['zh-cn'] = "为变量设置一个值。";
$text['description-bridge_variables']['ja-jp'] = "変数の値を設定します。";
$text['description-bridge_variables']['ko-kr'] = "변수의 값을 설정합니다.";
$text['label-bridge_gateways']['en-us'] = "Gateways";
$text['label-bridge_gateways']['en-gb'] = "Gateways";
$text['label-bridge_gateways']['ar-eg'] = "البوابات";
$text['label-bridge_gateways']['de-at'] = "Gateways";
$text['label-bridge_gateways']['de-ch'] = "Gateways";
$text['label-bridge_gateways']['de-de'] = "Gateways";
$text['label-bridge_gateways']['el-gr'] = "Πύλες";
$text['label-bridge_gateways']['es-cl'] = "Pasarelas";
$text['label-bridge_gateways']['es-mx'] = "Pasarelas";
$text['label-bridge_gateways']['fr-ca'] = "Passerelles";
$text['label-bridge_gateways']['fr-fr'] = "Passerelles";
$text['label-bridge_gateways']['he-il'] = "שערות";
$text['label-bridge_gateways']['it-it'] = "Gateways";
$text['label-bridge_gateways']['ka-ge'] = "კვანძები";
$text['label-bridge_gateways']['nl-nl'] = "Gateways";
$text['label-bridge_gateways']['pl-pl'] = "Bramy wyjściowe (gateways)";
$text['label-bridge_gateways']['pt-br'] = "Troncos";
$text['label-bridge_gateways']['pt-pt'] = "Gateways";
$text['label-bridge_gateways']['ro-ro'] = "portal";
$text['label-bridge_gateways']['ru-ru'] = "Шлюзы";
$text['label-bridge_gateways']['sv-se'] = "Gateways";
$text['label-bridge_gateways']['uk-ua'] = "Шлюзи";
$text['label-bridge_gateways']['tr-tr'] = "Ağ geçitleri";
$text['label-bridge_gateways']['zh-cn'] = "网关";
$text['label-bridge_gateways']['ja-jp'] = "ゲートウェイ";
$text['label-bridge_gateways']['ko-kr'] = "게이트웨이";
$text['description-bridge_gateways']['en-us'] = "Select the gateway.";
$text['description-bridge_gateways']['en-gb'] = "Select the gateway.";
$text['description-bridge_gateways']['ar-eg'] = "حدد البوابة.";
$text['description-bridge_gateways']['de-at'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['de-ch'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['de-de'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['el-gr'] = "Επιλέξτε την πύλη.";
$text['description-bridge_gateways']['es-cl'] = "Seleccione la puerta de enlace.";
$text['description-bridge_gateways']['es-mx'] = "Seleccione la puerta de enlace.";
$text['description-bridge_gateways']['fr-ca'] = "Sélectionnez la passerelle.";
$text['description-bridge_gateways']['fr-fr'] = "Sélectionnez la passerelle.";
$text['description-bridge_gateways']['he-il'] = "בחר את השער.";
$text['description-bridge_gateways']['it-it'] = "Seleziona il gateway.";
$text['description-bridge_gateways']['ka-ge'] = "აირჩიეთ კვანძი";
$text['description-bridge_gateways']['nl-nl'] = "Selecteer de gateway.";
$text['description-bridge_gateways']['pl-pl'] = "Wybierz bramę.";
$text['description-bridge_gateways']['pt-br'] = "Selecione o gateway.";
$text['description-bridge_gateways']['pt-pt'] = "Selecione o gateway.";
$text['description-bridge_gateways']['ro-ro'] = "Selectați poarta de acces.";
$text['description-bridge_gateways']['ru-ru'] = "Выберите шлюз.";
$text['description-bridge_gateways']['sv-se'] = "Välj gateway.";
$text['description-bridge_gateways']['uk-ua'] = "Виберіть шлюз.";
$text['description-bridge_gateways']['tr-tr'] = "Ağ geçidini seçin.";
$text['description-bridge_gateways']['zh-cn'] = "选择网关。";
$text['description-bridge_gateways']['ja-jp'] = "ゲートウェイを選択します。";
$text['description-bridge_gateways']['ko-kr'] = "게이트웨이를 선택합니다.";
$text['description-bridge_variables']['en-us'] = "Set a value for the variable.";
$text['description-bridge_variables']['en-gb'] = "Set a value for the variable.";
$text['description-bridge_variables']['ar-eg'] = "قم بتعيين قيمة للمتغير.";
$text['description-bridge_variables']['de-at'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-ch'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-de'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['el-gr'] = "Ορίστε μια τιμή για τη μεταβλητή.";
$text['description-bridge_variables']['es-cl'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['es-mx'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['fr-fr'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['he-il'] = "הגדר ערך עבור המשתנה.";
$text['description-bridge_variables']['it-it'] = "Impostare un valore per la variabile.";
$text['description-bridge_variables']['ka-ge'] = "დააყენეთ მნიშვნელობა ცვლადისთვის.";
$text['description-bridge_variables']['nl-nl'] = "Stel een waarde in voor de variabele.";
$text['description-bridge_variables']['pl-pl'] = "Ustaw wartość zmiennej.";
$text['description-bridge_variables']['pt-br'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['pt-pt'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru variabilă.";
$text['description-bridge_variables']['ru-ru'] = "Установите значение для переменной.";
$text['description-bridge_variables']['sv-se'] = "Ställ in ett värde för variabeln.";
$text['description-bridge_variables']['uk-ua'] = "Установіть значення для змінної.";
$text['description-bridge_variables']['tr-tr'] = "Değişken için bir değer belirleyin.";
$text['description-bridge_variables']['zh-cn'] = "为变量设置一个值。";
$text['description-bridge_variables']['ja-jp'] = "変数の値を設定します。";
$text['description-bridge_variables']['ko-kr'] = "변수의 값을 설정합니다.";
$text['label-destination_number']['en-us'] = "Destination Number";
$text['label-destination_number']['en-gb'] = "Destination Number";
$text['label-destination_number']['ar-eg'] = "رقم الوجهة";
$text['label-destination_number']['de-at'] = "Zielnummer";
$text['label-destination_number']['de-ch'] = "Zielnummer";
$text['label-destination_number']['de-de'] = "Zielnummer";
$text['label-destination_number']['el-gr'] = "Αριθμός προορισμού";
$text['label-destination_number']['es-cl'] = "Número de destino";
$text['label-destination_number']['es-mx'] = "Número de destino";
$text['label-destination_number']['fr-ca'] = "Numéro du destinataire";
$text['label-destination_number']['fr-fr'] = "Numéro du destinataire";
$text['label-destination_number']['he-il'] = "מספר יעד";
$text['label-destination_number']['it-it'] = "Numero di destinazione";
$text['label-destination_number']['ka-ge'] = "დანიშნულების პუნქტის ნომერი";
$text['label-destination_number']['nl-nl'] = "Bestemmings nummer";
$text['label-destination_number']['pl-pl'] = "Numer docelowy";
$text['label-destination_number']['pt-br'] = "Número de destino";
$text['label-destination_number']['pt-pt'] = "Número de destino";
$text['label-destination_number']['ro-ro'] = "Numarul destinatiei";
$text['label-destination_number']['ru-ru'] = "Номер назначения";
$text['label-destination_number']['sv-se'] = "Destinationsnummer";
$text['label-destination_number']['uk-ua'] = "Номер призначення";
$text['label-destination_number']['tr-tr'] = "Hedef numara";
$text['label-destination_number']['zh-cn'] = "目的地号码";
$text['label-destination_number']['ja-jp'] = "宛先番号";
$text['label-destination_number']['ko-kr'] = "대상 번호";
$text['description-destination_number']['en-us'] = "Set the destination number for the action.";
$text['description-destination_number']['en-gb'] = "Set the destination number for the action.";
$text['description-destination_number']['ar-eg'] = "قم بتعيين رقم الوجهة للإجراء.";
$text['description-destination_number']['de-at'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['de-ch'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['de-de'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['el-gr'] = "Ρυθμίστε τον αριθμό προορισμού για τη δράση.";
$text['description-destination_number']['es-cl'] = "Establezca el número de destino de la acción.";
$text['description-destination_number']['es-mx'] = "Establezca el número de destino de la acción.";
$text['description-destination_number']['fr-ca'] = "Définissez le numéro de destination de l'action.";
$text['description-destination_number']['fr-fr'] = "Définissez le numéro de destination de l'action.";
$text['description-destination_number']['he-il'] = "הגדר את מספר היעד לפעולה.";
$text['description-destination_number']['it-it'] = "Imposta il numero di destinazione per l'azione.";
$text['description-destination_number']['ka-ge'] = "დააყენეთ დანიშნულების პუნქტის ნომერი ქმედებისთვის.";
$text['description-destination_number']['nl-nl'] = "Stel het bestemmingsnummer voor de actie in.";
$text['description-destination_number']['pl-pl'] = "Ustaw numer docelowy akcji.";
$text['description-destination_number']['pt-br'] = "Defina o número de destino para a ação.";
$text['description-destination_number']['pt-pt'] = "Defina o número de destino para a ação.";
$text['description-destination_number']['ro-ro'] = "Setați numărul de destinație pentru acțiune.";
$text['description-destination_number']['ru-ru'] = "Установите номер назначения для действия.";
$text['description-destination_number']['sv-se'] = "Ställ in destinationsnumret för åtgärden.";
$text['description-destination_number']['uk-ua'] = "Встановіть номер призначення для дії.";
$text['description-destination_number']['tr-tr'] = "Eylemin hedef numarasını ayarlayın.";
$text['description-destination_number']['zh-cn'] = "设置操作的目标号码。";
$text['description-destination_number']['ja-jp'] = "アクションの宛先番号を設定します。";
$text['description-destination_number']['ko-kr'] = "작업의 대상 번호를 설정합니다.";
?>
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Ponts";
$apps[$x]['menu'][$y]['title']['he-il'] = "גשרים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Ponti";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ხიდები";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Bridges";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Mostkowania";
$apps[$x]['menu'][$y]['title']['pt-br'] = "pontes";
+361 -12
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2019
Portions created by the Initial Developer are Copyright (C) 2018-2024
the Initial Developer. All Rights Reserved.
*/
@@ -54,8 +54,13 @@
//get http post variables and set them to php variables
if (!empty($_POST)) {
$bridge_uuid = $_POST["bridge_uuid"] ?? null;
$bridge_uuid = $_POST["bridge_uuid"];
$bridge_name = $_POST["bridge_name"];
$bridge_action = $_POST["bridge_action"];
$bridge_profile = $_POST["bridge_profile"];
$bridge_variables = $_POST["bridge_variables"];
$bridge_gateways = $_POST["bridge_gateways"];
$destination_number = $_POST["destination_number"];
$bridge_destination = $_POST["bridge_destination"];
$bridge_enabled = $_POST["bridge_enabled"] ?? 'false';
$bridge_description = $_POST["bridge_description"];
@@ -95,7 +100,7 @@
//check for all required data
$msg = '';
if (empty($bridge_name)) { $msg .= $text['message-required']." ".$text['label-bridge_name']."<br>\n"; }
if (empty($bridge_destination)) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
//if (empty($bridge_destination)) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
if (empty($bridge_enabled)) { $msg .= $text['message-required']." ".$text['label-bridge_enabled']."<br>\n"; }
if (!empty($msg) && empty($_POST["persistformvar"])) {
require_once "resources/header.php";
@@ -110,11 +115,49 @@
return;
}
//add the bridge_uuid
//add the bridge_uuid
if (empty($bridge_uuid)) {
$bridge_uuid = uuid();
}
//build the bridge statement for action user
if ($bridge_action == 'user' || $bridge_action == 'loopback') {
$bridge_destination = $bridge_action.'/'.$destination_number;
}
//build the bridge statement for gateway, or profiles - build the bridge statement
if ($bridge_action == 'gateway' || $bridge_action == 'profile') {
//create the main bridge statement
$bridge_base = '';
if (!empty($bridge_gateways)) {
foreach($bridge_gateways as $gateway) {
if (!empty($gateway)) {
$gateway_array = explode(':', $gateway);
$bridge_base .= ',sofia/gateway/'.$gateway_array[0].'/'.$destination_number;
}
}
if (!empty($bridge_base)) {
$bridge_destination = trim($bridge_base, ',');
}
}
if ($bridge_action == 'profile' && empty($bridge_destination)) {
$bridge_destination = 'sofia/'.$bridge_profile.'/'.$destination_number;
}
//add the variables back into the bridge_destination value
if (!empty($bridge_variables)) {
$variables = '';
foreach($bridge_variables as $key => $value) {
if (!empty($value)) {
$variables .= ','.trim($key).'='.trim($value);
}
}
if (!empty($variables)) {
$bridge_destination = '{'.trim($variables, ',').'}'.$bridge_destination;
}
}
}
//prepare the array
$array['bridges'][0]['bridge_uuid'] = $bridge_uuid;
$array['bridges'][0]['domain_uuid'] = $_SESSION["domain_uuid"];
@@ -165,6 +208,155 @@
unset($sql, $parameters, $row);
}
//build the bridge_actions array from the session actions
$i = 0;
foreach($_SESSION['bridge']['action'] as $variable) {
$bridge_actions[$i]['action'] = $variable;
$bridge_actions[$i]['label'] = ucwords($variable);
$i++;
}
//initialize the bridge_variables array from session bridge variables
$session_variables = []; $i = 0;
if (!empty($_SESSION['bridge']['variable'])) {
foreach($_SESSION['bridge']['variable'] as $variable) {
if (!empty($variable)) {
$variable = explode("=", $variable);
$session_variables[$i]['name'] = $variable[0];
$session_variables[$i]['value'] = $variable[1] ?? '';
$session_variables[$i]['label'] = ucwords(str_replace('_', ' ', $variable[0]));
$session_variables[$i]['label'] = str_replace('Effective Caller Id', 'Caller ID', $session_variables[$i]['label']);
$i++;
}
}
}
//get the bridge variables from the database bridge_destination value
$database_variables = []; $x = 0;
if (!empty($bridge_destination)) {
//get the variables from inside the { and } brackets
preg_match('/^\{([^}]+)\}/', $bridge_destination, $matches);
if (!empty($matches) && is_array($matches) && @sizeof($matches) != 0) {
//create a variables array from the comma delimitted string
$variables = explode(",", $matches[1]);
//strip the variables from the $bridge_destination variable
$bridge_destination = str_replace("{$matches[0]}", '', $bridge_destination);
}
//build a bridge variables data set
$x = 0;
if (!empty($variables) && is_array($variables)) {
foreach($variables as $variable) {
$pairs = explode("=", $variable);
$database_variables[$x]['name'] = $pairs[0];
$database_variables[$x]['value'] = $pairs[1];
$database_variables[$x]['label'] = ucwords(str_replace('_', ' ', $pairs[0]));
$database_variables[$x]['label'] = str_replace('Effective Caller Id', 'Caller ID', $database_variables[$x]['label']);
$x++;
}
}
}
//get the bridge_action from the bridge_destination
if (!empty($bridge_destination)) {
if (substr($bridge_destination, 0, 1) == '{') {
$bridge_parts = explode('}', $bridge_destination);
//get the variables from inside the { and } brackets
preg_match('/^\{([^}]+)\}/', $bridge_destination, $matches);
//strip the variables from the $bridge_destination variable
$bridge_destination = str_replace("{$matches[0]}", '', $bridge_destination);
}
$bridge_array = explode("/", $bridge_destination);
if ($bridge_array[0] == 'sofia') {
if ($bridge_array[1] == 'gateway') {
$bridge_action = 'gateway';
}
else {
$bridge_action = 'profile';
$bridge_profile = $bridge_array[1];
$destination_number = $bridge_array[2];
}
}
elseif ($bridge_array[0] == 'user') {
$bridge_action = 'user';
$destination_number = $bridge_array[1];
}
elseif ($bridge_array[0] == 'loopback') {
$bridge_action = 'loopback';
$destination_number = $bridge_array[1];
}
}
//merge the session and database bridge arrays together
$bridge_variables = $session_variables;
foreach($database_variables as $row) {
$found = false;
$i = 0;
foreach($bridge_variables as $field) {
if ($row['name'] == $field['name']) {
//matching row found
$found = true;
//override session value with the value from the database
if (!empty($row['value'])) {
$bridge_variables[$i]['value'] = $row['value'];
}
}
$i++;
}
if (!$found) {
if (!empty($row['name'])) {
$bridge_variables[] = $row;
}
}
}
//get the gateways
$actions = explode(',', $bridge_destination);
foreach ($actions as $action) {
$action_array = explode('/',$action);
if (!empty($action_array) && is_array($action_array) && !empty($action_array[1]) && $action_array[1] == 'gateway') {
$bridge_gateways[] = $action_array[2];
$destination_number = $action_array[3];
}
}
//get the gateways
$sql = "select * from v_gateways ";
$sql .= "where enabled = 'true' ";
if (permission_exists('outbound_route_any_gateway')) {
$sql .= "order by domain_uuid = :domain_uuid DESC, gateway ";
}
else {
$sql .= "and domain_uuid = :domain_uuid ";
}
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$gateways = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get the domains
$sql = "select * from v_domains ";
$sql .= "where domain_enabled = 'true' ";
$database = new database;
$domains = $database->select($sql, null, 'all');
unset($sql);
//get the sip profiles
$sql = "select sip_profile_name ";
$sql .= "from v_sip_profiles ";
$sql .= "where sip_profile_enabled = 'true' ";
$sql .= "order by sip_profile_name asc ";
$database = new database;
$sip_profiles = $database->select($sql, null, 'all');
unset($sql);
//set the defaults
if (empty($bridge_enabled)) { $bridge_enabled = 'true'; }
@@ -176,6 +368,39 @@
$document['title'] = $text['title-bridge'];
require_once "resources/header.php";
//show or hide form elements based on the bridge action
echo "<script type='text/javascript'>\n";
echo " function action_control(action) {\n";
echo " if (action == 'gateway') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = ''; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = ''; }\n";
echo " }\n";
echo " else if (action == 'user') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = 'none'; }\n";
echo " }\n";
echo " else if (action == 'profile') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = ''; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = ''; }\n";
echo " }\n";
echo " else if (action == 'loopback') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = 'none'; }\n";
echo " }\n";
echo " ";
echo " }\n";
echo "\n";
if (!empty($bridge_action)) {
echo " window.onload = function() {\n";
echo " action_control('".$bridge_action."');\n";
echo " };\n";
}
echo "</script>\n";
//show the content
echo "<form name='frm' id='frm' method='post'>\n";
@@ -195,6 +420,7 @@
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
}
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -209,16 +435,138 @@
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_destination']."\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_action']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <input class='formfld' type='text' name='bridge_destination' maxlength='255' value='".escape($bridge_destination)."'>\n";
echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
echo " <select class='formfld' id='bridge_action' name='bridge_action' onchange='action_control(this.options[this.selectedIndex].value);'>\n";
echo " <option value=''></option>\n";
$i = 0;
foreach($bridge_actions as $row) {
echo " <option value='".$row['action']."' ".(!empty($bridge_action) && $bridge_action == $row['action'] ? "selected='selected'" : null).">".$row['label']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-bridge_destination']."\n";
echo $text['description-bridge_action']."\n";
echo "</td>\n";
echo "</tr>\n";
if (!empty($bridge_variables)) {
echo "<tr id='tr_bridge_variables'>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_variables']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$i = 0;
foreach($bridge_variables as $row) {
if ($i > 0) { echo "<br >\n"; }
echo " <input class='formfld' type='text' name='bridge_variables[".$row['name']."]' placeholder='".$row['label']."' maxlength='255' value='".escape($row['value'])."'>\n";
$i++;
}
echo "<br />\n";
echo $text['description-bridge_variables']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr id='tr_bridge_profile'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-bridge_profile']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='bridge_profile'>\n";
echo " <option value=''></option>\n";
foreach ($sip_profiles as $row) {
if (!empty($bridge_profile) && $bridge_profile == $row["sip_profile_name"]) {
echo " <option value='".$row['sip_profile_name']."' selected='selected'>".escape($row["sip_profile_name"])."</option>\n";
}
else {
echo " <option value='".escape($row["sip_profile_name"])."'>".escape($row["sip_profile_name"])."</option>\n";
}
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-bridge_profile']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr id='tr_bridge_gateways'>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_gateways']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
for ($x = 0; $x <= 2; $x++) {
if ($x > 0) { echo "<br />\n"; }
echo "<select name='bridge_gateways[]' id='gateway' class='formfld' ".($onchange ?? '').">\n";
echo "<option value=''></option>\n";
echo "<optgroup label='".$text['label-bridge_gateways']."'>\n";
$previous_domain_uuid = '';
foreach($gateways as $row) {
if (permission_exists('outbound_route_any_gateway')) {
if ($previous_domain_uuid != $row['domain_uuid']) {
$domain_name = '';
foreach($domains as $field) {
if ($row['domain_uuid'] == $field['domain_uuid']) {
$domain_name = $field['domain_name'];
break;
}
}
if (empty($domain_name)) { $domain_name = $text['label-global']; }
echo "</optgroup>";
echo "<optgroup label='&nbsp; &nbsp;".$domain_name."'>\n";
}
if (!empty($bridge_gateways) && is_array($bridge_gateways) && $row['gateway_uuid'] == $bridge_gateways[$x]) {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\" selected=\"selected\">".escape($row['gateway'])."</option>\n"; //." db:".$row['gateway_uuid']." bg:".$bridge_gateways[$x]
}
else {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\">".escape($row['gateway'])."</option>\n";
}
}
else {
if (!empty($bridge_gateways) && is_array($bridge_gateways) && $row['gateway_uuid'] == $bridge_gateways[$x]) {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\" $onchange selected=\"selected\">".escape($row['gateway'])."</option>\n";
}
else {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\">".escape($row['gateway'])."</option>\n";
}
}
$previous_domain_uuid = $row['domain_uuid'];
}
//echo " </optgroup>\n";
//echo " <optgroup label='".$text['label-add-options']."Options'>\n";
//echo " <option value=\"loopback\">loopback</option>\n";
//echo " <option value=\"freetdm\">freetdm</option>\n";
//echo " <option value=\"xmpp\">xmpp</option>\n";
//echo " </optgroup>\n";
echo "</select>\n";
}
echo "<br />\n";
echo $text['description-bridge_gateways']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-destination_number']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <textarea class='formfld' name='destination_number'>".escape($destination_number ?? '')."</textarea>\n";
echo "<br />\n";
echo $text['description-destination_number']."\n";
echo "</td>\n";
echo "</tr>\n";
//echo "<tr>\n";
//echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
//echo " ".$text['label-bridge_destination']."\n";
//echo "</td>\n";
//echo "<td class='vtable' style='position: relative;' align='left'>\n";
//echo " <textarea class='formfld' name='bridge_destination'>".escape($bridge_destination)."</textarea>\n";
//echo "<br />\n";
//echo $text['description-bridge_destination']."\n";
//echo "</td>\n";
//echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_enabled']."\n";
@@ -252,10 +600,11 @@
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
if ($action == "update") {
if (!empty($bridge_uuid)) {
echo "<input type='hidden' name='bridge_uuid' value='".escape($bridge_uuid)."'>\n";
}
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+440
View File
@@ -0,0 +1,440 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2019-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
//check permissions
if (permission_exists('bridge_import')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduct the functionality but requirs PHP 5.1.0 or higher
if (!function_exists('str_getcsv')) {
function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
$fp = fopen("php://memory", 'r+');
fputs($fp, $input);
rewind($fp);
$data = fgetcsv($fp, null, $delimiter, $enclosure); // $escape only got added in 5.3.0
fclose($fp);
return $data;
}
}
//set the max php execution time
ini_set('max_execution_time', 7200);
//get the http get values and set them as php variables
$action = $_POST["action"] ?? '';
$from_row = $_POST["from_row"] ?? '';
$delimiter = $_POST["data_delimiter"] ?? '';
$enclosure = $_POST["data_enclosure"] ?? '';
//save the data to the csv file
if (isset($_POST['data'])) {
$file = $_SESSION['server']['temp']['dir']."/bridges-".$_SESSION['domain_name'].".csv";
file_put_contents($file, $_POST['data']);
$_SESSION['file'] = $file;
}
//copy the csv file
if (!empty($_FILES['ulfile']['tmp_name']) && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('bridge_import')) {
if ($_POST['type'] == 'csv') {
move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']);
$save_msg = "Uploaded file to ".$_SESSION['server']['temp']['dir']."/". htmlentities($_FILES['ulfile']['name']);
//system('chmod -R 744 '.$_SESSION['server']['temp']['dir'].'*');
unset($_POST['txtCommand']);
$file = $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name'];
$_SESSION['file'] = $file;
}
}
//get the schema
if (!empty($delimiter)) {
//get the first line
$line = fgets(fopen($_SESSION['file'], 'r'));
$line_fields = explode($delimiter, $line);
//get the schema
$x = 0;
include ("app/bridges/app_config.php");
$i = 0;
foreach ($apps[0]['db'] as $table) {
//get the table name and parent name
if (is_array($table["table"]['name'])) {
$table_name = $table["table"]['name']['text'];
}
else {
$table_name = $table["table"]['name'];
}
$parent_name = $table["table"]['parent'];
//remove the v_ table prefix
if (substr($table_name, 0, 2) == 'v_') {
$table_name = substr($table_name, 2);
}
if (substr($parent_name, 0, 2) == 'v_') {
$parent_name = substr($parent_name, 2);
}
//filter for specific tables and build the schema array
if ($table_name == "bridges") {
$schema[$i]['table'] = $table_name;
$schema[$i]['parent'] = $parent_name;
foreach($table['fields'] as $row) {
$row['deprecated'] = $row['deprecated'] ?? '';
if ($row['deprecated'] !== 'true') {
if (is_array($row['name'])) {
$field_name = $row['name']['text'];
}
else {
$field_name = $row['name'];
}
$schema[$i]['fields'][] = $field_name;
}
}
$i++;
}
}
}
//match the column names to the field names
if (!empty($delimiter) && file_exists($_SESSION['file']) && $action != 'import') {
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include header
$document['title'] = $text['label-bridge_import'];
require_once "resources/header.php";
//form to match the fields to the column names
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['label-bridge_import']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'bridges.php']);
echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'id'=>'btn_save']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-import']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
//loop through user columns
$x = 0;
foreach ($line_fields as $line_field) {
$line_field = preg_replace('#[^a-zA-Z0-9_]#', '', $line_field);
echo "<tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
//echo " ".$text['label-zzz']."\n";
echo $line_field;
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select class='formfld' style='' name='fields[$x]'>\n";
echo " <option value=''></option>\n";
foreach($schema as $row) {
echo " <optgroup label='".$row['table']."'>\n";
foreach($row['fields'] as $field) {
$selected = '';
if ($field == $line_field) {
$selected = "selected='selected'";
}
if ($field !== 'domain_uuid') {
echo " <option value='".$row['table'].".".$field."' ".$selected.">".$field."</option>\n";
}
}
echo " </optgroup>\n";
}
echo " </select>\n";
//echo "<br />\n";
//echo $text['description-zzz']."\n";
echo " </td>\n";
echo "</tr>\n";
$x++;
}
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
echo "<input name='action' type='hidden' value='import'>\n";
echo "<input name='from_row' type='hidden' value='$from_row'>\n";
echo "<input name='data_delimiter' type='hidden' value='$delimiter'>\n";
echo "<input name='data_enclosure' type='hidden' value='$enclosure'>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
require_once "resources/footer.php";
//normalize the column names
//$line = strtolower($line);
//$line = str_replace("-", "_", $line);
//$line = str_replace($delimiter."title".$delimiter, $delimiter."contact_title".$delimiter, $line);
//$line = str_replace("firstname", "name_given", $line);
//$line = str_replace("lastname", "name_family", $line);
//$line = str_replace("company", "organization", $line);
//$line = str_replace("company", "contact_email", $line);
//end the script
exit;
}
//get the parent table
function get_parent($schema,$table_name) {
foreach ($schema as $row) {
if ($row['table'] == $table_name) {
return $row['parent'];
}
}
}
//upload the csv
if (file_exists($_SESSION['file'] ?? '') && $action == 'import') {
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: extension_imports.php');
exit;
}
//user selected fields
$fields = $_POST['fields'];
//set the domain_uuid
$domain_uuid = $_SESSION['domain_uuid'];
//get the contents of the csv file and convert them into an array
$handle = @fopen($_SESSION['file'], "r");
if ($handle) {
//set the starting identifiers
$row_id = 0;
$row_number = 1;
//loop through the array
while (($line = fgets($handle, 4096)) !== false) {
if ($from_row <= $row_number) {
//format the data
$y = 0;
foreach ($fields as $key => $value) {
//get the line
$result = str_getcsv($line, $delimiter, $enclosure);
//get the table and field name
$field_array = explode(".",$value);
$table_name = $field_array[0];
$field_name = $field_array[1];
//echo "value: $value<br />\n";
//echo "table_name: $table_name<br />\n";
//echo "field_name: $field_name<br />\n";
//get the parent table name
$parent = get_parent($schema, $table_name);
//remove formatting from the phone number
if ($field_name == "phone_number") {
$result[$key] = preg_replace('{\D}', '', $result[$key]);
}
//set the voicemail_local_after_email, voicemail_tutorial, and voicemail_enabled to lower case
if ($field_name == 'voicemail_local_after_email' || $field_name == 'voicemail_tutorial' || $field_name == 'voicemail_enabled') {
$result[$key] = strtolower($result[$key]);
}
//build the data array
if (!empty($table_name)) {
if (empty($parent)) {
$array[$table_name][$row_id]['domain_uuid'] = $domain_uuid;
$array[$table_name][$row_id][$field_name] = $result[$key];
}
else {
$array[$parent][$row_id][$table_name][$y]['domain_uuid'] = $domain_uuid;
$array[$parent][$row_id][$table_name][$y][$field_name] = $result[$key];
}
}
}
//process a chunk of the array
if ($row_id === 1000) {
//save to the data
$database = new database;
$database->app_name = 'bridges';
$database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044';
$database->save($array);
//clear the array
unset($array);
//set the row id back to 0
$row_id = 0;
}
} //if ($from_row <= $row_number)
$row_number++;
$row_id++;
} //end while
fclose($handle);
//save to the data
if (!empty($array) && is_array($array)) {
$database = new database;
$database->app_name = 'bridges';
$database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044';
$database->save($array);
unset($array);
}
//send the redirect header
header("Location: bridges.php");
exit;
}
}
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['label-bridge_import'];
require_once "resources/header.php";
//show content
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['label-bridge_import']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'bridges.php']);
echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$_SESSION['theme']['button_icon_upload'],'id'=>'btn_save']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-import']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_data']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <textarea name='data' id='data' class='formfld' style='width: 100%; min-height: 150px;' wrap='off'></textarea>\n";
echo "<br />\n";
echo $text['description-import_data']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-from_row']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='from_row'>\n";
$i=2;
while($i<=99) {
$selected = ($i == $from_row) ? "selected" : null;
echo " <option value='$i' ".$selected.">$i</option>\n";
$i++;
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-from_row']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_delimiter']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' style='width:40px;' name='data_delimiter'>\n";
echo " <option value=','>,</option>\n";
echo " <option value='|'>|</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-import_delimiter']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_enclosure']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' style='width:40px;' name='data_enclosure'>\n";
echo " <option value='\"'>\"</option>\n";
echo " <option value=''></option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-import_enclosure']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_file_upload']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input name='ulfile' type='file' class='formfld fileinput' id='ulfile'>\n";
echo "<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<br><br>";
echo "<input name='type' type='hidden' value='csv'>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>";
//include the footer
require_once "resources/footer.php";
?>
+23 -4
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2019
Portions created by the Initial Developer are Copyright (C) 2018-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -126,7 +126,21 @@
$offset = $rows_per_page * $page;
//get the list
$sql = str_replace('count(bridge_uuid)', '*', $sql);
$sql = "select b.bridge_uuid, d.domain_name, b.bridge_name, b.bridge_destination, bridge_enabled, bridge_description ";
$sql .= "from v_bridges as b, v_domains as d ";
$sql .= "where b.domain_uuid = d.domain_uuid ";
if (!empty($show) && $show == "all" && permission_exists('bridge_all')) {
if (isset($sql_search)) {
$sql .= "and ".$sql_search;
}
}
else {
$sql .= "and (b.domain_uuid = :domain_uuid or b.domain_uuid is null) ";
if (isset($sql_search)) {
$sql .= "and ".$sql_search;
}
$parameters['domain_uuid'] = $domain_uuid;
}
$sql .= order_by($order_by, $order, 'bridge_name', 'asc');
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
@@ -143,8 +157,11 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-bridges']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-bridges']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('bridge_import')) {
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'style'=>'margin-right: 15px;','link'=>'bridge_imports.php']);
}
if (permission_exists('bridge_add')) {
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'bridge_edit.php']);
}
@@ -190,6 +207,7 @@
echo $text['title_description-bridge']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<form id='form_list' method='post'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
@@ -227,7 +245,7 @@
echo " </td>\n";
}
if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('bridge_all')) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
echo " <td>".escape($row['domain_name'])."</td>\n";
}
echo " <td>\n";
if (permission_exists('bridge_edit')) {
@@ -264,6 +282,7 @@
echo "<div align='center'>".$paging_controls."</div>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
echo "</div>\n";
//include the footer
require_once "resources/footer.php";
+14 -3
View File
@@ -5,7 +5,7 @@
$apps[$x]['uuid'] = "9ed63276-e085-4897-839c-4f2e36d92d6c";
$apps[$x]['category'] = "Switch";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "1.0";
$apps[$x]['version'] = "1.1";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "A tool to block incoming numbers.";
@@ -21,6 +21,7 @@
$apps[$x]['description']['fr-fr'] = "Outil pour bloquer des numéros d'appelant.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "ხელსაწყო შემომავალი ნომრების დასაბლოკად";
$apps[$x]['description']['nl-nl'] = "Gereedschap om inkommende nummers te blokkeren.";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Uma ferramenta para bloquear números que entram.";
@@ -39,6 +40,14 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "50";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Number of recent calls to show.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "47914bd9-e1c0-4e3d-87e0-41f95d58ce98";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_block";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "save_call_detail_record";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Choose whether to save the call detail record when the call is blocked.";
//permission details
$y=0;
@@ -65,7 +74,6 @@
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_extension";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
@@ -83,6 +91,9 @@
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_domain";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "view_call_block";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
@@ -191,4 +202,4 @@
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>
?>
+2 -4
View File
@@ -27,22 +27,20 @@
if ($domains_processed == 1) {
//create a view for call block
$database = new database;
$database->execute("DROP VIEW view_call_block;", null);
$sql = "CREATE VIEW view_call_block AS ( \n";
$sql .= " select c.domain_uuid, call_block_uuid, c.call_block_direction, c.extension_uuid, c.call_block_name, c.call_block_country_code, \n";
$sql .= " c.call_block_number, e.extension, e.number_alias, c.call_block_count, c.call_block_app, c.call_block_data, c.date_added, c.call_block_enabled, c.call_block_description \n";
$sql .= " c.call_block_number, e.extension, e.number_alias, c.call_block_count, c.call_block_app, c.call_block_data, c.date_added, \n";
$sql .= " c.call_block_enabled, c.call_block_description, c.insert_date, c.insert_user, c.update_date, c.update_user \n";
$sql .= " from v_call_block as c \n";
$sql .= " left join v_extensions as e \n";
$sql .= " on c.extension_uuid = e.extension_uuid \n";
$sql .= "); \n";
$database = new database;
$database->execute($sql, null);
unset($sql);
//set call blocks to inbound if no direction defined
$sql = "update v_call_block set call_block_direction = 'inbound' where call_block_direction is null ";
$database = new database;
$database->execute($sql, null);
unset($sql);
+115 -25
View File
@@ -1,29 +1,31 @@
<?php
$text['title-call-block']['en-us'] = "Call Block";
$text['title-call-block']['en-gb'] = "Call Block";
$text['title-call-block']['ar-eg'] = "حظر المكالمات";
$text['title-call-block']['de-at'] = "Sperrlisten";
$text['title-call-block']['de-ch'] = "Sperrlisten";
$text['title-call-block']['de-de'] = "Sperrlisten";
$text['title-call-block']['el-gr'] = "Λίστα αποκλεισμών";
$text['title-call-block']['es-cl'] = "Bloqueo de llamadas";
$text['title-call-block']['es-mx'] = "Bloqueo de llamadas";
$text['title-call-block']['fr-ca'] = "Filtrage d'appel";
$text['title-call-block']['fr-fr'] = "Filtrage d'appel";
$text['title-call-block']['he-il'] = "חסימת מספר";
$text['title-call-block']['it-it'] = "Blocco Chiamate";
$text['title-call-block']['nl-nl'] = "Oproep blokkade";
$text['title-call-block']['pl-pl'] = "Blokowanie rozmów";
$text['title-call-block']['pt-br'] = "Bloqueio de chamadas";
$text['title-call-block']['pt-pt'] = "Bloqueio de Chamadas";
$text['title-call-block']['ro-ro'] = "Blocare apel";
$text['title-call-block']['ru-ru'] = "Черный список";
$text['title-call-block']['sv-se'] = "Blockera Samtal";
$text['title-call-block']['uk-ua'] = "Блокування дзвінків";
$text['title-call-block']['zh-cn'] = "呼叫块";
$text['title-call-block']['ja-jp'] = "コールブロック";
$text['title-call-block']['ko-kr'] = "통화 차단";
$text['title-call_block']['en-us'] = "Call Block";
$text['title-call_block']['en-gb'] = "Call Block";
$text['title-call_block']['ar-eg'] = "حظر المكالمات";
$text['title-call_block']['de-at'] = "Sperrlisten";
$text['title-call_block']['de-ch'] = "Sperrlisten";
$text['title-call_block']['de-de'] = "Sperrlisten";
$text['title-call_block']['el-gr'] = "Λίστα αποκλεισμών";
$text['title-call_block']['es-cl'] = "Bloqueo de llamadas";
$text['title-call_block']['es-mx'] = "Bloqueo de llamadas";
$text['title-call_block']['fr-ca'] = "Filtrage d'appel";
$text['title-call_block']['fr-fr'] = "Filtrage d'appel";
$text['title-call_block']['he-il'] = "חסימת מספר";
$text['title-call_block']['it-it'] = "Blocco Chiamate";
$text['title-call_block']['ka-ge'] = "ზარის დაბლოკვა";
$text['title-call_block']['nl-nl'] = "Oproep blokkade";
$text['title-call_block']['pl-pl'] = "Blokowanie rozmów";
$text['title-call_block']['pt-br'] = "Bloqueio de chamadas";
$text['title-call_block']['pt-pt'] = "Bloqueio de Chamadas";
$text['title-call_block']['ro-ro'] = "Blocare apel";
$text['title-call_block']['ru-ru'] = "Черный список";
$text['title-call_block']['sv-se'] = "Blockera Samtal";
$text['title-call_block']['uk-ua'] = "Блокування дзвінків";
$text['title-call_block']['tr-tr'] = "Çağrı Engelleme";
$text['title-call_block']['zh-cn'] = "呼叫块";
$text['title-call_block']['ja-jp'] = "コールブロック";
$text['title-call_block']['ko-kr'] = "통화 차단";
$text['heading-recent_calls']['en-us'] = "Recent Calls";
$text['heading-recent_calls']['en-gb'] = "Recent Calls";
@@ -38,6 +40,7 @@ $text['heading-recent_calls']['fr-ca'] = "Appels récents";
$text['heading-recent_calls']['fr-fr'] = "Appels récents";
$text['heading-recent_calls']['he-il'] = "שיחות אחרונות";
$text['heading-recent_calls']['it-it'] = "Chiamate Recenti";
$text['heading-recent_calls']['ka-ge'] = "უახლესი ზარები";
$text['heading-recent_calls']['nl-nl'] = "Recente oproepen";
$text['heading-recent_calls']['pl-pl'] = "Ostatnie rozmowy";
$text['heading-recent_calls']['pt-br'] = "Chamadas recentes";
@@ -46,6 +49,7 @@ $text['heading-recent_calls']['ro-ro'] = "Apeluri recente";
$text['heading-recent_calls']['ru-ru'] = "Недавние вызовы";
$text['heading-recent_calls']['sv-se'] = "Senaste Samtal";
$text['heading-recent_calls']['uk-ua'] = "Останні дзвінки";
$text['heading-recent_calls']['tr-tr'] = "Son aramalar";
$text['heading-recent_calls']['zh-cn'] = "最近通话";
$text['heading-recent_calls']['ja-jp'] = "最近の通話";
$text['heading-recent_calls']['ko-kr'] = "최근 통화";
@@ -63,6 +67,7 @@ $text['heading-block_recent_calls']['fr-ca'] = "Bloquer appels récents";
$text['heading-block_recent_calls']['fr-fr'] = "Bloquer appels récents";
$text['heading-block_recent_calls']['he-il'] = "חסום שיחות אחרונות";
$text['heading-block_recent_calls']['it-it'] = "Blocca le chiamate recenti";
$text['heading-block_recent_calls']['ka-ge'] = "უახლესი ზარების დაბლოკვა";
$text['heading-block_recent_calls']['nl-nl'] = "Blokkeer recente oproep";
$text['heading-block_recent_calls']['pl-pl'] = "Zablokuj ostatnią rozmowę";
$text['heading-block_recent_calls']['pt-br'] = "Bloquear chamadas recentes";
@@ -71,6 +76,7 @@ $text['heading-block_recent_calls']['ro-ro'] = "Blocare apel recent";
$text['heading-block_recent_calls']['ru-ru'] = "Блокировать недавний вызов";
$text['heading-block_recent_calls']['sv-se'] = "Blockera Senaste Samtal";
$text['heading-block_recent_calls']['uk-ua'] = "Блокувати недавній дзвінок";
$text['heading-block_recent_calls']['tr-tr'] = "Son Aramaları Engelle";
$text['heading-block_recent_calls']['zh-cn'] = "阻止最近通话";
$text['heading-block_recent_calls']['ja-jp'] = "最近の通話をブロックする";
$text['heading-block_recent_calls']['ko-kr'] = "최근 통화 차단";
@@ -88,6 +94,7 @@ $text['label-update-complete']['fr-ca'] = "Mise à jour effectuée";
$text['label-update-complete']['fr-fr'] = "Mise à jour effectuée";
$text['label-update-complete']['he-il'] = "העדכון הושלם";
$text['label-update-complete']['it-it'] = "Aggiornamento Completato";
$text['label-update-complete']['ka-ge'] = "განახლება დასრულდა";
$text['label-update-complete']['nl-nl'] = "Bijgewerkt";
$text['label-update-complete']['pl-pl'] = "Zaktualizowano pomyślnie";
$text['label-update-complete']['pt-br'] = "Atualização Completa";
@@ -96,6 +103,7 @@ $text['label-update-complete']['ro-ro'] = "Actualizare completă";
$text['label-update-complete']['ru-ru'] = "Обновление завершено";
$text['label-update-complete']['sv-se'] = "Uppdatering Klar";
$text['label-update-complete']['uk-ua'] = "Оновлено";
$text['label-update-complete']['tr-tr'] = "Güncelleme tamamlandı";
$text['label-update-complete']['zh-cn'] = "更新完成";
$text['label-update-complete']['ja-jp'] = "アップデート完了";
$text['label-update-complete']['ko-kr'] = "업데이트 완료";
@@ -113,6 +121,7 @@ $text['label-reject']['fr-ca'] = "Rejeter";
$text['label-reject']['fr-fr'] = "Rejeter";
$text['label-reject']['he-il'] = "לדחות";
$text['label-reject']['it-it'] = "Blocca";
$text['label-reject']['ka-ge'] = "უარყოფა";
$text['label-reject']['nl-nl'] = "Weigeren";
$text['label-reject']['pl-pl'] = "Odrzuć ";
$text['label-reject']['pt-br'] = "Rejeitar";
@@ -121,6 +130,7 @@ $text['label-reject']['ro-ro'] = "Respinge";
$text['label-reject']['ru-ru'] = "Отклонить";
$text['label-reject']['sv-se'] = "Neka";
$text['label-reject']['uk-ua'] = "Відхилити";
$text['label-reject']['tr-tr'] = "Reddetmek";
$text['label-reject']['zh-cn'] = "拒绝";
$text['label-reject']['ja-jp'] = "拒絶";
$text['label-reject']['ko-kr'] = "거부하다";
@@ -138,6 +148,7 @@ $text['label-provide-number']['fr-ca'] = "S'il vous plaît indiquer: Numéro";
$text['label-provide-number']['fr-fr'] = "Merci d'indiquer: Numéro";
$text['label-provide-number']['he-il'] = "אנא הכנס מספר";
$text['label-provide-number']['it-it'] = "Prego fornire: Numero";
$text['label-provide-number']['ka-ge'] = "გთხოვთ შეიყვანოთ: ნომერი";
$text['label-provide-number']['nl-nl'] = "Geef aub: Nummer";
$text['label-provide-number']['pl-pl'] = " Wprowadź numer";
$text['label-provide-number']['pt-br'] = "Por favor indique: Número";
@@ -146,6 +157,7 @@ $text['label-provide-number']['ro-ro'] = "Vă rugăm să furnizați: numărul";
$text['label-provide-number']['ru-ru'] = "Введите номер";
$text['label-provide-number']['sv-se'] = "Ange: Nummer";
$text['label-provide-number']['uk-ua'] = "Введіть номер";
$text['label-provide-number']['tr-tr'] = "Lütfen belirtin: Numara";
$text['label-provide-number']['zh-cn'] = "请提供:号码";
$text['label-provide-number']['ja-jp'] = "入力してください: 番号";
$text['label-provide-number']['ko-kr'] = "제공하십시오: 번호";
@@ -163,6 +175,7 @@ $text['label-provide-name']['fr-ca'] = "S'il vous plaît indiquer: Nom";
$text['label-provide-name']['fr-fr'] = "Merci d'indiquer: Nom";
$text['label-provide-name']['he-il'] = "אנא הכנס שם";
$text['label-provide-name']['it-it'] = "Prego fornire: Nome";
$text['label-provide-name']['ka-ge'] = "გთხოვთ შეიყვანოთ: სახელი";
$text['label-provide-name']['nl-nl'] = "Geef aub: Naam";
$text['label-provide-name']['pl-pl'] = " Wprowadź nazwę ";
$text['label-provide-name']['pt-br'] = "Por favor indique: Nome";
@@ -171,6 +184,7 @@ $text['label-provide-name']['ro-ro'] = "Vă rugăm să furnizați: Nume";
$text['label-provide-name']['ru-ru'] = "Пожалуйста, введите: Имя";
$text['label-provide-name']['sv-se'] = "Ange: Namn";
$text['label-provide-name']['uk-ua'] = "Введіть назву";
$text['label-provide-name']['tr-tr'] = "Lütfen belirtin: Ad";
$text['label-provide-name']['zh-cn'] = "请提供:姓名";
$text['label-provide-name']['ja-jp'] = "入力してください: 名前";
$text['label-provide-name']['ko-kr'] = "제공하십시오: 이름";
@@ -188,6 +202,7 @@ $text['label-provide-enabled']['fr-ca'] = "S'il vous plaît indiquer: Actif";
$text['label-provide-enabled']['fr-fr'] = "Merci d'indiquer: Actif";
$text['label-provide-enabled']['he-il'] = "אנא ספק: מופעל";
$text['label-provide-enabled']['it-it'] = "Prego fornire: Abilitazione";
$text['label-provide-enabled']['ka-ge'] = "გთხოვთ შეიყვანოთ: ჩართულია";
$text['label-provide-enabled']['nl-nl'] = "Geef aub: Aktief";
$text['label-provide-enabled']['pl-pl'] = " Wprowadź: Włączony";
$text['label-provide-enabled']['pt-br'] = "Por favor indique se está habilitado";
@@ -196,6 +211,7 @@ $text['label-provide-enabled']['ro-ro'] = "Vă rugăm să furnizați: Activat";
$text['label-provide-enabled']['ru-ru'] = "Пожалуйста, введите: Включить";
$text['label-provide-enabled']['sv-se'] = "Ange: Aktiverad";
$text['label-provide-enabled']['uk-ua'] = "Включити/відключити";
$text['label-provide-enabled']['tr-tr'] = "Lütfen şunu sağlayın: Etkin";
$text['label-provide-enabled']['zh-cn'] = "请提供:启用";
$text['label-provide-enabled']['ja-jp'] = "提供してください: 有効";
$text['label-provide-enabled']['ko-kr'] = "제공하십시오: 활성화됨";
@@ -212,6 +228,7 @@ $text['label-country_code']['fr-ca'] = "Préfixe";
$text['label-country_code']['fr-fr'] = "Préfixe";
$text['label-country_code']['he-il'] = "קוד מדינה";
$text['label-country_code']['it-it'] = "Prefisso internazionale";
$text['label-country_code']['ka-ge'] = "ქვეყნის კოდი";
$text['label-country_code']['nl-nl'] = "Voorloop";
$text['label-country_code']['pl-pl'] = "Kod Kraju";
$text['label-country_code']['pt-br'] = "Prefixo";
@@ -220,6 +237,7 @@ $text['label-country_code']['ro-ro'] = "Codul tarii";
$text['label-country_code']['ru-ru'] = "Код страны";
$text['label-country_code']['sv-se'] = "Landskod";
$text['label-country_code']['uk-ua'] = "Код країни";
$text['label-country_code']['tr-tr'] = "Ülke kodu";
$text['label-country_code']['zh-cn'] = "国家代码";
$text['label-country_code']['ja-jp'] = "国コード";
$text['label-country_code']['ko-kr'] = "국가 코드";
@@ -237,6 +255,7 @@ $text['label-number']['fr-ca'] = "Numéro";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['he-il'] = "מספר";
$text['label-number']['it-it'] = "Numero";
$text['label-number']['ka-ge'] = "ნომერი";
$text['label-number']['nl-nl'] = "Nummer";
$text['label-number']['pl-pl'] = "Numer";
$text['label-number']['pt-br'] = "Número";
@@ -245,6 +264,7 @@ $text['label-number']['ro-ro'] = "Număr";
$text['label-number']['ru-ru'] = "Номер";
$text['label-number']['sv-se'] = "Nummer";
$text['label-number']['uk-ua'] = "Номер";
$text['label-number']['tr-tr'] = "Sayı";
$text['label-number']['zh-cn'] = "数字";
$text['label-number']['ja-jp'] = "番号";
$text['label-number']['ko-kr'] = "숫자";
@@ -262,6 +282,7 @@ $text['label-message']['fr-ca'] = "Message";
$text['label-message']['fr-fr'] = "Message";
$text['label-message']['he-il'] = "הודעה";
$text['label-message']['it-it'] = "Messaggio";
$text['label-message']['ka-ge'] = "შეტყობინება";
$text['label-message']['nl-nl'] = "Bericht";
$text['label-message']['pl-pl'] = "Wiadomość";
$text['label-message']['pt-br'] = "Mensagem";
@@ -270,6 +291,7 @@ $text['label-message']['ro-ro'] = "Mesaj";
$text['label-message']['ru-ru'] = "Сообщение";
$text['label-message']['sv-se'] = "Meddelande";
$text['label-message']['uk-ua'] = "Повідомлення";
$text['label-message']['tr-tr'] = "İleti";
$text['label-message']['zh-cn'] = "信息";
$text['label-message']['ja-jp'] = "メッセージ";
$text['label-message']['ko-kr'] = "메시지";
@@ -286,6 +308,7 @@ $text['label-ivr_menus']['fr-ca'] = "Menus RVI";
$text['label-ivr_menus']['fr-fr'] = "Menus RVI";
$text['label-ivr_menus']['he-il'] = "תפריטי IVR";
$text['label-ivr_menus']['it-it'] = "Menu dell'IVR";
$text['label-ivr_menus']['ka-ge'] = "ხმოვანი მენიუ (IVR)";
$text['label-ivr_menus']['nl-nl'] = "IVR menus";
$text['label-ivr_menus']['pl-pl'] = "Menu zapowiedzi głosowych (IVR)";
$text['label-ivr_menus']['pt-br'] = "Menus de IVR";
@@ -294,6 +317,7 @@ $text['label-ivr_menus']['ro-ro'] = "Meniuri IVR";
$text['label-ivr_menus']['ru-ru'] = "Голосовые Меню (IVR)";
$text['label-ivr_menus']['sv-se'] = "IVR Menyer";
$text['label-ivr_menus']['uk-ua'] = "Меню IVR";
$text['label-ivr_menus']['tr-tr'] = "IVR Menüleri";
$text['label-ivr_menus']['zh-cn'] = "IVR 菜单";
$text['label-ivr_menus']['ja-jp'] = "IVR メニュー";
$text['label-ivr_menus']['ko-kr'] = "IVR 메뉴";
@@ -310,6 +334,7 @@ $text['label-ivr']['fr-ca'] = "IVR";
$text['label-ivr']['fr-fr'] = "IVR";
$text['label-ivr']['he-il'] = "IVR";
$text['label-ivr']['it-it'] = "IVR";
$text['label-ivr']['ka-ge'] = "IVR";
$text['label-ivr']['nl-nl'] = "IVR";
$text['label-ivr']['pl-pl'] = "IVR";
$text['label-ivr']['pt-br'] = "IVR";
@@ -318,6 +343,7 @@ $text['label-ivr']['ro-ro'] = "IVR";
$text['label-ivr']['ru-ru'] = "IVR";
$text['label-ivr']['sv-se'] = "IVR";
$text['label-ivr']['uk-ua'] = "IVR";
$text['label-ivr']['tr-tr'] = "IVR";
$text['label-ivr']['zh-cn'] = "IVR";
$text['label-ivr']['ja-jp'] = "IVR";
$text['label-ivr']['ko-kr'] = "IVR";
@@ -334,6 +360,7 @@ $text['label-ring_groups']['fr-ca'] = "Groupes de sonnerie";
$text['label-ring_groups']['fr-fr'] = "Groupes de sonnerie";
$text['label-ring_groups']['he-il'] = "קבוצות טבעת";
$text['label-ring_groups']['it-it'] = "Gruppi di suoneria";
$text['label-ring_groups']['ka-ge'] = "წრიული ჯგუფები";
$text['label-ring_groups']['nl-nl'] = "Belgroepen";
$text['label-ring_groups']['pl-pl'] = "Grupy dzwonków";
$text['label-ring_groups']['pt-br'] = "Grupos de toque";
@@ -342,6 +369,7 @@ $text['label-ring_groups']['ro-ro'] = "Grupuri de apeluri";
$text['label-ring_groups']['ru-ru'] = "Кольцевые группы";
$text['label-ring_groups']['sv-se'] = "Ringgrupper";
$text['label-ring_groups']['uk-ua'] = "Кільцеві групи";
$text['label-ring_groups']['tr-tr'] = "Zil Grupları";
$text['label-ring_groups']['zh-cn'] = "振铃组";
$text['label-ring_groups']['ja-jp'] = "着信グループ";
$text['label-ring_groups']['ko-kr'] = "전화 수신 그룹";
@@ -358,6 +386,7 @@ $text['label-ring_group']['fr-ca'] = "Groupe de sonnerie";
$text['label-ring_group']['fr-fr'] = "Groupe de sonnerie";
$text['label-ring_group']['he-il'] = "קבוצת חיוג";
$text['label-ring_group']['it-it'] = "Gruppo di Squillo";
$text['label-ring_group']['ka-ge'] = "გამოძახებების ჯგუფი";
$text['label-ring_group']['nl-nl'] = "Belgroep";
$text['label-ring_group']['pl-pl'] = "Grupa odbiorców.";
$text['label-ring_group']['pt-br'] = "Grupo";
@@ -366,6 +395,7 @@ $text['label-ring_group']['ro-ro'] = "Grup de apeluri";
$text['label-ring_group']['ru-ru'] = "Группа вызовов";
$text['label-ring_group']['sv-se'] = "Ringgrupp";
$text['label-ring_group']['uk-ua'] = "Кільцева група";
$text['label-ring_group']['tr-tr'] = "Yüzük Grubu";
$text['label-ring_group']['zh-cn'] = "环组";
$text['label-ring_group']['ja-jp'] = "リンググループ";
$text['label-ring_group']['ko-kr'] = "링 그룹";
@@ -383,6 +413,7 @@ $text['label-local']['fr-ca'] = "Local";
$text['label-local']['fr-fr'] = "Local";
$text['label-local']['he-il'] = "מקומי";
$text['label-local']['it-it'] = "Locale";
$text['label-local']['ka-ge'] = "ლოკალური";
$text['label-local']['nl-nl'] = "Lokaal";
$text['label-local']['pl-pl'] = "Lokalny";
$text['label-local']['pt-br'] = "Local";
@@ -391,6 +422,7 @@ $text['label-local']['ro-ro'] = "Local";
$text['label-local']['ru-ru'] = "Локальный";
$text['label-local']['sv-se'] = "Lokal";
$text['label-local']['uk-ua'] = "Місцевий";
$text['label-local']['tr-tr'] = "Yerel";
$text['label-local']['zh-cn'] = "当地的";
$text['label-local']['ja-jp'] = "地元";
$text['label-local']['ko-kr'] = "-현지의";
@@ -408,6 +440,7 @@ $text['label-inbound']['fr-ca'] = "Entrant";
$text['label-inbound']['fr-fr'] = "Entrant";
$text['label-inbound']['he-il'] = "נכנסת";
$text['label-inbound']['it-it'] = "In ingresso";
$text['label-inbound']['ka-ge'] = "შემომავალი";
$text['label-inbound']['nl-nl'] = "Inkomend";
$text['label-inbound']['pl-pl'] = "Przychodzący";
$text['label-inbound']['pt-br'] = "Entrada";
@@ -416,6 +449,7 @@ $text['label-inbound']['ro-ro'] = "Intrare";
$text['label-inbound']['ru-ru'] = "Входящий";
$text['label-inbound']['sv-se'] = "Inkommande";
$text['label-inbound']['uk-ua'] = "Вихідний";
$text['label-inbound']['tr-tr'] = "Gelen";
$text['label-inbound']['zh-cn'] = "入境";
$text['label-inbound']['ja-jp'] = "インバウンド";
$text['label-inbound']['ko-kr'] = "인바운드";
@@ -432,6 +466,7 @@ $text['label-outbound']['fr-ca'] = "Sortant";
$text['label-outbound']['fr-fr'] = "Sortant";
$text['label-outbound']['he-il'] = "יוצא";
$text['label-outbound']['it-it'] = "In Uscita";
$text['label-outbound']['ka-ge'] = "გამავალი";
$text['label-outbound']['nl-nl'] = "Uitgaande";
$text['label-outbound']['pl-pl'] = "Wychodzące";
$text['label-outbound']['pt-br'] = "Saída";
@@ -440,6 +475,7 @@ $text['label-outbound']['ro-ro'] = "Outbound";
$text['label-outbound']['ru-ru'] = "Исходящие";
$text['label-outbound']['sv-se'] = "Utgående";
$text['label-outbound']['uk-ua'] = "Вихідний";
$text['label-outbound']['tr-tr'] = "Giden";
$text['label-outbound']['zh-cn'] = "出站";
$text['label-outbound']['ja-jp'] = "アウトバウンド";
$text['label-outbound']['ko-kr'] = "배 밖으로";
@@ -456,6 +492,7 @@ $text['label-destination']['fr-ca'] = "Destination";
$text['label-destination']['fr-fr'] = "Destination";
$text['label-destination']['he-il'] = "יַעַד";
$text['label-destination']['it-it'] = "Destinazione";
$text['label-destination']['ka-ge'] = "დანიშნულება";
$text['label-destination']['nl-nl'] = "Bestemming";
$text['label-destination']['pl-pl'] = "Numer docelowy";
$text['label-destination']['pt-br'] = "Número de destino";
@@ -464,6 +501,7 @@ $text['label-destination']['ro-ro'] = "Destinaţie";
$text['label-destination']['ru-ru'] = "Назначение";
$text['label-destination']['sv-se'] = "Destination";
$text['label-destination']['uk-ua'] = "Номер";
$text['label-destination']['tr-tr'] = "Varış noktası";
$text['label-destination']['zh-cn'] = "目的地";
$text['label-destination']['ja-jp'] = "行き先";
$text['label-destination']['ko-kr'] = "목적지";
@@ -481,6 +519,7 @@ $text['label-edit-note']['fr-ca'] = "Bloquer les appels à partir d'un numéro.
$text['label-edit-note']['fr-fr'] = "Bloquer les appels à partir d'un numéro. vérifiez le nom et activez/désactivez ci-dessous.";
$text['label-edit-note']['he-il'] = "Blocați apelurile de la un număr. Editați numele și activați/dezactivați mai jos.";
$text['label-edit-note']['it-it'] = "Blocca le chiamate da un numero. Inserire il nome e abilitare/disabilitare qui sotto.";
$text['label-edit-note']['ka-ge'] = "დაბლოკეთ ზარები ნომრიდან. ჩაასწორეთ სახელი და ჩართეთ/გამორთეთ ქვემოთ.";
$text['label-edit-note']['nl-nl'] = "Blokkeer oproepen van een nummer. Pas de naam aan en (de)aktiveer hieronder.";
$text['label-edit-note']['pl-pl'] = "Blokowanie połączeń z danego numeru. Edytuj nazwę i włącz/wyłącz poniżej.";
$text['label-edit-note']['pt-br'] = "Bloquear chamadas a partir de um número. Edite o nome e ative ou desative";
@@ -489,6 +528,7 @@ $text['label-edit-note']['ro-ro'] = "Blocați apelurile de la un număr. Editaț
$text['label-edit-note']['ru-ru'] = "Блокировать вызовы от номера. Отредактируйте имя и включено/выключено ниже.";
$text['label-edit-note']['sv-se'] = "Blockera samtal från nummer. Editera namn och Aktiv/Inaktiv nedan.";
$text['label-edit-note']['uk-ua'] = "Блокувати дзвінки з номера. Змініть ім'я і включіть/відключіть нижче.";
$text['label-edit-note']['tr-tr'] = "Bir numaradan gelen aramaları engelleyin. Adı düzenleyin ve aşağıda etkinleştirin/devre dışı bırakın.";
$text['label-edit-note']['zh-cn'] = "阻止来自某个号码的呼叫。 在下方编辑名称并启用/禁用。";
$text['label-edit-note']['ja-jp'] = "番号からの通話をブロックします。 名前を編集し、以下で有効/無効にします。";
$text['label-edit-note']['ko-kr'] = "번호에서 오는 전화를 차단합니다. 이름을 수정하고 아래에서 활성화/비활성화합니다.";
@@ -506,6 +546,7 @@ $text['label-edit-edit']['fr-ca'] = "Filtrage d'appel";
$text['label-edit-edit']['fr-fr'] = "Filtrage d'appel";
$text['label-edit-edit']['he-il'] = "חסימת שיחה";
$text['label-edit-edit']['it-it'] = "Blocco Chiamate";
$text['label-edit-edit']['ka-ge'] = "ზარების დაბლოკვა";
$text['label-edit-edit']['nl-nl'] = "Oproep blokkade";
$text['label-edit-edit']['pl-pl'] = "Blokowanie rozmów";
$text['label-edit-edit']['pt-br'] = "Bloqueio de chamadas";
@@ -514,6 +555,7 @@ $text['label-edit-edit']['ro-ro'] = "Blocare apel";
$text['label-edit-edit']['ru-ru'] = "Черный список";
$text['label-edit-edit']['sv-se'] = "Blockera Samtal";
$text['label-edit-edit']['uk-ua'] = "Блокування дзвінків";
$text['label-edit-edit']['tr-tr'] = "Çağrı Engelleme";
$text['label-edit-edit']['zh-cn'] = "呼叫块";
$text['label-edit-edit']['ja-jp'] = "コール ブロック";
$text['label-edit-edit']['ko-kr'] = "통화 차단";
@@ -531,6 +573,7 @@ $text['label-edit-add']['fr-ca'] = "Ajouter au filtrage d'appels";
$text['label-edit-add']['fr-fr'] = "Ajouter filtrage d'appel";
$text['label-edit-add']['he-il'] = "חסימת שיחה";
$text['label-edit-add']['it-it'] = "Blocco Chiamate";
$text['label-edit-add']['ka-ge'] = "ზარის დაბლოკვა";
$text['label-edit-add']['nl-nl'] = "Oproep blokkade";
$text['label-edit-add']['pl-pl'] = "Blokowaie rozmów";
$text['label-edit-add']['pt-br'] = "Adicionar bloqueio de chamadas";
@@ -539,6 +582,7 @@ $text['label-edit-add']['ro-ro'] = "Blocare apel";
$text['label-edit-add']['ru-ru'] = "Черный список";
$text['label-edit-add']['sv-se'] = "Blockera Samtal";
$text['label-edit-add']['uk-ua'] = "Блокування дзвінків";
$text['label-edit-add']['tr-tr'] = "Çağrı Engelleme";
$text['label-edit-add']['zh-cn'] = "呼叫块";
$text['label-edit-add']['ja-jp'] = "コール ブロック";
$text['label-edit-add']['ko-kr'] = "통화 차단";
@@ -556,6 +600,7 @@ $text['label-duration']['fr-ca'] = "Durée";
$text['label-duration']['fr-fr'] = "Durée";
$text['label-duration']['he-il'] = "משך השיחה";
$text['label-duration']['it-it'] = "Durata";
$text['label-duration']['ka-ge'] = "ხანგრძლივობა";
$text['label-duration']['nl-nl'] = "Duur";
$text['label-duration']['pl-pl'] = "Czas trwania";
$text['label-duration']['pt-br'] = "Duração";
@@ -564,6 +609,7 @@ $text['label-duration']['ro-ro'] = "Durată";
$text['label-duration']['ru-ru'] = "Длительность";
$text['label-duration']['sv-se'] = "Samtalstid";
$text['label-duration']['uk-ua'] = "Тривалість";
$text['label-duration']['tr-tr'] = "Süre";
$text['label-duration']['zh-cn'] = "期间";
$text['label-duration']['ja-jp'] = "間隔";
$text['label-duration']['ko-kr'] = "지속";
@@ -581,6 +627,7 @@ $text['label-delete-complete']['fr-ca'] = "Supprimé";
$text['label-delete-complete']['fr-fr'] = "Supprimé";
$text['label-delete-complete']['he-il'] = "המחיקה הושלמה";
$text['label-delete-complete']['it-it'] = "Cancellazione Completata";
$text['label-delete-complete']['ka-ge'] = "წაშლა დასრულდა";
$text['label-delete-complete']['nl-nl'] = "Verwijderen gereed";
$text['label-delete-complete']['pl-pl'] = "Usunięto pomyślnie";
$text['label-delete-complete']['pt-br'] = "Remoção efetuada";
@@ -589,6 +636,7 @@ $text['label-delete-complete']['ro-ro'] = "Ștergere completă";
$text['label-delete-complete']['ru-ru'] = "Удаление завершено";
$text['label-delete-complete']['sv-se'] = "Borttagning Klar";
$text['label-delete-complete']['uk-ua'] = "Видалено";
$text['label-delete-complete']['tr-tr'] = "Silme Tamamlandı";
$text['label-delete-complete']['zh-cn'] = "删除完成";
$text['label-delete-complete']['ja-jp'] = "削除完了";
$text['label-delete-complete']['ko-kr'] = "삭제완료";
@@ -606,6 +654,7 @@ $text['label-date-added']['fr-ca'] = "Date d'ajout";
$text['label-date-added']['fr-fr'] = "Date d'ajout";
$text['label-date-added']['he-il'] = "התאריך נוסף";
$text['label-date-added']['it-it'] = "Data Aggiunta";
$text['label-date-added']['ka-ge'] = "თარიღი დაემატა";
$text['label-date-added']['nl-nl'] = "Datum toegevoegd";
$text['label-date-added']['pl-pl'] = "Dodano datę";
$text['label-date-added']['pt-br'] = "Data adicionada";
@@ -614,6 +663,7 @@ $text['label-date-added']['ro-ro'] = "Data adăugării";
$text['label-date-added']['ru-ru'] = "Дата добавления";
$text['label-date-added']['sv-se'] = "Datum Tillagt";
$text['label-date-added']['uk-ua'] = "Додано";
$text['label-date-added']['tr-tr'] = "Ekleme Tarihi";
$text['label-date-added']['zh-cn'] = "添加日期";
$text['label-date-added']['ja-jp'] = "追加日";
$text['label-date-added']['ko-kr'] = "추가된 날짜";
@@ -631,6 +681,7 @@ $text['label-count']['fr-ca'] = "Nombre d'appels";
$text['label-count']['fr-fr'] = "Nombre d'appels";
$text['label-count']['he-il'] = "לספור";
$text['label-count']['it-it'] = "Conteggio";
$text['label-count']['ka-ge'] = "რაოდენობა";
$text['label-count']['nl-nl'] = "Aantal";
$text['label-count']['pl-pl'] = "Wyliczenie";
$text['label-count']['pt-br'] = "Contagem";
@@ -639,6 +690,7 @@ $text['label-count']['ro-ro'] = "Numara";
$text['label-count']['ru-ru'] = "Количество";
$text['label-count']['sv-se'] = "Räkna";
$text['label-count']['uk-ua'] = "Кількість";
$text['label-count']['tr-tr'] = "Saymak";
$text['label-count']['zh-cn'] = "数数";
$text['label-count']['ja-jp'] = "カウント";
$text['label-count']['ko-kr'] = "세다";
@@ -656,6 +708,7 @@ $text['label-called']['fr-ca'] = "Appelé";
$text['label-called']['fr-fr'] = "Appelé";
$text['label-called']['he-il'] = "Opgeroepen";
$text['label-called']['it-it'] = "Chiamato";
$text['label-called']['ka-ge'] = "მიმართულება";
$text['label-called']['nl-nl'] = "Aangeroepen";
$text['label-called']['pl-pl'] = "Zadzwoniono";
$text['label-called']['pt-br'] = "Chamada";
@@ -664,6 +717,7 @@ $text['label-called']['ro-ro'] = "Sunat";
$text['label-called']['ru-ru'] = "Направление";
$text['label-called']['sv-se'] = "Ringdes";
$text['label-called']['uk-ua'] = "Дзвінок здійснено";
$text['label-called']['tr-tr'] = "İsminde";
$text['label-called']['zh-cn'] = "称为";
$text['label-called']['ja-jp'] = "呼ばれた";
$text['label-called']['ko-kr'] = "라고 불리는";
@@ -681,6 +735,7 @@ $text['label-busy']['fr-ca'] = "Occupé";
$text['label-busy']['fr-fr'] = "Occupé";
$text['label-busy']['he-il'] = "תפוס";
$text['label-busy']['it-it'] = "Occupato";
$text['label-busy']['ka-ge'] = "დაკავებულია";
$text['label-busy']['nl-nl'] = "Bezet";
$text['label-busy']['pl-pl'] = "Zajęty";
$text['label-busy']['pt-br'] = "Ocupado";
@@ -689,6 +744,7 @@ $text['label-busy']['ro-ro'] = "Ocupat";
$text['label-busy']['ru-ru'] = "Занято";
$text['label-busy']['sv-se'] = "Upptagen";
$text['label-busy']['uk-ua'] = "Зайнято";
$text['label-busy']['tr-tr'] = "Meşgul";
$text['label-busy']['zh-cn'] = "忙碌的";
$text['label-busy']['ja-jp'] = "忙しい";
$text['label-busy']['ko-kr'] = "바쁘다";
@@ -706,6 +762,7 @@ $text['label-hold']['fr-ca'] = "Attente";
$text['label-hold']['fr-fr'] = "Attente";
$text['label-hold']['he-il'] = "לְהַחזִיק";
$text['label-hold']['it-it'] = "In attesa";
$text['label-hold']['ka-ge'] = "შეკავება";
$text['label-hold']['nl-nl'] = "Aanhouden";
$text['label-hold']['pl-pl'] = "Trzymać";
$text['label-hold']['pt-br'] = "Espera";
@@ -714,6 +771,7 @@ $text['label-hold']['ro-ro'] = "Ține";
$text['label-hold']['ru-ru'] = "Удержание";
$text['label-hold']['sv-se'] = "Vänt";
$text['label-hold']['uk-ua'] = "Тримайте";
$text['label-hold']['tr-tr'] = "Tutmak";
$text['label-hold']['zh-cn'] = "抓住";
$text['label-hold']['ja-jp'] = "所有";
$text['label-hold']['ko-kr'] = "잡고 있다";
@@ -730,6 +788,7 @@ $text['label-missed']['fr-ca'] = "Perdus";
$text['label-missed']['fr-fr'] = "Perdus";
$text['label-missed']['he-il'] = "החמצה";
$text['label-missed']['it-it'] = "Perse";
$text['label-missed']['ka-ge'] = "გამოტოვებული";
$text['label-missed']['nl-nl'] = "gemist";
$text['label-missed']['pl-pl'] = "Nie odebrany";
$text['label-missed']['pt-br'] = "Perdidas";
@@ -738,6 +797,7 @@ $text['label-missed']['ro-ro'] = "ratat";
$text['label-missed']['ru-ru'] = "Пропущено";
$text['label-missed']['sv-se'] = "Missade";
$text['label-missed']['uk-ua'] = "Пропущений";
$text['label-missed']['tr-tr'] = "Kaçırıldı";
$text['label-missed']['zh-cn'] = "逃した";
$text['label-missed']['ja-jp'] = "逃した";
$text['label-missed']['ko-kr'] = "놓친";
@@ -755,6 +815,7 @@ $text['label-voicemail']['fr-ca'] = "Messagerie vocale";
$text['label-voicemail']['fr-fr'] = "Messagerie vocale";
$text['label-voicemail']['he-il'] = "תא קולי";
$text['label-voicemail']['it-it'] = "Voicemail";
$text['label-voicemail']['ka-ge'] = "ხმოვანი ფოსტა";
$text['label-voicemail']['nl-nl'] = "Opname";
$text['label-voicemail']['pl-pl'] = "Poczta głosowa";
$text['label-voicemail']['pt-br'] = "Correio de voz";
@@ -763,6 +824,7 @@ $text['label-voicemail']['ro-ro'] = "Mesageria vocală";
$text['label-voicemail']['ru-ru'] = "Голосовая почта";
$text['label-voicemail']['sv-se'] = "Röstbrevlåda";
$text['label-voicemail']['uk-ua'] = "Голосова пошта";
$text['label-voicemail']['tr-tr'] = "Sesli mesaj";
$text['label-voicemail']['zh-cn'] = "语音信箱";
$text['label-voicemail']['ja-jp'] = "ボイスメール";
$text['label-voicemail']['ko-kr'] = "음성사서함";
@@ -780,6 +842,7 @@ $text['label-add-note']['fr-ca'] = "Bloquer les appels à partir d'un numéro. C
$text['label-add-note']['fr-fr'] = "Bloquer les appels à partir d'un numéro. Choisissez un numéro dans liste ou entrez un numéro, nom et activez ci-dessous.";
$text['label-add-note']['he-il'] = "חסום שיחות ממספר. בחר מספר מהרשימה למעלה או הזן את המספר, השם והפעל למטה.";
$text['label-add-note']['it-it'] = "Blocca le chiamate da un numero. Seleziona un numero dalla lista sovrastante o inserisci il numero, il nome e l'abilitazione qui sotto.";
$text['label-add-note']['ka-ge'] = "დაბლოკეთ ზარები ნომრიდან. ან აირჩიეთ ნომერი ზედა სიიდან, ან შეიყვანეთ ნომერი, სახელი და ჩართეთ ქვემოთ";
$text['label-add-note']['nl-nl'] = "Blokkeer oproepen van een nummer. Of select het nummer van de bovenstaande lijst, of voer het nummer, de naam en aktivering hieronder.";
$text['label-add-note']['pl-pl'] = "Blokowanie połączeń z danego numeru. Wybierz numer z powyższej listy j lub wpisz numer, nazwę i załącz poniżej.";
$text['label-add-note']['pt-br'] = "Bloquear chamadas a partir de um número. Selecione um número a partir da lista indicada ou insira um número e um nome em seguida ative";
@@ -788,6 +851,7 @@ $text['label-add-note']['ro-ro'] = "Blocați apelurile de la un număr. Selecta
$text['label-add-note']['ru-ru'] = "Блокировка вызовов от номера. Выберите номер из списка выше либо введите его самостоятельно, имя и включите ниже.";
$text['label-add-note']['sv-se'] = "Blockera samtal från ett nummer. Välj antingen ett nummer från listan ovan eller fyll i nummer, namn och aktivera nedan.";
$text['label-add-note']['uk-ua'] = "Блокувати дзвінки з номера. Або вибрати номер зі списку вище або введіть номер, ім'я і включити нижче.";
$text['label-add-note']['tr-tr'] = "Bir numaradan gelen aramaları engelleyin. Yukarıdaki listeden bir numara seçin veya numarayı, adı girin ve aşağıya etkinleştirin.";
$text['label-add-note']['zh-cn'] = "阻止来自某个号码的呼叫。 从上面的列表中选择一个号码,或者在下面输入号码、姓名并启用。";
$text['label-add-note']['ja-jp'] = "番号からの通話をブロックします。 上のリストから番号を選択するか、番号、名前、有効化を下に入力します。";
$text['label-add-note']['ko-kr'] = "번호에서 오는 전화를 차단합니다. 위 목록에서 번호를 선택하거나 번호, 이름을 입력하고 아래에 활성화하십시오.";
@@ -805,6 +869,7 @@ $text['label-add-complete']['fr-ca'] = "Ajouté";
$text['label-add-complete']['fr-fr'] = "Ajouté";
$text['label-add-complete']['he-il'] = "הוספה הושלמה";
$text['label-add-complete']['it-it'] = "Inserimento Completato";
$text['label-add-complete']['ka-ge'] = "დამატება დასრულდა";
$text['label-add-complete']['nl-nl'] = "Toevoegen gereed";
$text['label-add-complete']['pl-pl'] = "Dodano pomyślnie";
$text['label-add-complete']['pt-br'] = "Criação efetuada ";
@@ -813,6 +878,7 @@ $text['label-add-complete']['ro-ro'] = "Adăugare completă";
$text['label-add-complete']['ru-ru'] = "Добавление завершено";
$text['label-add-complete']['sv-se'] = "Tillagd";
$text['label-add-complete']['uk-ua'] = "Додано";
$text['label-add-complete']['tr-tr'] = "Ekleme Tamamlandı";
$text['label-add-complete']['zh-cn'] = "添加完成";
$text['label-add-complete']['ja-jp'] = "追加完了";
$text['label-add-complete']['ko-kr'] = "추가완료";
@@ -830,6 +896,7 @@ $text['label-action']['fr-ca'] = "Action";
$text['label-action']['fr-fr'] = "Action";
$text['label-action']['he-il'] = "פעולה";
$text['label-action']['it-it'] = "Azione";
$text['label-action']['ka-ge'] = "ქმედება";
$text['label-action']['nl-nl'] = "Actie";
$text['label-action']['pl-pl'] = "Operacja";
$text['label-action']['pt-br'] = "Ação";
@@ -838,6 +905,7 @@ $text['label-action']['ro-ro'] = "Acțiune";
$text['label-action']['ru-ru'] = "Действие";
$text['label-action']['sv-se'] = "Åtgärd";
$text['label-action']['uk-ua'] = "Дія";
$text['label-action']['tr-tr'] = "Aksiyon";
$text['label-action']['zh-cn'] = "行动";
$text['label-action']['ja-jp'] = "アクション";
$text['label-action']['ko-kr'] = "행동";
@@ -854,6 +922,7 @@ $text['label-direction']['fr-ca'] = "Direction";
$text['label-direction']['fr-fr'] = "Direction";
$text['label-direction']['he-il'] = "כיוון";
$text['label-direction']['it-it'] = "Direzione";
$text['label-direction']['ka-ge'] = "მიმართულება";
$text['label-direction']['nl-nl'] = "Richting";
$text['label-direction']['pl-pl'] = "Kierunek";
$text['label-direction']['pt-br'] = "Direção";
@@ -862,6 +931,7 @@ $text['label-direction']['ro-ro'] = "Direcţie";
$text['label-direction']['ru-ru'] = "Направление";
$text['label-direction']['sv-se'] = "Riktning";
$text['label-direction']['uk-ua'] = "Напрям";
$text['label-direction']['tr-tr'] = "Yön";
$text['label-direction']['zh-cn'] = "方向";
$text['label-direction']['ja-jp'] = "方向";
$text['label-direction']['ko-kr'] = "방향";
@@ -879,6 +949,7 @@ $text['description-direction']['fr-ca'] = "Sélectionnez la direction des appels
$text['description-direction']['fr-fr'] = "Sélectionnez la direction des appels à bloquer.";
$text['description-direction']['he-il'] = "בחר את כיוון השיחות לחסימה.";
$text['description-direction']['it-it'] = "Seleziona la direzione delle chiamate da bloccare.";
$text['description-direction']['ka-ge'] = "აირჩიეთ ზარის მიმართულება დასაბლოკად";
$text['description-direction']['nl-nl'] = "Selecteer de richting van de oproepen die u wilt blokkeren.";
$text['description-direction']['pl-pl'] = "Wybierz kierunek połączeń, które mają być blokowane.";
$text['description-direction']['pt-br'] = "Selecione a direção das chamadas para bloquear.";
@@ -887,6 +958,7 @@ $text['description-direction']['ro-ro'] = "Selectați direcția apelurilor de bl
$text['description-direction']['ru-ru'] = "Выберите направление вызовов для блокировки.";
$text['description-direction']['sv-se'] = "Välj riktning för samtalen som ska blockeras.";
$text['description-direction']['uk-ua'] = "Виберіть напрямок дзвінків для блокування.";
$text['description-direction']['tr-tr'] = "Engellenecek çağrıların yönünü seçin.";
$text['description-direction']['zh-cn'] = "选择要阻止的呼叫方向。";
$text['description-direction']['ja-jp'] = "ブロックする通話の方向を選択します。";
$text['description-direction']['ko-kr'] = "차단할 호출의 방향을 선택합니다.";
@@ -904,6 +976,7 @@ $text['description-call_block_name']['fr-ca'] = "Entrez le nom d'affichage à bl
$text['description-call_block_name']['fr-fr'] = "Entrez le nom d'affichage à bloquer.";
$text['description-call_block_name']['he-il'] = "הזן את שם המתקשר כדי לחסום.";
$text['description-call_block_name']['it-it'] = "Immettere il nome dell'ID chiamante da bloccare.";
$text['description-call_block_name']['ka-ge'] = "აირჩიეთ დასაბლოკი აბონენტის სახელი";
$text['description-call_block_name']['nl-nl'] = "Voer het te blokkeren CID Naam in.";
$text['description-call_block_name']['pl-pl'] = "Wprowadź prezentację Nazwy numeru dzwoniącego do zablokowania.";
$text['description-call_block_name']['pt-br'] = "Digite o nome de identificação do chamador para bloquear.";
@@ -912,6 +985,7 @@ $text['description-call_block_name']['ro-ro'] = "Introduceți numele ID-ului ape
$text['description-call_block_name']['ru-ru'] = "Введите имя вызывающего абонента для блокировки.";
$text['description-call_block_name']['sv-se'] = "Ange nummerpresentatörens namn för att blockera.";
$text['description-call_block_name']['uk-ua'] = "Введіть ідентифікатор абонента, який потрібно заблокувати.";
$text['description-call_block_name']['tr-tr'] = "Engellenecek Arayan Kimliği Adını girin.";
$text['description-call_block_name']['zh-cn'] = "输入要阻止的来电显示名称。";
$text['description-call_block_name']['ja-jp'] = "ブロックする発信者 ID 名を入力します。";
$text['description-call_block_name']['ko-kr'] = "차단할 발신자 ID 이름을 입력하세요.";
@@ -928,6 +1002,7 @@ $text['description-country_code']['fr-ca'] = "Entrez le préfixe de destination.
$text['description-country_code']['fr-fr'] = "Entrez le préfixe de destination.";
$text['description-country_code']['he-il'] = "הזן את קידומת קוד המדינה.";
$text['description-country_code']['it-it'] = "Inserisci il prefisso del codice paese.";
$text['description-country_code']['ka-ge'] = "შეიყვანეთ ქვეყნის კოდის პრეფიქსი.";
$text['description-country_code']['nl-nl'] = "Voer de bestemming prefix in.";
$text['description-country_code']['pl-pl'] = "Wprowadź prefiks Kodu Kraju.";
$text['description-country_code']['pt-br'] = "Insira o prefixo do destino.";
@@ -936,6 +1011,7 @@ $text['description-country_code']['ro-ro'] = "Introduceți prefixul codului de
$text['description-country_code']['ru-ru'] = "Введите префикс кода страны.";
$text['description-country_code']['sv-se'] = "Ange landskodens prefix.";
$text['description-country_code']['uk-ua'] = "Введіть префікс коду країни.";
$text['description-country_code']['tr-tr'] = "Ülke Kodu önekini girin.";
$text['description-country_code']['zh-cn'] = "输入国家代码前缀。";
$text['description-country_code']['ja-jp'] = "国コードのプレフィックスを入力します。";
$text['description-country_code']['ko-kr'] = "국가 코드 프리픽스를 입력합니다.";
@@ -953,6 +1029,7 @@ $text['description-call_block_number']['fr-ca'] = "Entrez le numéro d'affichage
$text['description-call_block_number']['fr-fr'] = "Entrez le numéro d'affichage à bloquer.";
$text['description-call_block_number']['he-il'] = "הזן את קוד המדינה ומספר זיהוי המתקשר כדי לחסום.";
$text['description-call_block_number']['it-it'] = "Immettere il prefisso internazionale e il numero ID chiamante da bloccare.";
$text['description-call_block_number']['ka-ge'] = "შეიყვანეთ დასაბლოკი ნომრის ქვეყნის კოდი და იდენტიფიკატორი.";
$text['description-call_block_number']['nl-nl'] = "Voer het te blokkeren CID Nummer in.";
$text['description-call_block_number']['pl-pl'] = "Wprowadź Kod Kraju i prezentację Numeru dzwoniącego do zablokowania.";
$text['description-call_block_number']['pt-br'] = "Digite o código do país e o número de identificação do chamador para bloquear.";
@@ -961,6 +1038,7 @@ $text['description-call_block_number']['ro-ro'] = "Introduceți codul țării ș
$text['description-call_block_number']['ru-ru'] = "Введите код страны и номер идентификатора вызывающего абонента для блокировки.";
$text['description-call_block_number']['sv-se'] = "Ange landskoden och nummerpresentationen för att blockera.";
$text['description-call_block_number']['uk-ua'] = "Введіть код країни та ідентифікаційний номер абонента для блокування.";
$text['description-call_block_number']['tr-tr'] = "Engellenecek Ülke Kodunu ve Arayanın Kimlik Numarasını girin.";
$text['description-call_block_number']['zh-cn'] = "输入要阻止的国家代码和来电显示号码。";
$text['description-call_block_number']['ja-jp'] = "ブロックする国コードと発信者番号を入力します。";
$text['description-call_block_number']['ko-kr'] = "차단할 국가 코드와 발신자 ID 번호를 입력하세요.";
@@ -978,6 +1056,7 @@ $text['description-extension']['fr-ca'] = "Choissizez le poste sur lequel cette
$text['description-extension']['fr-fr'] = "Choissizez le poste sur lequel cette règle sera appliquée.";
$text['description-extension']['he-il'] = "בחר את התוסף שיושפע.";
$text['description-extension']['it-it'] = "Seleziona l'estensione interessata.";
$text['description-extension']['ka-ge'] = "აირჩიეთ გაფართოება, რომელსაც ეს შეეხება";
$text['description-extension']['nl-nl'] = "Selecteer het toestel dat geblokkeerd moet worden.";
$text['description-extension']['pl-pl'] = "Wybierz numer wewnętrzny, którego blokowanie ma dotyczyć.";
$text['description-extension']['pt-br'] = "Selecione a extensão a ser afetada.";
@@ -986,6 +1065,7 @@ $text['description-extension']['ro-ro'] = "Selectați extensia care va fi afecta
$text['description-extension']['ru-ru'] = "Выберите расширение, которое будет затронуто.";
$text['description-extension']['sv-se'] = "Välj tillägget som ska påverkas.";
$text['description-extension']['uk-ua'] = "Виберіть розширення, на яке буде впливати.";
$text['description-extension']['tr-tr'] = "Etkilenecek uzantıyı seçin.";
$text['description-extension']['zh-cn'] = "选择受影响的分机。";
$text['description-extension']['ja-jp'] = "影響を受ける拡張子を選択します。";
$text['description-extension']['ko-kr'] = "영향을 받을 확장자를 선택합니다.";
@@ -1003,6 +1083,7 @@ $text['description-enable']['fr-ca'] = "Choisir oui pour activer le filtrage d'a
$text['description-enable']['fr-fr'] = "Choisir oui pour activer le filtrage d'appel pour ce numéro.";
$text['description-enable']['he-il'] = "הגדר כ-true כדי לאפשר חסימת שיחות עבור מספר זה.";
$text['description-enable']['it-it'] = "Selezionare 'true' per abilitare il blocco chiamate da questo numero.";
$text['description-enable']['ka-ge'] = "დააყენეთ ჭეშმარიტზე(True), რომ ჩართოთ ზარის დაბლოკვა ამ ნომრისთვის";
$text['description-enable']['nl-nl'] = "Aktiveer om de blokkade aan te zetten voor dit nummer.";
$text['description-enable']['pl-pl'] = "Ustaw wartość na TAK, aby umożliwić blokowanie tego numeru ";
$text['description-enable']['pt-br'] = "Escolha 'sim' para ativar o bloqueio de chamadas para este número.";
@@ -1011,6 +1092,7 @@ $text['description-enable']['ro-ro'] = "Setați la adevărat pentru a activa blo
$text['description-enable']['ru-ru'] = "Выберите 'Да', чтобы блокировать вызовы с данного номера.";
$text['description-enable']['sv-se'] = "Välj Sann för att blockera detta nummer.";
$text['description-enable']['uk-ua'] = "Виберіть 'Так', щоб блокувати дзвінки з даного номера.";
$text['description-enable']['tr-tr'] = "Bu numara için çağrı engellemeyi etkinleştirmek üzere doğru olarak ayarlayın.";
$text['description-enable']['zh-cn'] = "设置为 true 以启用此号码的呼叫阻止。";
$text['description-enable']['ja-jp'] = "この番号のコール ブロッキングを有効にするには、true に設定します。";
$text['description-enable']['ko-kr'] = "이 번호에 대한 통화 차단을 활성화하려면 true로 설정하십시오.";
@@ -1028,6 +1110,7 @@ $text['description-call-block']['fr-ca'] = "Une liste de numéros à partir de l
$text['description-call-block']['fr-fr'] = "Une liste de numéros depuis lesquels vous pouvez bloquer les appels";
$text['description-call-block']['he-il'] = "רשימה של מספרים שמהם ניתן לחסום שיחות.";
$text['description-call-block']['it-it'] = "Una lista di numeri per cui è possibile bloccare le chiamate.";
$text['description-call-block']['ka-ge'] = "ნომრების სია, რომლიდანაც ზარი დაიბლოკება";
$text['description-call-block']['nl-nl'] = "Een lijst van nummers die geblokkeerd moeten worden.";
$text['description-call-block']['pl-pl'] = "Lista numerów, z których rozmowy są blokowane.";
$text['description-call-block']['pt-br'] = "Uma lista de números que deseja bloquear as chamadas";
@@ -1036,6 +1119,7 @@ $text['description-call-block']['ro-ro'] = "O listă de numere de la care să bl
$text['description-call-block']['ru-ru'] = "Список номеров, с которых блокируются вызовы.";
$text['description-call-block']['sv-se'] = "En lista med nummer för blockering av samtal.";
$text['description-call-block']['uk-ua'] = "Список номерів, з яких блокуються дзвінки.";
$text['description-call-block']['tr-tr'] = "Aramaların engelleneceği numaraların listesi.";
$text['description-call-block']['zh-cn'] = "要阻止呼叫的号码列表。";
$text['description-call-block']['ja-jp'] = "通話をブロックする番号のリスト。";
$text['description-call-block']['ko-kr'] = "통화를 차단할 번호 목록입니다.";
@@ -1053,14 +1137,16 @@ $text['description-action']['fr-ca'] = "Choisir une action pour les appels de ce
$text['description-action']['fr-fr'] = "Choisir une action pour les appels de ce numéro.";
$text['description-action']['he-il'] = "הגדר פעולה לשיחות ממספר זה.";
$text['description-action']['it-it'] = "Seleziona un'azione per le chiamate da questo numero.";
$text['description-action']['ka-ge'] = "აირჩიეთ ქმედება ზარებისთვის ამ ნომრიდან.";
$text['description-action']['nl-nl'] = "Stel actie voor oproepen vanaf dit nummer in.";
$text['description-action']['pl-pl'] = "Ustaw co zrobić w przypadku polaczeń z tego numeru.";
$text['description-action']['pt-br'] = "Escolha uma ação para chamadas reailzadas por este número.";
$text['description-action']['pt-pt'] = "Escolha uma acção para chamadas com origem neste número.";
$text['description-action']['ro-ro'] = "Setați o acțiune pentru apelurile de la acest număr.";
$text['description-action']['ru-ru'] = "Установите действие для вызовов с данного номера.";
$text['description-action']['sv-se'] = "Välj en aktion för samtal från detta nummer.";
$text['description-action']['sv-se'] = "Välj en åtgärd för samtal från detta nummer.";
$text['description-action']['uk-ua'] = "Встановіть дію для дзвінків з цього номера.";
$text['description-action']['tr-tr'] = "Bu numaradan gelen aramalar için bir eylem ayarlayın.";
$text['description-action']['zh-cn'] = "为来自此号码的呼叫设置一个操作。";
$text['description-action']['ja-jp'] = "この番号からの通話に対するアクションを設定します。";
$text['description-action']['ko-kr'] = "이 번호에서 걸려오는 전화에 대한 작업을 설정합니다.";
@@ -1078,6 +1164,7 @@ $text['confirm-block']['fr-ca'] = "Voulez-vous vraiment bloquer ceci?";
$text['confirm-block']['fr-fr'] = "Voulez-vous vraiment bloquer ceci?";
$text['confirm-block']['he-il'] = "האם אתה באמת רוצה לחסום את זה?";
$text['confirm-block']['it-it'] = "Vuoi davvero bloccarlo?";
$text['confirm-block']['ka-ge'] = "მართლა გნებავთ ამის დაბლოკვა?";
$text['confirm-block']['nl-nl'] = "Do you really want to block this?";
$text['confirm-block']['pl-pl'] = "Czy na pewno chcesz to zablokować?";
$text['confirm-block']['pt-br'] = "Wil je dit echt blokkeren?";
@@ -1087,6 +1174,7 @@ $text['confirm-block']['ru-ru'] = "Вы действительно хотите
$text['confirm-block']['sv-se'] = "Vill du verkligen blockera detta?";
$text['confirm-block']['uk-ua'] = "Ви дійсно хочете заблокувати це?";
$text['confirm-block']['tr-tr'] = "Do you really want to block this?";
$text['confirm-block']['tr-tr'] = "Bunu gerçekten engellemek istiyor musun?";
$text['confirm-block']['zh-cn'] = "你真的要阻止这个吗?";
$text['confirm-block']['ja-jp'] = "本当にこれをブロックしますか?";
$text['confirm-block']['ko-kr'] = "정말 차단하시겠습니까?";
@@ -1104,6 +1192,7 @@ $text['button-block']['fr-ca'] = "Bloquer";
$text['button-block']['fr-fr'] = "Bloquer";
$text['button-block']['he-il'] = "לַחסוֹם";
$text['button-block']['it-it'] = "Bloccare";
$text['button-block']['ka-ge'] = "დაბლოკვა";
$text['button-block']['nl-nl'] = "Blok";
$text['button-block']['pl-pl'] = "Blokuj";
$text['button-block']['pt-br'] = "Bloquear";
@@ -1113,6 +1202,7 @@ $text['button-block']['ru-ru'] = "Блокировать";
$text['button-block']['sv-se'] = "Blockera";
$text['button-block']['uk-ua'] = "Блокувати";
$text['button-block']['tr-tr'] = "Engellemek";
$text['button-block']['tr-tr'] = "Engellemek";
$text['button-block']['zh-cn'] = "堵塞";
$text['button-block']['ja-jp'] = "ブロック";
$text['button-block']['ko-kr'] = "차단하다";
+1
View File
@@ -14,6 +14,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Liste Noire";
$apps[$x]['menu'][$y]['title']['he-il'] = "חסימת מספר";
$apps[$x]['menu'][$y]['title']['it-it'] = "Blocco Chiamate";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ზარების დაბლოკვა";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep blokkade";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Blokowanie rozmów";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Bloqueio de chamadas";
+73 -16
View File
@@ -17,13 +17,13 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
The original Call Block was written by Gerrit Visser <gerrit308@gmail.com>
The original Call Block was written by Gerrit Visser <gerrit308@gmail.com>
All of it has been rewritten over years.
*/
@@ -91,18 +91,30 @@
$search = strtolower($_GET["search"]);
}
//set the time zone
if (isset($_SESSION['domain']['time_zone']['name'])) {
$time_zone = $_SESSION['domain']['time_zone']['name'];
}
else {
$time_zone = date_default_timezone_get();
}
//prepare to page the results
$sql = "select count(*) from view_call_block ";
$sql .= "where true ";
if ($show == "all" && permission_exists('call_block_all')) {
//$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
//show all records across all domains
}
else {
$sql .= "and (domain_uuid = :domain_uuid) ";
$sql .= "and ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension'])) {
if (!permission_exists('call_block_extension') && !empty($_SESSION['user']['extension'])) {
$sql .= "and extension_uuid in (";
$x = 0;
foreach ($_SESSION['user']['extension'] as $field) {
@@ -141,17 +153,34 @@
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from view_call_block ";
$sql = "select domain_uuid, call_block_uuid, call_block_direction, extension_uuid, call_block_name, ";
$sql .= " call_block_country_code, call_block_number, extension, number_alias, call_block_count, ";
$sql .= " call_block_app, call_block_data, ";
$sql .= " to_char(timezone(:time_zone, insert_date), 'DD Mon YYYY') as date_formatted, \n";
if (date(!empty($_SESSION['domain']['time_format']['text']) == '12h')) {
$sql .= " to_char(timezone(:time_zone, insert_date), 'HH12:MI:SS am') as time_formatted, \n";
}
else {
$sql .= " to_char(timezone(:time_zone, insert_date), 'HH24:MI:SS am') as time_formatted, \n";
}
$sql .= " call_block_enabled, call_block_description, insert_date, insert_user, update_date, update_user ";
$sql .= "from view_call_block ";
$sql .= "where true ";
$parameters['time_zone'] = $time_zone;
if ($show == "all" && permission_exists('call_block_all')) {
//$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
else {
$sql .= "and (domain_uuid = :domain_uuid) ";
$sql .= "and ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
if (!permission_exists('call_block_extension') && !empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
$sql .= "and extension_uuid in (";
$x = 0;
foreach ($_SESSION['user']['extension'] as $field) {
@@ -173,23 +202,31 @@
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$sql .= order_by($order_by, $order, ['call_block_country_code','call_block_number']);
$sql .= order_by($order_by, $order, ['domain_uuid','call_block_country_code','call_block_number']);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$result = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//determine if any global
$global_call_blocks = false;
if (permission_exists('call_block_domain') && !empty($result) && is_array($result) && @sizeof($result) != 0) {
foreach ($result as $row) {
if (!is_uuid($row['domain_uuid'])) { $global_call_blocks = true; break; }
}
}
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['title-call-block'];
$document['title'] = $text['title-call_block'];
require_once "resources/header.php";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call-block']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-call_block']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_block_add')) {
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_block_edit.php']);
@@ -240,6 +277,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) {
@@ -250,6 +288,9 @@
if ($show == 'all' && permission_exists('domain_all')) {
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
}
else if (permission_exists('call_block_domain') && $global_call_blocks) {
echo th_order_by('domain_uuid', $text['label-domain'], $order_by, $order, null, "style='width: 1%;' class='center'");
}
echo th_order_by('call_block_direction', $text['label-direction'], $order_by, $order, null, "style='width: 1%;' class='center'");
echo th_order_by('extension', $text['label-extension'], $order_by, $order, null, "class='center'");
echo th_order_by('call_block_name', $text['label-name'], $order_by, $order);
@@ -258,7 +299,7 @@
echo th_order_by('call_block_count', $text['label-count'], $order_by, $order, '', "class='center hide-sm-dn'");
echo th_order_by('call_block_action', $text['label-action'], $order_by, $order);
echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('date_added', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
echo th_order_by('insert_date', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
echo "<th class='hide-md-dn pct-20'>".$text['label-description']."</th>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
@@ -267,7 +308,7 @@
if (!empty($result)) {
$x = 0;
foreach($result as $row) {
foreach ($result as $row) {
if (permission_exists('call_block_edit')) {
$list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']);
}
@@ -279,7 +320,22 @@
echo " </td>\n";
}
if (!empty($show) && $show == 'all' && permission_exists('domain_all')) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
if (!empty($row['domain_uuid']) && is_uuid($row['domain_uuid'])) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
}
else {
echo " <td>".$text['label-global']."</td>\n";
}
}
else if ($global_call_blocks) {
if (permission_exists('call_block_domain') && !is_uuid($row['domain_uuid'])) {
echo " <td>".$text['label-global'];
}
else {
echo " <td class='overflow'>";
echo escape($_SESSION['domains'][$row['domain_uuid']]['domain_name']);
}
echo "</td>\n";
}
echo " <td class='center'>";
switch ($row['call_block_direction']) {
@@ -323,7 +379,7 @@
echo $text['label-'.$row['call_block_enabled']];
}
echo " </td>\n";
echo " <td class='no-wrap'>".date('j M Y', $row['date_added'])." <span class='hide-sm-dn'>".date((!empty($_SESSION['domain']['time_format']['text']) == '12h' ? 'h:i:s a' : 'H:i:s'), $row['date_added'])."</span></td>\n";
echo " <td class='no-wrap'>".$row['date_formatted']." <span class='hide-sm-dn'>".$row['time_formatted']."</span></td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['call_block_description'])."</td>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
@@ -337,6 +393,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+96 -48
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -40,6 +40,9 @@
$language = new text;
$text = $language->get();
//initialize the database object
$database = new database;
//set the defaults
$call_block_name = '';
$call_block_country_code = '';
@@ -62,6 +65,7 @@
//get http post variables and set them to php variables
if (!empty($_POST)) {
//get the variables from the http post
$domain_uuid = permission_exists('call_block_domain') ? $_POST["domain_uuid"] : $_SESSION['domain_uuid'];
$call_block_direction = $_POST["call_block_direction"];
$extension_uuid = $_POST["extension_uuid"];
$call_block_name = $_POST["call_block_name"] ?? null;
@@ -74,7 +78,7 @@
$action_array = explode(':', $_POST["call_block_action"]);
$call_block_app = $action_array[0];
$call_block_data = $action_array[1] ?? null;
//sanitize the data
$extension_uuid = preg_replace("#[^a-fA-F0-9./]#", "", $extension_uuid);
$call_block_country_code = preg_replace('#[^0-9./]#', '', $call_block_country_code ?? '');
@@ -146,11 +150,14 @@
//ensure call block is enabled in the dialplan
if ($action == "add" || $action == "update") {
$sql = "select dialplan_uuid from v_dialplans where true ";
$sql .= "and domain_uuid = :domain_uuid ";
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$sql .= "and domain_uuid = :domain_uuid ";
}
$sql .= "and app_uuid = 'b1b31930-d0ee-4395-a891-04df94599f1f' ";
$sql .= "and dialplan_enabled <> 'true' ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$parameters['domain_uuid'] = $domain_uuid;
}
$rows = $database->select($sql, $parameters);
if (!empty($rows)) {
@@ -159,10 +166,9 @@
$array['dialplans'][$index]['dialplan_enabled'] = 'true';
}
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_edit', 'temp');
$database = new database;
$database->save($array);
unset($array);
@@ -171,14 +177,14 @@
}
//if user doesn't have call block all then use the assigned extension_uuid
if (!permission_exists('call_block_all')) {
if (!permission_exists('call_block_extension')) {
$extension_uuid = $_SESSION['user']['extension'][0]['extension_uuid'];
}
//save the data to the database
if ($action == "add") {
$array['call_block'][0]['call_block_uuid'] = uuid();
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][0]['domain_uuid'] = $domain_uuid;
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
@@ -193,11 +199,9 @@
$array['call_block'][0]['date_added'] = time();
$array['call_block'][0]['call_block_description'] = $call_block_description;
$database = new database;
$database->app_name = 'call_block';
$database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
$database->save($array);
$response = $database->message;
unset($array);
message::add($text['label-add-complete']);
@@ -205,14 +209,21 @@
return;
}
if ($action == "update") {
$sql = "select c.call_block_country_code, c.call_block_number, d.domain_name ";
$sql .= "from v_call_block as c ";
$sql .= "join v_domains as d on c.domain_uuid = d.domain_uuid ";
$sql .= "where c.domain_uuid = :domain_uuid ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$sql = "select c.call_block_country_code, c.call_block_number, d.domain_name ";
$sql .= "from v_call_block as c ";
$sql .= "join v_domains as d on c.domain_uuid = d.domain_uuid ";
$sql .= "where c.domain_uuid = :domain_uuid ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
else {
$sql = "select c.call_block_country_code, c.call_block_number, domain_name as 'global' ";
$sql .= "from v_call_block as c ";
$sql .= "where c.domain_uuid is null ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
}
$parameters['call_block_uuid'] = $call_block_uuid;
$database = new database;
$result = $database->select($sql, $parameters);
if (!empty($result)) {
//set the domain_name
@@ -225,7 +236,7 @@
unset($sql, $parameters);
$array['call_block'][0]['call_block_uuid'] = $call_block_uuid;
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][0]['domain_uuid'] = $domain_uuid;
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
@@ -239,11 +250,9 @@
$array['call_block'][0]['date_added'] = time();
$array['call_block'][0]['call_block_description'] = $call_block_description;
$database = new database;
$database->app_name = 'call_block';
$database->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
$database->save($array);
$response = $database->message;
unset($array);
message::add($text['label-update-complete']);
@@ -257,13 +266,18 @@
if (!empty($_GET) && empty($_POST["persistformvar"])) {
$call_block_uuid = $_GET["id"];
$sql = "select * from v_call_block ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['call_block_uuid'] = $call_block_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row)) {
$domain_uuid = $row["domain_uuid"];
$call_block_direction = $row["call_block_direction"];
$extension_uuid = $row["extension_uuid"];
$call_block_name = $row["call_block_name"];
@@ -283,44 +297,60 @@
//get the extensions
if (permission_exists('call_block_all') || permission_exists('call_block_extension')) {
$sql = "select extension_uuid, extension, number_alias, user_context, description from v_extensions ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and enabled = 'true' ";
$sql .= "order by extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$extensions = $database->select($sql, $parameters);
}
//get the ivr's
if (permission_exists('call_block_all') || permission_exists('call_block_ivr')) {
$sql = "select ivr_menu_uuid,ivr_menu_name, ivr_menu_extension, ivr_menu_description from v_ivr_menus ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
// $sql .= "and enabled = 'true' ";
$sql .= "order by ivr_menu_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$ivrs = $database->select($sql, $parameters);
}
//get the ring groups
if (permission_exists('call_block_all') || permission_exists('call_block_ring_group')) {
$sql = "select ring_group_uuid,ring_group_name, ring_group_extension, ring_group_description from v_ring_groups ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
// $sql .= "and ring_group_enabled = 'true' ";
$sql .= "order by ring_group_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$ring_groups = $database->select($sql, $parameters);
}
//get the voicemails
$sql = "select voicemail_uuid, voicemail_id, voicemail_description ";
$sql .= "from v_voicemails ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and voicemail_enabled = 'true' ";
$sql .= "order by voicemail_id asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$voicemails = $database->select($sql, $parameters);
//create token
@@ -328,7 +358,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
$token = $object->create($_SERVER['PHP_SELF']);
//show the header
$document['title'] = $text['title-call-block'];
$document['title'] = $text['title-call_block'];
require_once "resources/header.php";
//show the content
@@ -366,6 +396,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
}
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -383,7 +414,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('call_block_all')) {
if (permission_exists('call_block_extension')) {
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-extension']."\n";
@@ -461,7 +492,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
if (permission_exists('call_block_extension')) {
if (!empty($extensions)) {
echo " <optgroup label='".$text['label-extension']."'>\n";
foreach ($extensions as &$row) {
foreach ($extensions as $row) {
$selected = ($call_block_app == 'extension' && $call_block_data == $row['extension']) ? "selected='selected'" : null;
echo " <option value='extension:".urlencode($row["extension"])."' ".$selected.">".escape($row['extension'])." ".escape($row['description'])."</option>\n";
}
@@ -471,7 +502,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
if (permission_exists('call_block_ivr')) {
if (!empty($ivrs)) {
echo " <optgroup label='".$text['label-ivr_menus']."'>\n";
foreach ($ivrs as &$row) {
foreach ($ivrs as $row) {
$selected = ($call_block_app == 'ivr' && $call_block_data == $row['ivr_menu_extension']) ? "selected='selected'" : null;
echo " <option value='ivr:".urlencode($row["ivr_menu_extension"])."' ".$selected.">".escape($row['ivr_menu_name'])." ".escape($row['ivr_menu_extension'])."</option>\n";
}
@@ -481,7 +512,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
if (permission_exists('call_block_ring_group')) {
if (!empty($ring_groups)) {
echo " <optgroup label='".$text['label-ring_groups']."'>\n";
foreach ($ring_groups as &$row) {
foreach ($ring_groups as $row) {
$selected = ($call_block_app == 'ring_group' && $call_block_data == $row['ring_group_extension']) ? "selected='selected'" : null;
echo " <option value='ring_group:".urlencode($row["ring_group_extension"])."' ".$selected.">".escape($row['ring_group_name'])." ".escape($row['ring_group_extension'])."</option>\n";
}
@@ -491,7 +522,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
if (permission_exists('call_block_voicemail')) {
if (!empty($voicemails)) {
echo " <optgroup label='".$text['label-voicemail']."'>\n";
foreach ($voicemails as &$row) {
foreach ($voicemails as $row) {
$selected = ($call_block_app == 'voicemail' && $call_block_data == $row['voicemail_id']) ? "selected='selected'" : null;
echo " <option value='voicemail:".urlencode($row["voicemail_id"])."' ".$selected.">".escape($row['voicemail_id'])." ".escape($row['voicemail_description'])."</option>\n";
}
@@ -507,6 +538,24 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('call_block_domain')) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-domain']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='domain_uuid'>\n";
echo " <option value=''>".$text['label-global']."</option>\n";
foreach ($_SESSION['domains'] as $row) {
echo " <option value='".escape($row['domain_uuid'])."' ".($row['domain_uuid'] == $domain_uuid ? "selected='selected'" : null).">".escape($row['domain_name'])."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-domain_name']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-enabled']."\n";
@@ -542,6 +591,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br><br>";
if ($action == "update") {
@@ -555,7 +605,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
if (empty($_REQUEST["id"])) {
//without block all permission, limit to assigned extension(s)
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension'])) {
if (!permission_exists('call_block_extension') && !empty($_SESSION['user']['extension'])) {
foreach ($_SESSION['user']['extension'] as $assigned_extension) {
$assigned_extensions[$assigned_extension['extension_uuid']] = $assigned_extension['user'];
}
@@ -573,7 +623,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
}
}
//get recent calls
//get the recent calls
$sql = "select caller_id_name, caller_id_number, caller_destination, start_epoch, direction, hangup_cause, duration, billsec, xml_cdr_uuid ";
$sql .= "from v_xml_cdr where domain_uuid = :domain_uuid ";
$sql .= "and direction <> 'local' ";
@@ -581,8 +631,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
$sql .= "order by start_stamp desc ";
$sql .= limit_offset($_SESSION['call_block']['recent_call_limit']['text']);
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$result = $database->select($sql, $parameters);
$recent_calls = $database->select($sql, $parameters);
unset($sql, $parameters);
echo "<form id='form_list' method='post'>\n";
@@ -599,9 +648,9 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo " </div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','id'=>'action_bar_sub_button_back','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'collapse'=>'hide-xs','style'=>'display: none;','link'=>'call_block.php']);
if ($result) {
if ($recent_calls) {
$select_margin = 'margin-left: 15px;';
if (permission_exists('call_block_all')) {
if (permission_exists('call_block_extension')) {
echo "<select class='formfld' style='".$select_margin."' name='extension_uuid'>\n";
echo " <option value='' disabled='disabled'>".$text['label-extension']."</option>\n";
echo " <option value='' selected='selected'>".$text['label-all']."</option>\n";
@@ -621,7 +670,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if ($result) {
if ($recent_calls) {
echo modal::create(['id'=>'modal-block','type'=>'general','message'=>$text['confirm-block'],'actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_block','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_form_submit('form_list');"])]);
}
@@ -634,13 +683,13 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "<th style='width: 1%;'>&nbsp;</th>\n";
echo th_order_by('caller_id_name', $text['label-name'], $order_by, $order);
echo th_order_by('caller_id_number', $text['label-number'], $order_by, $order);
echo th_order_by('caller_id_number', $text['label-destination'], $order_by, $order);
echo th_order_by('caller_destination', $text['label-destination'], $order_by, $order);
echo th_order_by('start_stamp', $text['label-called'], $order_by, $order);
echo th_order_by('duration', $text['label-duration'], $order_by, $order, null, "class='right hide-sm-dn'");
echo "</tr>";
if (!empty($result)) {
foreach ($result as $x => $row) {
if (!empty($recent_calls)) {
foreach ($recent_calls as $x => $row) {
if ($row['direction'] == $direction) {
$list_row_onclick_uncheck = "if (!this.checked) { document.getElementById('checkbox_all_".$direction."').checked = false; }";
$list_row_onclick_toggle = "onclick=\"document.getElementById('checkbox_".$x."').checked = document.getElementById('checkbox_".$x."').checked ? false : true; ".$list_row_onclick_uncheck."\"";
@@ -704,7 +753,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
}
echo "</table>\n";
}
unset($result);
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+88 -51
View File
@@ -19,6 +19,7 @@ if (!class_exists('call_block')) {
private $uuid_prefix;
private $toggle_field;
private $toggle_values;
private $database;
/**
* declare public variables
@@ -33,6 +34,9 @@ if (!class_exists('call_block')) {
*/
public function __construct() {
//initialize the database
$this->database = new database;
//assign private variables
$this->app_name = 'call_block';
$this->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
@@ -76,11 +80,15 @@ if (!class_exists('call_block')) {
//get necessary call block details
if (is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select ".$this->uuid_prefix."uuid as uuid, call_block_number from v_".$this->table." ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
$rows = $this->database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $row) {
$call_block_numbers[$row['uuid']] = $row['call_block_number'];
@@ -93,7 +101,9 @@ if (!class_exists('call_block')) {
$x = 0;
foreach ($call_block_numbers as $call_block_uuid => $call_block_number) {
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $call_block_uuid;
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
if (!permission_exists('call_block_domain')) {
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
}
$x++;
}
@@ -101,10 +111,9 @@ if (!class_exists('call_block')) {
if (is_array($array) && @sizeof($array) != 0) {
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->delete($array);
unset($array);
//clear the cache
@@ -153,8 +162,7 @@ if (!class_exists('call_block')) {
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
$rows = $this->database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $row) {
$states[$row['uuid']] = $row['toggle'];
@@ -176,10 +184,9 @@ if (!class_exists('call_block')) {
if (is_array($array) && @sizeof($array) != 0) {
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->save($array);
unset($array);
//clear the cache
@@ -231,8 +238,7 @@ if (!class_exists('call_block')) {
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
$rows = $this->database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $x => $row) {
@@ -252,10 +258,9 @@ if (!class_exists('call_block')) {
if (is_array($array) && @sizeof($array) != 0) {
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->save($array);
unset($array);
//set message
@@ -296,21 +301,68 @@ if (!class_exists('call_block')) {
}
}
//get the caller id info from cdrs
//get the caller id info from call detail records
if (is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select caller_id_name, caller_id_number, caller_destination from v_xml_cdr ";
$sql .= "where xml_cdr_uuid in (".implode(', ', $uuids).") ";
$database = new database;
$rows = $database->select($sql, $parameters ?? null, 'all');
unset($sql);
$rows = $this->database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
}
//get the caller id info from call detail records
if (isset($_SESSION['domain_uuid']) && is_uuid($_SESSION['domain_uuid'])) {
//get the destination country code
$sql = "select distinct(destination_prefix), ";
$sql .= "(select count(destination_prefix) from v_destinations where domain_uuid = :domain_uuid and destination_prefix = d.destination_prefix) as count ";
$sql .= "from v_destinations as d ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and destination_prefix <> '' ";
$sql .= "and destination_enabled = 'true' ";
$sql .= "order by count desc limit 1; ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$destination_country_code = $this->database->select($sql, $parameters ?? null, 'column');
unset($sql, $parameters);
//use the the destination country code to set the country code
if (!empty($destination_country_code)) {
$destination_country_code = trim($destination_country_code, "+ ");
$country_code = $destination_country_code;
}
}
//get the users that are assigned to the extension
if (!permission_exists('call_block_extension')) {
$sql = "select extension_uuid from v_extension_users ";
$sql .= "where user_uuid = :user_uuid ";
$parameters['user_uuid'] = $_SESSION['user_uuid'];
$user_extensions = $this->database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
}
//get the country code from default settings
if (!empty($_SESSION['domain']['country_code']['numeric'])) {
$country_code = $_SESSION['domain']['country_code']['numeric'];
}
//loop through records
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $x => $row) {
//remove e.164 and country code
if (substr($row["caller_id_number"],0,1) == "+") {
//format e.164
$call_block_number = str_replace("+".trim($country_code), "", trim($row["caller_id_number"]));
}
elseif (!empty($row["caller_id_number"])) {
//remove the country code if its the first in the string
$call_block_number = ltrim(trim($row["caller_id_number"]), $country_code ?? '');
}
else {
$call_block_number = '';
}
//build insert array
if (permission_exists('call_block_all')) {
if (permission_exists('call_block_extension')) {
$array['call_block'][$x]['call_block_uuid'] = uuid();
$array['call_block'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][$x]['call_block_direction'] = $this->call_block_direction;
@@ -318,18 +370,8 @@ if (!class_exists('call_block')) {
$array['call_block'][$x]['extension_uuid'] = $this->extension_uuid;
}
if ($this->call_block_direction == 'inbound') {
//remove e.164 and country code
if (trim($row["caller_id_number"])[0] == "+") {
//format e.164
$call_block_number = str_replace("+".trim($_SESSION['domain']['country_code']['numeric']), "", trim($row["caller_id_number"]));
}
else {
//remove the country code if its the first in the string
$call_block_number = ltrim(trim($row["caller_id_number"]), $_SESSION['domain']['country_code']['numeric'] ?? '');
}
//build the array
$array['call_block'][$x]['call_block_country_code'] = trim($_SESSION['domain']['country_code']['numeric'] ?? '');
$array['call_block'][$x]['call_block_name'] = '';
$array['call_block'][$x]['call_block_country_code'] = trim($country_code ?? '');
$array['call_block'][$x]['call_block_number'] = $call_block_number;
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
}
@@ -344,19 +386,16 @@ if (!class_exists('call_block')) {
$x++;
}
else {
if (is_array($_SESSION['user']['extension'])) {
foreach ($_SESSION['user']['extension'] as $field) {
if (is_array($user_extensions)) {
foreach ($user_extensions as $field) {
if (is_uuid($field['extension_uuid'])) {
$array['call_block'][$x]['call_block_uuid'] = uuid();
$array['call_block'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][$x]['call_block_direction'] = $this->call_block_direction;
$array['call_block'][$x]['extension_uuid'] = $field['extension_uuid'];
if ($this->call_block_direction == 'inbound') {
//remove e.164 and country code
$call_block_number = str_replace("+".trim($_SESSION['domain']['country_code']['numeric']), "", trim($row["caller_id_number"]));
//build the array
$array['call_block'][$x]['call_block_name'] = '';
$array['call_block'][$x]['call_block_country_code'] = trim($country_code ?? '');
$array['call_block'][$x]['call_block_number'] = $call_block_number;
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
}
@@ -386,8 +425,7 @@ if (!class_exists('call_block')) {
$sql .= "and app_uuid = '".$this->app_uuid."' ";
$sql .= "and dialplan_enabled <> 'true' ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$rows = $database->select($sql, $parameters);
$rows = $this->database->select($sql, $parameters);
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $x => $row) {
$array['dialplans'][$x]['dialplan_uuid'] = $row['dialplan_uuid'];
@@ -397,15 +435,14 @@ if (!class_exists('call_block')) {
unset($rows, $parameters);
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_edit', 'temp');
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
$response = $database->message;
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->save($array);
$response = $this->database->message;
unset($array);
//revoke temporary permissions
@@ -424,4 +461,4 @@ if (!class_exists('call_block')) {
} //class
}
?>
?>
@@ -0,0 +1,46 @@
<?php
//call block icon
$array['dashboard'][$x]['dashboard_uuid'] = 'e75f04ff-6d1b-4b39-af0f-e1d1860327c1';
$array['dashboard'][$x]['dashboard_name'] = 'Call Block';
$array['dashboard'][$x]['dashboard_path'] = 'dashboard/icon';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-ban';
$array['dashboard'][$x]['dashboard_url'] = '/app/call_block/call_block.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
$array['dashboard'][$x]['dashboard_height'] = '';
$array['dashboard'][$x]['dashboard_content'] = '';
$array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_heading_text_color'] = '';
$array['dashboard'][$x]['dashboard_heading_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_heading_background_color'] = '';
$array['dashboard'][$x]['dashboard_heading_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '#EA4C46';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
$array['dashboard'][$x]['dashboard_row_span'] = '1';
$array['dashboard'][$x]['dashboard_details_state'] = 'disabled';
$array['dashboard'][$x]['dashboard_order'] = '50';
$array['dashboard'][$x]['dashboard_enabled'] = 'false';
$array['dashboard'][$x]['dashboard_description'] = '';
$y = 0;
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '7919f503-397c-4f98-a661-a60a738a1b1c';
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = 'e75f04ff-6d1b-4b39-af0f-e1d1860327c1';
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'superadmin';
$y++;
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '8f9f1b96-660b-469c-ab02-fbdf65f994f1';
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = 'e75f04ff-6d1b-4b39-af0f-e1d1860327c1';
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'admin';
$y++;
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '2f8cb6c2-c4cb-4602-af3e-713196c4965b';
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = 'e75f04ff-6d1b-4b39-af0f-e1d1860327c1';
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'user';
$y++;
?>
+1 -13
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Programmation de campagnes d'appels vers des extensions, IVR, salles de conferences ou tout autre numéro.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "დაგეგმეთ მრავალჯერადი ზარების განხორციელება შიდა ნომერთან, IVR მენიუ, საკონფერებციო ოთახი, ან ნებისმერი სხვა ნომერი";
$apps[$x]['description']['nl-nl'] = "Methode om direct meerdere parallele oproepen naar toestellen, IVR menu, Conferentie, of een ander nummer te maken.";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Programação para imediatamente realizar várias chamadas para uma extensão, um menu IVR, Sala de Conferência ou qualquer outro número.";
@@ -95,14 +96,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_call_broadcasts";
$apps[$x]['db'][$y]['table']['parent'] = "";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_broadcast_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_broadcast_uuid";
//$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'][0] = "call_call_broadcast_uuid";
//$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'][1] = "broadcast_uuid";
@@ -121,11 +114,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+151 -80
View File
@@ -6,12 +6,14 @@ $text['title-call_broadcasts']['ar-eg'] = "البث دعوة";
$text['title-call_broadcasts']['de-at'] = "Rundrufe";
$text['title-call_broadcasts']['de-ch'] = "Rundrufe";
$text['title-call_broadcasts']['de-de'] = "Rundrufe";
$text['title-call_broadcasts']['el-gr'] = "Εκπομπές κλήσεων";
$text['title-call_broadcasts']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcasts']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcasts']['fr-ca'] = "Campagne d'appels";
$text['title-call_broadcasts']['fr-fr'] = "Campagne d'appels";
$text['title-call_broadcasts']['he-il'] = "הגדרת חשבון";
$text['title-call_broadcasts']['it-it'] = "Chiamate Multiple";
$text['title-call_broadcasts']['ka-ge'] = "ზარების მაუწყებლობა";
$text['title-call_broadcasts']['nl-nl'] = "Omroep";
$text['title-call_broadcasts']['pl-pl'] = "Rozsyłanie rozmów";
$text['title-call_broadcasts']['pt-br'] = "Configurações da Conta";
@@ -20,6 +22,7 @@ $text['title-call_broadcasts']['ro-ro'] = "Apel Transmisii";
$text['title-call_broadcasts']['ru-ru'] = "Массовые вызовы";
$text['title-call_broadcasts']['sv-se'] = "Samtalsdistributioner";
$text['title-call_broadcasts']['uk-ua'] = "Трансляція дзвінків";
$text['title-call_broadcasts']['tr-tr'] = "Çağrı Yayınları";
$text['title-call_broadcasts']['zh-cn'] = "呼叫广播";
$text['title-call_broadcasts']['ja-jp'] = "コール ブロードキャスト";
$text['title-call_broadcasts']['ko-kr'] = "통화 방송";
@@ -30,12 +33,14 @@ $text['title-call_broadcast']['ar-eg'] = "بث دعوة";
$text['title-call_broadcast']['de-at'] = "Rundrufe";
$text['title-call_broadcast']['de-ch'] = "Rundrufe";
$text['title-call_broadcast']['de-de'] = "Rundrufe";
$text['title-call_broadcast']['el-gr'] = "Μετάδοση κλήσης";
$text['title-call_broadcast']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcast']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcast']['fr-ca'] = "Campagne d'appels";
$text['title-call_broadcast']['fr-fr'] = "Campagne d'appels";
$text['title-call_broadcast']['he-il'] = "הגדרת חשבון";
$text['title-call_broadcast']['it-it'] = "Chiamate Multiple";
$text['title-call_broadcast']['ka-ge'] = "ზარების მაუწყებლობა";
$text['title-call_broadcast']['nl-nl'] = "Omroep";
$text['title-call_broadcast']['pl-pl'] = "Rozsyłanie rozmów";
$text['title-call_broadcast']['pt-br'] = "Configurações da Conta";
@@ -44,6 +49,7 @@ $text['title-call_broadcast']['ro-ro'] = "Apel Broadcast";
$text['title-call_broadcast']['ru-ru'] = "Массовые вызовы";
$text['title-call_broadcast']['sv-se'] = "Samtalsdistributioner";
$text['title-call_broadcast']['uk-ua'] = "Трансляція дзвінків";
$text['title-call_broadcast']['tr-tr'] = "Çağrı Yayını";
$text['title-call_broadcast']['zh-cn'] = "呼叫广播";
$text['title-call_broadcast']['ja-jp'] = "コール ブロードキャスト";
$text['title-call_broadcast']['ko-kr'] = "통화 브로드캐스트";
@@ -54,12 +60,14 @@ $text['title_description-call_broadcast']['ar-eg'] = "إدارة تسليم ال
$text['title_description-call_broadcast']['de-at'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['de-ch'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['de-de'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['el-gr'] = "Διαχειριστείτε την παράδοση προηχογραφημένων μηνυμάτων σε μαζικούς παραλήπτες.";
$text['title_description-call_broadcast']['es-cl'] = "Gestionar el envío de mensajes pregrabados a destinatarios masivos.";
$text['title_description-call_broadcast']['es-mx'] = "Gestionar el envío de mensajes pregrabados a destinatarios masivos.";
$text['title_description-call_broadcast']['fr-ca'] = "Gérez la livraison de messages préenregistrés aux destinataires en masse.";
$text['title_description-call_broadcast']['fr-fr'] = "Gérez la livraison de messages préenregistrés aux destinataires en masse.";
$text['title_description-call_broadcast']['he-il'] = "נהל את מסירת ההודעות המוקלטות מראש לנמענים המוניים.";
$text['title_description-call_broadcast']['it-it'] = "Gestisci la consegna di messaggi preregistrati a destinatari di massa.";
$text['title_description-call_broadcast']['ka-ge'] = "მართეთ წინასწარ ჩაწერილი შეტყობინებების მიტანა მრავალ მომხმარებლამდე.";
$text['title_description-call_broadcast']['nl-nl'] = "Beheer de aflevering van voor-opgenomen boodschappen naar meerdere ontvangers.";
$text['title_description-call_broadcast']['pl-pl'] = "Zarządzaj dostarczaniem nagranych wiadomości do odbiorców masowych.";
$text['title_description-call_broadcast']['pt-br'] = "Gerencie a entrega de mensagens pré-gravadas para destinatários em massa.";
@@ -68,6 +76,7 @@ $text['title_description-call_broadcast']['ro-ro'] = "Gestionați livrarea mesaj
$text['title_description-call_broadcast']['ru-ru'] = "Управляйте доставкой предварительно записанных сообщений массовым получателям.";
$text['title_description-call_broadcast']['sv-se'] = "Hantera leveransen av förinspelade meddelanden till massmottagare.";
$text['title_description-call_broadcast']['uk-ua'] = "Керуйте доставкою попередньо записаних повідомлень масовим одержувачам.";
$text['title_description-call_broadcast']['tr-tr'] = "Önceden kaydedilmiş mesajların toplu alıcılara teslimini yönetin.";
$text['title_description-call_broadcast']['zh-cn'] = "管理向大量收件人发送预先录制的消息。";
$text['title_description-call_broadcast']['ja-jp'] = "大量の受信者への録音済みメッセージの配信を管理します。";
$text['title_description-call_broadcast']['ko-kr'] = "대량 수신자에게 미리 녹음된 메시지 전달을 관리합니다.";
@@ -78,12 +87,14 @@ $text['option-true']['ar-eg'] = "حقيقي";
$text['option-true']['de-at'] = "Ein";
$text['option-true']['de-ch'] = "Ein";
$text['option-true']['de-de'] = "Ein";
$text['option-true']['el-gr'] = "Αληθής";
$text['option-true']['es-cl'] = "Verdadero";
$text['option-true']['es-mx'] = "Verdadero";
$text['option-true']['fr-ca'] = "Oui";
$text['option-true']['fr-fr'] = "Oui";
$text['option-true']['he-il'] = "חוקי";
$text['option-true']['it-it'] = "Vera";
$text['option-true']['ka-ge'] = "ჭეშმარიტი";
$text['option-true']['nl-nl'] = "Aan";
$text['option-true']['pl-pl'] = "Tak";
$text['option-true']['pt-br'] = "Sim";
@@ -92,6 +103,7 @@ $text['option-true']['ro-ro'] = "Adevărat";
$text['option-true']['ru-ru'] = "Да";
$text['option-true']['sv-se'] = "Sann";
$text['option-true']['uk-ua'] = "Так";
$text['option-true']['tr-tr'] = "Doğru";
$text['option-true']['zh-cn'] = "真的";
$text['option-true']['ja-jp'] = "真実";
$text['option-true']['ko-kr'] = "진실";
@@ -102,12 +114,14 @@ $text['option-false']['ar-eg'] = "خطأ شنيع";
$text['option-false']['de-at'] = "Aus";
$text['option-false']['de-ch'] = "Aus";
$text['option-false']['de-de'] = "Aus";
$text['option-false']['el-gr'] = "Ψευδής";
$text['option-false']['es-cl'] = "Falso";
$text['option-false']['es-mx'] = "Falso";
$text['option-false']['fr-ca'] = "Non";
$text['option-false']['fr-fr'] = "Non";
$text['option-false']['he-il'] = "לא חוקי";
$text['option-false']['it-it'] = "Falso";
$text['option-false']['ka-ge'] = "ცრუ";
$text['option-false']['nl-nl'] = "Uit";
$text['option-false']['pl-pl'] = "Nie";
$text['option-false']['pt-br'] = "Não";
@@ -116,6 +130,7 @@ $text['option-false']['ro-ro'] = "Fals";
$text['option-false']['ru-ru'] = "Нет";
$text['option-false']['sv-se'] = "Falsk";
$text['option-false']['uk-ua'] = "помилковий";
$text['option-false']['tr-tr'] = "YANLIŞ";
$text['option-false']['zh-cn'] = "错误的";
$text['option-false']['ja-jp'] = "間違い";
$text['option-false']['ko-kr'] = "거짓";
@@ -126,12 +141,14 @@ $text['label-view-calls']['ar-eg'] = "مشاهدة المكالمات";
$text['label-view-calls']['de-at'] = "Anrufe ansehen";
$text['label-view-calls']['de-ch'] = "Anrufe ansehen";
$text['label-view-calls']['de-de'] = "Anrufe ansehen";
$text['label-view-calls']['el-gr'] = "Προβολή κλήσεων";
$text['label-view-calls']['es-cl'] = "Ver llamadas";
$text['label-view-calls']['es-mx'] = "Ver llamadas";
$text['label-view-calls']['fr-ca'] = "Voir les appels";
$text['label-view-calls']['fr-fr'] = "Voir les appels";
$text['label-view-calls']['he-il'] = "הצג שיחות";
$text['label-view-calls']['it-it'] = "Visualizza Chiamate";
$text['label-view-calls']['ka-ge'] = "ზარების ნახვა";
$text['label-view-calls']['nl-nl'] = "Oproepen bekijken";
$text['label-view-calls']['pl-pl'] = "Podgląd rozmów";
$text['label-view-calls']['pt-br'] = "Ver chamadas";
@@ -140,6 +157,7 @@ $text['label-view-calls']['ro-ro'] = "Vizualizare Apeluri";
$text['label-view-calls']['ru-ru'] = "Показать вызовы";
$text['label-view-calls']['sv-se'] = "Granska Samtal";
$text['label-view-calls']['uk-ua'] = "Перегляд дзвінків";
$text['label-view-calls']['tr-tr'] = "Aramaları Görüntüle";
$text['label-view-calls']['zh-cn'] = "查看通话";
$text['label-view-calls']['ja-jp'] = "通話を表示";
$text['label-view-calls']['ko-kr'] = "통화 보기";
@@ -150,12 +168,14 @@ $text['label-start_time']['ar-eg'] = "وقت البدء";
$text['label-start_time']['de-at'] = "Startzeit";
$text['label-start_time']['de-ch'] = "Startzeit";
$text['label-start_time']['de-de'] = "Startzeit";
$text['label-start_time']['el-gr'] = "Ωρα έναρξης";
$text['label-start_time']['es-cl'] = "Hora de inicio";
$text['label-start_time']['es-mx'] = "Hora de inicio";
$text['label-start_time']['fr-ca'] = "Heure de début";
$text['label-start_time']['fr-fr'] = "Heure de début";
$text['label-start_time']['he-il'] = "שעת התחלה";
$text['label-start_time']['it-it'] = "Ora di inizio";
$text['label-start_time']['ka-ge'] = "დაწყების დრო";
$text['label-start_time']['nl-nl'] = "Starttijd";
$text['label-start_time']['pl-pl'] = "Czas rozpoczęcia";
$text['label-start_time']['pt-br'] = "hora de início";
@@ -164,6 +184,7 @@ $text['label-start_time']['ro-ro'] = "Timpul de începere";
$text['label-start_time']['ru-ru'] = "Время начала";
$text['label-start_time']['sv-se'] = "Starttid";
$text['label-start_time']['uk-ua'] = "Час початку";
$text['label-start_time']['tr-tr'] = "Başlangıç ​​saati";
$text['label-start_time']['zh-cn'] = "开始时间";
$text['label-start_time']['ja-jp'] = "始まる時間";
$text['label-start_time']['ko-kr'] = "시작 시간";
@@ -174,12 +195,14 @@ $text['label-timeout']['ar-eg'] = "نفذ الوقت";
$text['label-timeout']['de-at'] = "Zeitüberschreitung";
$text['label-timeout']['de-ch'] = "Zeitüberschreitung";
$text['label-timeout']['de-de'] = "Zeitüberschreitung";
$text['label-timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-timeout']['es-cl'] = "Tiempo Líimite";
$text['label-timeout']['es-mx'] = "Tiempo Líimite";
$text['label-timeout']['fr-ca'] = "Temps libre";
$text['label-timeout']['fr-fr'] = "Temps libre";
$text['label-timeout']['he-il'] = "פסק זמן";
$text['label-timeout']['it-it'] = "Tempo scaduto";
$text['label-timeout']['ka-ge'] = "მოლოდინის დრო";
$text['label-timeout']['nl-nl'] = "Tijdsoverschrijding";
$text['label-timeout']['pl-pl'] = "Przekroczenie czasu oczekiwania (timeout)";
$text['label-timeout']['pt-br'] = "Tempo limite";
@@ -188,6 +211,7 @@ $text['label-timeout']['ro-ro'] = "Pauză";
$text['label-timeout']['ru-ru'] = "Тайм-аут";
$text['label-timeout']['sv-se'] = "Tidsgräns";
$text['label-timeout']['uk-ua'] = "Таймаут";
$text['label-timeout']['tr-tr'] = "Zaman aşımı";
$text['label-timeout']['zh-cn'] = "暂停";
$text['label-timeout']['ja-jp'] = "タイムアウト";
$text['label-timeout']['ko-kr'] = "타임아웃";
@@ -198,12 +222,14 @@ $text['label-phone']['ar-eg'] = "قائمة رقم الهاتف";
$text['label-phone']['de-at'] = "Liste der Telefonnummern";
$text['label-phone']['de-ch'] = "Liste der Telefonnummern";
$text['label-phone']['de-de'] = "Liste der Telefonnummern";
$text['label-phone']['el-gr'] = "Τηλεφωνικοί αριθμοί";
$text['label-phone']['es-cl'] = "Lista de Números de Telefono";
$text['label-phone']['es-mx'] = "Lista de Números de Telefono";
$text['label-phone']['fr-ca'] = "Liste de Numéros de téléphone";
$text['label-phone']['fr-fr'] = "Liste de Numéros de téléphone";
$text['label-phone']['he-il'] = "רשימת מספרי טלפון";
$text['label-phone']['it-it'] = "Lista Numeri di Telefono";
$text['label-phone']['ka-ge'] = "ტელეფონის ნომრები";
$text['label-phone']['nl-nl'] = "Telefoonnummer lijst";
$text['label-phone']['pl-pl'] = "Lista numerów telefonu";
$text['label-phone']['pt-br'] = "Lista de números de telefone";
@@ -212,6 +238,7 @@ $text['label-phone']['ro-ro'] = "Lista numerelor de telefon";
$text['label-phone']['ru-ru'] = "Список телефонних номеров";
$text['label-phone']['sv-se'] = "Lista Med Telefonnummer";
$text['label-phone']['uk-ua'] = "Список телефонних номерів";
$text['label-phone']['tr-tr'] = "Telefon numaraları";
$text['label-phone']['zh-cn'] = "电话号码";
$text['label-phone']['ja-jp'] = "電話番号";
$text['label-phone']['ko-kr'] = "전화 번호";
@@ -222,12 +249,14 @@ $text['label-message']['ar-eg'] = "رسالة";
$text['label-message']['de-at'] = "Nachricht";
$text['label-message']['de-ch'] = "Nachricht";
$text['label-message']['de-de'] = "Nachricht";
$text['label-message']['el-gr'] = "Μήνυμα";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['es-mx'] = "Mensaje";
$text['label-message']['fr-ca'] = "Message";
$text['label-message']['fr-fr'] = "Message";
$text['label-message']['he-il'] = "הודעה";
$text['label-message']['it-it'] = "Messaggio";
$text['label-message']['ka-ge'] = "შეტყობინება";
$text['label-message']['nl-nl'] = "Boodschappen";
$text['label-message']['pl-pl'] = "Wiadomość";
$text['label-message']['pt-br'] = "Mensagem";
@@ -236,6 +265,7 @@ $text['label-message']['ro-ro'] = "Mesaj";
$text['label-message']['ru-ru'] = "Сообщение";
$text['label-message']['sv-se'] = "Meddelande";
$text['label-message']['uk-ua'] = "Повідомлення";
$text['label-message']['tr-tr'] = "İleti";
$text['label-message']['zh-cn'] = "信息";
$text['label-message']['ja-jp'] = "メッセージ";
$text['label-message']['ko-kr'] = "메시지";
@@ -246,12 +276,14 @@ $text['label-has-been']['ar-eg'] = "قد بدأ";
$text['label-has-been']['de-at'] = "wurde gestartet";
$text['label-has-been']['de-ch'] = "wurde gestartet";
$text['label-has-been']['de-de'] = "wurde gestartet";
$text['label-has-been']['el-gr'] = "έχει ξεκινήσει";
$text['label-has-been']['es-cl'] = "iniciada";
$text['label-has-been']['es-mx'] = "iniciada";
$text['label-has-been']['fr-ca'] = "a commencé";
$text['label-has-been']['fr-fr'] = "a commencé";
$text['label-has-been']['he-il'] = "התחיל";
$text['label-has-been']['it-it'] = "è iniziato.";
$text['label-has-been']['ka-ge'] = "გაეშვა";
$text['label-has-been']['nl-nl'] = "is gestart";
$text['label-has-been']['pl-pl'] = "rozpoczęto";
$text['label-has-been']['pt-br'] = "foi inicializada";
@@ -260,6 +292,7 @@ $text['label-has-been']['ro-ro'] = "a fost început";
$text['label-has-been']['ru-ru'] = "было запущено";
$text['label-has-been']['sv-se'] = "har startat";
$text['label-has-been']['uk-ua'] = "було запущено";
$text['label-has-been']['tr-tr'] = "başladı";
$text['label-has-been']['zh-cn'] = "已经开始";
$text['label-has-been']['ja-jp'] = "開始されました";
$text['label-has-been']['ko-kr'] = "시작되었습니다";
@@ -270,12 +303,14 @@ $text['label-destination']['ar-eg'] = "رقم الوجهة";
$text['label-destination']['de-at'] = "Zielnummer";
$text['label-destination']['de-ch'] = "Zielnummer";
$text['label-destination']['de-de'] = "Zielnummer";
$text['label-destination']['el-gr'] = "Αριθμός προορισμού";
$text['label-destination']['es-cl'] = "Número de Destino";
$text['label-destination']['es-mx'] = "Número de Destino";
$text['label-destination']['fr-ca'] = "Numéro de Destination";
$text['label-destination']['fr-fr'] = "Numéro de Destination";
$text['label-destination']['he-il'] = "מספר יעד";
$text['label-destination']['it-it'] = "Numero di Destinazione";
$text['label-destination']['ka-ge'] = "დანიშნულების ნომერი";
$text['label-destination']['nl-nl'] = "Bestemmingnummer";
$text['label-destination']['pl-pl'] = "Destynacja";
$text['label-destination']['pt-br'] = "Número de destino";
@@ -284,6 +319,7 @@ $text['label-destination']['ro-ro'] = "Numarul destinatiei";
$text['label-destination']['ru-ru'] = "Номер назначения";
$text['label-destination']['sv-se'] = "Destinationsnummer";
$text['label-destination']['uk-ua'] = "Номер";
$text['label-destination']['tr-tr'] = "Hedef numara";
$text['label-destination']['zh-cn'] = "目的地号码";
$text['label-destination']['ja-jp'] = "宛先番号";
$text['label-destination']['ko-kr'] = "목적지 번호";
@@ -294,12 +330,14 @@ $text['label-concurrent-limit']['ar-eg'] = "الحد المتزامن";
$text['label-concurrent-limit']['de-at'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['de-ch'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['de-de'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['el-gr'] = "Ταυτόχρονο όριο";
$text['label-concurrent-limit']['es-cl'] = "Límite de concurrencia";
$text['label-concurrent-limit']['es-mx'] = "Límite de concurrencia";
$text['label-concurrent-limit']['fr-ca'] = "Appels Simultanés";
$text['label-concurrent-limit']['fr-fr'] = "Appels Simultanés";
$text['label-concurrent-limit']['he-il'] = "מגבלה במקביל";
$text['label-concurrent-limit']['it-it'] = "Limite Chiamate Contemporanee";
$text['label-concurrent-limit']['ka-ge'] = "ერთდროული ზარების შეზღუდვა";
$text['label-concurrent-limit']['nl-nl'] = "Maximaal aantal gelijktijdige oproepen";
$text['label-concurrent-limit']['pl-pl'] = "Limit jednoczesnych rozmów";
$text['label-concurrent-limit']['pt-br'] = "Limite de chamadas simultâneas";
@@ -308,6 +346,7 @@ $text['label-concurrent-limit']['ro-ro'] = "Limită concomitentă";
$text['label-concurrent-limit']['ru-ru'] = "Ограничение параллельных вызовов";
$text['label-concurrent-limit']['sv-se'] = "Samtidig Gräns";
$text['label-concurrent-limit']['uk-ua'] = "Обмеження одночасної кількості";
$text['label-concurrent-limit']['tr-tr'] = "Eşzamanlı Limit";
$text['label-concurrent-limit']['zh-cn'] = "并发限制";
$text['label-concurrent-limit']['ja-jp'] = "同時制限";
$text['label-concurrent-limit']['ko-kr'] = "동시 제한";
@@ -318,20 +357,23 @@ $text['label-callerid-number']['ar-eg'] = "رقم هوية المتصل";
$text['label-callerid-number']['de-at'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['de-de'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['el-gr'] = "Αριθμός αναγνώρισης καλούντος";
$text['label-callerid-number']['es-cl'] = "Número de Origen";
$text['label-callerid-number']['es-mx'] = "Número de Origen";
$text['label-callerid-number']['fr-ca'] = "Numéro d'appelant";
$text['label-callerid-number']['fr-fr'] = "Numéro d'appelant";
$text['label-callerid-number']['he-il'] = "מספר זיהוי מתקשר";
$text['label-callerid-number']['it-it'] = "Numero Chiamante";
$text['label-callerid-number']['ka-ge'] = "გამომძახებელი აბონენტის ნომერი";
$text['label-callerid-number']['nl-nl'] = "CID Nummer";
$text['label-callerid-number']['pl-pl'] = "Prezentacja numeru dzwoniącego";
$text['label-callerid-number']['pt-br'] = "Número do discador";
$text['label-callerid-number']['pt-pt'] = "Número do Chamador";
$text['label-callerid-number']['ro-ro'] = "Numărul de identificare a apelantului";
$text['label-callerid-number']['ru-ru'] = "Caller ID Номер";
$text['label-callerid-number']['sv-se'] = "Caller ID Nummer";
$text['label-callerid-number']['uk-ua'] = "Caller ID Номер";
$text['label-callerid-number']['ru-ru'] = "Идентификатор вызывающего абонента";
$text['label-callerid-number']['sv-se'] = "Nummerpresentation";
$text['label-callerid-number']['uk-ua'] = "Ідентифікаційний номер абонента";
$text['label-callerid-number']['tr-tr'] = "Arayanın Kimlik Numarası";
$text['label-callerid-number']['zh-cn'] = "来电显示号码";
$text['label-callerid-number']['ja-jp'] = "発信者番号";
$text['label-callerid-number']['ko-kr'] = "발신자 ID 번호";
@@ -342,20 +384,23 @@ $text['label-caller-id-name']['ar-eg'] = "اسم معرف المتصل";
$text['label-caller-id-name']['de-at'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-ch'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-de'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['el-gr'] = "Όνομα αναγνώρισης κλήσης";
$text['label-caller-id-name']['es-cl'] = "Nombre de origen";
$text['label-caller-id-name']['es-mx'] = "Nombre de origen";
$text['label-caller-id-name']['fr-ca'] = "Nom d'appelant";
$text['label-caller-id-name']['fr-fr'] = "Nom d'appelant";
$text['label-caller-id-name']['he-il'] = "שם מתקשר";
$text['label-caller-id-name']['it-it'] = "Nome Chiamante";
$text['label-caller-id-name']['ka-ge'] = "გამომძახებელი აბონენტის სახელი";
$text['label-caller-id-name']['nl-nl'] = "CID Naam";
$text['label-caller-id-name']['pl-pl'] = "Prezentacja nazwy dzwoniącego";
$text['label-caller-id-name']['pt-br'] = "Nome do discador";
$text['label-caller-id-name']['pt-pt'] = "Nome do Chamador";
$text['label-caller-id-name']['ro-ro'] = "Nume ID apelant";
$text['label-caller-id-name']['ru-ru'] = "Caller ID Имя";
$text['label-caller-id-name']['sv-se'] = "Caller ID Namn";
$text['label-caller-id-name']['uk-ua'] = "Caller ID Ім’я";
$text['label-caller-id-name']['ru-ru'] = "Имя вызывающего абонента";
$text['label-caller-id-name']['sv-se'] = "Nummerpresentationsnamn";
$text['label-caller-id-name']['uk-ua'] = "Ім'я ідентифікатора абонента";
$text['label-caller-id-name']['tr-tr'] = "Arayanın Kimliği Adı";
$text['label-caller-id-name']['zh-cn'] = "来电显示名称";
$text['label-caller-id-name']['ja-jp'] = "発信者番号名";
$text['label-caller-id-name']['ko-kr'] = "발신자 ID 이름";
@@ -366,12 +411,14 @@ $text['label-call-broadcasts']['ar-eg'] = "البث دعوة";
$text['label-call-broadcasts']['de-at'] = "Rundrufe";
$text['label-call-broadcasts']['de-ch'] = "Rundrufe";
$text['label-call-broadcasts']['de-de'] = "Rundrufe";
$text['label-call-broadcasts']['el-gr'] = "Εκπομπές κλήσεων";
$text['label-call-broadcasts']['es-cl'] = "Llamadas Masivas (Broadcast)";
$text['label-call-broadcasts']['es-mx'] = "Llamadas Masivas (Broadcast)";
$text['label-call-broadcasts']['fr-ca'] = "Diffusions d'appels";
$text['label-call-broadcasts']['fr-fr'] = "Diffusions d'appels";
$text['label-call-broadcasts']['he-il'] = "שידורי שיחות";
$text['label-call-broadcasts']['it-it'] = "Chiamate Multiple";
$text['label-call-broadcasts']['ka-ge'] = "ზარის მაუწყებლობა";
$text['label-call-broadcasts']['nl-nl'] = "Omroepen";
$text['label-call-broadcasts']['pl-pl'] = "Rozsyłanie rozmów";
$text['label-call-broadcasts']['pt-br'] = "Chamadas broadcast";
@@ -380,6 +427,7 @@ $text['label-call-broadcasts']['ro-ro'] = "Apel Transmisii";
$text['label-call-broadcasts']['ru-ru'] = "Массовые вызовы";
$text['label-call-broadcasts']['sv-se'] = "Samtalsdistributioner";
$text['label-call-broadcasts']['uk-ua'] = "Трансляція дзвінків";
$text['label-call-broadcasts']['tr-tr'] = "Çağrı Yayınları";
$text['label-call-broadcasts']['zh-cn'] = "呼叫广播";
$text['label-call-broadcasts']['ja-jp'] = "コール ブロードキャスト";
$text['label-call-broadcasts']['ko-kr'] = "통화 방송";
@@ -390,12 +438,14 @@ $text['label-call-broadcast']['ar-eg'] = "بث دعوة";
$text['label-call-broadcast']['de-at'] = "Rundrufe";
$text['label-call-broadcast']['de-ch'] = "Rundrufe";
$text['label-call-broadcast']['de-de'] = "Rundrufe";
$text['label-call-broadcast']['el-gr'] = "Μετάδοση κλήσης";
$text['label-call-broadcast']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['label-call-broadcast']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['label-call-broadcast']['fr-ca'] = "Diffusion d'appels";
$text['label-call-broadcast']['fr-fr'] = "Diffusion d'appels";
$text['label-call-broadcast']['he-il'] = "שידור שיחה";
$text['label-call-broadcast']['it-it'] = "Chiamata Multipla";
$text['label-call-broadcast']['ka-ge'] = "ზარის მაუწყებლობა";
$text['label-call-broadcast']['nl-nl'] = "Omroep";
$text['label-call-broadcast']['pl-pl'] = "Rozsyłanie rozmów";
$text['label-call-broadcast']['pt-br'] = "Chamada de broadcast";
@@ -404,6 +454,7 @@ $text['label-call-broadcast']['ro-ro'] = "Apel Broadcast";
$text['label-call-broadcast']['ru-ru'] = "Массовый вызов";
$text['label-call-broadcast']['sv-se'] = "Samtalsdistribution";
$text['label-call-broadcast']['uk-ua'] = "Трансляція дзвінка";
$text['label-call-broadcast']['tr-tr'] = "Çağrı Yayını";
$text['label-call-broadcast']['zh-cn'] = "呼叫广播";
$text['label-call-broadcast']['ja-jp'] = "コール ブロードキャスト";
$text['label-call-broadcast']['ko-kr'] = "통화 브로드캐스트";
@@ -414,12 +465,14 @@ $text['label-avmd']['ar-eg'] = "كشف البريد الصوتي";
$text['label-avmd']['de-at'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['de-ch'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['de-de'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['el-gr'] = "Ανίχνευση τηλεφωνητή";
$text['label-avmd']['es-cl'] = "Detección de correo de voz";
$text['label-avmd']['es-mx'] = "Detección de correo de voz";
$text['label-avmd']['fr-ca'] = "Détection de la messagerie vocale";
$text['label-avmd']['fr-fr'] = "Détection de la messagerie vocale";
$text['label-avmd']['he-il'] = "זיהוי תא קולי";
$text['label-avmd']['it-it'] = "Rilevamento Segreteria";
$text['label-avmd']['ka-ge'] = "ხმოვანი ფოსტის დადგენა";
$text['label-avmd']['nl-nl'] = "Antwoordapparaat ontdekt";
$text['label-avmd']['pl-pl'] = "Wykrywanie poczty głosowej";
$text['label-avmd']['pt-br'] = "Detecção Voicemail";
@@ -428,6 +481,7 @@ $text['label-avmd']['ro-ro'] = "Detectarea mesageriei vocale";
$text['label-avmd']['ru-ru'] = "Определение голосовой почты";
$text['label-avmd']['sv-se'] = "Känn Av Röstbrevlåda";
$text['label-avmd']['uk-ua'] = "Виявлення голосової пошти";
$text['label-avmd']['tr-tr'] = "Sesli Posta Algılama";
$text['label-avmd']['zh-cn'] = "语音邮件检测";
$text['label-avmd']['ja-jp'] = "ボイスメールの検出";
$text['label-avmd']['ko-kr'] = "음성 메일 감지";
@@ -438,12 +492,14 @@ $text['label-broadcast_toll_allow']['ar-eg'] = "عدد مسموح به";
$text['label-broadcast_toll_allow']['de-at'] = "Berechtigung";
$text['label-broadcast_toll_allow']['de-ch'] = "Berechtigung";
$text['label-broadcast_toll_allow']['de-de'] = "Berechtigung";
$text['label-broadcast_toll_allow']['el-gr'] = "Επιτρέπονται διόδια";
$text['label-broadcast_toll_allow']['es-cl'] = "Permitir Tarifas Especiales";
$text['label-broadcast_toll_allow']['es-mx'] = "Permitir Tarifas Especiales";
$text['label-broadcast_toll_allow']['fr-ca'] = "Permis de péage";
$text['label-broadcast_toll_allow']['fr-fr'] = "Permis de péage";
$text['label-broadcast_toll_allow']['he-il'] = "אגרה אפשר";
$text['label-broadcast_toll_allow']['it-it'] = "Destinazioni Abilitate";
$text['label-broadcast_toll_allow']['ka-ge'] = "ფასიანი ზარის დაშვება";
$text['label-broadcast_toll_allow']['nl-nl'] = "betaald gesprek toestaan";
$text['label-broadcast_toll_allow']['pl-pl'] = "Zezwalaj na drogie/szczególwe połaczenia";
$text['label-broadcast_toll_allow']['pt-br'] = "Categoria de Ligação";
@@ -452,6 +508,7 @@ $text['label-broadcast_toll_allow']['ro-ro'] = "Toll Allow";
$text['label-broadcast_toll_allow']['ru-ru'] = "Разрешить Платное Соединение";
$text['label-broadcast_toll_allow']['sv-se'] = "Tull Tillåt";
$text['label-broadcast_toll_allow']['uk-ua'] = "Платний Дозволити";
$text['label-broadcast_toll_allow']['tr-tr'] = "Geçiş Ücreti İzin Ver";
$text['label-broadcast_toll_allow']['zh-cn'] = "通行费允许";
$text['label-broadcast_toll_allow']['ja-jp'] = "トールアロー";
$text['label-broadcast_toll_allow']['ko-kr'] = "통행료 허용";
@@ -462,12 +519,14 @@ $text['label-accountcode']['ar-eg'] = "رمز الحساب";
$text['label-accountcode']['de-at'] = "Kontoschlüssel";
$text['label-accountcode']['de-ch'] = "Kontoschlüssel";
$text['label-accountcode']['de-de'] = "Kontoschlüssel";
$text['label-accountcode']['el-gr'] = "Κωδικός λογαριασμού";
$text['label-accountcode']['es-cl'] = "Código de cuenta";
$text['label-accountcode']['es-mx'] = "Código de cuenta";
$text['label-accountcode']['fr-ca'] = "Code de compte";
$text['label-accountcode']['fr-fr'] = "Code de compte";
$text['label-accountcode']['he-il'] = "קוד חשבון";
$text['label-accountcode']['it-it'] = "Codice dell'account";
$text['label-accountcode']['ka-ge'] = "ანგარიშის კოდი";
$text['label-accountcode']['nl-nl'] = "Rekeningcode";
$text['label-accountcode']['pl-pl'] = "Numer konta billingowego";
$text['label-accountcode']['pt-br'] = "Código da conta";
@@ -476,6 +535,7 @@ $text['label-accountcode']['ro-ro'] = "Codul contului";
$text['label-accountcode']['ru-ru'] = "Код Авторизации";
$text['label-accountcode']['sv-se'] = "Accountcode";
$text['label-accountcode']['uk-ua'] = "Код облікового запису";
$text['label-accountcode']['tr-tr'] = "Hesap kodu";
$text['label-accountcode']['zh-cn'] = "帐户代码";
$text['label-accountcode']['ja-jp'] = "口座番号";
$text['label-accountcode']['ko-kr'] = "계정 코드";
@@ -486,12 +546,14 @@ $text['label-sample_file']['ar-eg'] = "نموذج لملف CSV";
$text['label-sample_file']['de-at'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['de-ch'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['de-de'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['el-gr'] = "Δείγμα αρχείου CSV";
$text['label-sample_file']['es-cl'] = "Archivo CSV de muestra";
$text['label-sample_file']['es-mx'] = "Archivo CSV de muestra";
$text['label-sample_file']['fr-ca'] = "Exemple de fichier CSV";
$text['label-sample_file']['fr-fr'] = "Exemple de fichier CSV";
$text['label-sample_file']['he-il'] = "קובץ CSV לדוגמה";
$text['label-sample_file']['it-it'] = "Esempio di file CSV";
$text['label-sample_file']['ka-ge'] = "მაგალითი CSV ფაილი";
$text['label-sample_file']['nl-nl'] = "Voorbeeld CSV File";
$text['label-sample_file']['pl-pl'] = "Przykładowy plik CSV";
$text['label-sample_file']['pt-br'] = "Exemplo de arquivo CSV";
@@ -500,79 +562,37 @@ $text['label-sample_file']['ro-ro'] = "Exemplu de fișier CSV";
$text['label-sample_file']['ru-ru'] = "Образец CSV-файла";
$text['label-sample_file']['sv-se'] = "Exempel på CSV-fil";
$text['label-sample_file']['uk-ua'] = "Зразок файлу CSV";
$text['label-sample_file']['tr-tr'] = "Örnek CSV Dosyası";
$text['label-sample_file']['zh-cn'] = "示例 CSV 文件";
$text['label-sample_file']['ja-jp'] = "サンプル CSV ファイル";
$text['label-sample_file']['ko-kr'] = "샘플 CSV 파일";
$text['label-list_example']['en-us'] = "Number|First,Last
Number|First,Last
...";
$text['label-list_example']['en-gb'] = "Number|First,Last
Number|First,Last
...";
$text['label-list_example']['ar-eg'] = "رقم|أولاً,آخر
رقم|أولاً,آخر
...";
$text['label-list_example']['de-at'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['de-ch'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['de-de'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['es-cl'] = "Número|Primero,Último
Número|Primero,Último
...";
$text['label-list_example']['es-mx'] = "Número|Primero,Último
Número|Primero,Último
...";
$text['label-list_example']['fr-ca'] = "Nombre|First,D'abord
Nombre|D'abord,Last
...";
$text['label-list_example']['fr-fr'] = "Nombre|First,D'abord
Nombre|D'abord,Last
...";
$text['label-list_example']['he-il'] = "מספר|ראשון,אחרון
מספר|ראשון,אחרון
...";
$text['label-list_example']['it-it'] = "Numero|Primo,Scorso
Numero|Primo,Scorso
...";
$text['label-list_example']['nl-nl'] = "Nummer|Eerste,Laatste
Nummer|Eerste,Laatste
...";
$text['label-list_example']['pl-pl'] = "Numer|Pierwsze,Ostatnie
Numer|Pierwsze,Ostatnie
...";
$text['label-list_example']['pt-br'] = "Número|Primeiro,Durar
Número|Primeiro,Durar
...";
$text['label-list_example']['pt-pt'] = "Número|Primeiro,Durar
Número|Primeiro,Durar
...";
$text['label-list_example']['ro-ro'] = "Număr|Primul,Ultimul
Număr|Primul,Ultimul
...";
$text['label-list_example']['ru-ru'] = "Число|Первый,Последний
Число|Первый,Последний
...";
$text['label-list_example']['sv-se'] = "siffra|Först,Sista
siffra|Först,Sista
...";
$text['label-list_example']['uk-ua'] = "Номер|Перший,Останній
Номер|Перший,Останній
...";
$text['label-list_example']['zh-cn'] = "编号|第一个,最后一个
编号|第一个,最后一个
...";
$text['label-list_example']['ja-jp'] = "番号|最初、最後
番号|最初、最後
...";
$text['label-list_example']['ko-kr'] = "번호|이름, 성
번호|이름, 성
...";
$text['label-list_example']['en-us'] = "Number|First,LastNumber|First,Last...";
$text['label-list_example']['en-gb'] = "Number|First,LastNumber|First,Last...";
$text['label-list_example']['ar-eg'] = "الرقم|الأول،الرقم الأخير|الأول،الأخير...";
$text['label-list_example']['de-at'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['de-ch'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['de-de'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['el-gr'] = "Αριθμός|Πρώτος,ΤελευταίοςΑριθμός|Πρώτος,Τελευταίος...";
$text['label-list_example']['es-cl'] = "Número|Primero,ÚltimoNúmero|Primero,Último...";
$text['label-list_example']['es-mx'] = "Número|Primero,ÚltimoNúmero|Primero,Último...";
$text['label-list_example']['fr-ca'] = "Nombre|First,D'abordNombre|D'abord,Last...";
$text['label-list_example']['fr-fr'] = "Nombre|First,D'abordNombre|D'abord,Last...";
$text['label-list_example']['he-il'] = "מספר|ראשון, מספר אחרון|ראשון, אחרון...";
$text['label-list_example']['it-it'] = "Numero|Primo,ScorsoNumero|Primo,Scorso...";
$text['label-list_example']['ka-ge'] = "რიცხვი|პირველი, ბოლო ნომერი|პირველი, ბოლო...";
$text['label-list_example']['nl-nl'] = "Nummer|Eerste,LaatsteNummer|Eerste,Laatste...";
$text['label-list_example']['pl-pl'] = "Numer|Pierwsze,OstatnieNumer|Pierwsze,Ostatnie...";
$text['label-list_example']['pt-br'] = "Número|Primeiro,DurarNúmero|Primeiro,Durar...";
$text['label-list_example']['pt-pt'] = "Número|Primeiro,DurarNúmero|Primeiro,Durar...";
$text['label-list_example']['ro-ro'] = "Număr|Primul,UltimulNumăr|Primul,Ultimul...";
$text['label-list_example']['ru-ru'] = "Число|Первый,ПоследнийЧисло|Первый,Последний...";
$text['label-list_example']['sv-se'] = "siffra|Först,Sistasiffra|Först,Sista...";
$text['label-list_example']['uk-ua'] = "Номер|Перший,ОстаннійНомер|Перший,Останній...";
$text['label-list_example']['tr-tr'] = "Numara|İlk,Son Numara|İlk,Son...";
$text['label-list_example']['zh-cn'] = "编号|第一个,最后一个编号|第一个,最后一个...";
$text['label-list_example']['ja-jp'] = "番号|最初、最後番号|最初、最後...";
$text['label-list_example']['ko-kr'] = "번호|이름, 성번호|이름, 성...";
$text['description-start_time']['en-us'] = "The date and time to begin sending calls.";
$text['description-start_time']['en-gb'] = "The date and time to begin sending calls.";
@@ -580,12 +600,14 @@ $text['description-start_time']['ar-eg'] = "تاريخ ووقت بدء إرسا
$text['description-start_time']['de-at'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['de-ch'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['de-de'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['el-gr'] = "Η ημερομηνία και η ώρα έναρξης της αποστολής κλήσεων.";
$text['description-start_time']['es-cl'] = "La fecha y hora para comenzar a enviar llamadas.";
$text['description-start_time']['es-mx'] = "La fecha y hora para comenzar a enviar llamadas.";
$text['description-start_time']['fr-ca'] = "La date et l'heure auxquelles commencer à envoyer des appels.";
$text['description-start_time']['fr-fr'] = "La date et l'heure auxquelles commencer à envoyer des appels.";
$text['description-start_time']['he-il'] = "התאריך והשעה להתחיל לשלוח שיחות.";
$text['description-start_time']['it-it'] = "La data e l'ora di inizio dell'invio delle chiamate.";
$text['description-start_time']['ka-ge'] = "ზარების გაგზავნის დაწყების დრო და თარიღი";
$text['description-start_time']['nl-nl'] = "De datum en tijd om te beginnen met het verzenden van oproepen.";
$text['description-start_time']['pl-pl'] = "Data i godzina, aby rozpocząć wysyłanie połączeń.";
$text['description-start_time']['pt-br'] = "A data e hora para começar a enviar chamadas.";
@@ -594,6 +616,7 @@ $text['description-start_time']['ro-ro'] = "Data și ora pentru a începe trimit
$text['description-start_time']['ru-ru'] = "Дата и время начала отправки звонков.";
$text['description-start_time']['sv-se'] = "Datum och tid för att börja skicka samtal.";
$text['description-start_time']['uk-ua'] = "Дата й час початку надсилання викликів.";
$text['description-start_time']['tr-tr'] = "Çağrı göndermeye başlama tarihi ve saati.";
$text['description-start_time']['zh-cn'] = "开始发送呼叫的日期和时间。";
$text['description-start_time']['ja-jp'] = "通話の送信を開始する日時。";
$text['description-start_time']['ko-kr'] = "통화 전송을 시작할 날짜 및 시간입니다.";
@@ -604,12 +627,14 @@ $text['description-accountcode']['ar-eg'] = "تستخدم في أغلب الأح
$text['description-accountcode']['de-at'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['de-ch'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['de-de'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['el-gr'] = "Χρησιμοποιείται συχνότερα για συστήματα τιμολόγησης.";
$text['description-accountcode']['es-cl'] = "Se utiliza con mayor frecuencia para los sistemas de facturación.";
$text['description-accountcode']['es-mx'] = "Se utiliza con mayor frecuencia para los sistemas de facturación.";
$text['description-accountcode']['fr-ca'] = "Utilisé le plus souvent pour les systèmes de facturation.";
$text['description-accountcode']['fr-fr'] = "Utilisé le plus souvent pour les systèmes de facturation.";
$text['description-accountcode']['he-il'] = "משמש לרוב עבור מערכות חיוב.";
$text['description-accountcode']['it-it'] = "Utilizzato più spesso per i sistemi di fatturazione.";
$text['description-accountcode']['ka-ge'] = "ყველაზე ხშირად გამოიყენება ბილინგის სისტემებისთვის.";
$text['description-accountcode']['nl-nl'] = "Meestal gebruikt voor factureringssystemen.";
$text['description-accountcode']['pl-pl'] = "Kod konta używany najczęściej w systemach bilingowych.";
$text['description-accountcode']['pt-br'] = "Usado com mais frequência para sistemas de faturamento.";
@@ -618,6 +643,7 @@ $text['description-accountcode']['ro-ro'] = "Folosit cel mai des pentru sistemel
$text['description-accountcode']['ru-ru'] = "Чаще всего используется для биллинговых систем.";
$text['description-accountcode']['sv-se'] = "Används oftast för faktureringssystem.";
$text['description-accountcode']['uk-ua'] = "Використовується найчастіше для білінгових систем.";
$text['description-accountcode']['tr-tr'] = "En sık faturalandırma sistemlerinde kullanılır.";
$text['description-accountcode']['zh-cn'] = "最常用于计费系统。";
$text['description-accountcode']['ja-jp'] = "課金システムで最もよく使用されます。";
$text['description-accountcode']['ko-kr'] = "청구 시스템에 가장 자주 사용됩니다.";
@@ -628,12 +654,14 @@ $text['description-timeout']['ar-eg'] = "حدد المهلة المطلقة با
$text['description-timeout']['de-at'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['de-ch'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['de-de'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['el-gr'] = "Καθορίστε το απόλυτο χρονικό όριο σε δευτερόλεπτα.";
$text['description-timeout']['es-cl'] = "Especifique el tiempo de espera absoluto en segundos.";
$text['description-timeout']['es-mx'] = "Especifique el tiempo de espera absoluto en segundos.";
$text['description-timeout']['fr-ca'] = "Spécifiez le délai d'expiration absolu en secondes";
$text['description-timeout']['fr-fr'] = "Spécifiez le délai d'expiration absolu en secondes";
$text['description-timeout']['he-il'] = "ציין את פסק הזמן המוחלט בשניות.";
$text['description-timeout']['it-it'] = "Specificare il timeout assoluto in secondi.";
$text['description-timeout']['ka-ge'] = "მიუთითეთ აბსოლუტური მოლოდინის დრო წამებში.";
$text['description-timeout']['nl-nl'] = "Geef de absolute tijdsoverschrijding in seconden aan.";
$text['description-timeout']['pl-pl'] = "Ilość milisekund oczekiwania po odtworzeniu nagrania lub potwierdzenia makro.";
$text['description-timeout']['pt-br'] = "Limite de tempo (em milissegundos) de espera após reproduzir gravações ou confirmar a macro.";
@@ -642,6 +670,7 @@ $text['description-timeout']['ro-ro'] = "Specificați timpul de expirare absolut
$text['description-timeout']['ru-ru'] = "Время ожидания (в миллисекундах) после воспроизведения записи или подтверждения макроса.";
$text['description-timeout']['sv-se'] = "Specificera den absoluta timeout:en i sekunder.";
$text['description-timeout']['uk-ua'] = "Вкажіть абсолютний час очікування в секундах.";
$text['description-timeout']['tr-tr'] = "Mutlak zaman aşımını saniye cinsinden belirtin.";
$text['description-timeout']['zh-cn'] = "以秒为单位指定绝对超时。";
$text['description-timeout']['ja-jp'] = "絶対タイムアウトを秒単位で指定します。";
$text['description-timeout']['ko-kr'] = "절대 제한 시간을 초 단위로 지정합니다.";
@@ -652,12 +681,14 @@ $text['description-phone']['ar-eg'] = "حدد ملف TXT / CSV للتحميل ،
$text['description-phone']['de-at'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['de-ch'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['de-de'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['el-gr'] = "Επιλέξτε ένα αρχείο TXT/CSV για μεταφόρτωση ή εισαγάγετε Αριθμούς τηλεφώνου έναν ανά γραμμή στη μορφή που φαίνεται παραπάνω.";
$text['description-phone']['es-cl'] = "Opcional, definir una lista de números de telefono, uno por línea en el siguiente formato: 123-123-1234|Apellido,Nombre";
$text['description-phone']['es-mx'] = "Opcional, definir una lista de números de telefono, uno por línea en el siguiente formato: 123-123-1234|Apellido,Nombre";
$text['description-phone']['fr-ca'] = "Optionnel, Insérer une liste de numéros de téléphone, un par ligne, dans le format suivant ; 0123456789|Nom,Prénom";
$text['description-phone']['fr-fr'] = "Optionnel, Insérer une liste de numéros de téléphone, un par ligne, dans le format suivant ; 0123456789|Nom,Prénom";
$text['description-phone']['he-il'] = "בחר קובץ TXT/CSV להעלאה, או הזן מספרי טלפון אחד בכל שורה בפורמט המוצג למעלה.";
$text['description-phone']['it-it'] = "Opzionale, inserire una lista di numeri di telefono, uno per riga, nel formato 123-123-1234|Cognome,Nome";
$text['description-phone']['ka-ge'] = "აირჩიეთ TXT/CSV ფაილი ასატვირთად, ან შეიყვანეთ ტელეფონის ნომრები ერთი ერთ ხაზზე, ზემოთ ნაჩვენებ ფორმატში.";
$text['description-phone']['nl-nl'] = "Selecteer een TXT/CSV file om te 'uploaden' of voer Telefoonnummers in een per regel in het bovenstaande formaat.";
$text['description-phone']['pl-pl'] = "Opcjonalne - ułóż listę numerów (jeden pod drugim) w formacie: 123-123-1234|Nazwisko,Imię";
$text['description-phone']['pt-br'] = "Opcional, definir uma lista de números de telefone, um por linha, no seguinte formato: 210000000|Apelido,Primeiro Nome.";
@@ -666,6 +697,7 @@ $text['description-phone']['ro-ro'] = "Selectați un fișier TXT/CSV pentru înc
$text['description-phone']['ru-ru'] = "Дополнительно, задайте список телефонных номеров, по одному в ряд, в формате: 123-123-1234|Фамилия,Имя";
$text['description-phone']['sv-se'] = "Frivillig, fyll i en lista med nummer (ett per rad) i följande format: 123-123-1234|Efternamn,Förnamn";
$text['description-phone']['uk-ua'] = "Додатково, задайте список телефонних номерів по одному на рядок в наступному форматі: 123-123-1234|Прізвище,ім'я";
$text['description-phone']['tr-tr'] = "Yüklemek için bir TXT/CSV dosyası seçin veya Telefon Numaralarını yukarıda gösterilen formatta her satıra bir tane girin.";
$text['description-phone']['zh-cn'] = "选择要上传的 TXT/CSV 文件,或按上述格式每行输入一个电话号码。";
$text['description-phone']['ja-jp'] = "アップロードする TXT/CSV ファイルを選択するか、上記の形式で電話番号を 1 行に 1 つずつ入力します。";
$text['description-phone']['ko-kr'] = "업로드할 TXT/CSV 파일을 선택하거나 위에 표시된 형식으로 한 줄에 하나씩 전화번호를 입력합니다.";
@@ -676,12 +708,14 @@ $text['description-name']['ar-eg'] = "أدخل الاسم هنا.";
$text['description-name']['de-at'] = "Geben Sie den Namen an.";
$text['description-name']['de-ch'] = "Geben Sie den Namen an.";
$text['description-name']['de-de'] = "Geben Sie den Namen an.";
$text['description-name']['el-gr'] = "Εισαγάγετε το όνομα εδώ.";
$text['description-name']['es-cl'] = "Ingrese el nombre aquí.";
$text['description-name']['es-mx'] = "Ingrese el nombre aquí.";
$text['description-name']['fr-ca'] = "Insérer le Nom.";
$text['description-name']['fr-fr'] = "Insérer le Nom.";
$text['description-name']['he-il'] = "הכנס את השם";
$text['description-name']['it-it'] = "Inserire il nome qui.";
$text['description-name']['ka-ge'] = "შეიყვანეთ სახელი.";
$text['description-name']['nl-nl'] = "Voer de naam hier in.";
$text['description-name']['pl-pl'] = "Wprowadź nazwę";
$text['description-name']['pt-br'] = "Insira o nome do broadcast.";
@@ -690,6 +724,7 @@ $text['description-name']['ro-ro'] = "Introduceți numele aici.";
$text['description-name']['ru-ru'] = "Введите имя";
$text['description-name']['sv-se'] = "Skriv in namnet här.";
$text['description-name']['uk-ua'] = "Введіть назву";
$text['description-name']['tr-tr'] = "Adı buraya girin.";
$text['description-name']['zh-cn'] = "在此处输入名称。";
$text['description-name']['ja-jp'] = "ここに名前を入力します。";
$text['description-name']['ko-kr'] = "여기에 이름을 입력합니다.";
@@ -700,12 +735,14 @@ $text['description-info']['ar-eg'] = "أدخل الوصف هنا.";
$text['description-info']['de-at'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['de-ch'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['de-de'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['el-gr'] = "Εισαγάγετε την περιγραφή εδώ.";
$text['description-info']['es-cl'] = "Ingrese descripción aquí.";
$text['description-info']['es-mx'] = "Ingrese descripción aquí.";
$text['description-info']['fr-ca'] = "Entrez la description ici";
$text['description-info']['fr-fr'] = "Entrez la description ici";
$text['description-info']['he-il'] = "הכנס תאור";
$text['description-info']['it-it'] = "Inserire la descrizione qui.";
$text['description-info']['ka-ge'] = "შეიყვანეთ აღწერა.";
$text['description-info']['nl-nl'] = "Voer de omschrijving hier in.";
$text['description-info']['pl-pl'] = "Wprowadź opis";
$text['description-info']['pt-br'] = "Inisra uma descrição";
@@ -714,6 +751,7 @@ $text['description-info']['ro-ro'] = "Introdu descrierea aici.";
$text['description-info']['ru-ru'] = "Введите описание";
$text['description-info']['sv-se'] = "Ange beskrivning här.";
$text['description-info']['uk-ua'] = "Введіть опис";
$text['description-info']['tr-tr'] = "Açıklamayı buraya girin.";
$text['description-info']['zh-cn'] = "在此处输入说明。";
$text['description-info']['ja-jp'] = "ここに説明を入力します。";
$text['description-info']['ko-kr'] = "여기에 설명을 입력합니다.";
@@ -724,12 +762,14 @@ $text['description-destination']['ar-eg'] = "أرسل المكالمة إلى ر
$text['description-destination']['de-at'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['de-ch'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['de-de'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['el-gr'] = "Στείλτε την κλήση σε μια επέκταση, ένα μενού IVR, αίθουσα συνεδριάσεων ή οποιονδήποτε άλλο αριθμό.";
$text['description-destination']['es-cl'] = "Enviar la llamada a extension a IVR, conferencias o cualquier otro número.";
$text['description-destination']['es-mx'] = "Enviar la llamada a extension a IVR, conferencias o cualquier otro número.";
$text['description-destination']['fr-ca'] = "Emettre l'appel vers un SVI, salle de conférence, ou tout autre numéro.";
$text['description-destination']['fr-fr'] = "Emettre l'appel vers un SVI, salle de conférence, ou tout autre numéro.";
$text['description-destination']['he-il'] = "שלח את השיחה לשלוחה, תפריט IVR, חדר ישיבות או כל מספר אחר.";
$text['description-destination']['it-it'] = "Connetti la chiamata con un interno, un IVR, un'audioconferenza, o qualsiasi altro servizio.";
$text['description-destination']['ka-ge'] = "ზარის გაგზავნა შიდა ნომერზე, IVR მენიუში, კონფერენციაში ან სხვა ნებისმიერ ნომერზე.";
$text['description-destination']['nl-nl'] = "Send de oproep naar een toestel, IVR Menu, conferentie of een willekeurig ander nummer.";
$text['description-destination']['pl-pl'] = "Wybierz numer docelowy.";
$text['description-destination']['pt-br'] = "Enviar a chamada para a extensão de um menu de IVR, Sala de Conferência ou qualquer outro número. ";
@@ -738,6 +778,7 @@ $text['description-destination']['ro-ro'] = "Trimiteți apelul către o extensie
$text['description-destination']['ru-ru'] = "Отправить вызов на внутренний номер, IVR, конференцию или любой другой номер.";
$text['description-destination']['sv-se'] = "Skicka samtalet till en anknytning, IVR Meny, Konferens Rum eller något annat nummer.";
$text['description-destination']['uk-ua'] = "Відправити дзвінок на розширення, меню IVR, конференцію, або будь-який інший номер.";
$text['description-destination']['tr-tr'] = "Aramayı bir dahili numaraya, IVR Menüsüne, Konferans Odasına veya başka bir numaraya gönderin.";
$text['description-destination']['zh-cn'] = "将呼叫发送到分机、IVR 菜单、会议室或任何其他号码。";
$text['description-destination']['ja-jp'] = "通話を内線番号、IVR メニュー、会議室、またはその他の番号に送信します。";
$text['description-destination']['ko-kr'] = "내선 번호, IVR 메뉴, 회의실 또는 기타 번호로 통화를 보냅니다.";
@@ -748,12 +789,14 @@ $text['description-concurrent-limit']['ar-eg'] = "حدد العدد التقري
$text['description-concurrent-limit']['de-at'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['de-ch'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['de-de'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['el-gr'] = "Περιορίστε τον κατά προσέγγιση αριθμό ταυτόχρονων κλήσεων. Αφήστε το κενό χωρίς όριο.";
$text['description-concurrent-limit']['es-cl'] = "Limitar el número de llamadas simultaneas. Deje en blanco para no establecer un límite.";
$text['description-concurrent-limit']['es-mx'] = "Limitar el número de llamadas simultaneas. Deje en blanco para no establecer un límite.";
$text['description-concurrent-limit']['fr-ca'] = "Limite le nombre d'appels concurrents. Laisser vide pour illimité.";
$text['description-concurrent-limit']['fr-fr'] = "Limite le nombre d'appels concurrents. Laisser vide pour illimité.";
$text['description-concurrent-limit']['he-il'] = "הגבל את המספר המשוער של שיחות במקביל. השאר את זה ריק ללא הגבלה.";
$text['description-concurrent-limit']['it-it'] = "Limita approssimativamente il numero di chiamate contemporanee. Lasciare vuoto per nessun limite.";
$text['description-concurrent-limit']['ka-ge'] = "შეზღუდეთ პარალელური ზარების დაახლოებითი რაოდენობა. დატოვეთ ცარიელი, თუ არ გნებავთ შეზღუდვა.";
$text['description-concurrent-limit']['nl-nl'] = "Beperk de geschatter aantallen gelijktijdige oproepen. Laat leeg om geen limiet op te geven.";
$text['description-concurrent-limit']['pl-pl'] = "Ogranicz liczbę równoczesnych połączeń. Aby nie było limitu zostaw to pole puste.";
$text['description-concurrent-limit']['pt-br'] = "Limitar o número de chamadas simultâneas. Deixe este campo em branco para não ter limite.";
@@ -762,6 +805,7 @@ $text['description-concurrent-limit']['ro-ro'] = "Limitați numărul aproximativ
$text['description-concurrent-limit']['ru-ru'] = "Ограничение примерного количества параллельных вызовов. Оставьте пустым для его отсутствия.";
$text['description-concurrent-limit']['sv-se'] = "Begränsa ungefärliga antalet samtidiga samtal. Lämna det här tomt för ingen gräns.";
$text['description-concurrent-limit']['uk-ua'] = "Обмеження приблизної кількості одночасних дзвінків. Якщо пусто - без обмежень";
$text['description-concurrent-limit']['tr-tr'] = "Eşzamanlı çağrıların yaklaşık sayısını sınırlayın. Bunu sınırsız olarak boş bırakın.";
$text['description-concurrent-limit']['zh-cn'] = "限制并发调用的大致数量。 将此留空表示没有限制。";
$text['description-concurrent-limit']['ja-jp'] = "同時呼び出しのおおよその数を制限します。 無制限にするには、これを空のままにします。";
$text['description-concurrent-limit']['ko-kr'] = "대략적인 동시 호출 수를 제한합니다. 제한 없이 비워 둡니다.";
@@ -769,15 +813,17 @@ $text['description-concurrent-limit']['ko-kr'] = "대략적인 동시 호출 수
$text['description-caller-id-number']['en-us'] = "Applicable if the provider that allow the Caller ID number to be sent. default: 0000000000";
$text['description-caller-id-number']['en-gb'] = "Applicable if the provider that allow the Caller ID number to be sent. default: 0000000000";
$text['description-caller-id-number']['ar-eg'] = "ينطبق إذا كان الموفر الذي يسمح بإرسال رقم معرف المتصل. الافتراضي: 0000000000";
$text['description-caller-id-number']['de-at'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-de'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-at'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['de-ch'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['de-de'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['el-gr'] = "Ισχύει εάν ο πάροχος που επιτρέπει την αποστολή του αριθμού αναγνώρισης καλούντος. προεπιλογή: 0000000000";
$text['description-caller-id-number']['es-cl'] = "Aplicable si el proveedor que permite enviar el número de Caller ID. predeterminado: 0000000000";
$text['description-caller-id-number']['es-mx'] = "Aplicable si el proveedor que permite enviar el número de Caller ID. predeterminado: 0000000000";
$text['description-caller-id-number']['fr-ca'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du numéro d'appelant. Par défaut: 0000000000";
$text['description-caller-id-number']['fr-fr'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du numéro d'appelant. Par défaut: 0000000000";
$text['description-caller-id-number']['he-il'] = "תקף אם הספק מאפשר שליחת מספר זיהוי המתקשר. ברירת מחדל: 0000000000";
$text['description-caller-id-number']['it-it'] = "Si usa se il provider permette la modifica del numero chiamante. Default: 0000000000";
$text['description-caller-id-number']['ka-ge'] = "გამოიყენება, თუ პროვაიდერს CallerID(number)-ის გაგზავნის მხარდაჭერა გააჩნია. ნაგულისხმევი: 0000000000";
$text['description-caller-id-number']['nl-nl'] = "Geef het afzender telefoonnummer hier in. standaard: 0000000000";
$text['description-caller-id-number']['pl-pl'] = "Zastosowane w przypadku jeżeli operator zezwala na prezentację numeru. Standardowo prezentacja jest w formacie: 0000000000";
$text['description-caller-id-number']['pt-br'] = "Aplicável se o provedor permitir o envio do número do originador das chamadas. Omissão: 0000000000.";
@@ -786,6 +832,7 @@ $text['description-caller-id-number']['ro-ro'] = "Aplicabil dacă furnizorul car
$text['description-caller-id-number']['ru-ru'] = "Используется, если провайдер поддерживает передачу CallerID(number). По умолчанию: 0000000000";
$text['description-caller-id-number']['sv-se'] = "Gäller om leverantör tillåter att Caller ID nummer skickas. Standard: 0000000000";
$text['description-caller-id-number']['uk-ua'] = "Стосується, якщо постачальник, дозволяє надсилати номер абонента (Caller ID номер). За замовчуванням: 0000000000";
$text['description-caller-id-number']['tr-tr'] = "Arayan Kimliği numarasının gönderilmesine izin veren sağlayıcı varsa geçerlidir. varsayılan: 0000000000";
$text['description-caller-id-number']['zh-cn'] = "适用于允许发送来电显示号码的提供商。 默认值:0000000000";
$text['description-caller-id-number']['ja-jp'] = "発信者 ID 番号の送信を許可するプロバイダーの場合に適用されます。 デフォルト: 0000000000";
$text['description-caller-id-number']['ko-kr'] = "발신자 ID 번호 전송을 허용하는 공급자인 경우에 해당합니다. 기본값: 0000000000";
@@ -796,12 +843,14 @@ $text['description-caller-id-name']['ar-eg'] = "قابل للتطبيق إذا
$text['description-caller-id-name']['de-at'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['de-ch'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['de-de'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['el-gr'] = "Ισχύει εάν ο πάροχος επιτρέπει τον ορισμό του ονόματος αναγνώρισης καλούντος. προεπιλογή: ανώνυμος";
$text['description-caller-id-name']['es-cl'] = "Applicable si el proveedor permite enviar el número de origen. Por defecto: 0000000000";
$text['description-caller-id-name']['es-mx'] = "Applicable si el proveedor permite enviar el número de origen. Por defecto: 0000000000";
$text['description-caller-id-name']['fr-ca'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du nom d'appelant. Par défaut: anonymous";
$text['description-caller-id-name']['fr-fr'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du nom d'appelant. Par défaut: anonymous";
$text['description-caller-id-name']['he-il'] = "ישים אם הספק מאפשר להגדיר את שם המתקשר. ברירת מחדל: אנונימי";
$text['description-caller-id-name']['it-it'] = "Si usa se il provider permette la modifica del nome chiamante. Default: anonymous";
$text['description-caller-id-name']['ka-ge'] = "გამოიყენება, თუ პროვაიდერს აქვს callerID(name)-ის გადაცემის მხარდაჭერა. ნაგულისხმევი: anonymous";
$text['description-caller-id-name']['nl-nl'] = "Geef de afzenderkenmerk (naam) hier, voorzover de provider die ondersteund. Standaard: anoniem ";
$text['description-caller-id-name']['pl-pl'] = "Zastosowane w przypadku jeżeli operator zezwala na prezentację nazwy. Standardowo prezentacja jest w formacie: 0000000000";
$text['description-caller-id-name']['pt-br'] = "Aplicável se o provedor de telefônia liberar o nome de quem está discando. Por padrão: anonymous (anônimo).";
@@ -810,6 +859,7 @@ $text['description-caller-id-name']['ro-ro'] = "Se aplică dacă furnizorul perm
$text['description-caller-id-name']['ru-ru'] = "Используется, если провайдер поддерживает передачу CallerID(name). По умолчанию: anonymous";
$text['description-caller-id-name']['sv-se'] = "Gäller om leverantör tillåter att Caller ID namn skickas. Standard: anonymous";
$text['description-caller-id-name']['uk-ua'] = "Стосується, якщо постачальник, дозволяє надсилати ім’я абонента (Caller ID Ім’я). За замовчуванням: anonymous";
$text['description-caller-id-name']['tr-tr'] = "Sağlayıcının Arayanın Kimliği Adının ayarlanmasına izin vermesi durumunda geçerlidir. varsayılan: anonim";
$text['description-caller-id-name']['zh-cn'] = "如果提供商允许设置来电显示名称,则适用。 默认值:匿名";
$text['description-caller-id-name']['ja-jp'] = "プロバイダーが発信者 ID 名の設定を許可している場合に適用されます。 デフォルト: 匿名";
$text['description-caller-id-name']['ko-kr'] = "공급자가 발신자 ID 이름 설정을 허용하는 경우에 적용됩니다. 기본값: 익명";
@@ -820,20 +870,23 @@ $text['description-avmd']['ar-eg'] = "حدد ما إذا كنت تريد تمك
$text['description-avmd']['de-at'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['de-ch'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['de-de'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιήσετε ή θα απενεργοποιήσετε τον εντοπισμό συστημάτων μηνυμάτων τηλεφωνητή και τηλεφωνητή.";
$text['description-avmd']['es-cl'] = "Seleccione si desea activar o desactivar la detección de sistemas de contestador automático de mensajes de correo de voz y.";
$text['description-avmd']['es-mx'] = "Seleccione si desea activar o desactivar la detección de sistemas de contestador automático de mensajes de correo de voz y.";
$text['description-avmd']['fr-ca'] = "Indiquez si vous souhaitez activer ou désactiver la détection de la messagerie vocale et les systèmes de machines de répondeur.";
$text['description-avmd']['fr-fr'] = "Indiquez si vous souhaitez activer ou désactiver la détection de la messagerie vocale et les systèmes de machines de répondeur.";
$text['description-avmd']['he-il'] = "בחר אם להפעיל או להשבית את הזיהוי של מערכות הודעות דואר קוליות ומשיבון.";
$text['description-avmd']['it-it'] = "Selezionare se si vuole abilitare o disabilitare il rilevamento delle segreterie telefoniche e dei messaggi registrati.";
$text['description-avmd']['ka-ge'] = "აირჩიეთ, ჩაირთვება თუ გამოირთვება ხმოვანი ფოსტის და ავტომოპასუხის დადგენა.";
$text['description-avmd']['nl-nl'] = "Selecteer of een antwoordapparaat detectie aan of uitgezet moet worden.";
$text['description-avmd']['pl-pl'] = "Wybierz, czy chcesz włączyć lub wyłączyć wykrywanie wiadomości poczty głosowej lub innych systemów automatycznego odbierania rozmów.";
$text['description-avmd']['pt-br'] = "Selecione se deseja ativar ou desativar a detecção de mensagens de correio de voz e sistemas de secretária eletrônica.";
$text['description-avmd']['pt-pt'] = "Selecione se deseja ativar ou desativar a detecção de mensagens de correio de voz e sistemas de secretária eletrônica.";
$text['description-avmd']['ro-ro'] = "Selectați dacă activați sau dezactivați detectarea sistemelor de mesagerie vocală și robot telefonic.";
$text['description-avmd']['ru-ru'] = "Выберите, стоит ли использовать систему определения голосовой почты или автоответчика.";
$text['description-avmd']['sv-se'] = "Välj om deteketering av röstbrevlåda skall användas.";
$text['description-avmd']['sv-se'] = "Välj om du vill aktivera eller inaktivera upptäckten av röstmeddelande- och telefonsvararsystem.";
$text['description-avmd']['uk-ua'] = "Виберіть, чи слід включити або відключити виявлення повідомлень голосової пошти і систему автовідповідача.";
$text['description-avmd']['tr-tr'] = "Sesli posta mesajlarının ve telesekreter sistemlerinin algılanmasının etkinleştirilip etkinleştirilmeyeceğini veya devre dışı bırakılacağını seçin.";
$text['description-avmd']['zh-cn'] = "选择是启用还是禁用语音邮件消息和应答机系统的检测。";
$text['description-avmd']['ja-jp'] = "ボイスメール メッセージと留守番電話システムの検出を有効にするか無効にするかを選択します。";
$text['description-avmd']['ko-kr'] = "음성 메일 메시징 및 자동 응답기 시스템 감지를 활성화할지 비활성화할지 선택합니다.";
@@ -844,20 +897,23 @@ $text['description-broadcast_toll_allow']['ar-eg'] = "أدخل قيمة رسوم
$text['description-broadcast_toll_allow']['de-at'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['de-ch'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['de-de'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['el-gr'] = "Εισαγάγετε την τιμή επιτρεπόμενης διοδίων εδώ. (Παραδείγματα: εγχώριο, διεθνές, τοπικό)";
$text['description-broadcast_toll_allow']['es-cl'] = "Ingrese el tipo de tarifa especial a permitir (ej: doméstica, internacional, local).";
$text['description-broadcast_toll_allow']['es-mx'] = "Ingrese el tipo de tarifa especial a permitir (ej: doméstica, internacional, local).";
$text['description-broadcast_toll_allow']['fr-ca'] = "Insérer les droits d'accès. (Exemples: domestic,international,local)";
$text['description-broadcast_toll_allow']['fr-fr'] = "Insérer les droits d'accès. (Exemples: domestic,international,local)";
$text['description-broadcast_toll_allow']['he-il'] = "הזן כאן את ערך האגרה. (דוגמאות: מקומי, בינלאומי, מקומי)";
$text['description-broadcast_toll_allow']['it-it'] = "Inserire qui le destinazioni permesse. (Es. fisso, mobile, internazionale, premium)";
$text['description-broadcast_toll_allow']['ka-ge'] = "შეიყვანეთ ხელმისაწვდომი მნიშვნელობა (მაგალითად: domestic, international, local)";
$text['description-broadcast_toll_allow']['nl-nl'] = "Voer de betaalbaar waarde hier in (Voobeeld: domestic, international, local)";
$text['description-broadcast_toll_allow']['pl-pl'] = "Wpisz wartość drogich/szczegółowych połączeń.";
$text['description-broadcast_toll_allow']['pt-br'] = "Insira as categorias de ligação aqui. (Exemplos: Internacional, Local, DDD, DDI, Celular)";
$text['description-broadcast_toll_allow']['pt-pt'] = "Introduza as permissões aqui. (Exemplos: internacional, local)";
$text['description-broadcast_toll_allow']['ro-ro'] = "Introduceți valoarea taxei permise aici. (Exemple: intern, internațional, local)";
$text['description-broadcast_toll_allow']['ru-ru'] = "Введите здесь доступные значения. (Примеры: domestic,international,local)";
$text['description-broadcast_toll_allow']['sv-se'] = "Ange 'toll allow' värde här. (Exempel: domestic,international,local)";
$text['description-broadcast_toll_allow']['sv-se'] = "Ange 'Tull Tillåt' värde här. (Exempel: domestic,international,local)";
$text['description-broadcast_toll_allow']['uk-ua'] = "Введіть дозволене значення мита тут. (Приклади: внутрішні, міжнародні, місцеві)";
$text['description-broadcast_toll_allow']['tr-tr'] = "İzin verilen geçiş ücreti değerini buraya girin. (Örnekler: yurtiçi, yurtdışı, yerel)";
$text['description-broadcast_toll_allow']['zh-cn'] = "在此处输入通行费允许值。 (示例:国内、国际、本地)";
$text['description-broadcast_toll_allow']['ja-jp'] = "通行料の値をここに入力します。 (例:国内、海外、ローカル)";
$text['description-broadcast_toll_allow']['ko-kr'] = "여기에 통행료 허용 값을 입력합니다. (예: 국내, 국제, 지역)";
@@ -868,12 +924,14 @@ $text['confirm-update']['ar-eg'] = "Оновлення завершено";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-de'] = "Aktualisierung durchgeführt";
$text['confirm-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['es-mx'] = "Actualización Completa";
$text['confirm-update']['fr-ca'] = "Mise à jour terminée";
$text['confirm-update']['fr-fr'] = "Mise à jour terminée";
$text['confirm-update']['he-il'] = "עידכון הושלם";
$text['confirm-update']['it-it'] = "Aggiornamento Completato.";
$text['confirm-update']['ka-ge'] = "განახლება დასრულდა";
$text['confirm-update']['nl-nl'] = "Bijwerken gereed";
$text['confirm-update']['pl-pl'] = "Zaktualizowano pomyślnie";
$text['confirm-update']['pt-br'] = "Atualização Efetuada";
@@ -882,6 +940,7 @@ $text['confirm-update']['ro-ro'] = "Actualizare finalizată";
$text['confirm-update']['ru-ru'] = "Обновление завершено";
$text['confirm-update']['sv-se'] = "Uppdatering Klar";
$text['confirm-update']['uk-ua'] = "Оновлення завершено";
$text['confirm-update']['tr-tr'] = "Güncelleme tamamlandı";
$text['confirm-update']['zh-cn'] = "更新完成";
$text['confirm-update']['ja-jp'] = "アップデート完了";
$text['confirm-update']['ko-kr'] = "업데이트 완료";
@@ -892,12 +951,14 @@ $text['confirm-name']['ar-eg'] = "يرجى تقديم: الاسم";
$text['confirm-name']['de-at'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['de-ch'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['de-de'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['el-gr'] = "Δώστε: Όνομα";
$text['confirm-name']['es-cl'] = "Por favor agregue: Nombre";
$text['confirm-name']['es-mx'] = "Por favor agregue: Nombre";
$text['confirm-name']['fr-ca'] = "Merci d'indiquer: Nom";
$text['confirm-name']['fr-fr'] = "Merci d'indiquer: Nom";
$text['confirm-name']['he-il'] = "נא לציין: שם";
$text['confirm-name']['it-it'] = "Prego fornire: Nome";
$text['confirm-name']['ka-ge'] = "შეიყვანეთ: სახელი";
$text['confirm-name']['nl-nl'] = "Geef aub: Naam";
$text['confirm-name']['pl-pl'] = "Wprowadź: Nazwę";
$text['confirm-name']['pt-br'] = "Por favor insira: Nome";
@@ -906,6 +967,7 @@ $text['confirm-name']['ro-ro'] = "Vă rugăm să furnizați: Nume";
$text['confirm-name']['ru-ru'] = "Пожалуйста, укажите: Имя";
$text['confirm-name']['sv-se'] = "Ange: Namn";
$text['confirm-name']['uk-ua'] = "Введіть назву";
$text['confirm-name']['tr-tr'] = "Lütfen belirtin: Ad";
$text['confirm-name']['zh-cn'] = "请提供:姓名";
$text['confirm-name']['ja-jp'] = "入力してください: 名前";
$text['confirm-name']['ko-kr'] = "제공하십시오: 이름";
@@ -916,12 +978,14 @@ $text['confirm-delete-info']['ar-eg'] = "هل تريد حقًا حذف هذا؟"
$text['confirm-delete-info']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['de-ch'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['de-de'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['el-gr'] = "Θέλετε πραγματικά να το διαγράψετε;";
$text['confirm-delete-info']['es-cl'] = "¿Desea realmente eliminar esto?";
$text['confirm-delete-info']['es-mx'] = "¿Desea realmente eliminar esto?";
$text['confirm-delete-info']['fr-ca'] = "Voulez-vous vraiment supprimer cela?";
$text['confirm-delete-info']['fr-fr'] = "Voulez-vous vraiment supprimer cela?";
$text['confirm-delete-info']['he-il'] = "האם אתה באמת רוצה למחוק את זה?";
$text['confirm-delete-info']['it-it'] = "Vuoi veramente cancellarlo?";
$text['confirm-delete-info']['ka-ge'] = "მართლა გნებავთ ამის წაშლა?";
$text['confirm-delete-info']['nl-nl'] = "Wilt u dit echt verwijderen?";
$text['confirm-delete-info']['pl-pl'] = "Czy na pewno chcesz to usunąć?";
$text['confirm-delete-info']['pt-br'] = "Deseja realmente remover isto?";
@@ -930,6 +994,7 @@ $text['confirm-delete-info']['ro-ro'] = "Chiar vrei să ștergi asta?";
$text['confirm-delete-info']['ru-ru'] = "Вы действительно хотите это удалить?";
$text['confirm-delete-info']['sv-se'] = "Vill du verkligen ta bort detta?";
$text['confirm-delete-info']['uk-ua'] = "Ви дійсно бажаєте це видалити?";
$text['confirm-delete-info']['tr-tr'] = "Bunu gerçekten silmek istiyor musun?";
$text['confirm-delete-info']['zh-cn'] = "您真的要删除它吗?";
$text['confirm-delete-info']['ja-jp'] = "本当にこれを削除しますか?";
$text['confirm-delete-info']['ko-kr'] = "정말 삭제하시겠습니까?";
@@ -940,12 +1005,14 @@ $text['confirm-add']['ar-eg'] = "أضف مكتمل";
$text['confirm-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-ch'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-de'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['el-gr'] = "Προσθήκη Ολοκληρωμένη";
$text['confirm-add']['es-cl'] = "Ingreso Completo";
$text['confirm-add']['es-mx'] = "Ingreso Completo";
$text['confirm-add']['fr-ca'] = "Ajouté";
$text['confirm-add']['fr-fr'] = "Ajouté";
$text['confirm-add']['he-il'] = "הוספה הושלמה";
$text['confirm-add']['it-it'] = "Inserimento Completato";
$text['confirm-add']['ka-ge'] = "დამატება დასრულდა";
$text['confirm-add']['nl-nl'] = "Toevoegen gereed";
$text['confirm-add']['pl-pl'] = "Dodano pomyślnie";
$text['confirm-add']['pt-br'] = "Criação efetuada";
@@ -954,6 +1021,7 @@ $text['confirm-add']['ro-ro'] = "Adăugați complet";
$text['confirm-add']['ru-ru'] = "Добавление завершено";
$text['confirm-add']['sv-se'] = "Tillagd";
$text['confirm-add']['uk-ua'] = "Додано";
$text['confirm-add']['tr-tr'] = "Ekleme Tamamlandı";
$text['confirm-add']['zh-cn'] = "添加完成";
$text['confirm-add']['ja-jp'] = "追加完了";
$text['confirm-add']['ko-kr'] = "추가완료";
@@ -964,12 +1032,14 @@ $text['file-error']['ar-eg'] = "عذرا ، نوع الملف غير مسموح
$text['file-error']['de-at'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['de-ch'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['de-de'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['el-gr'] = "Λυπούμαστε, ο τύπος αρχείου δεν επιτρέπεται";
$text['file-error']['es-cl'] = "Lo sentimos, no se permite el tipo de archivo";
$text['file-error']['es-mx'] = "Lo sentimos, no se permite el tipo de archivo";
$text['file-error']['fr-ca'] = "Désolé, le type de fichier n'est pas autorisé";
$text['file-error']['fr-fr'] = "Désolé, le type de fichier n'est pas autorisé";
$text['file-error']['he-il'] = "מצטערים, סוג הקובץ אינו מותר";
$text['file-error']['it-it'] = "Siamo spiacenti, tipo di file non consentito";
$text['file-error']['ka-ge'] = "უკაცრავად, ფაილის ტიპი დაშვებული არაა";
$text['file-error']['nl-nl'] = "Sorry, File type niet toegestaan";
$text['file-error']['pl-pl'] = "Niestety, Typ pliku jest niedozwolony";
$text['file-error']['pt-br'] = "Desculpe, tipo de arquivo não permitido";
@@ -978,6 +1048,7 @@ $text['file-error']['ro-ro'] = "Ne pare rău, tipul de fișier nu este permis";
$text['file-error']['ru-ru'] = "Обновление завершено";
$text['file-error']['sv-se'] = "Uppdatering Klar";
$text['file-error']['uk-ua'] = "Оновлення завершено";
$text['file-error']['tr-tr'] = "Üzgünüz, Dosya türüne izin verilmiyor";
$text['file-error']['zh-cn'] = "抱歉,不允许的文件类型";
$text['file-error']['ja-jp'] = "申し訳ありませんが、ファイル形式は許可されていません";
$text['file-error']['ko-kr'] = "죄송합니다. 파일 형식이 허용되지 않습니다.";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Campagne d'Appels";
$apps[$x]['menu'][$y]['title']['he-il'] = "שידור שיחה";
$apps[$x]['menu'][$y]['title']['it-it'] = "Chiamate Multiple";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ზარების მაუწყებლობა";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Omroep";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Rozsyłanie rozmów";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Chamada em broadcast";
+4 -2
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -159,7 +159,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_broadcast']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-call_broadcast']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_broadcast_add')) {
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_broadcast_edit.php']);
@@ -204,6 +204,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) {
@@ -273,6 +274,7 @@
unset($result);
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+5 -3
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -50,7 +50,7 @@
else {
$action = "add";
}
//set the defaults
$broadcast_name = '';
$broadcast_start_time = '';
@@ -350,6 +350,7 @@ if (!empty($_POST) && empty($_POST["persistformvar"])) {
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
}
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -567,6 +568,7 @@ if (!empty($_POST) && empty($_POST["persistformvar"])) {
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br><br>";
if ($action == "update") {
@@ -579,4 +581,4 @@ if (!empty($_POST) && empty($_POST["persistformvar"])) {
//include the footer
require_once "resources/footer.php";
?>
?>
+4 -5
View File
@@ -130,7 +130,7 @@
$broadcast_name = str_replace("'", "", $broadcast_name);
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$fp = event_socket::create();
//get information over event socket
if (!$fp) {
@@ -196,11 +196,11 @@
//if the event socket connection is lost then re-connect
if (!$fp) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$fp = event_socket::create();
}
//method 1
$response = trim(event_socket_request($fp, 'api '.$cmd));
$response = event_socket::command($cmd);
//method 2
//cmd_async($_SESSION['switch']['bin']['dir']."/fs_cli -x \"".$cmd."\";");
@@ -216,8 +216,7 @@
$count++;
}
}
fclose($fp);
echo "<div align='center'>\n";
echo "<table width='50%'>\n";
echo "<tr>\n";
+3 -3
View File
@@ -45,10 +45,10 @@ else {
if (is_uuid($uuid)) {
//show the result
if (count($_GET) > 0) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$fp = event_socket::create();
if ($fp !== false) {
$cmd = "sched_del ".$uuid;
$result = event_socket_request($fp, 'api '.$cmd);
$result = event_socket::api($cmd);
message::add(htmlentities($result));
}
}
+1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Affiche les appels actifs et les agents en queue sur le centre d'appel.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "აჩვენებს აქტიურ ზარებს და აყენებს ქოლცენტრის რიგში";
$apps[$x]['description']['nl-nl'] = "Laat actieve oproepen en agenten in het Call-Center wachtrij zien";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Mostra as chamadas ativas, e os agentes na fila do Call Center.";
+167 -11
View File
@@ -6,12 +6,14 @@ $text['title-call_center_queue_activity']['ar-eg'] = "نشاط قائمة انت
$text['title-call_center_queue_activity']['de-at'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['de-ch'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['de-de'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['el-gr'] = "Δραστηριότητα ουράς τηλεφωνικού κέντρου";
$text['title-call_center_queue_activity']['es-cl'] = "Actividad de Cola del Centro de Llamados";
$text['title-call_center_queue_activity']['es-mx'] = "Actividad de Cola del Centro de Llamados";
$text['title-call_center_queue_activity']['fr-ca'] = "Activité des files d'attente du centre d'appel";
$text['title-call_center_queue_activity']['fr-fr'] = "Activité des files d'attente du centre d'appel";
$text['title-call_center_queue_activity']['he-il'] = "פעילות בתור מוקד טלפוני";
$text['title-call_center_queue_activity']['it-it'] = "Attività Coda Call Center";
$text['title-call_center_queue_activity']['ka-ge'] = "ქოლცენტრის რიგის აქტივობა";
$text['title-call_center_queue_activity']['nl-nl'] = "Callcenter wachtrij activiteit";
$text['title-call_center_queue_activity']['pl-pl'] = "Aktywność kolejek w Call Center ";
$text['title-call_center_queue_activity']['pt-br'] = "Atividade das filas do Call Center";
@@ -20,6 +22,7 @@ $text['title-call_center_queue_activity']['ro-ro'] = "Activitate de coadă a cen
$text['title-call_center_queue_activity']['ru-ru'] = "Активность очередей Колл-центра";
$text['title-call_center_queue_activity']['sv-se'] = "Call Center Grupp Aktivitet";
$text['title-call_center_queue_activity']['uk-ua'] = "Діяльність черги кол-центру";
$text['title-call_center_queue_activity']['tr-tr'] = "Çağrı Merkezi Sıra Etkinliği";
$text['title-call_center_queue_activity']['zh-cn'] = "呼叫中心队列活动";
$text['title-call_center_queue_activity']['ja-jp'] = "コール センター キュー アクティビティ";
$text['title-call_center_queue_activity']['ko-kr'] = "콜센터 대기열 활동";
@@ -30,12 +33,14 @@ $text['title-active_call_center']['ar-eg'] = "مركز الاتصال النشط
$text['title-active_call_center']['de-at'] = "Aktive Callcenter";
$text['title-active_call_center']['de-ch'] = "Aktive Callcenter";
$text['title-active_call_center']['de-de'] = "Aktive Callcenter";
$text['title-active_call_center']['el-gr'] = "Ενεργό τηλεφωνικό κέντρο";
$text['title-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['title-active_call_center']['es-mx'] = "Centro de Llamados Activo";
$text['title-active_call_center']['fr-ca'] = "Centre d'appel Actif";
$text['title-active_call_center']['fr-fr'] = "Centre d'appel Actif";
$text['title-active_call_center']['he-il'] = "מוקד טלפוני פעיל";
$text['title-active_call_center']['it-it'] = "Call Center Attivo";
$text['title-active_call_center']['ka-ge'] = "აქტიური ქოლცენტრები";
$text['title-active_call_center']['nl-nl'] = "Aktieve Callcenter";
$text['title-active_call_center']['pl-pl'] = "Aktywność w Call Center ";
$text['title-active_call_center']['pt-br'] = "Atividade do Call Center";
@@ -44,6 +49,7 @@ $text['title-active_call_center']['ro-ro'] = "Centru de apeluri activ";
$text['title-active_call_center']['ru-ru'] = "Активные Колл-центры";
$text['title-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['title-active_call_center']['uk-ua'] = "Активний Call Center";
$text['title-active_call_center']['tr-tr'] = "Aktif Çağrı Merkezi";
$text['title-active_call_center']['zh-cn'] = "主动呼叫中心";
$text['title-active_call_center']['ja-jp'] = "アクティブ コール センター";
$text['title-active_call_center']['ko-kr'] = "활성 콜 센터";
@@ -54,12 +60,14 @@ $text['message-confirm']['ar-eg'] = "هل تريد حقا أن تفعل هذا؟
$text['message-confirm']['de-at'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['de-ch'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['de-de'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['el-gr'] = "Θέλετε πραγματικά να το κάνετε αυτό;";
$text['message-confirm']['es-cl'] = "¿Realmente desea ejecutar esta operación?";
$text['message-confirm']['es-mx'] = "¿Realmente desea ejecutar esta operación?";
$text['message-confirm']['fr-ca'] = "Voulez-vous vraiment faire cela?";
$text['message-confirm']['fr-fr'] = "Voulez-vous vraiment faire cela?";
$text['message-confirm']['he-il'] = "האם אתה באמת רוצה לעשות את זה?";
$text['message-confirm']['it-it'] = "Sei sicuro di volerlo fare?";
$text['message-confirm']['ka-ge'] = "მართლა გნებავთ, ეს ქნათ?";
$text['message-confirm']['nl-nl'] = "Weet u het zeker?";
$text['message-confirm']['pl-pl'] = "Czy napewno chcesz to zrobić?";
$text['message-confirm']['pt-br'] = "Deseja realmente fazer isto?";
@@ -68,6 +76,7 @@ $text['message-confirm']['ro-ro'] = "Chiar vrei să faci asta?";
$text['message-confirm']['ru-ru'] = "Вы действительно хотите это сдедать?";
$text['message-confirm']['sv-se'] = "Vill du verkligen göra det här?";
$text['message-confirm']['uk-ua'] = "Ви дійсно хочете це зробити?";
$text['message-confirm']['tr-tr'] = "Gerçekten bunu yapmak istiyor musun?";
$text['message-confirm']['zh-cn'] = "你真的要这样做吗?";
$text['message-confirm']['ja-jp'] = "本当にやりたいですか?";
$text['message-confirm']['ko-kr'] = "정말로 이것을 하시겠습니까?";
@@ -78,12 +87,14 @@ $text['label-waiting']['ar-eg'] = "انتظار";
$text['label-waiting']['de-at'] = "Warten";
$text['label-waiting']['de-ch'] = "Warten";
$text['label-waiting']['de-de'] = "Warten";
$text['label-waiting']['el-gr'] = "Αναμονή";
$text['label-waiting']['es-cl'] = "Esperando";
$text['label-waiting']['es-mx'] = "Esperando";
$text['label-waiting']['fr-ca'] = "d'attente";
$text['label-waiting']['fr-fr'] = "d'attente";
$text['label-waiting']['he-il'] = "הַמתָנָה";
$text['label-waiting']['it-it'] = "Attesa";
$text['label-waiting']['ka-ge'] = "მოლოდინი";
$text['label-waiting']['nl-nl'] = "Wachten";
$text['label-waiting']['pl-pl'] = "Oczekiwanie";
$text['label-waiting']['pt-br'] = "Esperar";
@@ -92,6 +103,7 @@ $text['label-waiting']['ro-ro'] = "Aşteptare";
$text['label-waiting']['ru-ru'] = "Ожидание";
$text['label-waiting']['sv-se'] = "Väntar";
$text['label-waiting']['uk-ua'] = "Очікування";
$text['label-waiting']['tr-tr'] = "Beklemek";
$text['label-waiting']['zh-cn'] = "等待";
$text['label-waiting']['ja-jp'] = "待っている";
$text['label-waiting']['ko-kr'] = "대기 중";
@@ -102,12 +114,14 @@ $text['label-trying']['ar-eg'] = "محاولة";
$text['label-trying']['de-at'] = "Versuchen";
$text['label-trying']['de-ch'] = "Versuchen";
$text['label-trying']['de-de'] = "Versuchen";
$text['label-trying']['el-gr'] = "Προσπαθεί";
$text['label-trying']['es-cl'] = "Intentando";
$text['label-trying']['es-mx'] = "Intentando";
$text['label-trying']['fr-ca'] = "d'essais";
$text['label-trying']['fr-fr'] = "d'essais";
$text['label-trying']['he-il'] = "מנסה";
$text['label-trying']['it-it'] = "In Corso";
$text['label-trying']['ka-ge'] = "მცდელობა";
$text['label-trying']['nl-nl'] = "Proberen";
$text['label-trying']['pl-pl'] = "Próba";
$text['label-trying']['pt-br'] = "Tentando";
@@ -116,6 +130,7 @@ $text['label-trying']['ro-ro'] = "Încercând";
$text['label-trying']['ru-ru'] = "Попытка";
$text['label-trying']['sv-se'] = "Försöker";
$text['label-trying']['uk-ua'] = "Намагається";
$text['label-trying']['tr-tr'] = "deniyorum";
$text['label-trying']['zh-cn'] = "试";
$text['label-trying']['ja-jp'] = "しようとしている";
$text['label-trying']['ko-kr'] = "견딜 수 없는";
@@ -126,12 +141,14 @@ $text['label-transfer']['ar-eg'] = "تحويل";
$text['label-transfer']['de-at'] = "Weiterleiten";
$text['label-transfer']['de-ch'] = "Weiterleiten";
$text['label-transfer']['de-de'] = "Weiterleiten";
$text['label-transfer']['el-gr'] = "ΜΕΤΑΦΟΡΑ";
$text['label-transfer']['es-cl'] = "Transferir";
$text['label-transfer']['es-mx'] = "Transferir";
$text['label-transfer']['fr-ca'] = "Transfert";
$text['label-transfer']['fr-fr'] = "Transfert";
$text['label-transfer']['he-il'] = "העבר";
$text['label-transfer']['it-it'] = "Traferimento";
$text['label-transfer']['ka-ge'] = "გადაყვანა";
$text['label-transfer']['nl-nl'] = "Overzetten";
$text['label-transfer']['pl-pl'] = "Transferowanie";
$text['label-transfer']['pt-br'] = "Transferir";
@@ -140,6 +157,7 @@ $text['label-transfer']['ro-ro'] = "Transfer";
$text['label-transfer']['ru-ru'] = "Перевод";
$text['label-transfer']['sv-se'] = "Överför";
$text['label-transfer']['uk-ua'] = "Трансфер";
$text['label-transfer']['tr-tr'] = "Aktar";
$text['label-transfer']['zh-cn'] = "转移";
$text['label-transfer']['ja-jp'] = "移行";
$text['label-transfer']['ko-kr'] = "옮기다";
@@ -150,12 +168,14 @@ $text['label-time_base_score']['ar-eg'] = "نقاط قاعدة الوقت";
$text['label-time_base_score']['de-at'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['de-ch'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['de-de'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['el-gr'] = "Χρονική Βάση Βάσης";
$text['label-time_base_score']['es-cl'] = "Puntuación basada en tiempo";
$text['label-time_base_score']['es-mx'] = "Puntuación basada en tiempo";
$text['label-time_base_score']['fr-ca'] = "Score basé sur le temps";
$text['label-time_base_score']['fr-fr'] = "Score basé sur le temps";
$text['label-time_base_score']['he-il'] = "ציון בסיס זמן";
$text['label-time_base_score']['it-it'] = "Punteggio su Base Tempo";
$text['label-time_base_score']['ka-ge'] = "შეფასება დროს მიხედვით";
$text['label-time_base_score']['nl-nl'] = "Tijdbasis score";
$text['label-time_base_score']['pl-pl'] = "Wynik oparty na czasie";
$text['label-time_base_score']['pt-br'] = "Pontuação baseada no tempo";
@@ -164,6 +184,7 @@ $text['label-time_base_score']['ro-ro'] = "Scorul de bază de timp";
$text['label-time_base_score']['ru-ru'] = "Оценка по времени";
$text['label-time_base_score']['sv-se'] = "Tidsbaserat Resultat";
$text['label-time_base_score']['uk-ua'] = "Оцінка бази часу";
$text['label-time_base_score']['tr-tr'] = "Zaman Tabanı Puanı";
$text['label-time_base_score']['zh-cn'] = "时基分数";
$text['label-time_base_score']['ja-jp'] = "タイムベーススコア";
$text['label-time_base_score']['ko-kr'] = "시간축 점수";
@@ -174,12 +195,14 @@ $text['label-time']['ar-eg'] = "التوقيت";
$text['label-time']['de-at'] = "Zeit";
$text['label-time']['de-ch'] = "Zeit";
$text['label-time']['de-de'] = "Zeit";
$text['label-time']['el-gr'] = "χρόνος";
$text['label-time']['es-cl'] = "Tiempo";
$text['label-time']['es-mx'] = "Tiempo";
$text['label-time']['fr-ca'] = "Temps";
$text['label-time']['fr-fr'] = "Temps";
$text['label-time']['he-il'] = "אזור זמן";
$text['label-time']['it-it'] = "Tempo";
$text['label-time']['ka-ge'] = "დრო";
$text['label-time']['nl-nl'] = "Tijd";
$text['label-time']['pl-pl'] = "Czas";
$text['label-time']['pt-br'] = "Fuso Horário";
@@ -188,6 +211,7 @@ $text['label-time']['ro-ro'] = "Timp";
$text['label-time']['ru-ru'] = "Время";
$text['label-time']['sv-se'] = "Tid";
$text['label-time']['uk-ua'] = "час";
$text['label-time']['tr-tr'] = "Zaman";
$text['label-time']['zh-cn'] = "时间";
$text['label-time']['ja-jp'] = "時間";
$text['label-time']['ko-kr'] = "시간";
@@ -198,20 +222,23 @@ $text['label-tier_state']['ar-eg'] = "دولة الطبقة";
$text['label-tier_state']['de-at'] = "Ebenen-Status";
$text['label-tier_state']['de-ch'] = "Ebenen-Status";
$text['label-tier_state']['de-de'] = "Ebenen-Status";
$text['label-tier_state']['el-gr'] = "Κράτος βαθμίδας";
$text['label-tier_state']['es-cl'] = "Estado de Nivel";
$text['label-tier_state']['es-mx'] = "Estado de Nivel";
$text['label-tier_state']['fr-ca'] = "Etat du Niveau";
$text['label-tier_state']['fr-fr'] = "Etat du Niveau";
$text['label-tier_state']['he-il'] = "מדינת שכבה";
$text['label-tier_state']['it-it'] = "Stato Tier";
$text['label-tier_state']['ka-ge'] = "დონის მდგომარეობა";
$text['label-tier_state']['nl-nl'] = "Vergelijkingen";
$text['label-tier_state']['pl-pl'] = "Status poziomu";
$text['label-tier_state']['pt-br'] = "Nivel de estado";
$text['label-tier_state']['pt-pt'] = "Estado do Nível";
$text['label-tier_state']['ro-ro'] = "Starea nivelului";
$text['label-tier_state']['ru-ru'] = "Состояние компетенции";
$text['label-tier_state']['sv-se'] = "Kunskap Status";
$text['label-tier_state']['sv-se'] = "Nivå Status";
$text['label-tier_state']['uk-ua'] = "Стан рівня";
$text['label-tier_state']['tr-tr'] = "Seviye Durumu";
$text['label-tier_state']['zh-cn'] = "等级状态";
$text['label-tier_state']['ja-jp'] = "層の状態";
$text['label-tier_state']['ko-kr'] = "계층 상태";
@@ -222,20 +249,23 @@ $text['label-tier_rules_apply']['ar-eg'] = "تطبق قواعد الفئة";
$text['label-tier_rules_apply']['de-at'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['de-ch'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['de-de'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['el-gr'] = "Ισχύουν κανόνες βαθμίδας";
$text['label-tier_rules_apply']['es-cl'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['es-mx'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['fr-ca'] = "Appliquer les règles du Niveau";
$text['label-tier_rules_apply']['fr-fr'] = "Appliquer les règles du Niveau";
$text['label-tier_rules_apply']['he-il'] = "חלים כללי שכבה";
$text['label-tier_rules_apply']['it-it'] = "Applica Regole del Tier";
$text['label-tier_rules_apply']['ka-ge'] = "დონის წესების გადატარება";
$text['label-tier_rules_apply']['nl-nl'] = "Vergelijkingsregels zijn van toepassing";
$text['label-tier_rules_apply']['pl-pl'] = "Zastosuj zasadę poziomów";
$text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nível";
$text['label-tier_rules_apply']['pt-pt'] = "Aplicar as Regras do Nível";
$text['label-tier_rules_apply']['ro-ro'] = "Se aplică regulile nivelului";
$text['label-tier_rules_apply']['ru-ru'] = "Применять правила компетенции";
$text['label-tier_rules_apply']['sv-se'] = "Kunskaps Regler Gäller";
$text['label-tier_rules_apply']['sv-se'] = "Tillämpa nivåregler";
$text['label-tier_rules_apply']['uk-ua'] = "Застосовуються правила рівня";
$text['label-tier_rules_apply']['tr-tr'] = "Kademe Kuralları Geçerlidir";
$text['label-tier_rules_apply']['zh-cn'] = "等级规则适用";
$text['label-tier_rules_apply']['ja-jp'] = "ティアルール適用";
$text['label-tier_rules_apply']['ko-kr'] = "계층 규칙 적용";
@@ -246,20 +276,23 @@ $text['label-tier_rule_wait_second']['ar-eg'] = "قاعدة الطبقة انت
$text['label-tier_rule_wait_second']['de-at'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['de-ch'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['de-de'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['el-gr'] = "Κανόνας βαθμίδας Περιμένετε δεύτερο";
$text['label-tier_rule_wait_second']['es-cl'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['es-mx'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['fr-ca'] = "Attente en secondes de la règle du Niveau";
$text['label-tier_rule_wait_second']['fr-fr'] = "Attente en secondes de la règle du Niveau";
$text['label-tier_rule_wait_second']['he-il'] = "כלל שכבה המתן שניה";
$text['label-tier_rule_wait_second']['it-it'] = "Regola Tier Secondi di Attesa";
$text['label-tier_rule_wait_second']['ka-ge'] = "დონის წესი: მოლოდინის წამები";
$text['label-tier_rule_wait_second']['nl-nl'] = "Vergelijkingsregel wachttijd";
$text['label-tier_rule_wait_second']['pl-pl'] = "Poziomowa zasada czekania";
$text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nível de espera";
$text['label-tier_rule_wait_second']['pt-pt'] = "Regra de nível segundo espera";
$text['label-tier_rule_wait_second']['ro-ro'] = "Regula de nivel Așteptați al doilea";
$text['label-tier_rule_wait_second']['ru-ru'] = "Правило компетенции: Ждать секунд";
$text['label-tier_rule_wait_second']['sv-se'] = "Kunskaps Regel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['sv-se'] = "Nivåregel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['uk-ua'] = "Правило рівня Зачекайте секунду";
$text['label-tier_rule_wait_second']['tr-tr'] = "Kademe Kuralı İkinciyi Bekle";
$text['label-tier_rule_wait_second']['zh-cn'] = "等级规则等待第二";
$text['label-tier_rule_wait_second']['ja-jp'] = "層ルール待機秒";
$text['label-tier_rule_wait_second']['ko-kr'] = "계층 규칙 대기 초";
@@ -270,20 +303,23 @@ $text['label-tier_rule_wait_multiply_level']['ar-eg'] = "الطبقة القاع
$text['label-tier_rule_wait_multiply_level']['de-at'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['de-ch'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['de-de'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['el-gr'] = "Επίπεδο πολλαπλασιασμού αναμονής κανόνα κανόνα";
$text['label-tier_rule_wait_multiply_level']['es-cl'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['es-mx'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['fr-ca'] = "Règle d'attente multipliée par Niveau";
$text['label-tier_rule_wait_multiply_level']['fr-fr'] = "Règle d'attente multipliée par Niveau";
$text['label-tier_rule_wait_multiply_level']['he-il'] = "כלל שכבה המתן רמת הכפלה";
$text['label-tier_rule_wait_multiply_level']['it-it'] = "Regola Tier Moltiplica Attesa per Livello";
$text['label-tier_rule_wait_multiply_level']['ka-ge'] = "დონის წესი: მოლოდინის მამრავლი";
$text['label-tier_rule_wait_multiply_level']['nl-nl'] = "Vergelijkingsregels wachtvermenigvuldiger niveau";
$text['label-tier_rule_wait_multiply_level']['pl-pl'] = "Poziomowa zasada przemnożenia";
$text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['pt-pt'] = "Regra de nível de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['ro-ro'] = "Nivelul Regulă Așteptați Nivelul înmulțirii";
$text['label-tier_rule_wait_multiply_level']['ru-ru'] = "Правило компетенции: Множитель ожидания";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Kunskaps Regel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Nivåregel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['uk-ua'] = "Рівень Правило Очікування Множення Рівень";
$text['label-tier_rule_wait_multiply_level']['tr-tr'] = "Katman Kuralı Bekleme Çarpma Düzeyi";
$text['label-tier_rule_wait_multiply_level']['zh-cn'] = "Tier Rule Wait 乘法级别";
$text['label-tier_rule_wait_multiply_level']['ja-jp'] = "層ルール待機乗算レベル";
$text['label-tier_rule_wait_multiply_level']['ko-kr'] = "계층 규칙 대기 배수 수준";
@@ -294,20 +330,23 @@ $text['label-tier_rule_no_agent_no_wait']['ar-eg'] = "قاعدة الطبقة ل
$text['label-tier_rule_no_agent_no_wait']['de-at'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['de-ch'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['de-de'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['el-gr'] = "Κανόνας επιπέδου Όχι Πράκτορας Όχι Αναμονή";
$text['label-tier_rule_no_agent_no_wait']['es-cl'] = "Regla de Nivel sin Agente sin Espera";
$text['label-tier_rule_no_agent_no_wait']['es-mx'] = "Regla de Nivel sin Agente sin Espera";
$text['label-tier_rule_no_agent_no_wait']['fr-ca'] = "Règle du Niveau Pas d'agent, pas d'attente";
$text['label-tier_rule_no_agent_no_wait']['fr-fr'] = "Règle du Niveau Pas d'agent, pas d'attente";
$text['label-tier_rule_no_agent_no_wait']['he-il'] = "כלל שכבה ללא סוכן ללא המתנה";
$text['label-tier_rule_no_agent_no_wait']['it-it'] = "Regola Tier No Agenti No Attesa";
$text['label-tier_rule_no_agent_no_wait']['ka-ge'] = "დონის წესი: არაა ოპერატორი, არაა მოლოდინი";
$text['label-tier_rule_no_agent_no_wait']['nl-nl'] = "Vergelijkingsregels Geen agent, niet wachten";
$text['label-tier_rule_no_agent_no_wait']['pl-pl'] = "Zasada poziomowa - nie ma agentów, nie ma czekania";
$text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nível sem espera do agente";
$text['label-tier_rule_no_agent_no_wait']['pt-pt'] = "Regra de Nível Sem Agente Sem Espera";
$text['label-tier_rule_no_agent_no_wait']['ro-ro'] = "Regulă de nivel Fără agent Nu așteptați";
$text['label-tier_rule_no_agent_no_wait']['ru-ru'] = "Правило компетенции: Нет оператора, нет ожидания";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Kunskaps Regel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Nivåregel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['uk-ua'] = "Правило рівня Немає агентів Не чекайте";
$text['label-tier_rule_no_agent_no_wait']['tr-tr'] = "Kademe Kuralı Temsilci Yok Bekleme Yok";
$text['label-tier_rule_no_agent_no_wait']['zh-cn'] = "等级规则没有代理没有等待";
$text['label-tier_rule_no_agent_no_wait']['ja-jp'] = "Tier ルール No Agent No Wait";
$text['label-tier_rule_no_agent_no_wait']['ko-kr'] = "계층 규칙 에이전트 없음 대기 없음";
@@ -318,20 +357,23 @@ $text['label-tier_position']['ar-eg'] = "موقف الطبقة";
$text['label-tier_position']['de-at'] = "Ebenen-Position";
$text['label-tier_position']['de-ch'] = "Ebenen-Position";
$text['label-tier_position']['de-de'] = "Ebenen-Position";
$text['label-tier_position']['el-gr'] = "Θέση Βαθμίδας";
$text['label-tier_position']['es-cl'] = "Posición de Nivel";
$text['label-tier_position']['es-mx'] = "Posición de Nivel";
$text['label-tier_position']['fr-ca'] = "Position du Niveau";
$text['label-tier_position']['fr-fr'] = "Position du Niveau";
$text['label-tier_position']['he-il'] = "מיקום שכבה";
$text['label-tier_position']['it-it'] = "Posizione Tier";
$text['label-tier_position']['ka-ge'] = "დონის მდებარეობა";
$text['label-tier_position']['nl-nl'] = "Vergelijksregels positie";
$text['label-tier_position']['pl-pl'] = "Pozycja poziomu";
$text['label-tier_position']['pt-br'] = "Nivel da posição";
$text['label-tier_position']['pt-pt'] = "Posição do Tier";
$text['label-tier_position']['ro-ro'] = "Poziția nivelului";
$text['label-tier_position']['ru-ru'] = "Позиция компетенции";
$text['label-tier_position']['sv-se'] = "Kunskaps Position";
$text['label-tier_position']['sv-se'] = "Nivå Position";
$text['label-tier_position']['uk-ua'] = "Позиція рівня";
$text['label-tier_position']['tr-tr'] = "Seviye Konumu";
$text['label-tier_position']['zh-cn'] = "等级位置";
$text['label-tier_position']['ja-jp'] = "ティアの位置";
$text['label-tier_position']['ko-kr'] = "계층 위치";
@@ -342,20 +384,23 @@ $text['label-tier_level']['ar-eg'] = "مستوى الطبقة";
$text['label-tier_level']['de-at'] = "Ebenen-Niveau";
$text['label-tier_level']['de-ch'] = "Ebenen-Niveau";
$text['label-tier_level']['de-de'] = "Ebenen-Niveau";
$text['label-tier_level']['el-gr'] = "Επίπεδο Βαθμίδας";
$text['label-tier_level']['es-cl'] = "Nivel";
$text['label-tier_level']['es-mx'] = "Nivel";
$text['label-tier_level']['fr-ca'] = "Niveau";
$text['label-tier_level']['fr-fr'] = "Niveau";
$text['label-tier_level']['he-il'] = "רמת שכבה";
$text['label-tier_level']['it-it'] = "Livello Tier";
$text['label-tier_level']['ka-ge'] = "დონის დონე";
$text['label-tier_level']['nl-nl'] = "Vergelijkingsregels niveau";
$text['label-tier_level']['pl-pl'] = "Tier Level";
$text['label-tier_level']['pt-br'] = "Nivel da camada";
$text['label-tier_level']['pt-pt'] = "Nível do Tier";
$text['label-tier_level']['ro-ro'] = "Nivelul de nivel";
$text['label-tier_level']['ru-ru'] = "Уровень компетенции";
$text['label-tier_level']['sv-se'] = "Kunskaps Nivå";
$text['label-tier_level']['sv-se'] = "Nivå";
$text['label-tier_level']['uk-ua'] = "Рівень рівня";
$text['label-tier_level']['tr-tr'] = "Seviye Seviyesi";
$text['label-tier_level']['zh-cn'] = "层级";
$text['label-tier_level']['ja-jp'] = "ティアレベル";
$text['label-tier_level']['ko-kr'] = "계층 수준";
@@ -366,12 +411,14 @@ $text['label-system']['ar-eg'] = "النظام";
$text['label-system']['de-at'] = "System";
$text['label-system']['de-ch'] = "System";
$text['label-system']['de-de'] = "System";
$text['label-system']['el-gr'] = "Σύστημα";
$text['label-system']['es-cl'] = "Sistema";
$text['label-system']['es-mx'] = "Sistema";
$text['label-system']['fr-ca'] = "Système";
$text['label-system']['fr-fr'] = "Système";
$text['label-system']['he-il'] = "מערכת";
$text['label-system']['it-it'] = "Sistema";
$text['label-system']['ka-ge'] = "სისტემა";
$text['label-system']['nl-nl'] = "Systeem";
$text['label-system']['pl-pl'] = "System";
$text['label-system']['pt-br'] = "Sistema";
@@ -380,6 +427,7 @@ $text['label-system']['ro-ro'] = "Sistem";
$text['label-system']['ru-ru'] = "Система";
$text['label-system']['sv-se'] = "System";
$text['label-system']['uk-ua'] = "система";
$text['label-system']['tr-tr'] = "Sistem";
$text['label-system']['zh-cn'] = "系统";
$text['label-system']['ja-jp'] = "システム";
$text['label-system']['ko-kr'] = "체계";
@@ -390,12 +438,14 @@ $text['label-strategy']['ar-eg'] = "إستراتيجية";
$text['label-strategy']['de-at'] = "Strategie";
$text['label-strategy']['de-ch'] = "Strategie";
$text['label-strategy']['de-de'] = "Strategie";
$text['label-strategy']['el-gr'] = "Στρατηγική";
$text['label-strategy']['es-cl'] = "Estrategia";
$text['label-strategy']['es-mx'] = "Estrategia";
$text['label-strategy']['fr-ca'] = "Stratégie";
$text['label-strategy']['fr-fr'] = "Stratégie";
$text['label-strategy']['he-il'] = "אִסטרָטֶגִיָה";
$text['label-strategy']['it-it'] = "Strategia";
$text['label-strategy']['ka-ge'] = "სტრატეგია";
$text['label-strategy']['nl-nl'] = "Strategie";
$text['label-strategy']['pl-pl'] = "Strategia";
$text['label-strategy']['pt-br'] = "Estratégia";
@@ -404,30 +454,61 @@ $text['label-strategy']['ro-ro'] = "Strategie";
$text['label-strategy']['ru-ru'] = "Стратегия";
$text['label-strategy']['sv-se'] = "Strategi";
$text['label-strategy']['uk-ua'] = "Стратегія";
$text['label-strategy']['tr-tr'] = "Strateji";
$text['label-strategy']['zh-cn'] = "战略";
$text['label-strategy']['ja-jp'] = "ストラテジー";
$text['label-strategy']['ko-kr'] = "전략";
$text['label-last_bridge_end']['en-us'] = "Last Call";
$text['label-last_bridge_end']['en-gb'] = "Last Call";
$text['label-last_bridge_end']['ar-eg'] = "آخر مكالمة";
$text['label-last_bridge_end']['de-at'] = "Letzter Aufruf";
$text['label-last_bridge_end']['de-ch'] = "Letzter Aufruf";
$text['label-last_bridge_end']['de-de'] = "Letzter Aufruf";
$text['label-last_bridge_end']['el-gr'] = "Τελευταία κλήση";
$text['label-last_bridge_end']['es-cl'] = "Última llamada";
$text['label-last_bridge_end']['es-mx'] = "Última llamada";
$text['label-last_bridge_end']['fr-ca'] = "Dernier appel";
$text['label-last_bridge_end']['fr-fr'] = "Dernier appel";
$text['label-last_bridge_end']['he-il'] = "השיחה האחרונה";
$text['label-last_bridge_end']['it-it'] = "Ultima chiamata";
$text['label-last_bridge_end']['ka-ge'] = "ბოლო ზარი";
$text['label-last_bridge_end']['nl-nl'] = "Laatste oproep";
$text['label-last_bridge_end']['pl-pl'] = "Ostatnie połączenie";
$text['label-last_bridge_end']['pt-br'] = "Última chamada";
$text['label-last_bridge_end']['pt-pt'] = "Última chamada";
$text['label-last_bridge_end']['ro-ro'] = "Ultimul apel";
$text['label-last_bridge_end']['ru-ru'] = "Последний звонок";
$text['label-last_bridge_end']['sv-se'] = "Sista chansen";
$text['label-last_bridge_end']['uk-ua'] = "Останній дзвінок";
$text['label-last_bridge_end']['tr-tr'] = "Son çağrı";
$text['label-last_bridge_end']['zh-cn'] = "最后一次通话";
$text['label-last_bridge_end']['ja-jp'] = "ラスト・オーダー";
$text['label-last_bridge_end']['ko-kr'] = "마지막 호출";
$text['label-status_change']['en-us'] = "Status Change";
$text['label-status_change']['en-gb'] = "Status Change";
$text['label-status_change']['ar-eg'] = "تغيير الوضع";
$text['label-status_change']['de-at'] = "Status Änderung";
$text['label-status_change']['de-ch'] = "Status Änderung";
$text['label-status_change']['de-de'] = "Status Änderung";
$text['label-status_change']['el-gr'] = "Αλλαγή Κατάστασης";
$text['label-status_change']['es-cl'] = "Cambio de Estado";
$text['label-status_change']['es-mx'] = "Cambio de Estado";
$text['label-status_change']['fr-ca'] = "Change Status";
$text['label-status_change']['fr-fr'] = "Change Status";
$text['label-status_change']['he-il'] = "שינוי סטטוס";
$text['label-status_change']['it-it'] = "Modifica Status";
$text['label-status_change']['ka-ge'] = "სტატუსის ცვლილება";
$text['label-status_change']['nl-nl'] = "Status verandering";
$text['label-status_change']['pl-pl'] = "Zmiana statusu";
$text['label-status_change']['pt-br'] = "Mudança de estado";
$text['label-status_change']['pt-pt'] = "Mundança de Estado";
$text['label-status_change']['ro-ro'] = "Schimbare de stare";
$text['label-status_change']['ru-ru'] = "Изменения статуса";
$text['label-status_change']['sv-se'] = "Status Förändra";
$text['label-status_change']['sv-se'] = "Status Ändrad";
$text['label-status_change']['uk-ua'] = "Зміна статусу";
$text['label-status_change']['tr-tr'] = "Durum değişikliği";
$text['label-status_change']['zh-cn'] = "状态改变";
$text['label-status_change']['ja-jp'] = "ステータス変更";
$text['label-status_change']['ko-kr'] = "상태 변경";
@@ -438,12 +519,14 @@ $text['label-status']['ar-eg'] = "الحالة";
$text['label-status']['de-at'] = "Status";
$text['label-status']['de-ch'] = "Status";
$text['label-status']['de-de'] = "Status";
$text['label-status']['el-gr'] = "Κατάσταση";
$text['label-status']['es-cl'] = "Estado";
$text['label-status']['es-mx'] = "Estado";
$text['label-status']['fr-ca'] = "Statut";
$text['label-status']['fr-fr'] = "Statut";
$text['label-status']['he-il'] = "סטטוס";
$text['label-status']['it-it'] = "Stato";
$text['label-status']['ka-ge'] = "სტატუსი";
$text['label-status']['nl-nl'] = "Toestand";
$text['label-status']['pl-pl'] = "Status";
$text['label-status']['pt-br'] = "Estado";
@@ -452,6 +535,7 @@ $text['label-status']['ro-ro'] = "stare";
$text['label-status']['ru-ru'] = "Статус";
$text['label-status']['sv-se'] = "Status";
$text['label-status']['uk-ua'] = "Статус";
$text['label-status']['tr-tr'] = "Durum";
$text['label-status']['zh-cn'] = "地位";
$text['label-status']['ja-jp'] = "スターテス";
$text['label-status']['ko-kr'] = "상태";
@@ -462,12 +546,14 @@ $text['description-status']['ar-eg'] = 'تم تسجيل الخروج - لا يم
$text['description-status']['de-ch'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['de-at'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['de-de'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['el-gr'] = "Αποσύνδεση - Δεν είναι δυνατή η λήψη κλήσεων στην ουρά.\nΔιαθέσιμο - Έτοιμη για λήψη κλήσεων στην ουρά.\nΔιαθέσιμο (κατ' απαίτηση) - Η κατάσταση θα οριστεί σε 'Αδράνεια' μόλις λήξει η κλήση (δεν ορίζεται αυτόματα σε 'Αναμονή').\nΣε διάλειμμα - Είναι ακόμα συνδεδεμένος, αλλά δεν θα λαμβάνει κλήσεις στην ουρά.";
$text['description-status']['es-cl'] = "Desconectado: no se pueden recibir llamadas en cola.\nDisponible: listo para recibir llamadas en cola.\nDisponible (bajo demanda): el estado se establecerá en 'Inactivo' una vez que finalice la llamada (no se establecerá automáticamente en 'Esperando').\nEn pausa: Sigue conectado, pero no recibirá llamadas en cola.";
$text['description-status']['es-mx'] = "Desconectado: no se pueden recibir llamadas en cola.\nDisponible: listo para recibir llamadas en cola.\nDisponible (bajo demanda): el estado se establecerá en 'Inactivo' una vez que finalice la llamada (no se establecerá automáticamente en 'Esperando').\nEn pausa: Sigue conectado, pero no recibirá llamadas en cola.";
$text['description-status']['fr-ca'] = "Déconnecté - Impossible de recevoir les appels de la file d'attente.\nDisponible - Prêt à recevoir les appels de la file d'attente.\nDisponible (à la demande) - L'état sera défini sur 'Inactif' une fois l'appel terminé (pas automatiquement défini sur 'En attente').\nSur pause - Toujours connecté, mais ne recevra pas les appels de la file d'attente.";
$text['description-status']['fr-fr'] = "Déconnecté - Impossible de recevoir les appels de la file d'attente.\nDisponible - Prêt à recevoir les appels de la file d'attente.\nDisponible (à la demande) - L'état sera défini sur 'Inactif' une fois l'appel terminé (pas automatiquement défini sur 'En attente').\nSur pause - Toujours connecté, mais ne recevra pas les appels de la file d'attente.";
$text['description-status']['he-il'] = "מנותק - לא ניתן לקבל שיחות תור.\nזמין - מוכן לקבל שיחות בתור.\nזמין (לפי דרישה) - המצב יוגדר ל'לא פעיל' ברגע שהשיחה תסתיים (לא מוגדר אוטומטית ל'ממתין').\nבהפסקה - עדיין מחובר, אבל לא יקבל שיחות בתור.";
$text['description-status']['it-it'] = "Disconnesso - Impossibile ricevere chiamate in coda.\nDisponibile - Pronto a ricevere chiamate in coda.\nDisponibile (su richiesta) - Lo stato verrà impostato su 'Inattivo' al termine della chiamata (non impostato automaticamente su 'In attesa').\nIn interruzione - Ancora connesso, ma non riceverà chiamate in coda.";
$text['description-status']['ka-ge'] = "გასულია - ზარებს ვერ მიიღებს.\nხელმისაწვდომია - მზადაა, მიიღოს ზარები.\nხელმისაწვდომია(საჭიროებისამებრ) - მდგომარეობა დადგება 'უქმეზე', როცა ზარი დასრულდება (ავტომატურად 'მოლოდინზე' არ გადაირთვება).\nშესვენებაზე - შესულია, მაგრამ ზარებს არ მიიღებს.";
$text['description-status']['nl-nl'] = "Uitgelogd - Kan geen oproepen in de wachtrij ontvangen.\nBeschikbaar - Klaar om oproepen in de wachtrij te ontvangen.\nBeschikbaar (op aanvraag) - Status wordt ingesteld op 'Inactief' zodra het gesprek is beëindigd (niet automatisch ingesteld op 'Wachten').\nBij pauze - Nog steeds aangemeld, maar ontvangt geen oproepen in de wachtrij.";
$text['description-status']['pl-pl'] = "Wylogowany — nie można odbierać wywołań kolejki.\nDostępny — gotowy do odbierania wywołań kolejki.\nDostępny (na żądanie) — stan zostanie ustawiony na „Bezczynny” po zakończeniu połączenia (nie jest automatycznie ustawiany na „Oczekiwanie”).\nW przypadku przerwy — Nadal zalogowany, ale nie będzie odbierał wywołań kolejki.";
$text['description-status']['pt-br'] = "Desconectado - Não é possível receber chamadas em fila.\nDisponível - Pronto para receber chamadas em fila.\nDisponível (sob demanda) - O estado será definido como 'Ocioso' quando a chamada terminar (não definido automaticamente como 'Em espera').\nNo intervalo - Ainda conectado, mas não receberá chamadas em fila.";
@@ -476,6 +562,7 @@ $text['description-status']['ro-ro'] = "Deconectat - Nu se pot primi apeluri în
$text['description-status']['ru-ru'] = "Вышел из системы — не может принимать вызовы из очереди.\nДоступно — готово принимать вызовы из очереди.\nДоступно (по требованию) — состояние будет установлено на «Неактивный» после завершения вызова (автоматически не устанавливается на «Ожидание»).\nВ перерыве — Все еще вошел в систему, но не будет принимать вызовы из очереди.";
$text['description-status']['sv-se'] = "Utloggad - Kan inte ta emot kösamtal.\nTillgänglig - Klar att ta emot kösamtal.\nTillgänglig (på begäran) - Status kommer att ställas in på 'Idle' när samtalet avslutas (inte automatiskt inställt på 'Väntar').\nPå paus - Fortfarande inloggad, men tar inte emot kösamtal.";
$text['description-status']['uk-ua'] = "Вийшов із системи – неможливо отримати виклики в черзі.\nДоступно – готовий приймати виклики в черзі.\nДоступно (на вимогу) – стан буде встановлено на «Неактивний» після завершення виклику (не автоматично встановлено на «Очікування»).\nНа перерві – Ви все ще ввійшли, але не отримуватимете викликів із черги.";
$text['description-status']['tr-tr'] = "Oturum Kapatıldı - Sıradaki çağrılar alınamıyor.\nKullanılabilir - Sıradaki çağrıları almaya hazır.\nKullanılabilir (İstek Üzerine) - Çağrı sona erdiğinde durum 'Boşta' olarak ayarlanacaktır (otomatik olarak 'Bekleme' olarak ayarlanmaz).\nArada - Hala Oturum açmış durumdasınız ancak sıradaki çağrıları alamayacaksınız.";
$text['description-status']['zh-cn'] = "已注销 - 无法接收队列呼叫。\n可用 - 准备好接收队列呼叫。\n可用(按需) - 一旦呼叫结束,状态将设置为“空闲”(不会自动设置为“等待”)。\n中断时 - 仍处于登录状态,但不会接收队列呼叫。";
$text['description-status']['ja-jp'] = "ログアウト - キュー コールを受信できません。\n利用可能 - キュー コールを受信する準備ができています。\n利用可能 (オンデマンド) - 通話が終了すると、状態は「アイドル」に設定されます (自動的に「待機中」には設定されません)。\n休憩中 - まだログインしていますが、キュー呼び出しを受信しません。";
$text['description-status']['ko-kr'] = "로그아웃됨 - 대기열 호출을 받을 수 없습니다.\n사용 가능 - 대기열 호출을 받을 준비가 되었습니다.\n사용 가능(요청 시) - 통화가 종료되면 상태가 '유휴'로 설정됩니다('대기 중'으로 자동 설정되지 않음).\n휴식 중 - 여전히 로그인되어 있지만 대기열 통화를 받지 않습니다.";
@@ -486,20 +573,23 @@ $text['label-state']['ar-eg'] = "ولاية";
$text['label-state']['de-at'] = "Zustand";
$text['label-state']['de-ch'] = "Zustand";
$text['label-state']['de-de'] = "Zustand";
$text['label-state']['el-gr'] = "κατάσταση";
$text['label-state']['es-cl'] = "Estado";
$text['label-state']['es-mx'] = "Estado";
$text['label-state']['fr-ca'] = "Etat";
$text['label-state']['fr-fr'] = "Etat";
$text['label-state']['he-il'] = "מצב";
$text['label-state']['it-it'] = "Stato";
$text['label-state']['ka-ge'] = "მდგომარეობა";
$text['label-state']['nl-nl'] = "Staat";
$text['label-state']['pl-pl'] = "Stan";
$text['label-state']['pt-br'] = "Estado";
$text['label-state']['pt-pt'] = "Estado";
$text['label-state']['ro-ro'] = "Stat";
$text['label-state']['ru-ru'] = "Состояние";
$text['label-state']['sv-se'] = "stat";
$text['label-state']['sv-se'] = "Tillstånd";
$text['label-state']['uk-ua'] = "Держава";
$text['label-state']['tr-tr'] = "Durum";
$text['label-state']['zh-cn'] = "状态";
$text['label-state']['ja-jp'] = "州";
$text['label-state']['ko-kr'] = "상태";
@@ -510,12 +600,14 @@ $text['description-state']['ar-eg'] = "خامل - لا يفعل شيئًا ، ل
$text['description-state']['de-at'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['de-ch'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['de-de'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['el-gr'] = "Αδράνεια - Δεν κάνει τίποτα, δεν γίνονται κλήσεις.\nΑναμονή - Έτοιμη για λήψη κλήσεων.\nΛήψη - Μια κλήση ουράς προσφέρεται αυτήν τη στιγμή στον πράκτορα.\nΣε μια κλήση ουράς - Αυτήν τη στιγμή βρίσκεται σε μια κλήση ουράς.";
$text['description-state']['es-cl'] = "Inactivo: no hace nada, no se dan llamadas.\nEsperando: listo para recibir llamadas.\nRecibiendo: actualmente se está ofreciendo una llamada en cola al agente.\nEn una llamada en cola: actualmente en una llamada en cola.";
$text['description-state']['es-mx'] = "Inactivo: no hace nada, no se dan llamadas.\nEsperando: listo para recibir llamadas.\nRecibiendo: actualmente se está ofreciendo una llamada en cola al agente.\nEn una llamada en cola: actualmente en una llamada en cola.";
$text['description-state']['fr-ca'] = "Inactif : ne fait rien, aucun appel n'est émis.\nEn attente : prêt à recevoir des appels.\nRéception : un appel de file d'attente est actuellement proposé à l'agent.\nDans un appel de file d'attente : actuellement en cours d'appel.";
$text['description-state']['fr-fr'] = "Inactif : ne fait rien, aucun appel n'est émis.\nEn attente : prêt à recevoir des appels.\nRéception : un appel de file d'attente est actuellement proposé à l'agent.\nDans un appel de file d'attente : actuellement en cours d'appel.";
$text['description-state']['he-il'] = "סרק - לא עושה כלום, לא ניתנות שיחות.\nממתין - מוכן לקבל שיחות.\nמקבל - כרגע מוצעת לסוכן שיחת תור.\nבשיחת תור - כרגע בשיחת תור.";
$text['description-state']['it-it'] = "Inattivo - Non esegue alcuna operazione, non vengono effettuate chiamate.\nIn attesa - Pronto a ricevere chiamate.\nIn ricezione - Una chiamata in coda è attualmente offerta all'agente.\nIn una chiamata in coda - Attualmente in una chiamata in coda.";
$text['description-state']['ka-ge'] = "უქმადაა - არაფერს აკეთებს, ზარებს არ იღებს.\nმოლოდინი - მზადაა ზარების მისაღებად.\nიღებს - ზარი რიგიდან ამჟამად წარმოედგინება ამ აგენტს.\nრიგის ზარში - ამჟამად ზარზეა.";
$text['description-state']['nl-nl'] = "Inactief - Doet niets, er worden geen oproepen gegeven.\nWachten - Klaar om oproepen te ontvangen.\nOntvangen - Er wordt momenteel een oproep in de wachtrij aangeboden aan de agent.\nIn een oproep in de wachtrij - Momenteel in een oproep in de wachtrij.";
$text['description-state']['pl-pl'] = "Bezczynny — nic nie robi, żadne połączenia nie są wykonywane.\nOczekiwanie — gotowość do odbierania połączeń.\nOdbieranie — agentowi jest obecnie oferowane połączenie w kolejce.\nW wywołaniu w kolejce — aktualnie trwa wywołanie w kolejce.";
$text['description-state']['pt-br'] = "Ocioso - Não faz nada, nenhuma chamada é fornecida.\nAguardando - Pronto para receber chamadas.\nRecebendo - Uma chamada em fila está sendo oferecida ao agente.\nEm uma chamada em fila - Atualmente em uma chamada em fila.";
@@ -524,6 +616,7 @@ $text['description-state']['ro-ro'] = "Inactiv - Nu face nimic, nu se dau apelur
$text['description-state']['ru-ru'] = "Бездействие — ничего не делает, вызовы не поступают.\nОжидание — готов к приему вызовов.\nПрием — вызов в очереди в данный момент предлагается агенту.\nВ вызове в очереди — вызов в данный момент в очереди.";
$text['description-state']['sv-se'] = "Inaktiv - Gör ingenting, inga samtal ges.\nVäntar - Redo att ta emot samtal.\nTar emot - Ett kösamtal erbjuds just nu till agenten.\nI ett kösamtal - För närvarande i ett kösamtal.";
$text['description-state']['uk-ua'] = "Неактивний – нічого не робить, виклики не надходять.\nОчікування – готовий приймати виклики.\nОтримання – агенту наразі пропонується виклик із черги.\nВиклик із черги – наразі виклик із черги.";
$text['description-state']['tr-tr'] = "Idle - Does nothing, no calls are given.\nWaiting - Ready to receive calls.\nReceiving - A queue call is currently being offered to the agent.\nIn a queue call - Currently on a queue call.";
$text['description-state']['zh-cn'] = "空闲 - 不执行任何操作,不会发出任何呼叫。\n等待 - 准备好接收呼叫。\n正在接收 - 当前正在向客服人员提供队列呼叫。\n队列呼叫中 - 当前正在进行队列呼叫。";
$text['description-state']['ja-jp'] = "アイドル - 何もせず、通話は行われません。\n待機中 - 通話を受信する準備ができています。\n受信中 - 現在エージェントにキュー コールが提供されています。\nキュー コール中 - 現在キュー コール中です。";
$text['description-state']['ko-kr'] = "유휴 - 아무것도 하지 않고 통화가 제공되지 않습니다.\n대기 중 - 전화를 받을 준비가 되었습니다.\n수신 중 - 현재 상담원에게 대기열 통화가 제공되고 있습니다.\n대기열 통화 중 - 현재 대기열 통화 중입니다.";
@@ -534,12 +627,14 @@ $text['label-record_template']['ar-eg'] = "قالب التسجيل";
$text['label-record_template']['de-at'] = "Aufnahme Vorlage";
$text['label-record_template']['de-ch'] = "Aufnahme Vorlage";
$text['label-record_template']['de-de'] = "Aufnahme Vorlage";
$text['label-record_template']['el-gr'] = "Πρότυπο εγγραφής";
$text['label-record_template']['es-cl'] = "Plantilla de Grabación";
$text['label-record_template']['es-mx'] = "Plantilla de Grabación";
$text['label-record_template']['fr-ca'] = "Modèle d'enregistrement";
$text['label-record_template']['fr-fr'] = "Modèle d'enregistrement";
$text['label-record_template']['he-il'] = "תבנית הקלטה";
$text['label-record_template']['it-it'] = "Template Registrazione";
$text['label-record_template']['ka-ge'] = "ჩანაწერის ნიმუში";
$text['label-record_template']['nl-nl'] = "Opname sjabloon";
$text['label-record_template']['pl-pl'] = "Nagraj";
$text['label-record_template']['pt-br'] = "Modelo de gravação";
@@ -548,6 +643,7 @@ $text['label-record_template']['ro-ro'] = "Șablon de înregistrare";
$text['label-record_template']['ru-ru'] = "Шаблон записи";
$text['label-record_template']['sv-se'] = "Spela In Mall";
$text['label-record_template']['uk-ua'] = "Шаблон запису";
$text['label-record_template']['tr-tr'] = "Kayıt Şablonu";
$text['label-record_template']['zh-cn'] = "记录模板";
$text['label-record_template']['ja-jp'] = "記録テンプレート";
$text['label-record_template']['ko-kr'] = "레코드 템플릿";
@@ -558,12 +654,14 @@ $text['label-queue_name']['ar-eg'] = "اسم الطابور";
$text['label-queue_name']['de-at'] = "Warteschlange Name";
$text['label-queue_name']['de-ch'] = "Warteschlange Name";
$text['label-queue_name']['de-de'] = "Warteschlange Name";
$text['label-queue_name']['el-gr'] = "Όνομα ουράς";
$text['label-queue_name']['es-cl'] = "Nombre de Cola";
$text['label-queue_name']['es-mx'] = "Nombre de Cola";
$text['label-queue_name']['fr-ca'] = " Nom de la file";
$text['label-queue_name']['fr-fr'] = " Nom de la file";
$text['label-queue_name']['he-il'] = "שם לתור";
$text['label-queue_name']['it-it'] = "Nome Coda";
$text['label-queue_name']['ka-ge'] = "რიგის სახელი";
$text['label-queue_name']['nl-nl'] = "Wachtrijnaam";
$text['label-queue_name']['pl-pl'] = "Nazwa kolejki";
$text['label-queue_name']['pt-br'] = "Nome da fila";
@@ -572,6 +670,7 @@ $text['label-queue_name']['ro-ro'] = "Nume coadă";
$text['label-queue_name']['ru-ru'] = "Имя очереди";
$text['label-queue_name']['sv-se'] = "Grupp Namn";
$text['label-queue_name']['uk-ua'] = "Назва черги";
$text['label-queue_name']['tr-tr'] = "Sıra Adı";
$text['label-queue_name']['zh-cn'] = "队列名称";
$text['label-queue_name']['ja-jp'] = "キュー名";
$text['label-queue_name']['ko-kr'] = "대기열 이름";
@@ -582,12 +681,14 @@ $text['label-queue']['ar-eg'] = "طابور";
$text['label-queue']['de-at'] = "Warteschlange";
$text['label-queue']['de-ch'] = "Warteschlange";
$text['label-queue']['de-de'] = "Warteschlange";
$text['label-queue']['el-gr'] = "Ουρά";
$text['label-queue']['es-cl'] = "Cola";
$text['label-queue']['es-mx'] = "Cola";
$text['label-queue']['fr-ca'] = "File";
$text['label-queue']['fr-fr'] = "File";
$text['label-queue']['he-il'] = "תור";
$text['label-queue']['it-it'] = "Code";
$text['label-queue']['ka-ge'] = "რიგი";
$text['label-queue']['nl-nl'] = "Wachtrij";
$text['label-queue']['pl-pl'] = "Kolejka";
$text['label-queue']['pt-br'] = "Fila";
@@ -596,6 +697,7 @@ $text['label-queue']['ro-ro'] = "Coadă";
$text['label-queue']['ru-ru'] = "Очередь";
$text['label-queue']['sv-se'] = "Grupp";
$text['label-queue']['uk-ua'] = "Черга";
$text['label-queue']['tr-tr'] = "Sıra";
$text['label-queue']['zh-cn'] = "队列";
$text['label-queue']['ja-jp'] = "列";
$text['label-queue']['ko-kr'] = "대기줄";
@@ -606,12 +708,14 @@ $text['label-options']['ar-eg'] = "خيارات";
$text['label-options']['de-at'] = "Optionen";
$text['label-options']['de-ch'] = "Optionen";
$text['label-options']['de-de'] = "Optionen";
$text['label-options']['el-gr'] = "Επιλογές";
$text['label-options']['es-cl'] = "Opciones";
$text['label-options']['es-mx'] = "Opciones";
$text['label-options']['fr-ca'] = "Choix";
$text['label-options']['fr-fr'] = "Choix";
$text['label-options']['he-il'] = "אופציות";
$text['label-options']['it-it'] = "Opzioni";
$text['label-options']['ka-ge'] = "პარამეტრები";
$text['label-options']['nl-nl'] = "Opties";
$text['label-options']['pl-pl'] = "Opcje";
$text['label-options']['pt-br'] = "Opções";
@@ -620,6 +724,7 @@ $text['label-options']['ro-ro'] = "Opțiuni";
$text['label-options']['ru-ru'] = "Параметры";
$text['label-options']['sv-se'] = "Val";
$text['label-options']['uk-ua'] = "Опції";
$text['label-options']['tr-tr'] = "Seçenekler";
$text['label-options']['zh-cn'] = "选项";
$text['label-options']['ja-jp'] = "オプション";
$text['label-options']['ko-kr'] = "옵션";
@@ -630,12 +735,14 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Number";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['he-il'] = "מספר";
$text['label-number']['it-it'] = "Numero";
$text['label-number']['ka-ge'] = "ნომერი";
$text['label-number']['nl-nl'] = "Nummer";
$text['label-number']['pl-pl'] = "Numer";
$text['label-number']['pt-br'] = "Número";
@@ -644,6 +751,7 @@ $text['label-number']['ro-ro'] = "Număr";
$text['label-number']['ru-ru'] = "Номер";
$text['label-number']['sv-se'] = "Nummer";
$text['label-number']['uk-ua'] = "Номер";
$text['label-number']['tr-tr'] = "Sayı";
$text['label-number']['zh-cn'] = "数字";
$text['label-number']['ja-jp'] = "番号";
$text['label-number']['ko-kr'] = "숫자";
@@ -654,12 +762,14 @@ $text['label-music_on_hold']['ar-eg'] = "الموسيقى في الانتظار"
$text['label-music_on_hold']['de-at'] = "Wartemusik";
$text['label-music_on_hold']['de-ch'] = "Wartemusik";
$text['label-music_on_hold']['de-de'] = "Wartemusik";
$text['label-music_on_hold']['el-gr'] = "Μουσική σε αναμονή";
$text['label-music_on_hold']['es-cl'] = "Musica en Espera";
$text['label-music_on_hold']['es-mx'] = "Musica en Espera";
$text['label-music_on_hold']['fr-ca'] = "Musique en attente";
$text['label-music_on_hold']['fr-fr'] = "Musique en attente";
$text['label-music_on_hold']['he-il'] = "מוסיקה במתנה";
$text['label-music_on_hold']['it-it'] = "Musica d'Attesa";
$text['label-music_on_hold']['ka-ge'] = "მუსიკა დაყოვნებისას";
$text['label-music_on_hold']['nl-nl'] = "Wachtmuziek";
$text['label-music_on_hold']['pl-pl'] = "Muzyka na czekanie";
$text['label-music_on_hold']['pt-br'] = "Música de espera";
@@ -668,6 +778,7 @@ $text['label-music_on_hold']['ro-ro'] = "Muzică în așteptare";
$text['label-music_on_hold']['ru-ru'] = "Музыка на удержании";
$text['label-music_on_hold']['sv-se'] = "Väntmusik";
$text['label-music_on_hold']['uk-ua'] = "Музика на утриманні";
$text['label-music_on_hold']['tr-tr'] = "Beklemedeki Müzik";
$text['label-music_on_hold']['zh-cn'] = "保留音乐";
$text['label-music_on_hold']['ja-jp'] = "保留音";
$text['label-music_on_hold']['ko-kr'] = "음악 보류";
@@ -678,12 +789,14 @@ $text['label-missed']['ar-eg'] = "مٌفتَقد";
$text['label-missed']['de-at'] = "Verpasst";
$text['label-missed']['de-ch'] = "Verpasst";
$text['label-missed']['de-de'] = "Verpasst";
$text['label-missed']['el-gr'] = "Αναπάντητες";
$text['label-missed']['es-cl'] = "Perdido";
$text['label-missed']['es-mx'] = "Perdido";
$text['label-missed']['fr-ca'] = "Manqué";
$text['label-missed']['fr-fr'] = "Manqué";
$text['label-missed']['he-il'] = "שיחה שלא נענתה";
$text['label-missed']['it-it'] = "Perse";
$text['label-missed']['ka-ge'] = "გამოტოვებულია";
$text['label-missed']['nl-nl'] = "Gemist";
$text['label-missed']['pl-pl'] = "Nie odebrany";
$text['label-missed']['pt-br'] = "Perdidas";
@@ -692,6 +805,7 @@ $text['label-missed']['ro-ro'] = "ratat";
$text['label-missed']['ru-ru'] = "Пропущенный";
$text['label-missed']['sv-se'] = "Missade";
$text['label-missed']['uk-ua'] = "Пропущений";
$text['label-missed']['tr-tr'] = "Kaçırıldı";
$text['label-missed']['zh-cn'] = "错过了";
$text['label-missed']['ja-jp'] = "逃した";
$text['label-missed']['ko-kr'] = "놓친";
@@ -702,12 +816,14 @@ $text['label-max_wait_time_with_no_agent']['ar-eg'] = "أقصى وقت انتظ
$text['label-max_wait_time_with_no_agent']['de-at'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['de-ch'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['de-de'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['el-gr'] = "Μέγιστος χρόνος αναμονής χωρίς αντιπρόσωπο";
$text['label-max_wait_time_with_no_agent']['es-cl'] = "Tiempo Máximo de Espera sin Agente";
$text['label-max_wait_time_with_no_agent']['es-mx'] = "Tiempo Máximo de Espera sin Agente";
$text['label-max_wait_time_with_no_agent']['fr-ca'] = "Max d'attente sans Agent";
$text['label-max_wait_time_with_no_agent']['fr-fr'] = "Max d'attente sans Agent";
$text['label-max_wait_time_with_no_agent']['he-il'] = "זמן המתנה מקסימלי ללא סוכן";
$text['label-max_wait_time_with_no_agent']['it-it'] = "Tempo Max Attesa senza Agente";
$text['label-max_wait_time_with_no_agent']['ka-ge'] = "მაქს. მოლოდინის დრო, როცა აგენტები არაა";
$text['label-max_wait_time_with_no_agent']['nl-nl'] = "Maximale wachttijd bij geen agent";
$text['label-max_wait_time_with_no_agent']['pl-pl'] = "Maks czas oczekiwania bez agenta";
$text['label-max_wait_time_with_no_agent']['pt-br'] = "Tempo máximo de esoera sem agente";
@@ -716,6 +832,7 @@ $text['label-max_wait_time_with_no_agent']['ro-ro'] = "Timp maxim de așteptare
$text['label-max_wait_time_with_no_agent']['ru-ru'] = "Максимальное время ожидания без оператора";
$text['label-max_wait_time_with_no_agent']['sv-se'] = "Max Vänt Tid (Ingen Agent)";
$text['label-max_wait_time_with_no_agent']['uk-ua'] = "Максимальний час очікування без агента";
$text['label-max_wait_time_with_no_agent']['tr-tr'] = "Temsilci Olmadan Maksimum Bekleme Süresi";
$text['label-max_wait_time_with_no_agent']['zh-cn'] = "无代理的最长等待时间";
$text['label-max_wait_time_with_no_agent']['ja-jp'] = "エージェントなしの最大待機時間";
$text['label-max_wait_time_with_no_agent']['ko-kr'] = "에이전트 없는 최대 대기 시간";
@@ -726,12 +843,14 @@ $text['label-max_wait_time']['ar-eg'] = "وقت الانتظار الأقصى";
$text['label-max_wait_time']['de-at'] = "Maximale Wartezeit";
$text['label-max_wait_time']['de-ch'] = "Maximale Wartezeit";
$text['label-max_wait_time']['de-de'] = "Maximale Wartezeit";
$text['label-max_wait_time']['el-gr'] = "Μέγιστος χρόνος αναμονής";
$text['label-max_wait_time']['es-cl'] = "Tiempo Máximo de Espera";
$text['label-max_wait_time']['es-mx'] = "Tiempo Máximo de Espera";
$text['label-max_wait_time']['fr-ca'] = "Temps d'attente maximal";
$text['label-max_wait_time']['fr-fr'] = "Temps d'attente maximal";
$text['label-max_wait_time']['he-il'] = "מקסימום זמן המתנה";
$text['label-max_wait_time']['it-it'] = "Tempo Attesa Max";
$text['label-max_wait_time']['ka-ge'] = "მაქს. მოლოდინის დრო";
$text['label-max_wait_time']['nl-nl'] = "Maximale wachttijd";
$text['label-max_wait_time']['pl-pl'] = "Maks czas oczekiwania";
$text['label-max_wait_time']['pt-br'] = "Tempo máximo de espera";
@@ -740,6 +859,7 @@ $text['label-max_wait_time']['ro-ro'] = "Timp maxim de așteptare";
$text['label-max_wait_time']['ru-ru'] = "Максимальное время ожидания";
$text['label-max_wait_time']['sv-se'] = "Max Vänt Tid";
$text['label-max_wait_time']['uk-ua'] = "Максимальний час очікування";
$text['label-max_wait_time']['tr-tr'] = "Maksimum Bekleme Süresi";
$text['label-max_wait_time']['zh-cn'] = "最长等待时间";
$text['label-max_wait_time']['ja-jp'] = "最大待ち時間";
$text['label-max_wait_time']['ko-kr'] = "최대 대기 시간";
@@ -750,12 +870,14 @@ $text['label-extension']['ar-eg'] = "رقم داخلي";
$text['label-extension']['de-at'] = "Nebenstelle";
$text['label-extension']['de-ch'] = "Nebenstelle";
$text['label-extension']['de-de'] = "Nebenstelle";
$text['label-extension']['el-gr'] = "Επέκταση";
$text['label-extension']['es-cl'] = "Extensión";
$text['label-extension']['es-mx'] = "Extensión";
$text['label-extension']['fr-ca'] = "Extension";
$text['label-extension']['fr-fr'] = "Extension";
$text['label-extension']['he-il'] = "שלוחה";
$text['label-extension']['it-it'] = "Interno";
$text['label-extension']['ka-ge'] = "გაფართოება";
$text['label-extension']['nl-nl'] = "Toestel";
$text['label-extension']['pl-pl'] = "Numer wewnętrzny";
$text['label-extension']['pt-br'] = "Ramal";
@@ -764,6 +886,7 @@ $text['label-extension']['ro-ro'] = "Extensie";
$text['label-extension']['ru-ru'] = "Внутренний номер";
$text['label-extension']['sv-se'] = "Anknytning";
$text['label-extension']['uk-ua'] = "Розширення";
$text['label-extension']['tr-tr'] = "Eklenti";
$text['label-extension']['zh-cn'] = "扩大";
$text['label-extension']['ja-jp'] = "拡大";
$text['label-extension']['ko-kr'] = "확대";
@@ -774,12 +897,14 @@ $text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionnage";
$text['label-eavesdrop']['fr-fr'] = "Espionnage";
$text['label-eavesdrop']['he-il'] = "לְצוֹתֵת";
$text['label-eavesdrop']['it-it'] = "Ascolta";
$text['label-eavesdrop']['ka-ge'] = "მოსმენა";
$text['label-eavesdrop']['nl-nl'] = "Meeluisteren";
$text['label-eavesdrop']['pl-pl'] = "Podsłuchiwanie";
$text['label-eavesdrop']['pt-br'] = "Investigar";
@@ -788,6 +913,7 @@ $text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
$text['label-eavesdrop']['ru-ru'] = "Подслушать";
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
$text['label-eavesdrop']['uk-ua'] = "Підслуховувати";
$text['label-eavesdrop']['tr-tr'] = "Kulak misafiri olmak";
$text['label-eavesdrop']['zh-cn'] = "窃听";
$text['label-eavesdrop']['ja-jp'] = "盗聴";
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
@@ -798,12 +924,14 @@ $text['label-discard_abandoned_after']['ar-eg'] = "تجاهل المهجورة
$text['label-discard_abandoned_after']['de-at'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['de-ch'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['de-de'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['el-gr'] = "Απορρίψτε το Εγκαταλελειμμένο Μετά";
$text['label-discard_abandoned_after']['es-cl'] = "Descartar Abandono Despues de";
$text['label-discard_abandoned_after']['es-mx'] = "Descartar Abandono Despues de";
$text['label-discard_abandoned_after']['fr-ca'] = "Ecarter les appels abandonnés après";
$text['label-discard_abandoned_after']['fr-fr'] = "Ecarter les appels abandonnés après";
$text['label-discard_abandoned_after']['he-il'] = "זרוק נטוש לאחר";
$text['label-discard_abandoned_after']['it-it'] = "Scarta Abbandonate Dopo";
$text['label-discard_abandoned_after']['ka-ge'] = "ზარის გათიშვა რიგის დატოვებისას";
$text['label-discard_abandoned_after']['nl-nl'] = "Vergeet na ophangen";
$text['label-discard_abandoned_after']['pl-pl'] = "Odrzuć opuszczoną rozmowę po";
$text['label-discard_abandoned_after']['pt-br'] = "Rejeição abandonada depois";
@@ -812,6 +940,7 @@ $text['label-discard_abandoned_after']['ro-ro'] = "Aruncă abandonat după";
$text['label-discard_abandoned_after']['ru-ru'] = "Сбросить вызов после покидания очереди";
$text['label-discard_abandoned_after']['sv-se'] = "Uteslut Övergivna Efter ";
$text['label-discard_abandoned_after']['uk-ua'] = "Відкинути покинуте після";
$text['label-discard_abandoned_after']['tr-tr'] = "Daha Sonra Terk Edilenleri At";
$text['label-discard_abandoned_after']['zh-cn'] = "放弃后放弃";
$text['label-discard_abandoned_after']['ja-jp'] = "次の後に放棄されたものを破棄";
$text['label-discard_abandoned_after']['ko-kr'] = "폐기 후 폐기";
@@ -822,12 +951,14 @@ $text['label-call']['ar-eg'] = "يتصل";
$text['label-call']['de-at'] = "Anruf";
$text['label-call']['de-ch'] = "Anruf";
$text['label-call']['de-de'] = "Anruf";
$text['label-call']['el-gr'] = "Κλήση";
$text['label-call']['es-cl'] = "Llamar";
$text['label-call']['es-mx'] = "Llamar";
$text['label-call']['fr-ca'] = "Appel";
$text['label-call']['fr-fr'] = "Appel";
$text['label-call']['he-il'] = "שיחה";
$text['label-call']['it-it'] = "Chiamata";
$text['label-call']['ka-ge'] = "ზარი";
$text['label-call']['nl-nl'] = "Oproep";
$text['label-call']['pl-pl'] = "Rozmowa";
$text['label-call']['pt-br'] = "Chamada";
@@ -836,6 +967,7 @@ $text['label-call']['ro-ro'] = "Apel";
$text['label-call']['ru-ru'] = "Вызов";
$text['label-call']['sv-se'] = "Samtal";
$text['label-call']['uk-ua'] = "Телефонуйте";
$text['label-call']['tr-tr'] = "Arama";
$text['label-call']['zh-cn'] = "称呼";
$text['label-call']['ja-jp'] = "電話";
$text['label-call']['ko-kr'] = "부르다";
@@ -846,12 +978,14 @@ $text['label-answered']['ar-eg'] = "أجاب";
$text['label-answered']['de-at'] = "Angenommen";
$text['label-answered']['de-ch'] = "Angenommen";
$text['label-answered']['de-de'] = "Angenommen";
$text['label-answered']['el-gr'] = "Απάντησε";
$text['label-answered']['es-cl'] = "Respondido";
$text['label-answered']['es-mx'] = "Respondido";
$text['label-answered']['fr-ca'] = "Répondu";
$text['label-answered']['fr-fr'] = "Répondu";
$text['label-answered']['he-il'] = "ענה";
$text['label-answered']['it-it'] = "Risposta";
$text['label-answered']['ka-ge'] = "ნაპასუხები";
$text['label-answered']['nl-nl'] = "Beantwoord";
$text['label-answered']['pl-pl'] = "Odebrano";
$text['label-answered']['pt-br'] = "Atendidas";
@@ -860,6 +994,7 @@ $text['label-answered']['ro-ro'] = "Răspuns";
$text['label-answered']['ru-ru'] = "Отвеченый";
$text['label-answered']['sv-se'] = "Besvarad";
$text['label-answered']['uk-ua'] = "відповів";
$text['label-answered']['tr-tr'] = "Yanıtlandı";
$text['label-answered']['zh-cn'] = "已回答";
$text['label-answered']['ja-jp'] = "回答済み";
$text['label-answered']['ko-kr'] = "대답했다";
@@ -870,12 +1005,14 @@ $text['label-agent']['ar-eg'] = "عامل";
$text['label-agent']['de-at'] = "Agent";
$text['label-agent']['de-ch'] = "Agent";
$text['label-agent']['de-de'] = "Agent";
$text['label-agent']['el-gr'] = "Μέσο";
$text['label-agent']['es-cl'] = "Agente";
$text['label-agent']['es-mx'] = "Agente";
$text['label-agent']['fr-ca'] = "Agent";
$text['label-agent']['fr-fr'] = "Agent";
$text['label-agent']['he-il'] = "סוכן";
$text['label-agent']['it-it'] = "Agente";
$text['label-agent']['ka-ge'] = "აგენტი";
$text['label-agent']['nl-nl'] = "Agent";
$text['label-agent']['pl-pl'] = "Agent";
$text['label-agent']['pt-br'] = "Agente";
@@ -884,6 +1021,7 @@ $text['label-agent']['ro-ro'] = "Agent";
$text['label-agent']['ru-ru'] = "Оператор";
$text['label-agent']['sv-se'] = "Agent";
$text['label-agent']['uk-ua'] = "Агент";
$text['label-agent']['tr-tr'] = "Ajan";
$text['label-agent']['zh-cn'] = "代理人";
$text['label-agent']['ja-jp'] = "エージェント";
$text['label-agent']['ko-kr'] = "대리인";
@@ -894,12 +1032,14 @@ $text['label-abandoned_resume_allowed']['ar-eg'] = "استئناف مهجور م
$text['label-abandoned_resume_allowed']['de-at'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['de-ch'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['de-de'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['el-gr'] = "Επιτρέπεται το εγκαταλειμμένο βιογραφικό";
$text['label-abandoned_resume_allowed']['es-cl'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['es-mx'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['fr-ca'] = "Authoriser la reprise des abandonnés";
$text['label-abandoned_resume_allowed']['fr-fr'] = "Authoriser la reprise des abandonnés";
$text['label-abandoned_resume_allowed']['he-il'] = "קורות חיים נטוש מותר";
$text['label-abandoned_resume_allowed']['it-it'] = "Permetti Ripristino Abbandonate";
$text['label-abandoned_resume_allowed']['ka-ge'] = "მიტოვებული ზარის გაგრძელების დაშვება";
$text['label-abandoned_resume_allowed']['nl-nl'] = "Gesprek vervolgen na ophangen toegestaan";
$text['label-abandoned_resume_allowed']['pl-pl'] = "Odbieranie odrzuconych rozmów jest dozwolone";
$text['label-abandoned_resume_allowed']['pt-br'] = "Resumo abandonado permidito";
@@ -908,6 +1048,7 @@ $text['label-abandoned_resume_allowed']['ro-ro'] = "CV-ul abandonat este permis"
$text['label-abandoned_resume_allowed']['ru-ru'] = "Разрешить восстанавливать покинутый вызов";
$text['label-abandoned_resume_allowed']['sv-se'] = "Återuppta Övergivna Tillåtet";
$text['label-abandoned_resume_allowed']['uk-ua'] = "Залишене резюме дозволено";
$text['label-abandoned_resume_allowed']['tr-tr'] = "Terk Edilmiş Özgeçmişe İzin Verildi";
$text['label-abandoned_resume_allowed']['zh-cn'] = "允许放弃简历";
$text['label-abandoned_resume_allowed']['ja-jp'] = "放棄された履歴書を許可";
$text['label-abandoned_resume_allowed']['ko-kr'] = "포기한 이력서 허용";
@@ -918,12 +1059,14 @@ $text['header-agents']['ar-eg'] = "عملاء";
$text['header-agents']['de-at'] = "Agenten";
$text['header-agents']['de-ch'] = "Agenten";
$text['header-agents']['de-de'] = "Agenten";
$text['header-agents']['el-gr'] = "Πράκτορες";
$text['header-agents']['es-cl'] = "Agentes";
$text['header-agents']['es-mx'] = "Agentes";
$text['header-agents']['fr-ca'] = "Agents";
$text['header-agents']['fr-fr'] = "Agents";
$text['header-agents']['he-il'] = "סוכנים";
$text['header-agents']['it-it'] = "Agenti";
$text['header-agents']['ka-ge'] = "აგენტები";
$text['header-agents']['nl-nl'] = "Agenten";
$text['header-agents']['pl-pl'] = "Agenci";
$text['header-agents']['pt-br'] = "Agentes";
@@ -932,6 +1075,7 @@ $text['header-agents']['ro-ro'] = "Agenți";
$text['header-agents']['ru-ru'] = "Операторы";
$text['header-agents']['sv-se'] = "Agenter";
$text['header-agents']['uk-ua'] = "Агенти";
$text['header-agents']['tr-tr'] = "Agents";
$text['header-agents']['zh-cn'] = "代理商";
$text['header-agents']['ja-jp'] = "エージェント";
$text['header-agents']['ko-kr'] = "자치령 대표";
@@ -942,12 +1086,14 @@ $text['header-active_call_center']['ar-eg'] = "مركز الاتصال النش
$text['header-active_call_center']['de-at'] = "Aktives Callcenter";
$text['header-active_call_center']['de-ch'] = "Aktives Callcenter";
$text['header-active_call_center']['de-de'] = "Aktives Callcenter";
$text['header-active_call_center']['el-gr'] = "Ενεργό τηλεφωνικό κέντρο";
$text['header-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['header-active_call_center']['es-mx'] = "Centro de Llamados Activo";
$text['header-active_call_center']['fr-ca'] = "Centre d'appel Actif";
$text['header-active_call_center']['fr-fr'] = "Centre d'appel Actif";
$text['header-active_call_center']['he-il'] = "מוקד טלפוני פעיל";
$text['header-active_call_center']['it-it'] = "Call Center Attivo";
$text['header-active_call_center']['ka-ge'] = "აქტიური ქოლცენტრი";
$text['header-active_call_center']['nl-nl'] = "Aktieve Callcenter";
$text['header-active_call_center']['pl-pl'] = "Aktywność w Call Center ";
$text['header-active_call_center']['pt-br'] = "Atividade do Call Center";
@@ -956,6 +1102,7 @@ $text['header-active_call_center']['ro-ro'] = "Centru de apeluri activ";
$text['header-active_call_center']['ru-ru'] = "Активный Колл-центр";
$text['header-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['header-active_call_center']['uk-ua'] = "Активний Call Center";
$text['header-active_call_center']['tr-tr'] = "Aktif Çağrı Merkezi";
$text['header-active_call_center']['zh-cn'] = "主动呼叫中心";
$text['header-active_call_center']['ja-jp'] = "アクティブ コール センター";
$text['header-active_call_center']['ko-kr'] = "활성 콜 센터";
@@ -966,20 +1113,23 @@ $text['description-queue']['ar-eg'] = "القائمة الحالية للمتص
$text['description-queue']['de-at'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['de-ch'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['de-de'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['el-gr'] = "Μια τρέχουσα λίστα καλούντων στην ουρά είναι παρακάτω.";
$text['description-queue']['es-cl'] = "Un listado de los llamantes en cola se muestra a continuación.";
$text['description-queue']['es-mx'] = "Un listado de los llamantes en cola se muestra a continuación.";
$text['description-queue']['fr-ca'] = "Liste des appelants dans la file.";
$text['description-queue']['fr-fr'] = "Liste des appelants dans la file.";
$text['description-queue']['he-il'] = "רשימה עדכנית של מתקשרים בתור נמצאת למטה.";
$text['description-queue']['it-it'] = "Sotto, una lista aggiornata dei chiamanti.";
$text['description-queue']['ka-ge'] = "დამრეკების სია რიგში ქვემოთაა";
$text['description-queue']['nl-nl'] = "Een lijst van wachtenden in de wachtrij staat hieronder.";
$text['description-queue']['pl-pl'] = "Aktualna lista rozmówców w kolejce jest poniżej .";
$text['description-queue']['pt-br'] = "Lista atual das chamadas em fila abaixo.";
$text['description-queue']['pt-pt'] = "Lista de chamadas na fila.";
$text['description-queue']['ro-ro'] = "O listă curentă a apelanților din coadă este mai jos.";
$text['description-queue']['ru-ru'] = "Текущий список звонящих в этой очереди ниже.";
$text['description-queue']['sv-se'] = "Aktuell lista på köande samtal enligt nedan ";
$text['description-queue']['sv-se'] = "Aktuell lista med samtal i kö";
$text['description-queue']['uk-ua'] = "Поточний список абонентів у черзі наведено нижче.";
$text['description-queue']['tr-tr'] = "Kuyruktaki arayanların güncel listesi aşağıdadır.";
$text['description-queue']['zh-cn'] = "队列中的当前呼叫者列表如下。";
$text['description-queue']['ja-jp'] = "キュー内の発信者の現在のリストは次のとおりです。";
$text['description-queue']['ko-kr'] = "대기열에 있는 현재 발신자 목록은 다음과 같습니다.";
@@ -990,20 +1140,23 @@ $text['description-agents']['ar-eg'] = "القائمة الحالية للوكل
$text['description-agents']['de-at'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['de-ch'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['de-de'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['el-gr'] = "Μια τρέχουσα λίστα πρακτόρων είναι παρακάτω.";
$text['description-agents']['es-cl'] = "Un listado de los agentes actuales de muestra a continuación.";
$text['description-agents']['es-mx'] = "Un listado de los agentes actuales de muestra a continuación.";
$text['description-agents']['fr-ca'] = "Liste des agents";
$text['description-agents']['fr-fr'] = "Liste des agents";
$text['description-agents']['he-il'] = "רשימה עדכנית של סוכנים נמצאת למטה.";
$text['description-agents']['it-it'] = "Sotto, una lista aggiornata degli agenti.";
$text['description-agents']['ka-ge'] = "ამჟამად აქტიური აგენტები სია ქვემოთაა.";
$text['description-agents']['nl-nl'] = "Een lijst van agenten staat hieronder.";
$text['description-agents']['pl-pl'] = "Aktualna lista agentów jest poniżej ";
$text['description-agents']['pt-br'] = "Lista dos atuais agentes abaixo.";
$text['description-agents']['pt-pt'] = "Lista de agentes.";
$text['description-agents']['ro-ro'] = "O listă curentă a agenților este mai jos.";
$text['description-agents']['ru-ru'] = "Текущий список операторов ниже.";
$text['description-agents']['sv-se'] = "Aktuell lista på Agenter enligt nedan";
$text['description-agents']['sv-se'] = "Aktuell lista med Agenter";
$text['description-agents']['uk-ua'] = "Поточний список агентів наведено нижче.";
$text['description-agents']['tr-tr'] = "Güncel acente listesi aşağıdadır.";
$text['description-agents']['zh-cn'] = "当前的代理列表如下。";
$text['description-agents']['ja-jp'] = "現在のエージェントのリストは以下のとおりです。";
$text['description-agents']['ko-kr'] = "현재 에이전트 목록은 다음과 같습니다.";
@@ -1014,12 +1167,14 @@ $text['description-active_call_center']['ar-eg'] = "حدد قائمة انتظا
$text['description-active_call_center']['de-at'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['de-ch'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['de-de'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['el-gr'] = "Επιλέξτε μια ουρά τηλεφωνικού κέντρου από την παρακάτω λίστα για να δείτε τη δραστηριότητά της.";
$text['description-active_call_center']['es-cl'] = "Seleccione la Cola del Centro de Llamados desde el siguiente listado para ver su actividad.";
$text['description-active_call_center']['es-mx'] = "Seleccione la Cola del Centro de Llamados desde el siguiente listado para ver su actividad.";
$text['description-active_call_center']['fr-ca'] = "Choisir une file d'attente dans la liste pour voir son activité.";
$text['description-active_call_center']['fr-fr'] = "Choisir une file d'attente dans la liste pour voir son activité.";
$text['description-active_call_center']['he-il'] = "בחר תור למוקד טלפוני מהרשימה למטה כדי לראות את הפעילות שלו.";
$text['description-active_call_center']['it-it'] = "Selezionare una Coda di Contact Center per vederne lo stato attuale.";
$text['description-active_call_center']['ka-ge'] = "ქოლცენტრების აქტივობის სანახავად, აირჩიეთ შესაბამისი ქოლცენტრის რიგი ქვედა სიიდან";
$text['description-active_call_center']['nl-nl'] = "Selecteer een Call-Center wachtrij van de onderstaande lijst om de aktiviteiten te zien.";
$text['description-active_call_center']['pl-pl'] = "Aby zobaczyć aktywność kolejki w Call Center wybierz ja z poniższej listy.";
$text['description-active_call_center']['pt-br'] = "Selecione uma fila de Call Center a partir da lista abaixo para ver a sua atividade.";
@@ -1028,6 +1183,7 @@ $text['description-active_call_center']['ro-ro'] = "Selectați o coadă de call
$text['description-active_call_center']['ru-ru'] = "Выберите очередь Колл-центра из списка, чтобы посмотреть ее состояние";
$text['description-active_call_center']['sv-se'] = "Välj en Call Center Grupp från listan nedan för att se dess aktivitet";
$text['description-active_call_center']['uk-ua'] = "Виберіть чергу кол-центру зі списку нижче, щоб переглянути його активність.";
$text['description-active_call_center']['tr-tr'] = "Etkinliğini görüntülemek için aşağıdaki listeden bir Çağrı Merkezi Kuyruğu seçin.";
$text['description-active_call_center']['zh-cn'] = "从下面的列表中选择呼叫中心队列以查看其活动。";
$text['description-active_call_center']['ja-jp'] = "以下のリストからコール センター キューを選択して、そのアクティビティを表示します。";
$text['description-active_call_center']['ko-kr'] = "활동을 보려면 아래 목록에서 콜 센터 대기열을 선택하십시오.";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'Appel Actif";
$apps[$x]['menu'][$y]['title']['he-il'] = "מרכז קריאה פעיל";
$apps[$x]['menu'][$y]['title']['it-it'] = "Call Center Attivi";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "აქტიური ქოლცენტრები";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Aktieve Callcenter";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Aktywność w Call Center ";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Call Center ativos";
+32 -15
View File
@@ -85,36 +85,53 @@
loadXmlHttp.prototype.stateChanged=function () {
var url = new URL(this.xmlHttp.responseURL);
if (/login\.php$/.test(url.pathname)) {
// You are logged out. Stop refresh!
//logged out stop the refresh
if (/login\.php$/.test(url.pathname)) {
url.searchParams.set('path', '<?php echo $_SERVER['REQUEST_URI']; ?>');
window.location.href = url.href;
return;
}
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href))) {
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
}
//link table rows (except the last - the list_control_icons cell) on a table with a class of 'tr_hover', according to the href attribute of the <tr> tag
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
});
}
var requestTime = function() {
var url = 'call_center_active_inc.php?queue_name=<?php echo escape($queue_name); ?>&name=<?php echo urlencode(escape($name)); ?>';
new loadXmlHttp(url, 'ajax_response');
<?php
if (empty($_SESSION["ajax_refresh_rate"])) { $_SESSION["ajax_refresh_rate"] = "1777"; }
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$_SESSION["ajax_refresh_rate"].");";
//determine refresh rate
$refresh_default = 1500; //milliseconds
$refresh = is_numeric($_SESSION['call_center']['refresh']['numeric']) ? $_SESSION['call_center']['refresh']['numeric'] : $refresh_default;
if ($refresh >= 0.5 && $refresh <= 120) { //convert seconds to milliseconds
$refresh = $refresh * 1000;
}
else if ($refresh < 0.5 || ($refresh > 120 && $refresh < 500)) {
$refresh = $refresh_default; //use default
}
else {
//>= 500, must be milliseconds
}
//set the value for the refresh
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$refresh.");";
?>
}
@@ -148,4 +165,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2021
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -38,6 +38,9 @@
exit;
}
//initialize the database object
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -51,7 +54,6 @@
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by queue_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$_SESSION['queues'] = $database->select($sql, $parameters, 'all');
}
@@ -90,10 +92,10 @@
}
//create an event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the call center queue, agent and tiers list
if (!$fp) {
if (!$esl->is_connected()) {
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -117,7 +119,7 @@
//send the event socket command and get the response
//callcenter_config queue list tiers [queue_name] |
$switch_command = 'callcenter_config queue list tiers '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$result = str_to_named_array($event_socket_str, '|');
//prepare the result for array_multisort
@@ -139,7 +141,7 @@
//send the event socket command and get the response
//callcenter_config queue list agents [queue_name] [status] |
$switch_command = 'callcenter_config queue list agents '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$agent_result = str_to_named_array($event_socket_str, '|');
//get the agents from the database
@@ -148,11 +150,11 @@
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by agent_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$_SESSION['agents'] = $database->select($sql, $parameters, 'all');
}
//list the agents
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo "<th>".$text['label-name']."</th>\n";
@@ -160,6 +162,7 @@
echo "<th title=\"".$text['description-status']."\">".$text['label-status']."</th>\n";
echo "<th title=\"".$text['description-state']."\">".$text['label-state']."</th>\n";
echo "<th>".$text['label-status_change']."</th>\n";
echo "<th>".$text['label-last_bridge_end']."</th>\n";
echo "<th class='center'>".$text['label-missed']."</th>\n";
echo "<th class='center'>".$text['label-answered']."</th>\n";
echo "<th>".$text['label-tier_state']."</th>\n";
@@ -218,13 +221,9 @@
$talk_time = $agent_row['talk_time'];
$ready_time = $agent_row['ready_time'];
$last_status_change_seconds = time() - $last_status_change;
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
//format the seconds to hh:mm:ss
$last_status_change_length = format_seconds(time() - $last_status_change);
$last_bridge_end_length = format_seconds(time() - $last_bridge_end);
if (permission_exists('call_center_agent_edit')) {
$list_row_url = "../call_centers/call_center_agent_edit.php?id=".$agent_uuid;
@@ -243,6 +242,7 @@
echo "<td>".escape($status)."</td>\n";
echo "<td>".escape($state)."</td>\n";
echo "<td>".escape($last_status_change_length)."</td>\n";
echo "<td>".escape($last_bridge_end_length)."</td>\n";
echo "<td class='center'>".escape($no_answer_count)."</td>\n";
echo "<td class='center'>".escape($calls_answered)."</td>\n";
echo "<td>".escape($tier_state)."</td>\n";
@@ -271,6 +271,7 @@
} //foreach
} //if
echo "</table>\n\n";
echo "</div>\n";
//add vertical spacing
echo "<br /><br /><br />";
@@ -280,7 +281,7 @@
//callcenter_config queue list members [queue_name]
if (is_uuid($queue_uuid)) {
$switch_command = 'callcenter_config queue list members '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$result = str_to_named_array($event_socket_str, '|');
if (!is_array($result)) { unset($result); }
}
@@ -311,6 +312,7 @@
echo $text['description-queue']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo "<th>".$text['label-time']."</th>\n";
@@ -383,7 +385,8 @@
}
}
echo "</table>\n";
echo "</div>\n";
}
?>
?>
+5 -6
View File
@@ -90,8 +90,7 @@
//run the command
if (isset($switch_command)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$response = event_socket_request($fp, 'api '.$switch_command);
$response = event_socket::api($switch_command);
}
/*
@@ -134,14 +133,14 @@
//fs cmd
if (!empty($switch_cmd)) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//ensure the connection exists
if ($fp) {
if ($esl) {
//send the command
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
//set the user state
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
$response = event_socket::command($cmd);
}
}
}
+4 -2
View File
@@ -87,7 +87,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['header-active_call_center']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['header-active_call_center']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo "<form id='form_search' class='inline' method='get'>\n";
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown='list_search_reset();'>";
@@ -104,6 +104,7 @@
echo $text['description-active_call_center']."\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order);
@@ -150,10 +151,11 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
//show the footer
require_once "resources/footer.php";
?>
?>
+55 -18
View File
@@ -21,6 +21,7 @@
$apps[$x]['description']['fr-fr'] = "Files d'attente d'appels entrants distribu%uFFFDs aux agents disponibles.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "რიგები შემომავალი ზარების სამართავად და ამ ზარების ხელმისაწვდომ აგენტებთან გადასამისამართებლად.";
$apps[$x]['description']['nl-nl'] = "Wachtrijen voor beheer van inkomede gesprekken en routering naar beschikbare agenten.";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "As filas servem para gerenciar as chamadas que entram e encaminhar as mesmas para os agentes disponíveis.";
@@ -35,13 +36,15 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_centers";
$apps[$x]['destinations'][$y]['name'] = "call_centers";
$apps[$x]['destinations'][$y]['sql'] = "select queue_name as name, queue_extension as destination, queue_extension as extension, queue_description as description from v_call_center_queues";
$apps[$x]['destinations'][$y]['sql'] = "select call_center_queue_uuid, call_center_queue_uuid as uuid, queue_name as name, queue_extension as destination, ";
$apps[$x]['destinations'][$y]['sql'] .= "queue_extension as extension, queue_context as context, queue_description as description from v_call_center_queues ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' ";
$apps[$x]['destinations'][$y]['order_by'] = "queue_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(queue_extension) asc";
$apps[$x]['destinations'][$y]['field']['name'] = "queue_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "queue_extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "queue_extension";
$apps[$x]['destinations'][$y]['field']['description'] = "queue_description";
$apps[$x]['destinations'][$y]['field']['destination'] = "extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "extension";
$apps[$x]['destinations'][$y]['field']['description'] = "description";
$apps[$x]['destinations'][$y]['field']['context'] = "context";
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name} \${description}";
@@ -66,6 +69,9 @@
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_center_queue_context";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_center_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
@@ -181,6 +187,46 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "user";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: user (default)";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b8f8a95c-0167-4768-8aab-c386f64bdd06";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "refresh";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1500";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the refresh rate in seconds (<=120) or milliseconds (>=500).";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ca34cbc0-e071-432e-afd6-b587aa52bd85";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "queue_login";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "static";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Agent queue login options: dynamic, static";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1bdf7b53-356f-4a81-85de-eeed4d26b7c5";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "export_vars";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "hold_music";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Pass through hold_music variable.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f7ecaf4b-8228-4f15-9df1-c694a8259aab";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "record_name";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "\${sip_from_user}-\${sip_to_user}-\${strftime(%Y)}\${strftime(%b)}\${strftime(%d)}-\${uuid}.\${record_ext}";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Custom name for call recording. Options: \${record_ext}, \${sip_from_user}, \${sip_to_user}, \${caller_id_number}, \${uuid}";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "4c939d81-7192-4d9a-b7c4-76695a005d4f";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "extension_range";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "400-499";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the suggested extension range(s) for call center queues";
//cache details
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
@@ -456,6 +502,10 @@
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_context";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
@@ -489,14 +539,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_tiers";
$apps[$x]['db'][$y]['table']['parent'] = "";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_center_tier_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_center_tier_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
@@ -532,11 +574,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "call_center_agent_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "agent_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+15 -9
View File
@@ -26,6 +26,16 @@
if ($domains_processed == 1) {
//add the domain_name as the context
$sql = "UPDATE v_call_center_queues as c ";
$sql .= "SET queue_context = ( ";
$sql .= " SELECT domain_name FROM v_domains as d ";
$sql .= " WHERE d.domain_uuid = c.domain_uuid ";
$sql .= ") ";
$sql .= "WHERE queue_context is null; ";
$database->execute($sql);
unset($sql);
//list the missing call center queue and agent uuids
$sql = "select t.call_center_tier_uuid, t.call_center_queue_uuid, t.call_center_agent_uuid, t.queue_name, t.agent_name, d.domain_name, ";
$sql .= "(select call_center_queue_uuid from v_call_center_queues where replace(queue_name, ' ', '-') = t.queue_name and domain_uuid = t.domain_uuid) as queue_uuid, ";
@@ -33,10 +43,9 @@ if ($domains_processed == 1) {
$sql .= "from v_call_center_tiers as t, v_domains as d ";
$sql .= "where t.domain_uuid = d.domain_uuid ";
$sql .= "and (t.call_center_queue_uuid is null or t.call_center_agent_uuid is null) ";
$database = new database;
$tiers = $database->select($sql, null, 'all');
if (!empty($tiers)) {
foreach ($tiers as $index => &$row) {
foreach ($tiers as $index => $row) {
if ($row['call_center_queue_uuid'] == null && $row['queue_uuid'] != null) {
$array['call_center_tiers'][$index]['call_center_queue_uuid'] = $row['queue_uuid'];
}
@@ -49,10 +58,9 @@ if ($domains_processed == 1) {
}
if (!empty($array)) {
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_edit', 'temp');
$database = new database;
$database->app_name = 'call_centers';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array, false);
@@ -72,7 +80,6 @@ if ($domains_processed == 1) {
$sql .= "from v_call_center_queues as q, v_dialplans as dp, v_domains as d ";
$sql .= "where q.domain_uuid = d.domain_uuid ";
$sql .= "and (q.dialplan_uuid = dp.dialplan_uuid or q.dialplan_uuid is null) ";
$database = new database;
$call_center_queues = $database->select($sql, null, 'all');
$id = 0;
if (!empty($call_center_queues)) {
@@ -86,8 +93,8 @@ if ($domains_processed == 1) {
//add the recording path if needed
if ($row['queue_greeting'] != '') {
if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'];
if (file_exists($setting->get('switch','recordings').'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
$queue_greeting_path = $setting->get('switch','recordings').'/'.$row['domain_name'].'/'.$row['queue_greeting'];
}
else {
$queue_greeting_path = trim($row['queue_greeting']);
@@ -161,12 +168,11 @@ if ($domains_processed == 1) {
//save the array to the database
if (!empty($array)) {
//add the dialplan permission
$p = new permissions;
$p = permissions::new();
$p->add("dialplan_add", "temp");
$p->add("dialplan_edit", "temp");
//save to the data
$database = new database;
$database->app_name = 'call_centers';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array, false);
File diff suppressed because it is too large Load Diff
+9 -7
View File
@@ -4,18 +4,19 @@
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['ar-eg'] = "مراكز الاتصال";
$apps[$x]['menu'][$y]['title']['de-at'] = "Callcenter";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['de-de'] = "Callcenter";
$apps[$x]['menu'][$y]['title']['de-at'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['de-de'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Centro de Llamadas";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Centre d' appels";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['he-il'] = "מוקדים טלפוניים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato Agenti";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Call-Centers";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Call Center ";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Call Center";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ქოლცენტრი";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Telefooncentrales";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Centra telefoniczne ";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Centros de chamada";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Centro de Chamadas";
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Centre de apeluri";
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Колл-центр";
@@ -45,6 +46,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "État de l'agent";
$apps[$x]['menu'][$y]['title']['he-il'] = "מצב הסוכן";
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato dell'agente";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "აგენტის სტატუსი";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Agent status";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Status agenta";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Estado do agente";
+35 -110
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -42,36 +42,14 @@
$language = new text;
$text = $language->get();
//connect to the database
$database = new database;
//set the defaults
$agent_id = '';
$agent_name = '';
$agent_password = '';
//check for duplicates
if (!empty($_GET["check"]) && $_GET["check"] == 'duplicate') {
//agent id
if (!empty($_GET["agent_id"])) {
$sql = "select agent_name ";
$sql .= "from v_call_center_agents ";
$sql .= "where agent_id = :agent_id ";
$sql .= "and domain_uuid = :domain_uuid ";
if (!empty($_GET["agent_uuid"]) && is_uuid($_GET["agent_uuid"])) {
$sql .= " and call_center_agent_uuid <> :call_center_agent_uuid ";
$parameters['call_center_agent_uuid'] = $_GET["agent_uuid"];
}
$parameters['agent_id'] = $_GET["agent_id"];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row) && !empty($row['agent_name'])) {
echo $text['message-duplicate_agent_id'].(if_group("superadmin") ? ": ".$row["agent_name"] : null);
}
unset($sql, $parameters);
}
exit;
}
//action add or update
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
$action = "update";
@@ -81,6 +59,14 @@
$action = "add";
}
//get the users array
$sql = "select * from v_users ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by username asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$users = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get http post variables and set them to php variables
if (!empty($_POST)) {
$call_center_agent_uuid = $_POST["call_center_agent_uuid"] ?? null;
@@ -151,15 +137,6 @@
$call_center_agent_uuid = uuid();
}
//get the users array
$sql = "select * from v_users ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by username asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$users = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//change the contact string to loopback - Not recommended added for backwards comptability causes multiple problems
if ($_SESSION['call_center']['agent_contact_method']['text'] == 'loopback') {
$agent_contact = str_replace("user/", "loopback/", $agent_contact);
@@ -193,11 +170,9 @@
}
//save to the data
$database = new database;
$database->app_name = 'call_center';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array);
//$message = $database->message;
//syncrhonize configuration
save_call_center_xml();
@@ -238,37 +213,37 @@
//add the agent
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//add the agent using event socket
if ($fp) {
if ($esl->connected()) {
//add the agent
$cmd = "api callcenter_config agent add ".$call_center_agent_uuid." ".$agent_type;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent add ".$call_center_agent_uuid." '".$agent_type."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set contact
$cmd = "api callcenter_config agent set contact ".$call_center_agent_uuid." ".$agent_contact;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent set contact ".$call_center_agent_uuid." '".$agent_contact."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set status
$cmd = "api callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set reject_delay_time
$cmd = "api callcenter_config agent set reject_delay_time ".$call_center_agent_uuid." ".$agent_reject_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set reject_delay_time '.$call_center_agent_uuid.' '. $agent_reject_delay_time;
$response = event_socket::api($cmd);
usleep(200);
//agent set busy_delay_time
$cmd = "api callcenter_config agent set busy_delay_time ".$call_center_agent_uuid." ".$agent_busy_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set busy_delay_time '.$call_center_agent_uuid.' '.$agent_busy_delay_time;
$response = event_socket::api($cmd);
//agent set no_answer_delay_time
$cmd = "api callcenter_config agent set no_answer_delay_time ".$call_center_agent_uuid." ".$agent_no_answer_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set no_answer_delay_time '.$call_center_agent_uuid.' '.$agent_no_answer_delay_time;
$response = event_socket::api($cmd);
//agent set max_no_answer
$cmd = "api callcenter_config agent set max_no_answer ".$call_center_agent_uuid." ".$agent_max_no_answer;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set max_no_answer '.$call_center_agent_uuid.' '.$agent_max_no_answer;
$response = event_socket::api($cmd);
//agent set wrap_up_time
$cmd = "api callcenter_config agent set wrap_up_time ".$call_center_agent_uuid." ".$agent_wrap_up_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set wrap_up_time '.$call_center_agent_uuid.' '.$agent_wrap_up_time;
$response = event_socket::api($cmd);
}
//redirect the user
@@ -295,7 +270,6 @@
$sql .= "and call_center_agent_uuid = :call_center_agent_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['call_center_agent_uuid'] = $call_center_agent_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row)) {
$call_center_agent_uuid = $row["call_center_agent_uuid"];
@@ -338,47 +312,12 @@
if ($action == "update") {
$document['title'] = $text['title-call_center_agent_edit'];
}
//include the header
require_once "resources/header.php";
//get the list of users for this domain
$sql = "select * from v_users ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and user_enabled = 'true' ";
$sql .= "order by username asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$users = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//javascript to check for duplicates
?>
<script language="javascript">
function check_duplicates() {
//check agent id
var agent_id = document.getElementById('agent_id').value;
$("#duplicate_agent_id_response").load("call_center_agent_edit.php?check=duplicate&agent_id="+agent_id+"&agent_uuid=<?php echo escape($call_center_agent_uuid ?? ''); ?>", function() {
var duplicate_agent_id = false;
if ($("#duplicate_agent_id_response").html() != '') {
$('#agent_id').addClass('formfld_highlight_bad');
display_message($("#duplicate_agent_id_response").html(), 'negative'<?php if (if_group("superadmin")) { echo ', 3000'; } ?>);
duplicate_agent_id = true;
}
else {
$("#duplicate_agent_id_response").html('');
$('#agent_id').removeClass('formfld_highlight_bad');
duplicate_agent_id = false;
}
if (duplicate_agent_id == false) {
document.getElementById('frm').submit();
}
});
}
</script>
<?php
//show the content
echo "<form method='post' name='frm' id='frm' onsubmit='check_duplicates(); return false;'>\n";
echo "<form method='post' name='frm' id='frm' onsubmit=''>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'>";
@@ -396,6 +335,7 @@
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
@@ -403,21 +343,6 @@
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='agent_name' maxlength='255' value=\"".escape($agent_name)."\" />\n";
/*
echo "<select id=\"agent_name\" name=\"agent_name\" class='formfld'>\n";
echo "<option value=\"\"></option>\n";
if (is_array($users)) {
foreach($users as $field) {
if ($field[username] == $agent_name) {
echo "<option value='".escape($field[username])."' selected='selected'>".escape($field[username])."</option>\n";
}
else {
echo "<option value='".escape($field[username])."'>".escape($field[username])."</option>\n";
}
}
}
echo "</select>";
*/
echo "<br />\n";
echo $text['description-agent_name']."\n";
echo "</td>\n";
@@ -466,7 +391,6 @@
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='number' name='agent_id' id='agent_id' maxlength='255' min='1' step='1' value='".escape($agent_id)."'>\n";
echo " <div style='display: none;' id='duplicate_agent_id_response'></div>\n";
echo "<br />\n";
echo $text['description-agent_id']."\n";
echo "</td>\n";
@@ -594,6 +518,7 @@
*/
echo "</table>";
echo "</div>\n";
echo "<br /><br />";
if ($action == "update") {
+37 -23
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -48,7 +48,7 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$tiers = $database->select($sql, $parameters, 'all');
if (empty($tiers)) {
if (!empty($_SESSION['call_center']['queue_login']['text']) && $_SESSION['call_center']['queue_login']['text'] == 'dynamic') {
$per_queue_login = true;
}
else {
@@ -57,7 +57,7 @@
unset($sql, $parameters);
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the agents from the database
$sql = "select * from v_call_center_agents ";
@@ -70,12 +70,12 @@
//get the agent list from event socket
$switch_cmd = 'callcenter_config agent list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$agent_list = csv_to_named_array($event_socket_str, '|');
//get the agent list from event socket
$switch_cmd = 'callcenter_config tier list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
//get the call center queues from the database
@@ -100,7 +100,7 @@
//get the queue list from event socket
$switch_cmd = "callcenter_config queue list agents ".$queue_id;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$queue_list = csv_to_named_array($event_socket_str, '|');
$call_center_queues[$x]['queue_list'] = $queue_list;
$x++;
@@ -165,14 +165,14 @@
foreach($_POST['agents'] as $row) {
if (!empty($row['agent_status'])) {
//agent set status
if ($fp) {
if ($esl->is_connected()) {
//set the user_status
if (!isset($row['queue_name'])) {
$array['users'][0]['user_uuid'] = $row['user_uuid'] ?? null;
$array['users'][0]['user_status'] = $row['agent_status'];
$array['users'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$p = new permissions;
$p = permissions::new();
$p->add('user_edit', 'temp');
$database = new database;
@@ -207,18 +207,28 @@
if (!isset($row['queue_name'])) {
if ($agent_status == "Do Not Disturb") {
//set the default dnd action
$dnd_action = "add";
$dnd_action = "add";
//set the call center status to Logged Out
if (is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
}
if (is_uuid($row['agent_uuid'])) {
$command = "callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
$response = event_socket::api($command);
}
}
else {
if (is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
//set the agent status
$command = "callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
$response = event_socket::api($command);
//set the agent state
if ($agent_status == 'Available' || $agent_status == 'Logged Out') {
$command = "callcenter_config agent set state ".$row['agent_uuid']." 'Waiting'";
$response = event_socket::api($command);
}
}
}
$response = event_socket_request($fp, $command);
}
//echo $command."\n";
@@ -237,22 +247,21 @@
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Available') {
//set the call center status
//$command = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'";
//$response = event_socket_request($fp, $command);
//$response = event_socket::command($command);
//assign the agent to the queue
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
//echo $command."<br />\n";
$response = event_socket_request($fp, $command);
$command = "callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
$response = event_socket::api($command);
}
}
//un-assign the agent from the queue
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Logged Out') {
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
$command = "callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
//echo $command."<br />\n";
$response = event_socket_request($fp, $command);
$response = event_socket::api($command);
}
}
usleep(200);
@@ -339,6 +348,7 @@
echo "<form id='form_list' method='post'>\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo " <th class='pct-20'>".$text['label-agent']."</th>\n";
@@ -348,6 +358,7 @@
echo " <th class='pct-20 hide-sm-dn'>&nbsp;</th>\n";
if ($per_queue_login) {
echo " <th class='pct-40'>".$text['label-options']."</th>\n";
echo " <th class='pct-40' style='width=50%;'>&nbsp</th>\n";
}
echo "</tr>\n";
@@ -356,7 +367,7 @@
foreach ($agents as $row) {
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
$html = "<tr class='list-row'>\n";
$html .= " <td ".$onclick.">".escape($row['agent_name'])."&nbsp;</td>\n";
$html .= " <td style='vertical-align: top;' ".$onclick.">".escape($row['agent_name'])."&nbsp;</td>\n";
if (!$per_queue_login) {
$html .= " <td class='no-wrap'>";
@@ -371,7 +382,7 @@
$html .= " <td ".$onclick." class='hide-sm-dn'>&nbsp;</td>\n";
if ($per_queue_login) {
$html .= " <td class='description'>";
$html .= " <td class='description' style='width: 30%;'>";
if (!empty($row['queues'])) {
$html .= " <table class='list' >\n";
$html .= " <tr>\n";
@@ -400,7 +411,8 @@
$html .= " <input type='hidden' name='agents[".$x."][queue_uuid]' value='".escape($queue['call_center_queue_uuid'])."'>\n";
$html .= " <input type='hidden' name='agents[".$x."][agent_uuid]' value='".escape($row['call_center_agent_uuid'])."'>\n";
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($queue['queue_status'] == 'Available' ? "checked='checked'" : null).">&nbsp;".$text['option-available']."</label>&nbsp;\n";
$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($queue['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($queue['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
//$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($queue['queue_status'] == 'On Break' ? "checked='checked'" : null).">&nbsp;".$text['option-on_break']."</label>\n";
$html .= " </td>\n";
$html .= " </tr>\n";
}
@@ -408,6 +420,7 @@
$html .= " </table>\n";
}
$html .= " </td>\n";
$html .= " <td>&nbsp;&nbsp;&nbsp;</td>\n";
}
$html .= "</tr>\n";
if (count($_SESSION['domains']) > 1) {
@@ -424,6 +437,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
+4 -2
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -138,7 +138,7 @@
//show content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['header-call_center_agents']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['header-call_center_agents']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'call_center_queues.php','style'=>'margin-right: 15px;']);
if (permission_exists('call_center_imports')) {
@@ -184,6 +184,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_center_agent_delete')) {
@@ -277,6 +278,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+307 -213
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2025
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -42,6 +42,10 @@
$language = new text;
$text = $language->get();
//initialize database and settings
$database = database::new();
$settings = new settings(['database' => $database, $_SESSION['domain_uuid'] ?? '', $_SESSION['user_uuid'] ?? '']);
//set the defaults
$queue_name = '';
$queue_extension = '';
@@ -61,21 +65,24 @@
$action = "add";
}
//initialize the destinations object
//get the domain details
$domain_uuid = $_SESSION['domain_uuid'];
$domain_name = $_SESSION['domain_name'];
//initialize the destination object
$destination = new destinations;
//get total call center queues count from the database, check limit, if defined
if ($action == 'add') {
if (!empty($_SESSION['limit']['call_center_queues']['numeric'])) {
if (!empty($settings->get('limit','call_center_queues', ''))) {
$sql = "select count(*) from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$parameters['domain_uuid'] = $domain_uuid;
$total_call_center_queues = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
if ($total_call_center_queues >= $_SESSION['limit']['call_center_queues']['numeric']) {
message::add($text['message-maximum_queues'].' '.$_SESSION['limit']['call_center_queues']['numeric'], 'negative');
if ($total_call_center_queues >= $settings->get('limit','call_center_queues', 0)) {
message::add($text['message-maximum_queues'].' '.$settings->get('limit','call_center_queues', ''), 'negative');
header('Location: call_center_queues.php');
return;
}
@@ -116,6 +123,14 @@
$queue_email_address = $_POST["queue_email_address"] ?? null;
$queue_description = $_POST["queue_description"];
//set the context for users that do not have the permission
if (permission_exists('call_center_queue_context')) {
$queue_context = $_POST["queue_context"];
}
else if ($action == 'add') {
$queue_context = $domain_name;
}
//remove invalid characters
$queue_cid_prefix = str_replace(":", "-", $queue_cid_prefix);
$queue_cid_prefix = str_replace("\"", "", $queue_cid_prefix);
@@ -136,14 +151,13 @@
$sql .= "where t.domain_uuid = :domain_uuid ";
$sql .= "and t.call_center_tier_uuid = :call_center_tier_uuid ";
$sql .= "and t.call_center_queue_uuid = q.call_center_queue_uuid; ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['domain_uuid'] = $domain_uuid;
$parameters['call_center_tier_uuid'] = $call_center_tier_uuid;
$database = new database;
$tiers = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (!empty($tiers)) {
foreach ($tiers as &$row) {
foreach ($tiers as $row) {
$call_center_agent_uuid = $row["call_center_agent_uuid"];
$call_center_queue_uuid = $row["call_center_queue_uuid"];
$queue_extension = $row["queue_extension"];
@@ -152,25 +166,24 @@
//delete the agent from freeswitch
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the agent over event socket
if ($fp) {
if ($esl->is_connected()) {
//callcenter_config tier del [queue_name] [agent_name]
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid)) {
$cmd = "api callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier del ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid;
$response = event_socket::api($cmd);
}
}
//delete the tier from the database
if (!empty($call_center_tier_uuid)) {
$array['call_center_tiers'][0]['call_center_tier_uuid'] = $call_center_tier_uuid;
$array['call_center_tiers'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_center_tiers'][0]['domain_uuid'] = $domain_uuid;
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_delete', 'temp');
$database = new database;
$database->app_name = 'call_centers';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->delete($array);
@@ -187,7 +200,25 @@
if ($action == "update") {
$call_center_queue_uuid = $_POST["call_center_queue_uuid"];
}
//if the user doesn't have the correct permission then
//override domain_uuid and queue_context values
if ($action == 'update' && is_uuid($call_center_queue_uuid)) {
$sql = "select * from v_call_center_queues ";
$sql .= "where call_center_queue_uuid = :call_center_queue_uuid ";
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row)) {
//if (!permission_exists('call_center_queue_domain')) {
// $domain_uuid = $row["domain_uuid"];
//}
if (!permission_exists('call_center_queue_context')) {
$queue_context = $row["queue_context"];
}
}
unset($sql, $parameters, $row);
}
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
@@ -231,9 +262,6 @@
return;
}
//set the domain_uuid
$_POST["domain_uuid"] = $_SESSION["domain_uuid"];
//add the call_center_queue_uuid
if (empty($_POST["call_center_queue_uuid"])) {
$call_center_queue_uuid = uuid();
@@ -252,7 +280,7 @@
foreach ($_POST["call_center_tiers"] as $row) {
//add the domain_uuid
if (empty($row["domain_uuid"])) {
$_POST["call_center_tiers"][$x]["domain_uuid"] = $_SESSION['domain_uuid'];
$_POST["call_center_tiers"][$x]["domain_uuid"] = $domain_uuid;
}
//unset ring_group_destination_uuid if the field has no value
if (empty($row["call_center_agent_uuid"])) {
@@ -271,8 +299,8 @@
//add the recording path if needed
if (!empty($queue_greeting)) {
if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting)) {
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting;
if (file_exists($settings->get('switch','recordings', '').'/'.$domain_name.'/'.$queue_greeting)) {
$queue_greeting_path = $settings->get('switch','recordings', '').'/'.$domain_name.'/'.$queue_greeting;
}
else {
$queue_greeting_path = trim($queue_greeting);
@@ -316,11 +344,12 @@
if (permission_exists('call_center_email_address')) {
$array['call_center_queues'][0]['queue_email_address'] = $queue_email_address;
}
$array['call_center_queues'][0]['queue_context'] = $queue_context;
$array['call_center_queues'][0]['queue_description'] = $queue_description;
$array['call_center_queues'][0]['call_center_queue_uuid'] = $call_center_queue_uuid;
$array['call_center_queues'][0]['dialplan_uuid'] = $dialplan_uuid;
$array['call_center_queues'][0]['domain_uuid'] = $domain_uuid;
$y = 0;
if (!empty($_POST["call_center_tiers"])) {
foreach ($_POST["call_center_tiers"] as $row) {
@@ -335,7 +364,7 @@
$array['call_center_queues'][0]["call_center_tiers"][$y]["call_center_agent_uuid"] = $row['call_center_agent_uuid'];
$array['call_center_queues'][0]["call_center_tiers"][$y]["tier_level"] = $row['tier_level'];
$array['call_center_queues'][0]["call_center_tiers"][$y]["tier_position"] = $row['tier_position'];
$array['call_center_queues'][0]["call_center_tiers"][$y]["domain_uuid"] = $_SESSION['domain_uuid'];
$array['call_center_queues'][0]["call_center_tiers"][$y]["domain_uuid"] = $domain_uuid;
}
$y++;
}
@@ -343,9 +372,9 @@
//add definable export variables can be set in default settings
$export_variables = 'call_center_queue_uuid,sip_h_Alert-Info';
if (!empty($_SESSION['call_center']['export_vars'])) {
foreach ($_SESSION['call_center']['export_vars'] as $export_variable) {
$export_variables .= ','.$export_variable;
if (!empty($settings->get('call_center','export_vars', []))) {
foreach ($settings->get('call_center','export_vars', []) as $export_variable) {
$export_variables .= ','.$export_variable;
}
}
@@ -385,7 +414,7 @@
if (!empty($queue_cc_exit_keys)) {
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".xml::sanitize($queue_cc_exit_keys)."\"/>\n";
}
$dialplan_xml .= " <action application=\"callcenter\" data=\"".xml::sanitize($queue_extension)."@".$_SESSION["domain_name"]."\"/>\n";
$dialplan_xml .= " <action application=\"callcenter\" data=\"".xml::sanitize($queue_extension)."@".$domain_name."\"/>\n";
if ($destination->valid($queue_timeout_app.':'.$queue_timeout_data)) {
$dialplan_xml .= " <action application=\"".xml::sanitize($queue_timeout_app)."\" data=\"".xml::sanitize($queue_timeout_data)."\"/>\n";
}
@@ -393,11 +422,11 @@
$dialplan_xml .= "</extension>\n";
//build the dialplan array
$array['dialplans'][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array['dialplans'][0]["domain_uuid"] = $domain_uuid;
$array['dialplans'][0]["dialplan_uuid"] = $dialplan_uuid;
$array['dialplans'][0]["dialplan_name"] = $queue_name;
$array['dialplans'][0]["dialplan_number"] = $queue_extension;
$array['dialplans'][0]["dialplan_context"] = $_SESSION['domain_name'];
$array['dialplans'][0]["dialplan_context"] = $queue_context;
$array['dialplans'][0]["dialplan_continue"] = "false";
$array['dialplans'][0]["dialplan_xml"] = $dialplan_xml;
$array['dialplans'][0]["dialplan_order"] = "230";
@@ -406,12 +435,11 @@
$array['dialplans'][0]["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
//add the dialplan permission
$p = new permissions;
$p = permissions::new();
$p->add("dialplan_add", "temp");
$p->add("dialplan_edit", "temp");
//save to the data
$database = new database;
$database->app_name = 'call_centers';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array);
@@ -429,7 +457,7 @@
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["domain_name"]);
$cache->delete("dialplan:".$domain_name);
//clear the destinations session array
if (isset($_SESSION['destinations']['array'])) {
@@ -457,9 +485,9 @@
if (!empty($agent_name)) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//add the agent using event socket
if ($fp) {
if ($esl->is_connected()) {
/* syntax:
callcenter_config tier add [queue_name] [agent_name] [level] [position]
callcenter_config tier set state [queue_name] [agent_name] [state]
@@ -468,20 +496,20 @@
*/
//add the agent
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid) && is_numeric($tier_level) && is_numeric($tier_position)) {
$cmd = "api callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier add ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
$response = event_socket::api($cmd);
}
usleep(200);
//agent set level
if (is_numeric($queue_extension) && is_numeric($tier_level)) {
$cmd = "api callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier set level ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid." ".$tier_level;
$response = event_socket::api($cmd);
}
usleep(200);
//agent set position
if (is_numeric($queue_extension) && is_numeric($tier_position)) {
$cmd = "api callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier set position ".$queue_extension."@".$domain_name." ".$tier_position;
$response = event_socket::api($cmd);
}
usleep(200);
}
@@ -508,14 +536,13 @@
$sql = "select * from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and call_center_queue_uuid = :call_center_queue_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['domain_uuid'] = $domain_uuid;
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
$database = new database;
$call_center_queues = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (!empty($call_center_queues)) {
foreach ($call_center_queues as &$row) {
foreach ($call_center_queues as $row) {
$queue_name = $row["queue_name"];
$dialplan_uuid = $row["dialplan_uuid"];
$database_queue_name = $row["queue_name"];
@@ -544,6 +571,7 @@
$queue_announce_frequency = $row["queue_announce_frequency"];
$queue_cc_exit_keys = $row["queue_cc_exit_keys"];
$queue_email_address = $row["queue_email_address"];
$queue_context = $row["queue_context"];
$queue_description = $row["queue_description"];
}
}
@@ -556,19 +584,18 @@
$sql .= "and t.call_center_agent_uuid = a.call_center_agent_uuid ";
$sql .= "and t.domain_uuid = :domain_uuid ";
$sql .= "order by tier_level asc, tier_position asc, a.agent_name asc";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['domain_uuid'] = $domain_uuid;
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid ?? null;
$database = new database;
$tiers = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//add an empty row to the tiers array
if (count($tiers) == 0) {
$rows = $_SESSION['call_center']['agent_add_rows']['numeric'] ?? null;
$rows = $settings->get('call_center','agent_add_rows', null);
$id = 0;
}
if (count($tiers) > 0) {
$rows = $_SESSION['call_center']['agent_edit_rows']['numeric'];
$rows = $settings->get('call_center','agent_edit_rows', null);
$id = count($tiers)+1;
}
for ($x = 0; $x < $rows; $x++) {
@@ -585,14 +612,23 @@
$sql = "select call_center_agent_uuid, agent_name from v_call_center_agents ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by agent_name asc";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$parameters['domain_uuid'] = $domain_uuid;
$agents = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get the sounds
$sounds = new sounds;
$sounds = $sounds->get();
$audio_files[0] = $sounds->get();
unset($sounds);
//get the list of sounds
if (permission_exists('call_center_announce_sound')) {
$sounds = new sounds;
$sounds->sound_types = ['recordings'];
$sounds->full_path = ['recordings'];
$audio_files[1] = $sounds->get();
unset($sounds);
}
//set default values
if (empty($queue_strategy)) { $queue_strategy = "longest-idle-agent"; }
@@ -608,28 +644,12 @@
if (empty($queue_tier_rule_no_agent_no_wait)) { $queue_tier_rule_no_agent_no_wait = "true"; }
if (empty($queue_discard_abandoned_after)) { $queue_discard_abandoned_after = "900"; }
if (empty($queue_abandoned_resume_allowed)) { $queue_abandoned_resume_allowed = "false"; }
if (empty($queue_context)) { $queue_context = $domain_name; }
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by recording_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$recordings = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get the phrases
$sql = "select * from v_phrases ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
$phrases = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//show the header
if ($action == "add") {
$document['title'] = $text['title-call_center_queue_add'];
@@ -644,40 +664,81 @@
$call_center_queue_uuid = null;
}
//option to change select to text
if (if_group("superadmin")) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
//echo " tb.setAttribute('style', 'width: 380px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
}
//set the record_template
$record_template = $settings->get('switch','recordings', '')."/".$domain_name."/archive/";
$record_template .= $settings->get('call_center','record_name', "\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}");
//show the content
if (permission_exists('recording_play') || permission_exists('recording_download')) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " function set_playable(id, audio_selected, audio_type) {\n";
echo " file_ext = audio_selected.split('.').pop();\n";
echo " var mime_type = '';\n";
echo " switch (file_ext) {\n";
echo " case 'wav': mime_type = 'audio/wav'; break;\n";
echo " case 'mp3': mime_type = 'audio/mpeg'; break;\n";
echo " case 'ogg': mime_type = 'audio/ogg'; break;\n";
echo " }\n";
echo " if (mime_type != '' && (audio_type == 'recordings' || audio_type == 'sounds')) {\n";
echo " if (audio_type == 'recordings') {\n";
echo " if (audio_selected.includes('/')) {\n";
echo " audio_selected = audio_selected.split('/').pop()\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('src', '../recordings/recordings.php?action=download&type=rec&filename=' + audio_selected);\n";
echo " }\n";
echo " else if (audio_type == 'sounds') {\n";
echo " $('#recording_audio_' + id).attr('src', '../switch/sounds.php?action=download&filename=' + audio_selected);\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('type', mime_type);\n";
echo " $('#recording_button_' + id).show();\n";
echo " }\n";
echo " else {\n";
echo " $('#recording_button_' + id).hide();\n";
echo " $('#recording_audio_' + id).attr('src','').attr('type','');\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
}
if (if_group("superadmin")) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " var objs;\n";
echo " function toggle_select_input(obj, instance_id){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.className='formfld';\n";
echo " tb.setAttribute('id', instance_id);\n";
echo " tb.setAttribute('style', 'width: ' + obj.offsetWidth + 'px;');\n";
if (!empty($on_change)) {
echo " tb.setAttribute('onchange', \"".$on_change."\");\n";
echo " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'none';\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ replace_element(this.objs, instance_id); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo " replace_element(this.objs, instance_id);\n";
echo " }\n";
echo " function replace_element(obj, instance_id){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'inline';\n";
if (!empty($on_change)) {
echo " ".$on_change.";\n";
}
echo " }\n";
echo "</script>\n";
}
echo "<form name='frm' id='frm' method='post'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
@@ -690,7 +751,7 @@
}
echo "</div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'call_center_queues.php']);
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme','button_icon_back', ''),'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'call_center_queues.php']);
if ($action == "update") {
if (permission_exists('call_center_wallboard')) {
@@ -698,14 +759,15 @@
}
//echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'link'=>'cmd.php?cmd=unload&id='.urlencode($call_center_queue_uuid)]);
//echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'link'=>'cmd.php?cmd=load&id='.urlencode($call_center_queue_uuid)]);
echo button::create(['type'=>'button','label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]);
echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'style'=>'margin-right: 15px;','link'=>PROJECT_PATH.'/app/call_center_active/call_center_active.php?queue_name='.urlencode($call_center_queue_uuid)]);
echo button::create(['type'=>'button','label'=>$text['button-reload'],'icon'=>$settings->get('theme','button_icon_reload', ''),'link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]);
echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>$settings->get('theme','button_icon_view', ''),'style'=>'margin-right: 15px;','link'=>PROJECT_PATH.'/app/call_center_active/call_center_active.php?queue_name='.urlencode($call_center_queue_uuid)]);
}
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$settings->get('theme','button_icon_save', ''),'id'=>'btn_save']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
@@ -723,36 +785,82 @@
echo " ".$text['label-extension']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='number' name='queue_extension' maxlength='255' min='0' step='1' value=\"".escape($queue_extension)."\" required='required'>\n";
echo " <input class='formfld' type='number' name='queue_extension' maxlength='255' min='0' step='1' value=\"".escape($queue_extension)."\" required='required' placeholder=\"".$settings->get('call_center','extension_range', '')."\">\n";
echo "<br />\n";
echo $text['description-extension']."\n";
echo "</td>\n";
echo "</tr>\n";
$instance_id = 'queue_greeting';
$instance_label = 'greeting';
$instance_value = $queue_greeting;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-greeting']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' onclick=\"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));\" style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo "<select name='queue_greeting' class='formfld' style='width: 200px;' ".((if_group("superadmin")) ? "onchange='changeToInput(this);'" : null).">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
foreach($sounds as $key => $value) {
echo "<optgroup label=".$text['label-'.$key].">\n";
$selected = false;
foreach($value as $row) {
if (!empty($queue_greeting) && $queue_greeting == $row["value"]) {
$selected = true;
echo " <option value='".escape($row["value"])."' selected='selected'>".escape($row["name"])."</option>\n";
}
else {
echo " <option value='".escape($row["value"])."'>".escape($row["name"])."</option>\n";
$found = $playable = false;
if (!empty($audio_files[0]) && is_array($audio_files[0]) && @sizeof($audio_files[0]) != 0) {
foreach ($audio_files[0] as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $settings->get('switch','recordings', '')."/".$domain_name.'/'.$row["value"]) &&
file_exists($settings->get('switch','recordings', '')."/".$domain_name.'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
echo "</optgroup>\n";
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$settings->get('theme','button_icon_play', ''),'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-greeting']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
@@ -913,10 +1021,9 @@
echo " ".$text['label-record_template']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}";
echo " <select class='formfld' name='queue_record_template'>\n";
if (!empty($queue_record_template)) {
echo " <option value='".escape($queue_record_template)."' selected='selected' >".$text['option-true']."</option>\n";
echo " <option value='".escape($record_template)."' selected='selected' >".$text['option-true']."</option>\n";
}
else {
echo " <option value='".escape($record_template)."'>".$text['option-true']."</option>\n";
@@ -1184,103 +1291,76 @@
}
if (permission_exists('call_center_announce_sound')) {
$instance_id = 'queue_announce_sound';
$instance_label = 'caller_announce_sound';
$instance_value = $queue_announce_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-caller_announce_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' onclick=\"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));\" style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
$destination_id = "queue_announce_sound";
$script = "<script>\n";
$script .= "var objs;\n";
$script .= "\n";
$script .= "function changeToInput".$destination_id."(obj){\n";
$script .= " tb=document.createElement('INPUT');\n";
$script .= " tb.type='text';\n";
$script .= " tb.name=obj.name;\n";
$script .= " tb.className='formfld';\n";
$script .= " tb.setAttribute('id', '".$destination_id."');\n";
$script .= " tb.setAttribute('style', '".!empty($select_style)."');\n";
if (!empty($on_change)) {
$script .= " tb.setAttribute('onchange', \"".$on_change."\");\n";
$script .= " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
$script .= " tb.value=obj.options[obj.selectedIndex].value;\n";
$script .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
$script .= " tbb=document.createElement('INPUT');\n";
$script .= " tbb.setAttribute('class', 'btn');\n";
$script .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
$script .= " tbb.type='button';\n";
$script .= " tbb.value=$('<div />').html('&#9665;').text();\n";
$script .= " tbb.objs=[obj,tb,tbb];\n";
$script .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
$script .= " obj.parentNode.insertBefore(tb,obj);\n";
$script .= " obj.parentNode.insertBefore(tbb,obj);\n";
$script .= " obj.parentNode.removeChild(obj);\n";
$script .= " Replace".$destination_id."(this.objs);\n";
$script .= "}\n";
$script .= "\n";
$script .= "function Replace".$destination_id."(obj){\n";
$script .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
$script .= " obj[0].parentNode.removeChild(obj[1]);\n";
$script .= " obj[0].parentNode.removeChild(obj[2]);\n";
$script .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
if (!empty($on_change)) {
$script .= " ".$on_change.";\n";
}
$script .= "}\n";
$script .= "</script>\n";
$script .= "\n";
echo $script;
echo "<select name='queue_announce_sound' id='queue_announce_sound' class='formfld'>\n";
echo " <option></option>\n";
//recordings
$tmp_selected = false;
if (!empty($recordings)) {
echo "<optgroup label='Recordings'>\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
if (!empty($queue_announce_sound) && $queue_announce_sound == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename) {
$tmp_selected = true;
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else if (!empty($queue_announce_sound) && $queue_announce_sound == $recording_filename) {
$tmp_selected = true;
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else {
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."'>".escape($recording_name)."</option>\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files[1]) && is_array($audio_files[1]) && @sizeof($audio_files[1]) != 0) {
foreach ($audio_files[1] as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $settings->get('switch','recordings', '')."/".$domain_name.'/'.$row["value"]) &&
file_exists($settings->get('switch','recordings', '')."/".$domain_name.'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
echo "</optgroup>\n";
}
if (!$tmp_selected && !empty($queue_announce_sound)) {
echo "<optgroup label='Selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$queue_announce_sound)) {
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
else if (substr($queue_announce_sound, -3) == "wav" || substr($queue_announce_sound, -3) == "mp3") {
echo " <option value='".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
else {
echo " <option value='".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
echo "</optgroup>\n";
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($tmp_selected);
unset($selected);
echo " </select>\n";
echo "<input type='button' id='btn_select_to_input_".escape($destination_id)."' class='btn' name='' alt='back' onclick='changeToInput".escape($destination_id)."(document.getElementById(\"".escape($destination_id)."\"));this.style.visibility = \"hidden\";' value='&#9665;'>";
unset($destination_id);
echo " <br />\n";
echo $text['description-caller_announce_sound']."\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$settings->get('theme','button_icon_play', ''),'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
}
@@ -1322,6 +1402,19 @@
echo "</tr>\n";
}
if (permission_exists('call_center_queue_context')) {
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-context']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='queue_context' maxlength='255' value=\"".escape($queue_context)."\" required='required'>\n";
echo "<br />\n";
echo $text['description-enter-context']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-description']."\n";
@@ -1334,6 +1427,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br><br>";
if ($action == "update") {
+6 -3
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2020
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -79,6 +79,7 @@
//get http variables and set as php variables
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'queue_extension' ? 'natural' : null;
//add the search term
$search = strtolower($_GET["search"] ?? '');
@@ -117,7 +118,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql ?? '');
$sql .= order_by($order_by, $order, 'queue_name', 'asc');
$sql .= order_by($order_by, $order, 'queue_name', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$result = $database->select($sql, $parameters ?? null, 'all');
@@ -133,7 +134,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_center_imports')) {
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'link'=>PROJECT_PATH.'/app/call_center_imports/call_center_imports.php?import_type=call_center_queues']);
@@ -191,6 +192,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) {
@@ -279,6 +281,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+22 -21
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -39,19 +39,9 @@
//get the variables
$cmd = $_GET['cmd'];
//pre-populate the form
if (!empty($_GET) && is_array($_GET) && is_uuid($_GET["id"]) && (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true")) {
$call_center_queue_uuid = $_GET["id"];
$sql = "select queue_extension from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and call_center_queue_uuid = :call_center_queue_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
$database = new database;
$queue_extension = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
}
$call_center_queue_uuid = $_GET["id"];
$agent_uuid = $_GET['agent_uuid'];
$agent_status = $_GET['agent_status'];
//validate the variables
switch ($cmd) {
@@ -68,13 +58,24 @@
unset($cmd);
}
//connect to event socket
//get the queue extension
if (is_uuid($call_center_queue_uuid)) {
$sql = "select queue_extension from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and call_center_queue_uuid = :call_center_queue_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
$database = new database;
$queue_extension = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
}
//run call center commands load, unload or reload
if (isset($queue_extension) && isset($cmd)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$response = event_socket_request($fp, 'api reloadxml');
$response = event_socket_request($fp, 'api callcenter_config queue '.$cmd. ' '.$queue_extension."@".$_SESSION["domain_name"]);
fclose($fp);
$event_socket = event_socket::create();
if ($event_socket->is_connected()) {
$response = event_socket::api('reloadxml');
$response = event_socket::api('callcenter_config queue '.$cmd.' '.$queue_extension.'@'.$_SESSION['domain_name']);
}
else {
$response = '';
@@ -85,4 +86,4 @@
$_SESSION["message"] = $response;
header("Location: call_center_queues.php?savemsg=".urlencode($response));
?>
?>
@@ -78,7 +78,7 @@
$array['dialplan_details'][0]['domain_uuid'] = $this->domain_uuid;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_delete', 'temp');
$p->add('dialplan_detail_delete', 'temp');
@@ -216,7 +216,7 @@
$array["dialplans"][0] = $dialplan;
//add temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add("dialplan_add", 'temp');
$p->add("dialplan_detail_add", 'temp');
$p->add("dialplan_edit", 'temp');
@@ -242,7 +242,7 @@
$array['call_center_queues'][0]['dialplan_uuid'] = $this->dialplan_uuid;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('call_center_queue_edit', 'temp');
//execute update
@@ -338,18 +338,18 @@
if (is_array($array) && @sizeof($array) != 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the queue in the switch
if ($fp) {
if ($esl->is_connected()) {
foreach ($uuids as $uuid) {
$cmd = "api callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION["domain_name"];
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION['domain_name'];
$response = event_socket::api($cmd);
}
}
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_delete', 'temp');
$p->add('dialplan_delete', 'temp');
$p->add('dialplan_detail_delete', 'temp');
@@ -436,18 +436,17 @@
if (is_array($array) && @sizeof($array) != 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the agent in the switch
if ($fp) {
if ($esl->is_connected()) {
foreach ($uuids as $uuid) {
$cmd = "api callcenter_config agent del ".$uuid;
$response = event_socket_request($fp, $cmd);
event_socket::async("callcenter_config agent del $uuid");
}
}
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_delete', 'temp');
//execute delete
@@ -579,7 +578,7 @@
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_add', 'temp');
$p->add('dialplan_add', 'temp');
@@ -627,4 +626,4 @@ $c->queue_cc_exit_keys = "";
$c->dialplan();
*/
?>
?>
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2017-2019
Portions created by the Initial Developer are Copyright (C) 2017-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -42,8 +42,8 @@
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_centers');
//get http variables and set as php variables
$order_by = $_GET["order_by"];
$order = $_GET["order"];
$order_by = $_GET["order_by"] ?? null;
$order = $_GET["order"] ?? null;
//connect to the database
if (!isset($database)) {
@@ -51,40 +51,77 @@
}
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the http post values and set them as php variables
if (count($_POST) > 0) {
if (!empty($_POST['agents'])) {
//get the agent id
if (is_uuid($_POST['agents'][0]['id'])) {
$agent_uuid = $_POST['agents'][0]['id'];
}
//get the agent details from event socket
if (is_uuid($agent_uuid)) {
$switch_cmd = 'callcenter_config agent list '.$agent['call_center_agent_uuid'];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$call_center_agent = csv_to_named_array($event_socket_str, '|');
$agent['agent_status'] = $call_center_agent[1]['status'];
}
//find the agent_status - used for mod_call_center as there is only one agent status not one per queue
$agent_status = 'Logged Out';
foreach ($_POST['agents'] as $row) {
if (!empty($row['agent_status'])) {
//agent set status
if ($fp) {
// update the database
$array['call_center_agents'][0]['call_center_agent_uuid'] = $row['id'];
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
$array['call_center_agents'][0]['agent_status'] = $row['agent_status'];
$database->app_name = 'call_centers_dashboard';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array);
if ($row['agent_status'] == 'Available') {
$agent_status = 'Available';
break;
}
if ($row['agent_status'] == 'On Break') {
$agent_status = 'On Break';
break;
}
}
//set the call center status
$cmd = "api callcenter_config agent set status ".$row['id']." '".$row['agent_status']."'";
$response = event_socket_request($fp, $cmd);
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'Available') {
//assign the agent to the queue
$cmd = "api callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket_request($fp, $cmd);
}
//save the agent_stat change to the database
$array['call_center_agents'][0]['call_center_agent_uuid'] = $agent_uuid;
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
$array['call_center_agents'][0]['agent_status'] = $agent_status;
$database->app_name = 'call_centers_dashboard';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$result = $database->save($array);
//un-assign the agent from the queue
if ($row['agent_status'] == 'Logged Out') {
$cmd = "api callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
$response = event_socket_request($fp, $cmd);
}
usleep(200);
unset($parameters);
}
//send the agent status status to mod_call_center
$cmd = "callcenter_config agent set status ".$agent_uuid." '".$agent_status."'";
$response = event_socket::api($cmd);
//add or delete agents from the queue assigned by the tier
foreach ($_POST['agents'] as $row) {
//agent set status
if ($fp && is_numeric($row['queue_extension']) && is_uuid($row['id'])) {
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'Available') {
//assign the agent to the queue
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket::api($cmd);
}
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'On Break') {
//assign the agent to the queue
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket::api($cmd);
}
//un-assign the agent from the queue
if ($row['agent_status'] == 'Logged Out') {
$cmd = "callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
$response = event_socket::api($cmd);
}
//small sleep
usleep(200);
}
}
@@ -95,18 +132,9 @@
//get the agent list from event socket
$switch_cmd = 'callcenter_config tier list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
//get the call center queues from the database
$sql = "select * from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by queue_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$call_center_queues = $database->select($sql, $parameters, 'all');
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
unset($sql, $parameters);
//get the agents from the database
$sql = "select * from v_call_center_agents ";
$sql .= "where user_uuid = :user_uuid ";
@@ -114,21 +142,47 @@
$parameters['user_uuid'] = $_SESSION['user_uuid'];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$agents = $database->select($sql, $parameters, 'all');
if (count($agents) > 0) {
if (!empty($agents)) {
$agent = $agents[0];
}
unset($sql, $parameters);
//get the call center queues from the database
if (!empty($_SESSION['call_center']['queue_login']['text']) && $_SESSION['call_center']['queue_login']['text'] == 'dynamic') {
$sql = "select * from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and call_center_queue_uuid in ( ";
$sql .= " select call_center_queue_uuid from v_call_center_tiers ";
$sql .= " where call_center_agent_uuid = :call_center_agent_uuid ";
$sql .= ") ";
$parameters['call_center_agent_uuid'] = $agent['call_center_agent_uuid'];
$sql .= "order by queue_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$call_center_queues = $database->select($sql, $parameters, 'all');
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
unset($sql, $parameters);
}
//get the agent details from event socket
$switch_cmd = 'callcenter_config agent list '.($agent['call_center_agent_uuid'] ?? null);
$event_socket_str = trim(event_socket_request($fp ?? null, 'api '.$switch_cmd));
$call_center_agent = csv_to_named_array($event_socket_str, '|');
//set the agent status
$agent['agent_status'] = $call_center_agent[1]['status'];
//update the queue status
$x = 0;
foreach ($call_center_queues as $queue) {
$call_center_queues[$x]['queue_status'] = 'Logged Out';
foreach ($call_center_tiers as $tier) {
if ($queue['queue_extension'] .'@'. $_SESSION['user']['domain_name'] == $tier['queue'] && $agent['call_center_agent_uuid'] == $tier['agent']) {
$call_center_queues[$x]['queue_status'] = $agent['agent_status'];
if (!empty($call_center_queues) && is_array($call_center_queues)) {
foreach ($call_center_queues as $queue) {
$call_center_queues[$x]['queue_status'] = 'Logged Out';
foreach ($call_center_tiers as $tier) {
if ($queue['queue_extension'] .'@'. $_SESSION['user']['domain_name'] == $tier['queue'] && $agent['call_center_agent_uuid'] == $tier['agent']) {
$call_center_queues[$x]['queue_status'] = $agent['agent_status'];
}
}
$x++;
}
$x++;
}
//includes the header
@@ -136,12 +190,15 @@
//radio button cycle script
echo "<script>\n";
echo "\n";
echo " function get_selected(radio_group) {\n";
echo " for (var i = 0; i < radio_group.length; i++) {\n";
echo " if (radio_group[i].checked) { return i; }\n";
echo " }\n";
echo " return 0;\n";
echo " }\n";
echo "\n";
echo " function cycle(radio_group_name) {\n";
echo " var radios = document.getElementsByName(radio_group_name);\n";
@@ -153,13 +210,58 @@
echo " radios[i+1].checked = true;\n";
echo " }\n";
echo " }\n";
echo "\n";
echo " function handle_status_change(agent_index) {\n";
echo " var agent_status = document.querySelector('input[name=\"agents[' + agent_index + '][agent_status]\"]:checked').value;\n";
echo " var radio_buttons = document.querySelectorAll('#form_list_call_center_agent_dashboard input[type=\"radio\"]');\n";
//echo "console.log('status: '+agent_status);\n";
//echo " radio_checked_value = '';\n";
echo " radio_buttons.forEach(function(radio_button) {\n";
//echo " if (radio_button.checked == true && radio_button.value === 'Available') {\n";
//echo " radio_checked_value = 'Available';\n";
//echo " }\n";
//echo " if (radio_button.checked == true && radio_button.value === 'On Break') {\n";
//echo " radio_checked_value = 'On Break';\n";
//echo " }\n";
//echo " if (radio_button.value === 'Logged Out') {\n";
//echo " radio_checked_value = 'Logged Out';\n";
//echo " }\n";
echo " if (radio_button.checked) { console.log('checked: '+radio_button.value) }\n";
echo " if (radio_button.value === 'Available' && agent_status === 'Available') {\n"; // radio_checked_value == 'On Break' &&
//echo " radio_button.checked = true;\n";
//echo " radio_button.value = 'Available';\n";
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
//echo " console.log('--'+radio_button.value+'--');\n";
//echo " console.log('need to change status On Break to Available');\n";
//echo " console.log('---');\n";
echo " }\n";
echo " if (radio_button.value === 'On Break' && agent_status === 'On Break') {\n"; // radio_checked_value == 'Available' &&
//echo " radio_button.checked = true;\n";
//echo " radio_button.value = 'On Break';\n";
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
//echo " console.log('--'+radio_button.value+'--');\n";
//echo " console.log('need to change status Available to On Break');\n";
//echo " console.log('---');\n";
echo " }\n";
//echo " console.log('checked: '+radio_button.checked+' value:'+radio_button.value);\n";
//echo " console.log('radio checked value: '+ radio_checked_value +' checked: '+radio_button.checked+' value:'+radio_button.value);\n";
//else if (agent_status === 'Available') {\n";
//echo " radio_button.checked = true;\n";
//echo " }\n";
echo " });\n";
echo " }\n";
echo "\n";
echo "</script>\n";
//show the content
echo "<div class='action_bar sub'>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues'].($agent['agent_name'] != '' ? "&nbsp;&nbsp;&nbsp;</b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues'].(!empty($agent['agent_name']) ? "&nbsp;&nbsp;&nbsp;</b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"list_form_submit('form_list_call_center_agent_dashboard');"]);
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"document.getElementById('form_list_call_center_agent_dashboard').submit();"]);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
@@ -170,34 +272,25 @@
echo "<tr class='list-header'>\n";
echo " <th>".$text['label-queue_name']."</th>\n";
echo " <th class='shrink'>".$text['label-status']."</th>\n";
// echo " <th>".$text['label-options']."</th>\n";
echo "</tr>\n";
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
if (!empty($call_center_queues) && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
$x = 0;
foreach ($call_center_queues as $row) {
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
$onclick = '';
echo "<tr class='list-row'>\n";
echo " <td ".$onclick.">".escape($row['queue_name'])."</td>\n";
// echo " <td>";
// if ($row['queue_status'] == "Available") {
// echo $text['option-available'];
// }
// if ($row['queue_status'] == "Logged Out") {
// echo $text['option-logged_out'];
// }
// echo " </td>\n";
echo " <td class='no-wrap right'>\n";
echo " <input type='hidden' name='agents[".$x."][queue_extension]' value='".escape($row['queue_extension'])."'>\n";
echo " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($agent['agent_name'])."'>\n";
echo " <input type='hidden' name='agents[".$x."][id]' value='".escape($agent['call_center_agent_uuid'])."'>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null).">&nbsp;".$text['option-available']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null).">&nbsp;".$text['option-on_break']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-available']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-logged_out']."</label>\n";
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-on_break']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
$x++;
}
unset($call_center_queues);
}
@@ -2,7 +2,7 @@
$array['dashboard'][$x]['dashboard_uuid'] = '9083305a-ebb4-4b67-bb9b-8c09cf030261';
$array['dashboard'][$x]['dashboard_name'] = 'Call Center Agents';
$array['dashboard'][$x]['dashboard_path'] = 'app/call_centers/resources/dashboard/call_center_agents.php';
$array['dashboard'][$x]['dashboard_path'] = 'call_centers/call_center_agents';
$array['dashboard'][$x]['dashboard_order'] = '180';
$array['dashboard'][$x]['dashboard_enabled'] = 'false';
$array['dashboard'][$x]['dashboard_description'] = 'Status for agent in a call center.';
@@ -31,11 +31,11 @@
}
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the agent list from event socket
$switch_cmd = 'callcenter_config agent list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$agent_list = csv_to_named_array($event_socket_str, '|');
//get the agents from the database
@@ -69,7 +69,7 @@
}
//build the event
if ($fp) {
if ($esl->is_connected()) {
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: agent\n";
$event .= "from: ".$row['agent_name']."@".$row['domain_name']."\n";
@@ -104,16 +104,13 @@
}
//send the event
$result = event_socket_request($fp, $event);
$result = event_socket::command($event);
if (isset($debug)) {
print_r($result, false);
}
}
//close event socket connection
fclose($fp);
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_centers/resources/jobs/call_center_agents.php
*/
+132
View File
@@ -0,0 +1,132 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
//check permisions
if (permission_exists('recording_play')) {
//access granted
}
else {
echo "access denied";
exit;
}
//create the waveform file
if ($_GET['id'] && !empty($_GET['data']) && !empty($_GET['type'])) {
//determine path of audio file by type
if ($_GET['type'] == 'recordings') {
$slash = substr($_GET['data'],0,1) != '/' ? '/' : null;
$full_file_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].$slash.str_replace($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'], '', $_GET['data']);
}
else if ($_GET['type'] == 'sounds') {
//get first installed language (like en/us/callie)
$language_paths = glob($_SESSION["switch"]['sounds']['dir']."/*/*/*");
foreach ($language_paths as $key => $path) {
$path = str_replace($_SESSION["switch"]['sounds']['dir'].'/', "", $path);
$path_array = explode('/', $path);
if (count($path_array) <> 3 || strlen($path_array[0]) <> 2 || strlen($path_array[1]) <> 2) {
unset($language_paths[$key]);
}
$language_paths[$key] = str_replace($_SESSION["switch"]['sounds']['dir']."/","",$language_paths[$key] ?? '');
if (empty($language_paths[$key])) {
unset($language_paths[$key]);
}
}
$language_path = $language_paths[0];
//determine the path for sound file
$filename_parts = explode('/', str_replace('..', '', $_GET['data']));
if (!is_array($filename_parts) || @sizeof($filename_parts) != 2) { exit; }
$path = $_SESSION['switch']['sounds']['dir'].'/'.$language_path.'/'.$filename_parts[0].'/8000/';
//build full path to sound file
$full_file_path = $path.$filename_parts[1];
}
//stream waveform file
if (file_exists($full_file_path)) {
//temporary waveform image filename
$temp_filename = 'waveform_'.$_GET['id'].'_'.rand(0000,9999).'.png';
//create temporary waveform image, if doesn't exist
if (file_exists($temp_filename)) {
$wf = true;
}
else {
//create temporary waveform image
$waveform = new Waveform($full_file_path);
Waveform::$linesPerPixel = 1; // default: 8
Waveform::$samplesPerLine = 512; // default: 512
Waveform::$colorA = !empty($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) : [32,134,37,0.6]; // array rgba, left (a-leg) wave color
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
//stream image to browser
if ($wf === true && file_exists($temp_filename)) {
ob_clean();
$fd = fopen($temp_filename, 'rb');
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Type: image/png");
header('Content-Disposition: attachment; filename="'.$temp_filename.'"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".filesize($temp_filename));
ob_clean();
fpassthru($fd);
}
}
//delete temp waveform image
@unlink($temp_filename);
}
?>
+16 -5
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "გადართეთ ზარები ორ დანიშნულებას შორის სპეციალური კოდის აკრეფით.";
$apps[$x]['description']['nl-nl'] = "Directe oproepen tussen twee bestemmingen via een feature code.";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
@@ -34,9 +35,9 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_flows";
$apps[$x]['destinations'][$y]['name'] = "call_flows";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid, call_flow_uuid as uuid, call_flow_extension as destination, call_flow_extension as extension, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(call_flow_extension) asc";
$apps[$x]['destinations'][$y]['field']['call_flow_uuid'] = "call_flow_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "call_flow_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
@@ -49,9 +50,9 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_flows";
$apps[$x]['destinations'][$y]['name'] = "call_flows";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as extension, call_flow_feature_code as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_extension asc";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid, call_flow_uuid as uuid, call_flow_feature_code as extension, call_flow_feature_code as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_feature_code is not null and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(call_flow_feature_code) asc";
$apps[$x]['destinations'][$y]['field']['uuid'] = "uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "name";
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
@@ -91,6 +92,16 @@
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
//default settings
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "425b6aed-5039-490a-ba31-e49aa57b5902";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_flow";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "extension_range";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "30-39";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the suggested extension range(s) for call flows";
//cache details
$apps[$x]['cache']['key'] = "dialplan.\${call_flow_context}";
-1
View File
@@ -28,7 +28,6 @@
if ($domains_processed == 1) {
//update the dialplan order
$database = new database;
$sql = "update v_call_flows set call_flow_enabled = 'true' where call_flow_enabled is null;\n";
$database->execute($sql);
unset($sql);
+110 -5
View File
@@ -6,12 +6,14 @@ $text['title-call_flows']['ar-eg'] = "تدفق المكالمات";
$text['title-call_flows']['de-at'] = "Anruf Steuerung";
$text['title-call_flows']['de-ch'] = "Anruf Steuerung";
$text['title-call_flows']['de-de'] = "Anruf Steuerung";
$text['title-call_flows']['el-gr'] = "Ροές κλήσεων";
$text['title-call_flows']['es-cl'] = "Flujo de Llamada";
$text['title-call_flows']['es-mx'] = "Flujo de Llamada";
$text['title-call_flows']['fr-ca'] = "Flux d'appel";
$text['title-call_flows']['fr-fr'] = "Flux d'appel";
$text['title-call_flows']['he-il'] = "התקשר זרימות";
$text['title-call_flows']['it-it'] = "Deviatori di Chiamata";
$text['title-call_flows']['ka-ge'] = "ზარების ნაკადის მართვა";
$text['title-call_flows']['nl-nl'] = "Oproep besturing";
$text['title-call_flows']['pl-pl'] = "Przepływ rozmów";
$text['title-call_flows']['pt-br'] = "Fluxo de chamadas";
@@ -20,6 +22,7 @@ $text['title-call_flows']['ro-ro'] = "Fluxuri de apeluri";
$text['title-call_flows']['ru-ru'] = "Переключатели вызовов";
$text['title-call_flows']['sv-se'] = "Samtalsflöden";
$text['title-call_flows']['uk-ua'] = "Потоки дзвінків";
$text['title-call_flows']['tr-tr'] = "Çağrı Akışları";
$text['title-call_flows']['zh-cn'] = "通话流程";
$text['title-call_flows']['ja-jp'] = "コール フロー";
$text['title-call_flows']['ko-kr'] = "통화 흐름";
@@ -30,12 +33,14 @@ $text['title-call_flow']['ar-eg'] = "تدفق الدعوة من";
$text['title-call_flow']['de-at'] = "Anruf Steuerung";
$text['title-call_flow']['de-ch'] = "Anruf Steuerung";
$text['title-call_flow']['de-de'] = "Anruf Steuerung";
$text['title-call_flow']['el-gr'] = "Ροή κλήσης";
$text['title-call_flow']['es-cl'] = "Flujo de Llamada";
$text['title-call_flow']['es-mx'] = "Flujo de Llamada";
$text['title-call_flow']['fr-ca'] = "Editer le flux";
$text['title-call_flow']['fr-fr'] = "Editer le flux";
$text['title-call_flow']['he-il'] = "تدفق الدعوة من";
$text['title-call_flow']['it-it'] = "Flusso chiamate";
$text['title-call_flow']['ka-ge'] = "ზარის მიმდინარეობის მართვა";
$text['title-call_flow']['nl-nl'] = "Oproep besturing";
$text['title-call_flow']['pl-pl'] = "Przepływ rozmów";
$text['title-call_flow']['pt-br'] = "Fluxo de chamada";
@@ -44,6 +49,7 @@ $text['title-call_flow']['ro-ro'] = "Flux de apeluri";
$text['title-call_flow']['ru-ru'] = "Переключатель вызовов";
$text['title-call_flow']['sv-se'] = "Samtalsflöde";
$text['title-call_flow']['uk-ua'] = "Потік дзвінків";
$text['title-call_flow']['tr-tr'] = "Çağrı akışı";
$text['title-call_flow']['zh-cn'] = "通话流程";
$text['title-call_flow']['ja-jp'] = "通話の流れ";
$text['title-call_flow']['ko-kr'] = "통화 흐름";
@@ -54,12 +60,14 @@ $text['title-call_flow_extension']['ar-eg'] = "تدفقات المكالمات -
$text['title-call_flow_extension']['de-at'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['de-ch'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['de-de'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['el-gr'] = "Ροές κλήσεων - Επέκταση";
$text['title-call_flow_extension']['es-cl'] = "Flujo de Llamada - Destino";
$text['title-call_flow_extension']['es-mx'] = "Flujo de Llamada - Destino";
$text['title-call_flow_extension']['fr-ca'] = "Flux d'appel - Destination";
$text['title-call_flow_extension']['fr-fr'] = "Flux d'appel - Destination";
$text['title-call_flow_extension']['he-il'] = "זרימות שיחות - הרחבה";
$text['title-call_flow_extension']['it-it'] = "Deviatori di Chiamata - Destinazione";
$text['title-call_flow_extension']['ka-ge'] = "ზარების მიმართულება - ნომერი";
$text['title-call_flow_extension']['nl-nl'] = "Oproep besturing - Bestemming";
$text['title-call_flow_extension']['pl-pl'] = "Przepływ rozmów - Destynacja";
$text['title-call_flow_extension']['pt-br'] = "Fluxo de chamadas - Destino";
@@ -68,6 +76,7 @@ $text['title-call_flow_extension']['ro-ro'] = "Fluxuri de apeluri - Extensie";
$text['title-call_flow_extension']['ru-ru'] = "Переключатели вызовов - Направление";
$text['title-call_flow_extension']['sv-se'] = "Samtalsflöden - Destination";
$text['title-call_flow_extension']['uk-ua'] = "Потоки дзвінків - Номер";
$text['title-call_flow_extension']['tr-tr'] = "Çağrı Akışları - Uzantı";
$text['title-call_flow_extension']['zh-cn'] = "呼叫流程 - 分机";
$text['title-call_flow_extension']['ja-jp'] = "コール フロー - 内線番号";
$text['title-call_flow_extension']['ko-kr'] = "통화 흐름 - 내선";
@@ -78,12 +87,14 @@ $text['title-call_flow_feature']['ar-eg'] = "تدفقات المكالمات -
$text['title-call_flow_feature']['de-at'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['de-ch'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['de-de'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['el-gr'] = "Ροές κλήσεων - Δυνατότητα";
$text['title-call_flow_feature']['es-cl'] = "Flujo de Llamada - distintivo";
$text['title-call_flow_feature']['es-mx'] = "Flujo de Llamada - distintivo";
$text['title-call_flow_feature']['fr-ca'] = "Flux d'appel - Fonction";
$text['title-call_flow_feature']['fr-fr'] = "Flux d'appel - Fonction";
$text['title-call_flow_feature']['he-il'] = "זרימות שיחות - תכונה";
$text['title-call_flow_feature']['it-it'] = "Deviatori di Chiamata ";
$text['title-call_flow_feature']['ka-ge'] = "ზარების მიმდინარეობა - ფუნქციის კოდი";
$text['title-call_flow_feature']['nl-nl'] = "Oproep besturing - Functie";
$text['title-call_flow_feature']['pl-pl'] = "Przepływ rozmów ";
$text['title-call_flow_feature']['pt-br'] = "Fluxo de chamadas - Função";
@@ -92,6 +103,7 @@ $text['title-call_flow_feature']['ro-ro'] = "Fluxuri de apeluri - Caracteristic
$text['title-call_flow_feature']['ru-ru'] = "Переключатели вызовов - Код функции";
$text['title-call_flow_feature']['sv-se'] = "Samtalsflöden - Funktionskod";
$text['title-call_flow_feature']['uk-ua'] = "Потоки дзвінків";
$text['title-call_flow_feature']['tr-tr'] = "Çağrı Akışları - Özellik";
$text['title-call_flow_feature']['zh-cn'] = "呼叫流程 - 功能";
$text['title-call_flow_feature']['ja-jp'] = "コール フロー - 機能";
$text['title-call_flow_feature']['ko-kr'] = "통화 흐름 - 기능";
@@ -102,12 +114,14 @@ $text['label-call_flow_name']['ar-eg'] = "اسم";
$text['label-call_flow_name']['de-at'] = "Name";
$text['label-call_flow_name']['de-ch'] = "Name";
$text['label-call_flow_name']['de-de'] = "Name";
$text['label-call_flow_name']['el-gr'] = "Ονομα";
$text['label-call_flow_name']['es-cl'] = "Nombre";
$text['label-call_flow_name']['es-mx'] = "Nombre";
$text['label-call_flow_name']['fr-ca'] = "Nom";
$text['label-call_flow_name']['fr-fr'] = "Nom";
$text['label-call_flow_name']['he-il'] = "שֵׁם";
$text['label-call_flow_name']['it-it'] = "Nome";
$text['label-call_flow_name']['ka-ge'] = "სახელი";
$text['label-call_flow_name']['nl-nl'] = "Naam";
$text['label-call_flow_name']['pl-pl'] = "Nazwa";
$text['label-call_flow_name']['pt-br'] = "Nome";
@@ -116,6 +130,7 @@ $text['label-call_flow_name']['ro-ro'] = "Nume";
$text['label-call_flow_name']['ru-ru'] = "Имя";
$text['label-call_flow_name']['sv-se'] = "Namn";
$text['label-call_flow_name']['uk-ua'] = "Назва";
$text['label-call_flow_name']['tr-tr'] = "İsim";
$text['label-call_flow_name']['zh-cn'] = "姓名";
$text['label-call_flow_name']['ja-jp'] = "名前";
$text['label-call_flow_name']['ko-kr'] = "이름";
@@ -126,12 +141,14 @@ $text['label-call_flow_status']['ar-eg'] = "اسم";
$text['label-call_flow_status']['de-at'] = "Aktiviert";
$text['label-call_flow_status']['de-ch'] = "Aktiviert";
$text['label-call_flow_status']['de-de'] = "Aktiviert";
$text['label-call_flow_status']['el-gr'] = "Κατάσταση";
$text['label-call_flow_status']['es-cl'] = "Estado";
$text['label-call_flow_status']['es-mx'] = "Estado";
$text['label-call_flow_status']['fr-ca'] = "Etat";
$text['label-call_flow_status']['fr-fr'] = "Etat";
$text['label-call_flow_status']['he-il'] = "שֵׁם";
$text['label-call_flow_status']['it-it'] = "Nome";
$text['label-call_flow_status']['ka-ge'] = "სტატუსი";
$text['label-call_flow_status']['nl-nl'] = "Status";
$text['label-call_flow_status']['pl-pl'] = "Status";
$text['label-call_flow_status']['pt-br'] = "Estado";
@@ -140,6 +157,7 @@ $text['label-call_flow_status']['ro-ro'] = "Nume";
$text['label-call_flow_status']['ru-ru'] = "Статус";
$text['label-call_flow_status']['sv-se'] = "Status";
$text['label-call_flow_status']['uk-ua'] = "Статус";
$text['label-call_flow_status']['tr-tr'] = "Durum";
$text['label-call_flow_status']['zh-cn'] = "地位";
$text['label-call_flow_status']['ja-jp'] = "スターテス";
$text['label-call_flow_status']['ko-kr'] = "상태";
@@ -150,20 +168,23 @@ $text['label-call_flow_pin_number']['ar-eg'] = "الرقم السري";
$text['label-call_flow_pin_number']['de-at'] = "PIN Nummer";
$text['label-call_flow_pin_number']['de-ch'] = "PIN Nummer";
$text['label-call_flow_pin_number']['de-de'] = "PIN Nummer";
$text['label-call_flow_pin_number']['el-gr'] = "Αριθμός PIN";
$text['label-call_flow_pin_number']['es-cl'] = "Número PIN";
$text['label-call_flow_pin_number']['es-mx'] = "Número PIN";
$text['label-call_flow_pin_number']['fr-ca'] = "Code PIN";
$text['label-call_flow_pin_number']['fr-fr'] = "Code PIN";
$text['label-call_flow_pin_number']['he-il'] = "מספר PIN";
$text['label-call_flow_pin_number']['it-it'] = "Codice PIN";
$text['label-call_flow_pin_number']['ka-ge'] = "PIN-კოდი";
$text['label-call_flow_pin_number']['nl-nl'] = "PIN code";
$text['label-call_flow_pin_number']['pl-pl'] = "Numer PIN";
$text['label-call_flow_pin_number']['pt-br'] = "Código PIN";
$text['label-call_flow_pin_number']['pt-pt'] = "Código PIN";
$text['label-call_flow_pin_number']['ro-ro'] = "Numarul pin";
$text['label-call_flow_pin_number']['ru-ru'] = "PIN код";
$text['label-call_flow_pin_number']['sv-se'] = "PIN Kod";
$text['label-call_flow_pin_number']['sv-se'] = "Pinkod";
$text['label-call_flow_pin_number']['uk-ua'] = "PIN-код";
$text['label-call_flow_pin_number']['tr-tr'] = "PIN numarası";
$text['label-call_flow_pin_number']['zh-cn'] = "密码";
$text['label-call_flow_pin_number']['ja-jp'] = "暗証番号";
$text['label-call_flow_pin_number']['ko-kr'] = "핀 번호";
@@ -174,12 +195,14 @@ $text['label-call_flow_feature_code']['ar-eg'] = "رمز الميزة";
$text['label-call_flow_feature_code']['de-at'] = "Funktions-Code";
$text['label-call_flow_feature_code']['de-ch'] = "Funktions-Code";
$text['label-call_flow_feature_code']['de-de'] = "Funktions-Code";
$text['label-call_flow_feature_code']['el-gr'] = "Κωδικός χαρακτηριστικών";
$text['label-call_flow_feature_code']['es-cl'] = "Código distintivo";
$text['label-call_flow_feature_code']['es-mx'] = "Código distintivo";
$text['label-call_flow_feature_code']['fr-ca'] = "Code Fonction";
$text['label-call_flow_feature_code']['fr-fr'] = "Code Fonction";
$text['label-call_flow_feature_code']['he-il'] = "קוד תכונה";
$text['label-call_flow_feature_code']['it-it'] = "Codice caratteristica";
$text['label-call_flow_feature_code']['ka-ge'] = "ფუნქციის კოდი";
$text['label-call_flow_feature_code']['nl-nl'] = "Functie-code";
$text['label-call_flow_feature_code']['pl-pl'] = "Kod Funkcji";
$text['label-call_flow_feature_code']['pt-br'] = "Código de função";
@@ -188,6 +211,7 @@ $text['label-call_flow_feature_code']['ro-ro'] = "Cod caracteristică";
$text['label-call_flow_feature_code']['ru-ru'] = "Код функции";
$text['label-call_flow_feature_code']['sv-se'] = "Funktionskod";
$text['label-call_flow_feature_code']['uk-ua'] = "Код функції";
$text['label-call_flow_feature_code']['tr-tr'] = "Özellik Kodu";
$text['label-call_flow_feature_code']['zh-cn'] = "特征码";
$text['label-call_flow_feature_code']['ja-jp'] = "機能コード";
$text['label-call_flow_feature_code']['ko-kr'] = "기능 코드";
@@ -198,12 +222,14 @@ $text['label-call_flow_extension']['ar-eg'] = "امتداد";
$text['label-call_flow_extension']['de-at'] = "Nebenstelle";
$text['label-call_flow_extension']['de-ch'] = "Nebenstelle";
$text['label-call_flow_extension']['de-de'] = "Nebenstelle";
$text['label-call_flow_extension']['el-gr'] = "Επέκταση";
$text['label-call_flow_extension']['es-cl'] = "Extensión";
$text['label-call_flow_extension']['es-mx'] = "Extensión";
$text['label-call_flow_extension']['fr-ca'] = "Extension";
$text['label-call_flow_extension']['fr-fr'] = "Extension";
$text['label-call_flow_extension']['he-il'] = "Extensie";
$text['label-call_flow_extension']['it-it'] = "Estensione";
$text['label-call_flow_extension']['ka-ge'] = "გაფართოება";
$text['label-call_flow_extension']['nl-nl'] = "Toestel";
$text['label-call_flow_extension']['pl-pl'] = "Numer wewnętrzny";
$text['label-call_flow_extension']['pt-br'] = "Ramal";
@@ -212,6 +238,7 @@ $text['label-call_flow_extension']['ro-ro'] = "Extensie";
$text['label-call_flow_extension']['ru-ru'] = "Внутренний номер";
$text['label-call_flow_extension']['sv-se'] = "Anknytning";
$text['label-call_flow_extension']['uk-ua'] = "Розширення (Extention)";
$text['label-call_flow_extension']['tr-tr'] = "Eklenti";
$text['label-call_flow_extension']['zh-cn'] = "扩大";
$text['label-call_flow_extension']['ja-jp'] = "拡大";
$text['label-call_flow_extension']['ko-kr'] = "확대";
@@ -222,20 +249,23 @@ $text['label-call_flow_label']['ar-eg'] = "تسمية الوجهة";
$text['label-call_flow_label']['de-at'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['de-ch'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['de-de'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['el-gr'] = "Ετικέτα προορισμού";
$text['label-call_flow_label']['es-cl'] = "Etiqueta de Destino";
$text['label-call_flow_label']['es-mx'] = "Etiqueta de Destino";
$text['label-call_flow_label']['fr-ca'] = "Label de la destination";
$text['label-call_flow_label']['fr-fr'] = "Label de la destination";
$text['label-call_flow_label']['he-il'] = "תווית יעד";
$text['label-call_flow_label']['it-it'] = "Etichetta di destinazione";
$text['label-call_flow_label']['ka-ge'] = "დანიშნულების სახელი";
$text['label-call_flow_label']['nl-nl'] = "Bestemmingskenmerk";
$text['label-call_flow_label']['pl-pl'] = "Etykieta destynacji";
$text['label-call_flow_label']['pt-br'] = "Etiqueta de destino";
$text['label-call_flow_label']['pt-pt'] = "Destino";
$text['label-call_flow_label']['ro-ro'] = "Etichetă de destinație";
$text['label-call_flow_label']['ru-ru'] = "Название направления";
$text['label-call_flow_label']['sv-se'] = "Destination Etikett";
$text['label-call_flow_label']['sv-se'] = "Destinations Etikett";
$text['label-call_flow_label']['uk-ua'] = "призначення етикетки";
$text['label-call_flow_label']['tr-tr'] = "Hedef Etiketi";
$text['label-call_flow_label']['zh-cn'] = "目的地标签";
$text['label-call_flow_label']['ja-jp'] = "宛先ラベル";
$text['label-call_flow_label']['ko-kr'] = "목적지 라벨";
@@ -246,12 +276,14 @@ $text['label-call_flow_destination']['ar-eg'] = "وجهة";
$text['label-call_flow_destination']['de-at'] = "Ziel";
$text['label-call_flow_destination']['de-ch'] = "Ziel";
$text['label-call_flow_destination']['de-de'] = "Ziel";
$text['label-call_flow_destination']['el-gr'] = "Προορισμός";
$text['label-call_flow_destination']['es-cl'] = "Destino";
$text['label-call_flow_destination']['es-mx'] = "Destino";
$text['label-call_flow_destination']['fr-ca'] = "Destination";
$text['label-call_flow_destination']['fr-fr'] = "Destination";
$text['label-call_flow_destination']['he-il'] = "יַעַד";
$text['label-call_flow_destination']['it-it'] = "Destinazione";
$text['label-call_flow_destination']['ka-ge'] = "დანიშნულება";
$text['label-call_flow_destination']['nl-nl'] = "Bestemming";
$text['label-call_flow_destination']['pl-pl'] = "Destynacja";
$text['label-call_flow_destination']['pt-br'] = "Número de destino";
@@ -260,6 +292,7 @@ $text['label-call_flow_destination']['ro-ro'] = "Destination";
$text['label-call_flow_destination']['ru-ru'] = "Направление";
$text['label-call_flow_destination']['sv-se'] = "Destination";
$text['label-call_flow_destination']['uk-ua'] = "Номер";
$text['label-call_flow_destination']['tr-tr'] = "Varış noktası";
$text['label-call_flow_destination']['zh-cn'] = "目的地";
$text['label-call_flow_destination']['ja-jp'] = "行き先";
$text['label-call_flow_destination']['ko-kr'] = "목적지";
@@ -270,12 +303,14 @@ $text['label-call_flow_context']['ar-eg'] = "سياق";
$text['label-call_flow_context']['de-at'] = "Kontext";
$text['label-call_flow_context']['de-ch'] = "Kontext";
$text['label-call_flow_context']['de-de'] = "Kontext";
$text['label-call_flow_context']['el-gr'] = "Συμφραζόμενα";
$text['label-call_flow_context']['es-cl'] = "Contexto";
$text['label-call_flow_context']['es-mx'] = "Contexto";
$text['label-call_flow_context']['fr-ca'] = "Contexte";
$text['label-call_flow_context']['fr-fr'] = "Contexte";
$text['label-call_flow_context']['he-il'] = "הֶקשֵׁר";
$text['label-call_flow_context']['it-it'] = "Contesto";
$text['label-call_flow_context']['ka-ge'] = "კონტექსტი";
$text['label-call_flow_context']['nl-nl'] = "Context";
$text['label-call_flow_context']['pl-pl'] = "Kontekst";
$text['label-call_flow_context']['pt-br'] = "Contexto";
@@ -284,6 +319,7 @@ $text['label-call_flow_context']['ro-ro'] = "Context";
$text['label-call_flow_context']['ru-ru'] = "Контекст";
$text['label-call_flow_context']['sv-se'] = "Context";
$text['label-call_flow_context']['uk-ua'] = "Контекст";
$text['label-call_flow_context']['tr-tr'] = "Bağlam";
$text['label-call_flow_context']['zh-cn'] = "语境";
$text['label-call_flow_context']['ja-jp'] = "コンテクスト";
$text['label-call_flow_context']['ko-kr'] = "문맥";
@@ -294,12 +330,14 @@ $text['label-call_flow_alternate_label']['ar-eg'] = "التسمية البديل
$text['label-call_flow_alternate_label']['de-at'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['de-ch'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['de-de'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['el-gr'] = "Εναλλακτική ετικέτα";
$text['label-call_flow_alternate_label']['es-cl'] = "Etiqueta alternativa";
$text['label-call_flow_alternate_label']['es-mx'] = "Etiqueta alternativa";
$text['label-call_flow_alternate_label']['fr-ca'] = "Label alternatif";
$text['label-call_flow_alternate_label']['fr-fr'] = "Label alternatif";
$text['label-call_flow_alternate_label']['he-il'] = "תווית חלופית";
$text['label-call_flow_alternate_label']['it-it'] = "Etichetta alternativa";
$text['label-call_flow_alternate_label']['ka-ge'] = "ალტერნატიული მიმართულების სახელი";
$text['label-call_flow_alternate_label']['nl-nl'] = "Alternatief kenmerk";
$text['label-call_flow_alternate_label']['pl-pl'] = "Alternatywna etykieta";
$text['label-call_flow_alternate_label']['pt-br'] = "Etqueta alternativa";
@@ -308,6 +346,7 @@ $text['label-call_flow_alternate_label']['ro-ro'] = "Etichetă alternativă";
$text['label-call_flow_alternate_label']['ru-ru'] = "Название альтернативного направления";
$text['label-call_flow_alternate_label']['sv-se'] = "Alternativ Etikett";
$text['label-call_flow_alternate_label']['uk-ua'] = "альтернативні етикетки";
$text['label-call_flow_alternate_label']['tr-tr'] = "Alternatif Etiket";
$text['label-call_flow_alternate_label']['zh-cn'] = "备用标签";
$text['label-call_flow_alternate_label']['ja-jp'] = "代替ラベル";
$text['label-call_flow_alternate_label']['ko-kr'] = "대체 레이블";
@@ -318,12 +357,14 @@ $text['label-call_flow_alternate_destination']['ar-eg'] = "وجهة بديلة";
$text['label-call_flow_alternate_destination']['de-at'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['de-ch'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['de-de'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['el-gr'] = "Εναλλακτικός προορισμός";
$text['label-call_flow_alternate_destination']['es-cl'] = "Destino Alternativo";
$text['label-call_flow_alternate_destination']['es-mx'] = "Destino Alternativo";
$text['label-call_flow_alternate_destination']['fr-ca'] = "Destination alternative";
$text['label-call_flow_alternate_destination']['fr-fr'] = "Destination alternative";
$text['label-call_flow_alternate_destination']['he-il'] = "יעד חלופי";
$text['label-call_flow_alternate_destination']['it-it'] = "Destinazione alternativa";
$text['label-call_flow_alternate_destination']['ka-ge'] = "ალტერნატიული მიმართულება";
$text['label-call_flow_alternate_destination']['nl-nl'] = "Alternatieve bestemming";
$text['label-call_flow_alternate_destination']['pl-pl'] = "Alternatywna destynacja";
$text['label-call_flow_alternate_destination']['pt-br'] = "Destino alternativo";
@@ -332,6 +373,7 @@ $text['label-call_flow_alternate_destination']['ro-ro'] = "Destinație alternati
$text['label-call_flow_alternate_destination']['ru-ru'] = "Альтернативное направление";
$text['label-call_flow_alternate_destination']['sv-se'] = "Alternativ Destination";
$text['label-call_flow_alternate_destination']['uk-ua'] = "альтернативні варіанти призначення";
$text['label-call_flow_alternate_destination']['tr-tr'] = "Alternatif Hedef";
$text['label-call_flow_alternate_destination']['zh-cn'] = "备用目的地";
$text['label-call_flow_alternate_destination']['ja-jp'] = "代替目的地";
$text['label-call_flow_alternate_destination']['ko-kr'] = "대체 목적지";
@@ -342,12 +384,14 @@ $text['label-call_flow_sound']['ar-eg'] = "صوت";
$text['label-call_flow_sound']['de-at'] = "Rufton";
$text['label-call_flow_sound']['de-ch'] = "Rufton";
$text['label-call_flow_sound']['de-de'] = "Rufton";
$text['label-call_flow_sound']['el-gr'] = "Ήχος";
$text['label-call_flow_sound']['es-cl'] = "Sonar";
$text['label-call_flow_sound']['es-mx'] = "Sonar";
$text['label-call_flow_sound']['fr-ca'] = "Sonner";
$text['label-call_flow_sound']['fr-fr'] = "Sonner";
$text['label-call_flow_sound']['he-il'] = "נשמע";
$text['label-call_flow_sound']['it-it'] = "Suono";
$text['label-call_flow_sound']['ka-ge'] = "ხმა";
$text['label-call_flow_sound']['nl-nl'] = "Geluid";
$text['label-call_flow_sound']['pl-pl'] = "Dźwięk";
$text['label-call_flow_sound']['pt-br'] = "Som";
@@ -356,6 +400,7 @@ $text['label-call_flow_sound']['ro-ro'] = "Sunet";
$text['label-call_flow_sound']['ru-ru'] = "Звук";
$text['label-call_flow_sound']['sv-se'] = "Ljud";
$text['label-call_flow_sound']['uk-ua'] = "звук";
$text['label-call_flow_sound']['tr-tr'] = "Ses";
$text['label-call_flow_sound']['zh-cn'] = "声音";
$text['label-call_flow_sound']['ja-jp'] = "音";
$text['label-call_flow_sound']['ko-kr'] = "소리";
@@ -366,12 +411,14 @@ $text['label-call_flow_alternate_sound']['ar-eg'] = "صوت بديل";
$text['label-call_flow_alternate_sound']['de-at'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['de-ch'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['de-de'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['el-gr'] = "Εναλλακτικός ήχος";
$text['label-call_flow_alternate_sound']['es-cl'] = "sonido alternativo";
$text['label-call_flow_alternate_sound']['es-mx'] = "sonido alternativo";
$text['label-call_flow_alternate_sound']['fr-ca'] = "son suppléant";
$text['label-call_flow_alternate_sound']['fr-fr'] = "son suppléant";
$text['label-call_flow_alternate_sound']['he-il'] = "צליל חלופי";
$text['label-call_flow_alternate_sound']['it-it'] = "Suono alternativo";
$text['label-call_flow_alternate_sound']['ka-ge'] = "ალტერნატიული ხმა";
$text['label-call_flow_alternate_sound']['nl-nl'] = "Alternatief geluid";
$text['label-call_flow_alternate_sound']['pl-pl'] = "Alternatywny dźwięk";
$text['label-call_flow_alternate_sound']['pt-br'] = "Som alternativo";
@@ -380,6 +427,7 @@ $text['label-call_flow_alternate_sound']['ro-ro'] = "Sunet alternativ";
$text['label-call_flow_alternate_sound']['ru-ru'] = "Альтернативный звук";
$text['label-call_flow_alternate_sound']['sv-se'] = "alternativt ljud";
$text['label-call_flow_alternate_sound']['uk-ua'] = "альтернативний звук";
$text['label-call_flow_alternate_sound']['tr-tr'] = "Alternatif Ses";
$text['label-call_flow_alternate_sound']['zh-cn'] = "替代声音";
$text['label-call_flow_alternate_sound']['ja-jp'] = "代替サウンド";
$text['label-call_flow_alternate_sound']['ko-kr'] = "대체 사운드";
@@ -390,12 +438,14 @@ $text['label-call_flow_description']['ar-eg'] = "وصف";
$text['label-call_flow_description']['de-at'] = "Beschreibung";
$text['label-call_flow_description']['de-ch'] = "Beschreibung";
$text['label-call_flow_description']['de-de'] = "Beschreibung";
$text['label-call_flow_description']['el-gr'] = "Περιγραφή";
$text['label-call_flow_description']['es-cl'] = "Descripción";
$text['label-call_flow_description']['es-mx'] = "Descripción";
$text['label-call_flow_description']['fr-ca'] = "Description";
$text['label-call_flow_description']['fr-fr'] = "Description";
$text['label-call_flow_description']['he-il'] = "תיאור";
$text['label-call_flow_description']['it-it'] = "Descrizione";
$text['label-call_flow_description']['ka-ge'] = "აღწერა";
$text['label-call_flow_description']['nl-nl'] = "Omschrijving";
$text['label-call_flow_description']['pl-pl'] = "Opis";
$text['label-call_flow_description']['pt-br'] = "Descrição";
@@ -404,6 +454,7 @@ $text['label-call_flow_description']['ro-ro'] = "Descriere";
$text['label-call_flow_description']['ru-ru'] = "Описание";
$text['label-call_flow_description']['sv-se'] = "Beskrivning";
$text['label-call_flow_description']['uk-ua'] = "Опис";
$text['label-call_flow_description']['tr-tr'] = "Tanım";
$text['label-call_flow_description']['zh-cn'] = "描述";
$text['label-call_flow_description']['ja-jp'] = "説明";
$text['label-call_flow_description']['ko-kr'] = "설명";
@@ -414,12 +465,14 @@ $text['header-call_flows']['ar-eg'] = "تدفق المكالمات";
$text['header-call_flows']['de-at'] = "Anruf Steuerung";
$text['header-call_flows']['de-ch'] = "Anruf Steuerung";
$text['header-call_flows']['de-de'] = "Anruf Steuerung";
$text['header-call_flows']['el-gr'] = "Ροές κλήσεων";
$text['header-call_flows']['es-cl'] = "flujo de Llamada";
$text['header-call_flows']['es-mx'] = "flujo de Llamada";
$text['header-call_flows']['fr-ca'] = "Flux d'appel";
$text['header-call_flows']['fr-fr'] = "Flux d'appel";
$text['header-call_flows']['he-il'] = "התקשר זרימות";
$text['header-call_flows']['it-it'] = "Deviatori di Chiamata";
$text['header-call_flows']['ka-ge'] = "ზარების მიმდინარეობა";
$text['header-call_flows']['nl-nl'] = "Oproep besturing";
$text['header-call_flows']['pl-pl'] = "Przepływ rozmów";
$text['header-call_flows']['pt-br'] = "Fluxo de chamadas";
@@ -428,6 +481,7 @@ $text['header-call_flows']['ro-ro'] = "Fluxuri de apeluri";
$text['header-call_flows']['ru-ru'] = "Переключатель вызовов";
$text['header-call_flows']['sv-se'] = "Samtalsflöden";
$text['header-call_flows']['uk-ua'] = "Потоки дзвінків";
$text['header-call_flows']['tr-tr'] = "Çağrı Akışları";
$text['header-call_flows']['zh-cn'] = "通话流程";
$text['header-call_flows']['ja-jp'] = "コール フロー";
$text['header-call_flows']['ko-kr'] = "통화 흐름";
@@ -438,12 +492,14 @@ $text['header-call_flow']['ar-eg'] = "تدفق الدعوة من";
$text['header-call_flow']['de-at'] = "Anruf Steuerung";
$text['header-call_flow']['de-ch'] = "Anruf Steuerung";
$text['header-call_flow']['de-de'] = "Anruf Steuerung";
$text['header-call_flow']['el-gr'] = "Ροή κλήσης";
$text['header-call_flow']['es-cl'] = "Flujo de Llamada";
$text['header-call_flow']['es-mx'] = "Flujo de Llamada";
$text['header-call_flow']['fr-ca'] = "Editer le flux";
$text['header-call_flow']['fr-fr'] = "Editer le flux";
$text['header-call_flow']['he-il'] = "התקשר ל-Flow";
$text['header-call_flow']['it-it'] = "Flusso chiamate";
$text['header-call_flow']['ka-ge'] = "ზარის მიმდინარეობა";
$text['header-call_flow']['nl-nl'] = "Oproep besturing";
$text['header-call_flow']['pl-pl'] = "Przepływ rozmów";
$text['header-call_flow']['pt-br'] = "Fluxo de chamada";
@@ -452,6 +508,7 @@ $text['header-call_flow']['ro-ro'] = "Flux de apeluri";
$text['header-call_flow']['ru-ru'] = "Переключатель вызовов";
$text['header-call_flow']['sv-se'] = "Samtalsflöde";
$text['header-call_flow']['uk-ua'] = "Потік дзвінка";
$text['header-call_flow']['tr-tr'] = "Çağrı akışı";
$text['header-call_flow']['zh-cn'] = "通话流程";
$text['header-call_flow']['ja-jp'] = "通話の流れ";
$text['header-call_flow']['ko-kr'] = "통화 흐름";
@@ -462,12 +519,14 @@ $text['description-call_flow_status']['ar-eg'] = "حدد الحالة.";
$text['description-call_flow_status']['de-at'] = "Status festlegen.";
$text['description-call_flow_status']['de-ch'] = "Status festlegen.";
$text['description-call_flow_status']['de-de'] = "Status festlegen.";
$text['description-call_flow_status']['el-gr'] = "Επιλέξτε την κατάσταση.";
$text['description-call_flow_status']['es-cl'] = "Seleccione el estado.";
$text['description-call_flow_status']['es-mx'] = "Seleccione el estado.";
$text['description-call_flow_status']['fr-ca'] = "Choisir le statut.";
$text['description-call_flow_status']['fr-fr'] = "Choisir le statut.";
$text['description-call_flow_status']['he-il'] = "בחר את הסטטוס.";
$text['description-call_flow_status']['it-it'] = "Seleziona lo stato.";
$text['description-call_flow_status']['ka-ge'] = "აირჩიეთ სტატუსი.";
$text['description-call_flow_status']['nl-nl'] = "Kies de status";
$text['description-call_flow_status']['pl-pl'] = "Wybierz status użytkownika";
$text['description-call_flow_status']['pt-br'] = "Escolha o estado.";
@@ -476,6 +535,7 @@ $text['description-call_flow_status']['ro-ro'] = "Selectați starea.";
$text['description-call_flow_status']['ru-ru'] = "Виберите состояние.";
$text['description-call_flow_status']['sv-se'] = "Välj Status";
$text['description-call_flow_status']['uk-ua'] = "Виберіть статус користувача";
$text['description-call_flow_status']['tr-tr'] = "Durumu seçin.";
$text['description-call_flow_status']['zh-cn'] = "选择状态。";
$text['description-call_flow_status']['ja-jp'] = "ステータスを選択します。";
$text['description-call_flow_status']['ko-kr'] = "상태를 선택합니다.";
@@ -486,20 +546,23 @@ $text['description-call_flow_pin_number']['ar-eg'] = "أدخل الرقم الس
$text['description-call_flow_pin_number']['de-at'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['de-ch'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['de-de'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['el-gr'] = "Εισαγάγετε τον αριθμό pin.";
$text['description-call_flow_pin_number']['es-cl'] = "Ingrese el número PIN.";
$text['description-call_flow_pin_number']['es-mx'] = "Ingrese el número PIN.";
$text['description-call_flow_pin_number']['fr-ca'] = "Choisir le code PIN.";
$text['description-call_flow_pin_number']['fr-fr'] = "Choisir le code PIN.";
$text['description-call_flow_pin_number']['he-il'] = "הזן את מספר ה-PIN.";
$text['description-call_flow_pin_number']['it-it'] = "Introduceți numărul PIN.";
$text['description-call_flow_pin_number']['ka-ge'] = "შეიყვანეთ PIN-კოდი.";
$text['description-call_flow_pin_number']['nl-nl'] = "Voer de PIN code in.";
$text['description-call_flow_pin_number']['pl-pl'] = "Wprowadź numer PIN";
$text['description-call_flow_pin_number']['pt-br'] = "Insira o código PIN.";
$text['description-call_flow_pin_number']['pt-pt'] = "Introduza o código PIN";
$text['description-call_flow_pin_number']['ro-ro'] = "Introduceți numărul PIN.";
$text['description-call_flow_pin_number']['ru-ru'] = "Введите пин-код.";
$text['description-call_flow_pin_number']['sv-se'] = "Ange PIN Kod.";
$text['description-call_flow_pin_number']['sv-se'] = "Ange Pinkod.";
$text['description-call_flow_pin_number']['uk-ua'] = "Введіть пін - код.";
$text['description-call_flow_pin_number']['tr-tr'] = "Pin numarasını girin.";
$text['description-call_flow_pin_number']['zh-cn'] = "输入密码。";
$text['description-call_flow_pin_number']['ja-jp'] = "ピン番号を入力します。";
$text['description-call_flow_pin_number']['ko-kr'] = "핀번호를 입력하세요.";
@@ -510,12 +573,14 @@ $text['description-call_flow_name']['ar-eg'] = "أدخل الاسم.";
$text['description-call_flow_name']['de-at'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['de-ch'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['de-de'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-call_flow_name']['es-cl'] = "Ingrese el nombre.";
$text['description-call_flow_name']['es-mx'] = "Ingrese el nombre.";
$text['description-call_flow_name']['fr-ca'] = "Choisir le nom.";
$text['description-call_flow_name']['fr-fr'] = "Choisir le nom.";
$text['description-call_flow_name']['he-il'] = "הזן את השם.";
$text['description-call_flow_name']['it-it'] = "Inserisci il nome.";
$text['description-call_flow_name']['ka-ge'] = "შეიყვანეთ სახელი.";
$text['description-call_flow_name']['nl-nl'] = "Voer de naam in.";
$text['description-call_flow_name']['pl-pl'] = "Wprowadź nazwę";
$text['description-call_flow_name']['pt-br'] = "Insira o nome.";
@@ -524,6 +589,7 @@ $text['description-call_flow_name']['ro-ro'] = "Introduceți numele.";
$text['description-call_flow_name']['ru-ru'] = "Введите имя.";
$text['description-call_flow_name']['sv-se'] = "Ange Namn.";
$text['description-call_flow_name']['uk-ua'] = "Введіть назву меню";
$text['description-call_flow_name']['tr-tr'] = "Adı girin.";
$text['description-call_flow_name']['zh-cn'] = "输入名称。";
$text['description-call_flow_name']['ja-jp'] = "名前を入力します。";
$text['description-call_flow_name']['ko-kr'] = "이름을 입력하세요.";
@@ -534,12 +600,14 @@ $text['description-call_flow_feature_code']['ar-eg'] = "أدخل رمز المي
$text['description-call_flow_feature_code']['de-at'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['de-ch'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['de-de'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['el-gr'] = "Εισαγάγετε τον κωδικό λειτουργίας.";
$text['description-call_flow_feature_code']['es-cl'] = "Ingrese el código distintivo.";
$text['description-call_flow_feature_code']['es-mx'] = "Ingrese el código distintivo.";
$text['description-call_flow_feature_code']['fr-ca'] = "Choisir le code la fonction";
$text['description-call_flow_feature_code']['fr-fr'] = "Choisir le code la fonction";
$text['description-call_flow_feature_code']['he-il'] = "הזן את קוד התכונה.";
$text['description-call_flow_feature_code']['it-it'] = "Introduceți codul caracteristicii.";
$text['description-call_flow_feature_code']['ka-ge'] = "შეიყვანეთ ფუნქციის კოდი.";
$text['description-call_flow_feature_code']['nl-nl'] = "Voer de functie-code in";
$text['description-call_flow_feature_code']['pl-pl'] = "Dodaj specjalny kod";
$text['description-call_flow_feature_code']['pt-br'] = "Insira o código de função.";
@@ -548,6 +616,7 @@ $text['description-call_flow_feature_code']['ro-ro'] = "Introduceți codul carac
$text['description-call_flow_feature_code']['ru-ru'] = "Введите код функции.";
$text['description-call_flow_feature_code']['sv-se'] = "Ange Funktionskoden.";
$text['description-call_flow_feature_code']['uk-ua'] = "Введіть код об'єкта.";
$text['description-call_flow_feature_code']['tr-tr'] = "Özellik kodunu girin.";
$text['description-call_flow_feature_code']['zh-cn'] = "输入功能代码。";
$text['description-call_flow_feature_code']['ja-jp'] = "機能コードを入力します。";
$text['description-call_flow_feature_code']['ko-kr'] = "기능 코드를 입력합니다.";
@@ -558,20 +627,23 @@ $text['description-call_flow_extension']['ar-eg'] = "أدخل الرقم الد
$text['description-call_flow_extension']['de-at'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['de-ch'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['de-de'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['el-gr'] = "Εισαγάγετε τον αριθμό επέκτασης.";
$text['description-call_flow_extension']['es-cl'] = "Ingrese el número de extensión.";
$text['description-call_flow_extension']['es-mx'] = "Ingrese el número de extensión.";
$text['description-call_flow_extension']['fr-ca'] = "Choisir le numéro d'extension.";
$text['description-call_flow_extension']['fr-fr'] = "Choisir le numéro d'extension.";
$text['description-call_flow_extension']['he-il'] = "Introduceți numărul de extensie.";
$text['description-call_flow_extension']['it-it'] = "Immettere il numero dell'interno.";
$text['description-call_flow_extension']['ka-ge'] = "შეიყვანეთ შიდა(Extension) ნომერი.";
$text['description-call_flow_extension']['nl-nl'] = "Voer het toestelnummer in";
$text['description-call_flow_extension']['pl-pl'] = "Wprowadź alfanumeryczny numer wewnętrzny. Domyślna konfiguracja pozwala na 2-7 cyfrowe numery wewnętrzne";
$text['description-call_flow_extension']['pl-pl'] = "Wprowadź numer wewnętrzny.";
$text['description-call_flow_extension']['pt-br'] = "Atribua o número de ramal.";
$text['description-call_flow_extension']['pt-pt'] = "Introduza o número da extensão.";
$text['description-call_flow_extension']['ro-ro'] = "Introduceți numărul de extensie.";
$text['description-call_flow_extension']['ru-ru'] = "Введите внутренний номер.";
$text['description-call_flow_extension']['sv-se'] = "Ange anknytningsnumret.";
$text['description-call_flow_extension']['uk-ua'] = "Введіть номер розширення.";
$text['description-call_flow_extension']['tr-tr'] = "Dahili numarayı girin.";
$text['description-call_flow_extension']['zh-cn'] = "输入分机号码。";
$text['description-call_flow_extension']['ja-jp'] = "内線番号を入力します。";
$text['description-call_flow_extension']['ko-kr'] = "내선번호를 입력하세요.";
@@ -582,12 +654,14 @@ $text['description-call_flow_destination_label']['ar-eg'] = "أدخل تسمية
$text['description-call_flow_destination_label']['de-at'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['de-ch'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['de-de'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['el-gr'] = "Εισαγάγετε την ετικέτα προορισμού.";
$text['description-call_flow_destination_label']['es-cl'] = "Ingrese la etiqueta de destino.";
$text['description-call_flow_destination_label']['es-mx'] = "Ingrese la etiqueta de destino.";
$text['description-call_flow_destination_label']['fr-ca'] = "Choisir le label de la destination.";
$text['description-call_flow_destination_label']['fr-fr'] = "Choisir le label de la destination.";
$text['description-call_flow_destination_label']['he-il'] = "הזן את תווית היעד.";
$text['description-call_flow_destination_label']['it-it'] = "Introduceți eticheta destinației.";
$text['description-call_flow_destination_label']['ka-ge'] = "შეიყვანეთ მიმართულების სახელი.";
$text['description-call_flow_destination_label']['nl-nl'] = "Voer het bestemmingskenmerk in.";
$text['description-call_flow_destination_label']['pl-pl'] = "Wprowadź opis destynacji";
$text['description-call_flow_destination_label']['pt-br'] = "Insira o destino.";
@@ -596,6 +670,7 @@ $text['description-call_flow_destination_label']['ro-ro'] = "Introduceți etiche
$text['description-call_flow_destination_label']['ru-ru'] = "Введите название направления.";
$text['description-call_flow_destination_label']['sv-se'] = "Ange Destinations Etiketten.";
$text['description-call_flow_destination_label']['uk-ua'] = "Введіть мітку призначення.";
$text['description-call_flow_destination_label']['tr-tr'] = "Hedef etiketini girin.";
$text['description-call_flow_destination_label']['zh-cn'] = "输入目的地标签。";
$text['description-call_flow_destination_label']['ja-jp'] = "宛先ラベルを入力します。";
$text['description-call_flow_destination_label']['ko-kr'] = "대상 라벨을 입력합니다.";
@@ -606,12 +681,14 @@ $text['description-call_flow_destination']['ar-eg'] = "حدد الوجهة.";
$text['description-call_flow_destination']['de-at'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['de-ch'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['de-de'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['el-gr'] = "Επιλέξτε τον προορισμό.";
$text['description-call_flow_destination']['es-cl'] = "Seleccione el destino.";
$text['description-call_flow_destination']['es-mx'] = "Seleccione el destino.";
$text['description-call_flow_destination']['fr-ca'] = "Choisir la destination.";
$text['description-call_flow_destination']['fr-fr'] = "Choisir la destination.";
$text['description-call_flow_destination']['he-il'] = "בחר את היעד.";
$text['description-call_flow_destination']['it-it'] = "Seleziona la destinazione.";
$text['description-call_flow_destination']['ka-ge'] = "აირჩიეთ დანიშნულება.";
$text['description-call_flow_destination']['nl-nl'] = "Voer de bestemming in.";
$text['description-call_flow_destination']['pl-pl'] = "Wybierz numer docelowy.";
$text['description-call_flow_destination']['pt-br'] = "Selecionar o destino da chamada.";
@@ -619,7 +696,8 @@ $text['description-call_flow_destination']['pt-pt'] = "Seleccione o destino.";
$text['description-call_flow_destination']['ro-ro'] = "Selectați destinația.";
$text['description-call_flow_destination']['ru-ru'] = "Выберите назначение.";
$text['description-call_flow_destination']['sv-se'] = "Välj destinationen.";
$text['description-call_flow_destination']['uk-ua'] = "Відправити дзвінок на розширення, меню IVR, конференцію, або будь-який інший номер.";
$text['description-call_flow_destination']['uk-ua'] = "Виберіть пункт призначення.";
$text['description-call_flow_destination']['tr-tr'] = "Hedefi seçin.";
$text['description-call_flow_destination']['zh-cn'] = "选择目的地。";
$text['description-call_flow_destination']['ja-jp'] = "宛先を選択します。";
$text['description-call_flow_destination']['ko-kr'] = "목적지를 선택합니다.";
@@ -630,12 +708,14 @@ $text['description-call_flow_context']['ar-eg'] = "أدخل السياق.";
$text['description-call_flow_context']['de-at'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['de-ch'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['de-de'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['el-gr'] = "Εισαγάγετε το πλαίσιο.";
$text['description-call_flow_context']['es-cl'] = "Ingrese el contexto.";
$text['description-call_flow_context']['es-mx'] = "Ingrese el contexto.";
$text['description-call_flow_context']['fr-ca'] = "Choisir le contexte.";
$text['description-call_flow_context']['fr-fr'] = "Choisir le contexte.";
$text['description-call_flow_context']['he-il'] = "הזן את ההקשר.";
$text['description-call_flow_context']['it-it'] = "Inserisci il contesto.";
$text['description-call_flow_context']['ka-ge'] = "შეიყვანეთ კონტექსტი";
$text['description-call_flow_context']['nl-nl'] = "Voer de Context in.";
$text['description-call_flow_context']['pl-pl'] = "Wprowadź kontekst";
$text['description-call_flow_context']['pt-br'] = "Insira o contexto.";
@@ -644,6 +724,7 @@ $text['description-call_flow_context']['ro-ro'] = "Introduceți contextul.";
$text['description-call_flow_context']['ru-ru'] = "Введите контекст.";
$text['description-call_flow_context']['sv-se'] = "Ange Context.";
$text['description-call_flow_context']['uk-ua'] = "Введіть контекст.";
$text['description-call_flow_context']['tr-tr'] = "Bağlamı girin.";
$text['description-call_flow_context']['zh-cn'] = "输入上下文。";
$text['description-call_flow_context']['ja-jp'] = "コンテキストを入力します。";
$text['description-call_flow_context']['ko-kr'] = "컨텍스트를 입력하십시오.";
@@ -654,12 +735,14 @@ $text['description-call_flows']['ar-eg'] = "مكالمات مباشرة بين
$text['description-call_flows']['de-at'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['de-ch'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['de-de'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['el-gr'] = "Απευθείας κλήσεις μεταξύ δύο προορισμών καλώντας έναν κωδικό λειτουργίας.";
$text['description-call_flows']['es-cl'] = "Llamadas directas entre dos destinatarios llamando a un código distintivo.";
$text['description-call_flows']['es-mx'] = "Llamadas directas entre dos destinatarios llamando a un código distintivo.";
$text['description-call_flows']['fr-ca'] = "Appels directs entre deux destinations en appelant une fonction.";
$text['description-call_flows']['fr-fr'] = "Appels directs entre deux destinations en appelant une fonction.";
$text['description-call_flows']['he-il'] = "שיחות ישירות בין שני יעדים על ידי קריאה לקוד תכונה.";
$text['description-call_flows']['it-it'] = "Devia le chiamate tra due destinazioni chiamando un codice di attivazione.";
$text['description-call_flows']['ka-ge'] = "გადართეთ ზარები ორ მიმართულებას შორის სპეციალურ კოდზე დარეკვით.";
$text['description-call_flows']['nl-nl'] = "Direkte oproepen tussen tw bestemmingen via een functie-code.";
$text['description-call_flows']['pl-pl'] = "Kieruj rozmowy bezpośrednio pomiędzy dwoma destynacjami poprzez prowadzenie specjalnego kodu.";
$text['description-call_flows']['pt-br'] = "Chamadas diretas para dois dispositivos utilizando o código de função.";
@@ -668,6 +751,7 @@ $text['description-call_flows']['ro-ro'] = "Apelurile directe între două desti
$text['description-call_flows']['ru-ru'] = "Переключите вызовы между двумя направлениями с помощью кода дополнительного вида обслуживания.";
$text['description-call_flows']['sv-se'] = "Samtal mellan två destinationer genom att ringa en funktionskod.";
$text['description-call_flows']['uk-ua'] = "Прямі виклики між двома пунктами шляхом виклику коду функції.";
$text['description-call_flows']['tr-tr'] = "Bir özellik kodunu çağırarak iki hedef arasında doğrudan arama yapın.";
$text['description-call_flows']['zh-cn'] = "通过呼叫功能代码在两个目的地之间直接呼叫。";
$text['description-call_flows']['ja-jp'] = "機能コードを呼び出して、2 つの宛先間で直接呼び出しを行います。";
$text['description-call_flows']['ko-kr'] = "기능 코드를 호출하여 두 대상 간에 직접 호출합니다.";
@@ -678,12 +762,14 @@ $text['description-call_flow_alternate_label']['ar-eg'] = "أدخل تسمية
$text['description-call_flow_alternate_label']['de-at'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['de-ch'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['de-de'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['el-gr'] = "Εισαγάγετε την ετικέτα εναλλακτικού προορισμού.";
$text['description-call_flow_alternate_label']['es-cl'] = "Ingrese la etiqueta de destino alternativo.";
$text['description-call_flow_alternate_label']['es-mx'] = "Ingrese la etiqueta de destino alternativo.";
$text['description-call_flow_alternate_label']['fr-ca'] = "Choisir le label de la destination alternative.";
$text['description-call_flow_alternate_label']['fr-fr'] = "Choisir le label de la destination alternative.";
$text['description-call_flow_alternate_label']['he-il'] = "הזן את תווית היעד החלופית.";
$text['description-call_flow_alternate_label']['it-it'] = "Inserisci l'etichetta di destinazione alternativa.";
$text['description-call_flow_alternate_label']['ka-ge'] = "შეიყვანეთ ალტერნატიული მიმართულების სახელი.";
$text['description-call_flow_alternate_label']['nl-nl'] = "Voer alternatieve bestemmingskenmerk in";
$text['description-call_flow_alternate_label']['pl-pl'] = "Wprowadź alternatywny opis destynacji";
$text['description-call_flow_alternate_label']['pt-br'] = "Insira um destino alternativo.";
@@ -692,6 +778,7 @@ $text['description-call_flow_alternate_label']['ro-ro'] = "Introduceți eticheta
$text['description-call_flow_alternate_label']['ru-ru'] = "Введите название альтернативного направления.";
$text['description-call_flow_alternate_label']['sv-se'] = "Ange den alternativa destinations etiketten.";
$text['description-call_flow_alternate_label']['uk-ua'] = "Введіть альтернативний ярлик призначення.";
$text['description-call_flow_alternate_label']['tr-tr'] = "Alternatif hedef etiketini girin.";
$text['description-call_flow_alternate_label']['zh-cn'] = "输入备用目的地标签。";
$text['description-call_flow_alternate_label']['ja-jp'] = "代替宛先ラベルを入力します。";
$text['description-call_flow_alternate_label']['ko-kr'] = "대체 대상 레이블을 입력합니다.";
@@ -702,12 +789,14 @@ $text['description-call_flow_alternate_destination']['ar-eg'] = "حدد الوج
$text['description-call_flow_alternate_destination']['de-at'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['de-ch'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['de-de'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['el-gr'] = "Επιλέξτε τον εναλλακτικό προορισμό.";
$text['description-call_flow_alternate_destination']['es-cl'] = "Seleccione el destino alternativo.";
$text['description-call_flow_alternate_destination']['es-mx'] = "Seleccione el destino alternativo.";
$text['description-call_flow_alternate_destination']['fr-ca'] = "Choisir la destination alternative.";
$text['description-call_flow_alternate_destination']['fr-fr'] = "Choisir la destination alternative.";
$text['description-call_flow_alternate_destination']['he-il'] = "בחר את היעד החלופי.";
$text['description-call_flow_alternate_destination']['it-it'] = "Seleziona la destinazione alternativa.";
$text['description-call_flow_alternate_destination']['ka-ge'] = "აირჩიეთ ალტერნატიული დანიშნულება.";
$text['description-call_flow_alternate_destination']['nl-nl'] = "Kies alternatieve bestemming.";
$text['description-call_flow_alternate_destination']['pl-pl'] = "Wybierz alternatywną destynację";
$text['description-call_flow_alternate_destination']['pt-br'] = "Selecione um destino alternativo.";
@@ -716,6 +805,7 @@ $text['description-call_flow_alternate_destination']['ro-ro'] = "Selectați dest
$text['description-call_flow_alternate_destination']['ru-ru'] = "Выберите альтернативное направление.";
$text['description-call_flow_alternate_destination']['sv-se'] = "Välj den alternativa destinationen.";
$text['description-call_flow_alternate_destination']['uk-ua'] = "Виберіть інше розташування.";
$text['description-call_flow_alternate_destination']['tr-tr'] = "Alternatif hedefi seçin.";
$text['description-call_flow_alternate_destination']['zh-cn'] = "选择备用目的地。";
$text['description-call_flow_alternate_destination']['ja-jp'] = "代替宛先を選択します。";
$text['description-call_flow_alternate_destination']['ko-kr'] = "대체 대상을 선택합니다.";
@@ -726,12 +816,14 @@ $text['description-call_flow_sound']['ar-eg'] = "حدد الصوت المراد
$text['description-call_flow_sound']['de-at'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['de-ch'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['de-de'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['el-gr'] = "Επιλέξτε τον ήχο για αναπαραγωγή όταν η κατάσταση έχει οριστεί στους προορισμούς.";
$text['description-call_flow_sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino.";
$text['description-call_flow_sound']['es-mx'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino.";
$text['description-call_flow_sound']['fr-ca'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination.";
$text['description-call_flow_sound']['fr-fr'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination.";
$text['description-call_flow_sound']['he-il'] = "בחר את הצליל להשמעה כאשר המצב מוגדר ליעדים.";
$text['description-call_flow_sound']['it-it'] = "Selezionare il suono da riprodurre quando lo stato è impostato sulle destinazioni.";
$text['description-call_flow_sound']['ka-ge'] = "აირჩიეთ ხმა, რომელსაც დავუკრავთ, როცა სტატუსი დაყენდება დანიშნულების პუნქტზე.";
$text['description-call_flow_sound']['nl-nl'] = "Kies het geluid om af te spelen als status bestemming is. ";
$text['description-call_flow_sound']['pl-pl'] = "Wybierz dźwięk do odtworzenia, gdy status jest ustawiony do miejsca przeznaczenia.";
$text['description-call_flow_sound']['pt-br'] = "Selecione o som para tocar quando o status é definido para o destino.";
@@ -740,6 +832,7 @@ $text['description-call_flow_sound']['ro-ro'] = "Selectați sunetul de redat câ
$text['description-call_flow_sound']['ru-ru'] = "Выберите звук для воспроизведения, когда состояние устанавливается в пункты назначения.";
$text['description-call_flow_sound']['sv-se'] = "Välj ljud att spela när status är inställd på destinationen.";
$text['description-call_flow_sound']['uk-ua'] = "Виберіть звук для відтворення , коли статус встановлений в пункти призначення.";
$text['description-call_flow_sound']['tr-tr'] = "Durum hedeflere ayarlandığında çalınacak sesi seçin.";
$text['description-call_flow_sound']['zh-cn'] = "当状态设置为目的地时,选择要播放的声音。";
$text['description-call_flow_sound']['ja-jp'] = "ステータスが目的地に設定されたときに再生するサウンドを選択します。";
$text['description-call_flow_sound']['ko-kr'] = "상태가 목적지로 설정되었을 때 재생할 사운드를 선택합니다.";
@@ -750,12 +843,14 @@ $text['description-call_flow_alternate_sound']['ar-eg'] = "حدد الصوت ا
$text['description-call_flow_alternate_sound']['de-at'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['de-ch'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['de-de'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['el-gr'] = "Επιλέξτε τον ήχο για αναπαραγωγή όταν η κατάσταση έχει οριστεί στον εναλλακτικό προορισμό.";
$text['description-call_flow_alternate_sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino alternativo.";
$text['description-call_flow_alternate_sound']['es-mx'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino alternativo.";
$text['description-call_flow_alternate_sound']['fr-ca'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination alternative.";
$text['description-call_flow_alternate_sound']['fr-fr'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination alternative.";
$text['description-call_flow_alternate_sound']['he-il'] = "בחר את הצליל להשמעה כאשר המצב מוגדר ליעד החלופי.";
$text['description-call_flow_alternate_sound']['it-it'] = "Selezionare il suono da riprodurre quando lo stato è impostato sulla destinazione alternativa.";
$text['description-call_flow_alternate_sound']['ka-ge'] = "აირჩიეთ ხმა, რომელიც დაიკვრება, როცა სტატუსი ალტერნატიულ დანიშნულებაზე დადგება.";
$text['description-call_flow_alternate_sound']['nl-nl'] = "Kies het geluid om af te spelen als de status alternatieve bestemming is.";
$text['description-call_flow_alternate_sound']['pl-pl'] = "Wybierz dźwięk do odtworzenia, gdy status jest ustawiony na alternatywnego przeznaczenia.";
$text['description-call_flow_alternate_sound']['pt-br'] = "Selecione o som para tocar quando o status é definido para o destino alternativo.";
@@ -764,6 +859,7 @@ $text['description-call_flow_alternate_sound']['ro-ro'] = "Selectați sunetul de
$text['description-call_flow_alternate_sound']['ru-ru'] = "Выберите звук, который воспроизводится когда статус устанавливается в альтернативное направление.";
$text['description-call_flow_alternate_sound']['sv-se'] = "Välj ljud att spela när status är inställd på den alternativa destinationen.";
$text['description-call_flow_alternate_sound']['uk-ua'] = "Виберіть звук для відтворення , коли встановлено стан альтернативного призначення.";
$text['description-call_flow_alternate_sound']['tr-tr'] = "Durum alternatif hedef olarak ayarlandığında çalınacak sesi seçin.";
$text['description-call_flow_alternate_sound']['zh-cn'] = "选择当状态设置为备用目的地时要播放的声音。";
$text['description-call_flow_alternate_sound']['ja-jp'] = "ステータスが代替宛先に設定されている場合に再生するサウンドを選択します。";
$text['description-call_flow_alternate_sound']['ko-kr'] = "상태가 대체 대상으로 설정된 경우 재생할 사운드를 선택합니다.";
@@ -774,12 +870,14 @@ $text['recordings']['ar-eg'] = "التسجيلات";
$text['recordings']['de-at'] = "Aufnahmen";
$text['recordings']['de-ch'] = "Aufnahmen";
$text['recordings']['de-de'] = "Aufnahmen";
$text['recordings']['el-gr'] = "Ηχογραφήσεις";
$text['recordings']['es-cl'] = "grabaciones";
$text['recordings']['es-mx'] = "grabaciones";
$text['recordings']['fr-ca'] = "Enregistrements d'appels";
$text['recordings']['fr-fr'] = "Enregistrements d'appels";
$text['recordings']['he-il'] = "הקלטות";
$text['recordings']['it-it'] = "Registrazioni";
$text['recordings']['ka-ge'] = "ჩანაწერები";
$text['recordings']['nl-nl'] = "Opnamen";
$text['recordings']['pl-pl'] = "nagrania";
$text['recordings']['pt-br'] = "Gravações";
@@ -788,6 +886,7 @@ $text['recordings']['ro-ro'] = "Înregistrări";
$text['recordings']['ru-ru'] = "Записи";
$text['recordings']['sv-se'] = "inspelningar";
$text['recordings']['uk-ua'] = "записи";
$text['recordings']['tr-tr'] = "Kayıtlar";
$text['recordings']['zh-cn'] = "录音";
$text['recordings']['ja-jp'] = "録音";
$text['recordings']['ko-kr'] = "녹음";
@@ -798,12 +897,14 @@ $text['miscellaneous']['ar-eg'] = "متنوع";
$text['miscellaneous']['de-at'] = "Sonstiges";
$text['miscellaneous']['de-ch'] = "Sonstiges";
$text['miscellaneous']['de-de'] = "Sonstiges";
$text['miscellaneous']['el-gr'] = "Διάφορα";
$text['miscellaneous']['es-cl'] = "Diverso";
$text['miscellaneous']['es-mx'] = "Diverso";
$text['miscellaneous']['fr-ca'] = "Divers";
$text['miscellaneous']['fr-fr'] = "Divers";
$text['miscellaneous']['he-il'] = "שונות";
$text['miscellaneous']['it-it'] = "Varie";
$text['miscellaneous']['ka-ge'] = "სხვადასხვა";
$text['miscellaneous']['nl-nl'] = "Overigen";
$text['miscellaneous']['pl-pl'] = "Różne";
$text['miscellaneous']['pt-br'] = "Diversos";
@@ -812,6 +913,7 @@ $text['miscellaneous']['ro-ro'] = "Diverse";
$text['miscellaneous']['ru-ru'] = "Разное";
$text['miscellaneous']['sv-se'] = "Diverse";
$text['miscellaneous']['uk-ua'] = "Різне";
$text['miscellaneous']['tr-tr'] = "Çeşitli";
$text['miscellaneous']['zh-cn'] = "各种各样的";
$text['miscellaneous']['ja-jp'] = "その他";
$text['miscellaneous']['ko-kr'] = "여러 가지 잡다한";
@@ -822,12 +924,14 @@ $text['sounds']['ar-eg'] = "اصوات";
$text['sounds']['de-at'] = "Ruftöne";
$text['sounds']['de-ch'] = "Ruftöne";
$text['sounds']['de-de'] = "Ruftöne";
$text['sounds']['el-gr'] = "Ήχοι";
$text['sounds']['es-cl'] = "Sonidos";
$text['sounds']['es-mx'] = "Sonidos";
$text['sounds']['fr-ca'] = "des sons";
$text['sounds']['fr-fr'] = "des sons";
$text['sounds']['he-il'] = "צלילים";
$text['sounds']['it-it'] = "Audio";
$text['sounds']['ka-ge'] = "ხმები";
$text['sounds']['nl-nl'] = "Geluiden";
$text['sounds']['pl-pl'] = "Dźwięki";
$text['sounds']['pt-br'] = "Sons";
@@ -836,6 +940,7 @@ $text['sounds']['ro-ro'] = "Sunete";
$text['sounds']['ru-ru'] = "Звуки";
$text['sounds']['sv-se'] = "Ljud";
$text['sounds']['uk-ua'] = "звуки";
$text['sounds']['tr-tr'] = "Sesler";
$text['sounds']['zh-cn'] = "声音";
$text['sounds']['ja-jp'] = "サウンド";
$text['sounds']['ko-kr'] = "소리";
+2 -1
View File
@@ -11,8 +11,9 @@
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Flows";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Circulation d'Appel";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "cinématiques d'Appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Flows";
$apps[$x]['menu'][$y]['title']['he-il'] = "התקשר זרימות";
$apps[$x]['menu'][$y]['title']['it-it'] = "Deviatori di Chiamata";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ზარების მიმდინარეობა";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep besturing";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Przepływ rozmów";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Fluxo de chamadas";
+225 -182
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -121,7 +121,7 @@
//if (empty($dialplan_uuid)) { $msg .= $text['message-required']." ".$text['label-dialplan_uuid']."<br>\n"; }
//if (empty($call_flow_name)) { $msg .= $text['message-required']." ".$text['label-call_flow_name']."<br>\n"; }
if (empty($call_flow_extension)) { $msg .= $text['message-required']." ".$text['label-call_flow_extension']."<br>\n"; }
if (empty($call_flow_feature_code)) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
//if (empty($call_flow_feature_code)) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
//if (empty($call_flow_context)) { $msg .= $text['message-required']." ".$text['label-call_flow_context']."<br>\n"; }
//if (empty($call_flow_status)) { $msg .= $text['message-required']." ".$text['label-call_flow_status']."<br>\n"; }
//if (empty($call_flow_pin_number)) { $msg .= $text['message-required']." ".$text['label-call_flow_pin_number']."<br>\n"; }
@@ -181,13 +181,15 @@
//build the xml dialplan
$dialplan_xml = "<extension name=\"".xml::sanitize($call_flow_name)."\" continue=\"\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_feature)."$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"sleep\" data=\"200\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"feature_code=true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
$dialplan_xml .= " </condition>\n";
if (!empty($call_flow_feature_code)) {
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_feature)."$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"sleep\" data=\"200\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"feature_code=true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
$dialplan_xml .= " </condition>\n";
}
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_extension)."$\">\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
@@ -235,7 +237,7 @@
$array["call_flows"][$i]["call_flow_description"] = $call_flow_description;
//add the dialplan permission
$p = new permissions;
$p = permissions::new();
$p->add("dialplan_add", "temp");
$p->add("dialplan_edit", "temp");
@@ -254,9 +256,10 @@
$p->delete("dialplan_edit", "temp");
// Update subscribed endpoints
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
//send the event
if (!empty($call_flow_feature_code)) {
$esl = event_socket::create();
if ($esl->is_connected()) {
//send the event
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: flow\n";
$event .= "event_type: presence\n";
@@ -271,11 +274,8 @@
} else {
$event .= "answer-state: terminated\n";
}
event_socket_request($fp, $event);
//echo $event."<br />";
fclose($fp);
event_socket::command($event);
}
}
//debug info
@@ -367,151 +367,9 @@
//set the defaults
if (empty($call_flow_enabled)) { $call_flow_enabled = 'true'; }
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by recording_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$recordings = $database->select($sql, $parameters, 'all');
unset($parameters, $sql);
if (if_group("superadmin")) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
//echo " tb.setAttribute('style', 'width: 380px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
}
function sound_select_list($var, $name, $description_name, $load_sound=false) {
global $text, $recordings, $db;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-' . $description_name]."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo "<select name='".escape($name)."' class='formfld' ".((if_group("superadmin")) ? "onchange='changeToInput(this);'" : null).">\n";
echo " <option value=''></option>\n";
//misc optgroup
if (if_group("superadmin")) {
echo "<optgroup label=".$text['miscellaneous'].">\n";
echo " <option value='say:'>say:</option>\n";
echo " <option value='tone_stream:'>tone_stream:</option>\n";
echo "</optgroup>\n";
}
//recordings
$tmp_selected = false;
if (!empty($recordings)) {
echo "<optgroup label=".$text['recordings'].">\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
if ($var == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && !empty($var)) {
$tmp_selected = true;
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else if ($var == $recording_filename && !empty($var)) {
$tmp_selected = true;
echo " <option value='".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else {
echo " <option value='".escape($recording_filename)."'>".escape($recording_name)."</option>\n";
}
}
echo "</optgroup>\n";
}
//phrases
$sql = "select * from v_phrases where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
unset($parameters, $sql);
if (!empty($result)) {
echo "<optgroup label='Phrases'>\n";
foreach ($result as &$row) {
if ($var == "phrase:".$row["phrase_uuid"]) {
$tmp_selected = true;
echo " <option value='phrase:".escape($row["phrase_uuid"])."' selected='selected'>".escape($row["phrase_name"])."</option>\n";
}
else {
echo " <option value='phrase:".escape($row["phrase_uuid"])."'>".escape($row["phrase_name"])."</option>\n";
}
}
echo "</optgroup>\n";
}
//sounds
if ($load_sound) {
$file = new file;
$sound_files = $file->sounds();
if (!empty($sound_files)) {
echo "<optgroup label=".$text["sounds"].">\n";
foreach ($sound_files as $value) {
if (!empty($value)) {
if (substr($var, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
$var = substr($var, 71);
}
if ($var == $value) {
$tmp_selected = true;
echo " <option value='".escape($value)."' selected='selected'>".escape($value)."</option>\n";
}
else {
echo " <option value='".escape($value)."'>".escape($value)."</option>\n";
}
}
}
echo "</optgroup>\n";
}
}
//select
if (if_group("superadmin")) {
if (!$tmp_selected && !empty($var)) {
echo "<optgroup label='Selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$var)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
else if (substr($var, -3) == "wav" || substr($var, -3) == "mp3") {
echo " <option value='".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
else {
echo " <option value='".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
echo "</optgroup>\n";
}
unset($tmp_selected);
}
echo " </select>\n";
echo " <br />\n";
echo $text['description-' . $description_name]."\n";
echo "</td>\n";
echo "</tr>\n";
}
//get the sounds
$sounds = new sounds;
$audio_files = $sounds->get();
//create token
$object = new token;
@@ -522,6 +380,73 @@
require_once "resources/header.php";
//show the content
if (permission_exists('recording_play') || permission_exists('recording_download')) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " function set_playable(id, audio_selected, audio_type) {\n";
echo " file_ext = audio_selected.split('.').pop();\n";
echo " var mime_type = '';\n";
echo " switch (file_ext) {\n";
echo " case 'wav': mime_type = 'audio/wav'; break;\n";
echo " case 'mp3': mime_type = 'audio/mpeg'; break;\n";
echo " case 'ogg': mime_type = 'audio/ogg'; break;\n";
echo " }\n";
echo " if (mime_type != '' && (audio_type == 'recordings' || audio_type == 'sounds')) {\n";
echo " if (audio_type == 'recordings') {\n";
echo " $('#recording_audio_' + id).attr('src', '../recordings/recordings.php?action=download&type=rec&filename=' + audio_selected);\n";
echo " }\n";
echo " else if (audio_type == 'sounds') {\n";
echo " $('#recording_audio_' + id).attr('src', '../switch/sounds.php?action=download&filename=' + audio_selected);\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('type', mime_type);\n";
echo " $('#recording_button_' + id).show();\n";
echo " }\n";
echo " else {\n";
echo " $('#recording_button_' + id).hide();\n";
echo " $('#recording_audio_' + id).attr('src','').attr('type','');\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
}
if (if_group("superadmin")) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " var objs;\n";
echo " function toggle_select_input(obj, instance_id){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.className='formfld';\n";
echo " tb.setAttribute('id', instance_id);\n";
echo " tb.setAttribute('style', 'width: ' + obj.offsetWidth + 'px;');\n";
if (!empty($on_change)) {
echo " tb.setAttribute('onchange', \"".$on_change."\");\n";
echo " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'none';\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ replace_element(this.objs, instance_id); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo " replace_element(this.objs, instance_id);\n";
echo " }\n";
echo " function replace_element(obj, instance_id){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'inline';\n";
if (!empty($on_change)) {
echo " ".$on_change.";\n";
}
echo " }\n";
echo "</script>\n";
}
echo "<form name='frm' id='frm' method='post'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
@@ -533,6 +458,7 @@
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -551,14 +477,14 @@
echo " ".$text['label-call_flow_extension']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_extension' maxlength='255' value=\"".escape($call_flow_extension)."\">\n";
echo " <input class='formfld' type='text' name='call_flow_extension' maxlength='255' value=\"".escape($call_flow_extension)."\" required='required' placeholder=\"".($_SESSION['call_flow']['extension_range']['text'] ?? '')."\">\n";
echo "<br />\n";
echo $text['description-call_flow_extension']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_feature_code']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
@@ -635,20 +561,78 @@
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_sound, 'call_flow_sound', 'call_flow_sound', true);
/*
$instance_id = 'call_flow_sound';
$instance_label = 'call_flow_sound';
$instance_value = $call_flow_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' onclick=\"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));\" style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_sound' maxlength='255' value=\"".escape($call_flow_sound)."\">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files) && is_array($audio_files) && @sizeof($audio_files) != 0) {
foreach ($audio_files as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && !empty($playable)) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-call_flow_sound']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
*/
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
@@ -679,23 +663,81 @@
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_alternate_sound, 'call_flow_alternate_sound', 'call_flow_alternate_sound', true);
/*
$instance_id = 'call_flow_alternate_sound';
$instance_label = 'call_flow_alternate_sound';
$instance_value = $call_flow_alternate_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_alternate_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' onclick=\"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));\" style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_alternate_sound' maxlength='255' value=\"".escape($call_flow_alternate_sound)."\">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files) && is_array($audio_files) && @sizeof($audio_files) != 0) {
foreach ($audio_files as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'));"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-call_flow_alternate_sound']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
*/
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_alternate_destination']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
@@ -752,6 +794,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br /><br />";
if ($action == "update") {
+6 -3
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -89,6 +89,7 @@
//get variables used to control the order
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'call_flow_extension' ? 'natural' : null;
//add the search term
$search = strtolower($search ?? '');
@@ -131,7 +132,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql ?? '');
$sql .= order_by($order_by, $order, 'call_flow_name', 'asc');
$sql .= order_by($order_by, $order, 'call_flow_name', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$call_flows = $database->select($sql, $parameters ?? null, 'all');
@@ -157,7 +158,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_flows']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-call_flows']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_flow_add')) {
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_flow_edit.php']);
@@ -214,6 +215,7 @@
echo "<input type='hidden' id='toggle_field' name='toggle_field' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) {
@@ -297,6 +299,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
@@ -121,7 +121,7 @@ if (!class_exists('call_flows')) {
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_delete', 'temp');
$p->add('dialplan_detail_delete', 'temp');
@@ -223,7 +223,7 @@ if (!class_exists('call_flows')) {
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_edit', 'temp');
//save the array
@@ -281,8 +281,7 @@ if (!class_exists('call_flows')) {
}
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
$switch_result = event_socket::command($cmd);
}
}
unset($call_flows);
@@ -375,7 +374,7 @@ if (!class_exists('call_flows')) {
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('dialplan_add', 'temp');
//save the array
+132
View File
@@ -0,0 +1,132 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
//check permisions
if (permission_exists('recording_play')) {
//access granted
}
else {
echo "access denied";
exit;
}
//create the waveform file
if ($_GET['id'] && !empty($_GET['data']) && !empty($_GET['type'])) {
//determine path of audio file by type
if ($_GET['type'] == 'recordings') {
$slash = substr($_GET['data'],0,1) != '/' ? '/' : null;
$full_file_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].$slash.str_replace($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'], '', $_GET['data']);
}
else if ($_GET['type'] == 'sounds') {
//get first installed language (like en/us/callie)
$language_paths = glob($_SESSION["switch"]['sounds']['dir']."/*/*/*");
foreach ($language_paths as $key => $path) {
$path = str_replace($_SESSION["switch"]['sounds']['dir'].'/', "", $path);
$path_array = explode('/', $path);
if (count($path_array) <> 3 || strlen($path_array[0]) <> 2 || strlen($path_array[1]) <> 2) {
unset($language_paths[$key]);
}
$language_paths[$key] = str_replace($_SESSION["switch"]['sounds']['dir']."/","",$language_paths[$key] ?? '');
if (empty($language_paths[$key])) {
unset($language_paths[$key]);
}
}
$language_path = $language_paths[0];
//determine the path for sound file
$filename_parts = explode('/', str_replace('..', '', $_GET['data']));
if (!is_array($filename_parts) || @sizeof($filename_parts) != 2) { exit; }
$path = $_SESSION['switch']['sounds']['dir'].'/'.$language_path.'/'.$filename_parts[0].'/8000/';
//build full path to sound file
$full_file_path = $path.$filename_parts[1];
}
//stream waveform file
if (file_exists($full_file_path)) {
//temporary waveform image filename
$temp_filename = 'waveform_'.$_GET['id'].'_'.rand(0000,9999).'.png';
//create temporary waveform image, if doesn't exist
if (file_exists($temp_filename)) {
$wf = true;
}
else {
//create temporary waveform image
$waveform = new Waveform($full_file_path);
Waveform::$linesPerPixel = 1; // default: 8
Waveform::$samplesPerLine = 512; // default: 512
Waveform::$colorA = !empty($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) : [32,134,37,0.6]; // array rgba, left (a-leg) wave color
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
//stream image to browser
if ($wf === true && file_exists($temp_filename)) {
ob_clean();
$fd = fopen($temp_filename, 'rb');
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Type: image/png");
header('Content-Disposition: attachment; filename="'.$temp_filename.'"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".filesize($temp_filename));
ob_clean();
fpassthru($fd);
}
}
//delete temp waveform image
@unlink($temp_filename);
}
?>
+17 -32
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Renvoi d'appel, Follow Me et ne pas deranger.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "ზარის გადამისამართება, მომყევი და არ შემაწუხო.";
$apps[$x]['description']['nl-nl'] = "Oproep doorsturen, Volg mij en Niet storen";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Desvio de chamadas, Siga-me e Não perturbe (DND).";
@@ -81,52 +82,36 @@
$apps[$x]['default_settings'][$y]['default_setting_order'] = "0";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the default Follow Me Timeout value.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ed901e23-1abb-454c-b0d3-e986efed9f56";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_call_forward";
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "408becd6-35ec-46f8-bca9-452d0fc474b6";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "dashboard_call_forward_chart_color_call_forward";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#2a9df4";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b65593fa-fe16-4380-936c-16d0d2e9bf48";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_follow_me";
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d385b1f4-76b0-4454-a9b8-11899f6407dd";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "dashboard_call_forward_chart_color_follow_me";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#03c04a";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c21c0ab6-5d23-4079-ba4d-439547f81978";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_do_not_disturb";
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "32ef2f93-6fde-409f-82cd-aabe506892df";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "dashboard_call_forward_chart_color_do_not_disturb";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#ea4c46";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d5dc5bcb-65ff-46a6-9d1a-c83b19c3782e";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_active";
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d0c9bb4c-5d7b-46c2-8651-b0324db6f26f";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "dashboard_call_forward_chart_color_active";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#d4d4d4";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "add25bdb-c0a5-44e7-adf0-87dea41955e7";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_border_color";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "rgba(0,0,0,0)";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3b2384d4-be62-44a1-96dc-27bb470f9473";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_border_width";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
?>
-31
View File
@@ -1,31 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
}
?>
+125 -5
View File
@@ -6,12 +6,14 @@ $text['title-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['title-call_forward']['de-at'] = "Rufumleitung";
$text['title-call_forward']['de-ch'] = "Rufumleitung";
$text['title-call_forward']['de-de'] = "Rufumleitung";
$text['title-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['title-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['title-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['title-call_forward']['fr-ca'] = "Renvoi d'appel";
$text['title-call_forward']['fr-fr'] = "Renvoi d'appel";
$text['title-call_forward']['he-il'] = "העבר שיחה";
$text['title-call_forward']['it-it'] = "Inoltro";
$text['title-call_forward']['ka-ge'] = "ზარის გადამისამართება";
$text['title-call_forward']['nl-nl'] = "Oproep doorsturen";
$text['title-call_forward']['pl-pl'] = "Przekierowanie";
$text['title-call_forward']['pt-br'] = "Encaminhamento de chamadas";
@@ -24,18 +26,46 @@ $text['title-call_forward']['zh-cn'] = "呼叫转移";
$text['title-call_forward']['ja-jp'] = "不在転送";
$text['title-call_forward']['ko-kr'] = "착신 전환";
$text['title-follow_me']['en-us'] = "Follow Me";
$text['title-follow_me']['en-gb'] = "Follow Me";
$text['title-follow_me']['ar-eg'] = "اتبعني";
$text['title-follow_me']['de-at'] = "Anrufweiterschaltung";
$text['title-follow_me']['de-ch'] = "Anrufweiterschaltung";
$text['title-follow_me']['de-de'] = "Anrufweiterschaltung";
$text['title-follow_me']['el-gr'] = "Ακολούθησέ με";
$text['title-follow_me']['es-cl'] = "Sígueme";
$text['title-follow_me']['es-mx'] = "Sígueme";
$text['title-follow_me']['fr-ca'] = "Suis moi";
$text['title-follow_me']['fr-fr'] = "Suis moi";
$text['title-follow_me']['he-il'] = "עקוב אחריי";
$text['title-follow_me']['it-it'] = "Seguimi";
$text['title-follow_me']['ka-ge'] = "გამომყევი(ზარის გადამისამართება)";
$text['title-follow_me']['nl-nl'] = "Volg mij";
$text['title-follow_me']['pl-pl'] = "Podążaj za mną";
$text['title-follow_me']['pt-br'] = "Siga-me";
$text['title-follow_me']['pt-pt'] = "Segue-me";
$text['title-follow_me']['ro-ro'] = "Urmați-mă";
$text['title-follow_me']['ru-ru'] = "Перенаправление";
$text['title-follow_me']['sv-se'] = "Följ Mig";
$text['title-follow_me']['uk-ua'] = "Слідуй за мною";
$text['title-follow_me']['zh-cn'] = "跟我来";
$text['title-follow_me']['ja-jp'] = "フォローしてください";
$text['title-follow_me']['ko-kr'] = "나를 따르라";
$text['header-call_forward']['en-us'] = "Call Forward";
$text['header-call_forward']['en-gb'] = "Call Forward";
$text['header-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['header-call_forward']['de-at'] = "Rufumleitung";
$text['header-call_forward']['de-ch'] = "Rufumleitung";
$text['header-call_forward']['de-de'] = "Rufumleitung";
$text['header-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['header-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['header-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['header-call_forward']['fr-ca'] = "Renvoi d'appel";
$text['header-call_forward']['fr-fr'] = "Renvoi d'appel";
$text['header-call_forward']['he-il'] = "העבר שיחה";
$text['header-call_forward']['it-it'] = "Inoltro";
$text['header-call_forward']['ka-ge'] = "ზარის გადამისამართება";
$text['header-call_forward']['nl-nl'] = "Oproep doorsturen";
$text['header-call_forward']['pl-pl'] = "Przekierowanie";
$text['header-call_forward']['pt-br'] = "Encaminhamento de chamadas";
@@ -54,12 +84,14 @@ $text['table-tools']['ar-eg'] = "أدوات";
$text['table-tools']['de-at'] = "Funktionen";
$text['table-tools']['de-ch'] = "Funktionen";
$text['table-tools']['de-de'] = "Funktionen";
$text['table-tools']['el-gr'] = "Εργαλεία";
$text['table-tools']['es-cl'] = "Herramientas";
$text['table-tools']['es-mx'] = "Herramientas";
$text['table-tools']['fr-ca'] = "Outils";
$text['table-tools']['fr-fr'] = "Outils";
$text['table-tools']['he-il'] = "כלים";
$text['table-tools']['it-it'] = "Strumenti";
$text['table-tools']['ka-ge'] = "ხელსაწყოები";
$text['table-tools']['nl-nl'] = "Gereedschappen";
$text['table-tools']['pl-pl'] = "Narzędzia";
$text['table-tools']['pt-br'] = "Ferramentas";
@@ -78,12 +110,14 @@ $text['table-extension']['ar-eg'] = "امتداد";
$text['table-extension']['de-at'] = "Nebenstelle";
$text['table-extension']['de-ch'] = "Nebenstelle";
$text['table-extension']['de-de'] = "Nebenstelle";
$text['table-extension']['el-gr'] = "Επέκταση";
$text['table-extension']['es-cl'] = "Extensión";
$text['table-extension']['es-mx'] = "Extensión";
$text['table-extension']['fr-ca'] = "Extension";
$text['table-extension']['fr-fr'] = "Extension";
$text['table-extension']['he-il'] = "סיומת";
$text['table-extension']['it-it'] = "Interno";
$text['table-extension']['ka-ge'] = "გაფართოება";
$text['table-extension']['nl-nl'] = "Toestel";
$text['table-extension']['pl-pl'] = "Numer wewnętrzny";
$text['table-extension']['pt-br'] = "Ramal";
@@ -102,12 +136,14 @@ $text['table-description']['ar-eg'] = "وصف";
$text['table-description']['de-at'] = "Beschreibung";
$text['table-description']['de-ch'] = "Beschreibung";
$text['table-description']['de-de'] = "Beschreibung";
$text['table-description']['el-gr'] = "Περιγραφή";
$text['table-description']['es-cl'] = "Descripción";
$text['table-description']['es-mx'] = "Descripción";
$text['table-description']['fr-ca'] = "Description";
$text['table-description']['fr-fr'] = "Description";
$text['table-description']['he-il'] = "תיאור";
$text['table-description']['it-it'] = "Descrizione";
$text['table-description']['ka-ge'] = "აღწერა";
$text['table-description']['nl-nl'] = "Omschrijving";
$text['table-description']['pl-pl'] = "Opis";
$text['table-description']['pt-br'] = "Descrição";
@@ -126,12 +162,14 @@ $text['label-ring-timeout']['ar-eg'] = "نفذ الوقت";
$text['label-ring-timeout']['de-at'] = "Abwurfzeit";
$text['label-ring-timeout']['de-ch'] = "Abwurfzeit";
$text['label-ring-timeout']['de-de'] = "Abwurfzeit";
$text['label-ring-timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-ring-timeout']['es-cl'] = "Timeout";
$text['label-ring-timeout']['es-mx'] = "Timeout";
$text['label-ring-timeout']['fr-ca'] = "Timeout";
$text['label-ring-timeout']['fr-fr'] = "Timeout";
$text['label-ring-timeout']['he-il'] = "פסק זמן";
$text['label-ring-timeout']['it-it'] = "Timeout";
$text['label-ring-timeout']['ka-ge'] = "ტაიმაუტი";
$text['label-ring-timeout']['nl-nl'] = "Timeout";
$text['label-ring-timeout']['pl-pl'] = "Przekroczenie czasu oczekiwania ";
$text['label-ring-timeout']['pt-br'] = "Tempo limite";
@@ -150,12 +188,14 @@ $text['label-ring-order']['ar-eg'] = "ترتيب الطوق";
$text['label-ring-order']['de-at'] = "Ruf Reihenfolge";
$text['label-ring-order']['de-ch'] = "Ruf Reihenfolge";
$text['label-ring-order']['de-de'] = "Ruf Reihenfolge";
$text['label-ring-order']['el-gr'] = "Παραγγελία δαχτυλιδιού";
$text['label-ring-order']['es-cl'] = "Solicitar Llamado";
$text['label-ring-order']['es-mx'] = "Solicitar Llamado";
$text['label-ring-order']['fr-ca'] = "Ordre de sonnerie";
$text['label-ring-order']['fr-fr'] = "Ordre de sonnerie";
$text['label-ring-order']['he-il'] = "מסדר טבעת";
$text['label-ring-order']['it-it'] = "Ordine di Squillo";
$text['label-ring-order']['ka-ge'] = "ზარების მიმდევრობა";
$text['label-ring-order']['nl-nl'] = "Oproep volgorde";
$text['label-ring-order']['pl-pl'] = "Kolejność dzwonienia";
$text['label-ring-order']['pt-br'] = "Solicitar chamada";
@@ -174,12 +214,14 @@ $text['label-ring-delay']['ar-eg'] = "تأخير";
$text['label-ring-delay']['de-at'] = "Verzögerung";
$text['label-ring-delay']['de-ch'] = "Verzögerung";
$text['label-ring-delay']['de-de'] = "Verzögerung";
$text['label-ring-delay']['el-gr'] = "Καθυστέρηση";
$text['label-ring-delay']['es-cl'] = "Retardo";
$text['label-ring-delay']['es-mx'] = "Retardo";
$text['label-ring-delay']['fr-ca'] = "Délais";
$text['label-ring-delay']['fr-fr'] = "Délais";
$text['label-ring-delay']['he-il'] = "לְעַכֵּב";
$text['label-ring-delay']['it-it'] = "Ritardo";
$text['label-ring-delay']['ka-ge'] = "დაყოვნება";
$text['label-ring-delay']['nl-nl'] = "Vertraging";
$text['label-ring-delay']['pl-pl'] = "Opóznienie";
$text['label-ring-delay']['pt-br'] = "Atraso";
@@ -198,12 +240,14 @@ $text['label-prompt']['ar-eg'] = "موجه لقبول المكالمة";
$text['label-prompt']['de-at'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['de-ch'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['de-de'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['el-gr'] = "Προτροπή για αποδοχή της κλήσης";
$text['label-prompt']['es-cl'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['es-mx'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['fr-ca'] = "Annonce pour accepter l'appel";
$text['label-prompt']['fr-fr'] = "Annonce pour accepter l'appel";
$text['label-prompt']['he-il'] = "הנחיה לקבל את השיחה";
$text['label-prompt']['it-it'] = "Domanda se accettare la chiamata";
$text['label-prompt']['ka-ge'] = "ზარის პასუხის დადასტურება";
$text['label-prompt']['nl-nl'] = "Melding om de oproep te accepteren";
$text['label-prompt']['pl-pl'] = "Podpowiedz, aby odebrać rozmowę";
$text['label-prompt']['pt-br'] = "Perguntar para aceitar a chamada";
@@ -222,12 +266,14 @@ $text['label-on-busy']['ar-eg'] = "مشغول";
$text['label-on-busy']['de-at'] = "Bei Besetzt";
$text['label-on-busy']['de-ch'] = "Bei Besetzt";
$text['label-on-busy']['de-de'] = "Bei Besetzt";
$text['label-on-busy']['el-gr'] = "Απασχολημένος";
$text['label-on-busy']['es-cl'] = "Concurrida";
$text['label-on-busy']['es-mx'] = "Concurrida";
$text['label-on-busy']['fr-ca'] = "Sur Occupé";
$text['label-on-busy']['fr-fr'] = "Sur Occupé";
$text['label-on-busy']['he-il'] = "על עסוק";
$text['label-on-busy']['it-it'] = "Su Occupato";
$text['label-on-busy']['ka-ge'] = "თუ დაკავებაა";
$text['label-on-busy']['nl-nl'] = "Bij bezet";
$text['label-on-busy']['pl-pl'] = "Kiedy zajęty";
$text['label-on-busy']['pt-br'] = "Ocupado";
@@ -246,12 +292,14 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Αριθμός";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['he-il'] = "מספר";
$text['label-number']['it-it'] = "Numero";
$text['label-number']['ka-ge'] = "ნომერი";
$text['label-number']['nl-nl'] = "Nummer";
$text['label-number']['pl-pl'] = "Numer";
$text['label-number']['pt-br'] = "Número";
@@ -270,12 +318,14 @@ $text['label-no_answer']['ar-eg'] = "لا اجابة";
$text['label-no_answer']['de-at'] = "Keine Antwort";
$text['label-no_answer']['de-ch'] = "Keine Antwort";
$text['label-no_answer']['de-de'] = "Keine Antwort";
$text['label-no_answer']['el-gr'] = "Καμία απάντηση";
$text['label-no_answer']['es-cl'] = "Sin Respuesta";
$text['label-no_answer']['es-mx'] = "Sin Respuesta";
$text['label-no_answer']['fr-ca'] = "Pas de réponse";
$text['label-no_answer']['fr-fr'] = "Pas de réponse";
$text['label-no_answer']['he-il'] = "אין תשובה";
$text['label-no_answer']['it-it'] = "Su Mancata Risposta";
$text['label-no_answer']['ka-ge'] = "პასუხის გარეშე";
$text['label-no_answer']['nl-nl'] = "Geen antwoord";
$text['label-no_answer']['pl-pl'] = "Brak odpowiedzi";
$text['label-no_answer']['pt-br'] = "Sem resposta";
@@ -294,12 +344,14 @@ $text['label-not_registered']['ar-eg'] = "غير مسجل";
$text['label-not_registered']['de-at'] = "Nicht registriert";
$text['label-not_registered']['de-ch'] = "Nicht registriert";
$text['label-not_registered']['de-de'] = "Nicht registriert";
$text['label-not_registered']['el-gr'] = "Μη εγγεγραμμένο";
$text['label-not_registered']['es-cl'] = "No registrado";
$text['label-not_registered']['es-mx'] = "No registrado";
$text['label-not_registered']['fr-ca'] = "Non enregistré";
$text['label-not_registered']['fr-fr'] = "Non enregistré";
$text['label-not_registered']['he-il'] = "לא רשום";
$text['label-not_registered']['it-it'] = "Su Mancata Registrazione";
$text['label-not_registered']['ka-ge'] = "დარეგისტრირებული არაა";
$text['label-not_registered']['nl-nl'] = "Niet geregistreerd";
$text['label-not_registered']['pl-pl'] = "Nie zarejestrowany";
$text['label-not_registered']['pt-br'] = "Sem registro";
@@ -318,12 +370,14 @@ $text['label-ignore_busy']['ar-eg'] = "تجاهل مشغول";
$text['label-ignore_busy']['de-at'] = "Besetzt ignorieren";
$text['label-ignore_busy']['de-ch'] = "Besetzt ignorieren";
$text['label-ignore_busy']['de-de'] = "Besetzt ignorieren";
$text['label-ignore_busy']['el-gr'] = "Αγνοήστε Απασχολημένος";
$text['label-ignore_busy']['es-cl'] = "Ignorar ocupado";
$text['label-ignore_busy']['es-mx'] = "Ignorar ocupado";
$text['label-ignore_busy']['fr-ca'] = "Ignorer occupé";
$text['label-ignore_busy']['fr-fr'] = "Ignorer occupé";
$text['label-ignore_busy']['he-il'] = "Ігнорувати зайнятий";
$text['label-ignore_busy']['it-it'] = "Ignora Occupato";
$text['label-ignore_busy']['ka-ge'] = "დაკავებულობის იგნორი";
$text['label-ignore_busy']['nl-nl'] = "Bezet negeren";
$text['label-ignore_busy']['pl-pl'] = "Ignoruj Zajęty";
$text['label-ignore_busy']['pt-br'] = "Ignorar ocupado";
@@ -342,12 +396,14 @@ $text['label-follow_me']['ar-eg'] = "اتبعني";
$text['label-follow_me']['de-at'] = "Anrufweiterschaltung";
$text['label-follow_me']['de-ch'] = "Anrufweiterschaltung";
$text['label-follow_me']['de-de'] = "Anrufweiterschaltung";
$text['label-follow_me']['el-gr'] = "Ακολούθησέ με";
$text['label-follow_me']['es-cl'] = "Sígueme";
$text['label-follow_me']['es-mx'] = "Sígueme";
$text['label-follow_me']['fr-ca'] = "Suis moi";
$text['label-follow_me']['fr-fr'] = "Suis moi";
$text['label-follow_me']['he-il'] = "עקוב אחריי";
$text['label-follow_me']['it-it'] = "Seguimi";
$text['label-follow_me']['ka-ge'] = "ზარის მიმართულების შეცვლა";
$text['label-follow_me']['nl-nl'] = "Volg mij";
$text['label-follow_me']['pl-pl'] = "Podążaj za mną";
$text['label-follow_me']['pt-br'] = "Siga-me";
@@ -366,12 +422,14 @@ $text['label-dnd']['ar-eg'] = "لا تخل";
$text['label-dnd']['de-at'] = "Bitte nicht stören";
$text['label-dnd']['de-ch'] = "Bitte nicht stören";
$text['label-dnd']['de-de'] = "Bitte nicht stören";
$text['label-dnd']['el-gr'] = "Μην ενοχλείτε";
$text['label-dnd']['es-cl'] = "No Molestar";
$text['label-dnd']['es-mx'] = "No Molestar";
$text['label-dnd']['fr-ca'] = "Ne pas déranger";
$text['label-dnd']['fr-fr'] = "Ne pas déranger";
$text['label-dnd']['he-il'] = "אל תפריע";
$text['label-dnd']['it-it'] = "Non Disturbare";
$text['label-dnd']['ka-ge'] = "არ შემაწუხო";
$text['label-dnd']['nl-nl'] = "Niet Storen";
$text['label-dnd']['pl-pl'] = "Nie przeszkadzaj (DND)";
$text['label-dnd']['pt-br'] = "Não Pertube (DND)";
@@ -390,12 +448,14 @@ $text['label-destinations']['ar-eg'] = "الأماكن";
$text['label-destinations']['de-at'] = "Ziele";
$text['label-destinations']['de-ch'] = "Ziele";
$text['label-destinations']['de-de'] = "Ziele";
$text['label-destinations']['el-gr'] = "Προορισμοί";
$text['label-destinations']['es-cl'] = "Destinos";
$text['label-destinations']['es-mx'] = "Destinos";
$text['label-destinations']['fr-ca'] = "Destinations";
$text['label-destinations']['fr-fr'] = "Destinations";
$text['label-destinations']['he-il'] = "יעדים";
$text['label-destinations']['it-it'] = "Destinazioni";
$text['label-destinations']['ka-ge'] = "დანიშნულებები";
$text['label-destinations']['nl-nl'] = "Bestemmingen";
$text['label-destinations']['pl-pl'] = "Destynacje";
$text['label-destinations']['pt-br'] = "Destinos";
@@ -414,12 +474,14 @@ $text['label-destination_timeout']['ar-eg'] = "نفذ الوقت";
$text['label-destination_timeout']['de-at'] = "Abwurfzeit";
$text['label-destination_timeout']['de-ch'] = "Abwurfzeit";
$text['label-destination_timeout']['de-de'] = "Abwurfzeit";
$text['label-destination_timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-destination_timeout']['es-cl'] = "Se acabó el tiempo";
$text['label-destination_timeout']['es-mx'] = "Se acabó el tiempo";
$text['label-destination_timeout']['fr-ca'] = "Temps libre";
$text['label-destination_timeout']['fr-fr'] = "Temps libre";
$text['label-destination_timeout']['he-il'] = "פסק זמן";
$text['label-destination_timeout']['it-it'] = "Tempo scaduto";
$text['label-destination_timeout']['ka-ge'] = "ტაიმაუტი";
$text['label-destination_timeout']['nl-nl'] = "Timeout";
$text['label-destination_timeout']['pl-pl'] = "Limit czasowy";
$text['label-destination_timeout']['pt-br'] = "Tempo limite";
@@ -438,12 +500,14 @@ $text['label-destination_prompt_confirm']['ar-eg'] = "يتأكد";
$text['label-destination_prompt_confirm']['de-at'] = "Bestätigen";
$text['label-destination_prompt_confirm']['de-ch'] = "Bestätigen";
$text['label-destination_prompt_confirm']['de-de'] = "Bestätigen";
$text['label-destination_prompt_confirm']['el-gr'] = "Επιβεβαιώνω";
$text['label-destination_prompt_confirm']['es-cl'] = "Confirmar";
$text['label-destination_prompt_confirm']['es-mx'] = "Confirmar";
$text['label-destination_prompt_confirm']['fr-ca'] = "Confirmer";
$text['label-destination_prompt_confirm']['fr-fr'] = "Confirmer";
$text['label-destination_prompt_confirm']['he-il'] = "לְאַשֵׁר";
$text['label-destination_prompt_confirm']['it-it'] = "Conferma";
$text['label-destination_prompt_confirm']['ka-ge'] = "დადასტურება";
$text['label-destination_prompt_confirm']['nl-nl'] = "Bevestig";
$text['label-destination_prompt_confirm']['pl-pl'] = "Potwierdź";
$text['label-destination_prompt_confirm']['pt-br'] = "Confirmar";
@@ -462,12 +526,14 @@ $text['label-destination_prompt_announce']['ar-eg'] = "أعلن";
$text['label-destination_prompt_announce']['de-at'] = "Ankündigen";
$text['label-destination_prompt_announce']['de-ch'] = "Ankündigen";
$text['label-destination_prompt_announce']['de-de'] = "Ankündigen";
$text['label-destination_prompt_announce']['el-gr'] = "Ανακοινώνω";
$text['label-destination_prompt_announce']['es-cl'] = "Anunciar";
$text['label-destination_prompt_announce']['es-mx'] = "Anunciar";
$text['label-destination_prompt_announce']['fr-ca'] = "Annonce";
$text['label-destination_prompt_announce']['fr-fr'] = "Annonce";
$text['label-destination_prompt_announce']['he-il'] = "להכריז";
$text['label-destination_prompt_announce']['it-it'] = "Annuncio";
$text['label-destination_prompt_announce']['ka-ge'] = "გამოცხადება";
$text['label-destination_prompt_announce']['nl-nl'] = "Aankondigen";
$text['label-destination_prompt_announce']['pl-pl'] = "Rozgłoś/powiadom";
$text['label-destination_prompt_announce']['pt-br'] = "Anunciar";
@@ -486,12 +552,14 @@ $text['label-destination_prompt']['ar-eg'] = "اِسْتَدْعَى";
$text['label-destination_prompt']['de-at'] = "Nachfragen";
$text['label-destination_prompt']['de-ch'] = "Nachfragen";
$text['label-destination_prompt']['de-de'] = "Nachfragen";
$text['label-destination_prompt']['el-gr'] = "Προτροπή";
$text['label-destination_prompt']['es-cl'] = "Prompt";
$text['label-destination_prompt']['es-mx'] = "Prompt";
$text['label-destination_prompt']['fr-ca'] = "Prompt";
$text['label-destination_prompt']['fr-fr'] = "Prompt";
$text['label-destination_prompt']['he-il'] = "מיידי";
$text['label-destination_prompt']['it-it'] = "Prompt";
$text['label-destination_prompt']['ka-ge'] = "მოწვევა";
$text['label-destination_prompt']['nl-nl'] = "Navragen";
$text['label-destination_prompt']['pl-pl'] = "Potwierdź aby odebrac rozmowę";
$text['label-destination_prompt']['pt-br'] = "Prompt";
@@ -510,12 +578,14 @@ $text['label-destination_number']['ar-eg'] = "وجهة";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_number']['de-ch'] = "Ziel";
$text['label-destination_number']['de-de'] = "Ziel";
$text['label-destination_number']['el-gr'] = "Προορισμός";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['es-mx'] = "Destino";
$text['label-destination_number']['fr-ca'] = "Destination";
$text['label-destination_number']['fr-fr'] = "Destination";
$text['label-destination_number']['he-il'] = "יַעַד";
$text['label-destination_number']['it-it'] = "Destinazione";
$text['label-destination_number']['ka-ge'] = "დანიშნულება";
$text['label-destination_number']['nl-nl'] = "Bestemming";
$text['label-destination_number']['pl-pl'] = "Destynacja";
$text['label-destination_number']['pt-br'] = "Destino";
@@ -534,12 +604,14 @@ $text['label-destination_delay']['ar-eg'] = "تأخير";
$text['label-destination_delay']['de-at'] = "Verzögerung";
$text['label-destination_delay']['de-ch'] = "Verzögerung";
$text['label-destination_delay']['de-de'] = "Verzögerung";
$text['label-destination_delay']['el-gr'] = "Καθυστέρηση";
$text['label-destination_delay']['es-cl'] = "Retraso";
$text['label-destination_delay']['es-mx'] = "Retraso";
$text['label-destination_delay']['fr-ca'] = "Délais";
$text['label-destination_delay']['fr-fr'] = "Délais";
$text['label-destination_delay']['he-il'] = "לְעַכֵּב";
$text['label-destination_delay']['it-it'] = "Ritardo";
$text['label-destination_delay']['ka-ge'] = "დაყოვნება";
$text['label-destination_delay']['nl-nl'] = "Vertraging";
$text['label-destination_delay']['pl-pl'] = "Opóźnienie";
$text['label-destination_delay']['pt-br'] = "Atraso";
@@ -558,12 +630,14 @@ $text['label-destination']['ar-eg'] = "وجهة";
$text['label-destination']['de-at'] = "Ziel";
$text['label-destination']['de-ch'] = "Ziel";
$text['label-destination']['de-de'] = "Ziel";
$text['label-destination']['el-gr'] = "Προορισμός";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['es-mx'] = "Destino";
$text['label-destination']['fr-ca'] = "Destination";
$text['label-destination']['fr-fr'] = "Destination";
$text['label-destination']['he-il'] = "יַעַד";
$text['label-destination']['it-it'] = "Destinazione";
$text['label-destination']['ka-ge'] = "დანიშნულება";
$text['label-destination']['nl-nl'] = "Bestemming";
$text['label-destination']['pl-pl'] = "Destynacja";
$text['label-destination']['pt-br'] = "Número de destino";
@@ -582,12 +656,14 @@ $text['label-cid-number-prefix']['ar-eg'] = "بادئة الرقم";
$text['label-cid-number-prefix']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['de-de'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['el-gr'] = "Πρόθεμα αριθμού";
$text['label-cid-number-prefix']['es-cl'] = "Número de Caller ID";
$text['label-cid-number-prefix']['es-mx'] = "Número de Caller ID";
$text['label-cid-number-prefix']['fr-ca'] = "CID Nombre Préfixe";
$text['label-cid-number-prefix']['fr-fr'] = "CID Nombre Préfixe";
$text['label-cid-number-prefix']['he-il'] = "קידומת מספר";
$text['label-cid-number-prefix']['it-it'] = "Numero Chiamante";
$text['label-cid-number-prefix']['ka-ge'] = "ნომრის პრეფიქსი";
$text['label-cid-number-prefix']['nl-nl'] = "Voorloopnummer";
$text['label-cid-number-prefix']['pl-pl'] = "Prefiks prezentacji numeru dzwoniącego";
$text['label-cid-number-prefix']['pt-br'] = "Número do discador";
@@ -606,12 +682,14 @@ $text['label-cid-number']['ar-eg'] = "رقم هوية المتصل";
$text['label-cid-number']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['de-de'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['el-gr'] = "Αριθμός αναγνώρισης καλούντος";
$text['label-cid-number']['es-cl'] = "Número de Caller ID";
$text['label-cid-number']['es-mx'] = "Número de Caller ID";
$text['label-cid-number']['fr-ca'] = "CID Nombre Préfixe";
$text['label-cid-number']['fr-fr'] = "CID Nombre Préfixe";
$text['label-cid-number']['he-il'] = "מספר זיהוי מתקשר";
$text['label-cid-number']['it-it'] = "Numero Caller ID";
$text['label-cid-number']['ka-ge'] = "CallerID ნომერი";
$text['label-cid-number']['nl-nl'] = "CID nummer";
$text['label-cid-number']['pl-pl'] = "Prefiks prezentacji numeru dzwoniącego";
$text['label-cid-number']['pt-br'] = "Número do discador";
@@ -630,12 +708,14 @@ $text['label-cid-name-prefix']['ar-eg'] = "الأسم الأول";
$text['label-cid-name-prefix']['de-at'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['de-ch'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['de-de'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['el-gr'] = "Πρόθεμα ονόματος";
$text['label-cid-name-prefix']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['es-mx'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['fr-ca'] = "Préfixe de l'appelant";
$text['label-cid-name-prefix']['fr-fr'] = "Préfixe de l'appelant";
$text['label-cid-name-prefix']['he-il'] = "קידומת שם";
$text['label-cid-name-prefix']['it-it'] = "Nome Chiamante";
$text['label-cid-name-prefix']['ka-ge'] = "სახელის პრეფიქსი";
$text['label-cid-name-prefix']['nl-nl'] = "Voorloop Naam ";
$text['label-cid-name-prefix']['pl-pl'] = "Prefiks prezentacji nazwy dzwoniącego";
$text['label-cid-name-prefix']['pt-br'] = "Nome (ID) de origem";
@@ -654,12 +734,14 @@ $text['label-call-prompt']['ar-eg'] = "موجه الاتصال";
$text['label-call-prompt']['de-at'] = "Nachfragen";
$text['label-call-prompt']['de-ch'] = "Nachfragen";
$text['label-call-prompt']['de-de'] = "Nachfragen";
$text['label-call-prompt']['el-gr'] = "Προτροπή κλήσης";
$text['label-call-prompt']['es-cl'] = "Aviso de Llamadas";
$text['label-call-prompt']['es-mx'] = "Aviso de Llamadas";
$text['label-call-prompt']['fr-ca'] = "Annonce d'appel";
$text['label-call-prompt']['fr-fr'] = "Annonce d'appel";
$text['label-call-prompt']['he-il'] = "הודעת שיחה";
$text['label-call-prompt']['it-it'] = "Prompt di chiamata";
$text['label-call-prompt']['ka-ge'] = "ზარის მოთხოვნა";
$text['label-call-prompt']['nl-nl'] = "Oproep melden";
$text['label-call-prompt']['pl-pl'] = "Potwierdź przed odebraniem rozmowy";
$text['label-call-prompt']['pt-br'] = "Prompt de chamada";
@@ -678,12 +760,14 @@ $text['label-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['label-call_forward']['de-at'] = "Rufumleitung";
$text['label-call_forward']['de-ch'] = "Rufumleitung";
$text['label-call_forward']['de-de'] = "Rufumleitung";
$text['label-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['label-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['label-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['label-call_forward']['fr-ca'] = "Renvoi d'appel";
$text['label-call_forward']['fr-fr'] = "Renvoi d'appel";
$text['label-call_forward']['he-il'] = "העבר שיחה";
$text['label-call_forward']['it-it'] = "Inoltro";
$text['label-call_forward']['ka-ge'] = "გადამისამართება";
$text['label-call_forward']['nl-nl'] = "Oproep doorsturen";
$text['label-call_forward']['pl-pl'] = "Przekierowanie";
$text['label-call_forward']['pt-br'] = "Encaminhamento de chamadas";
@@ -703,12 +787,14 @@ $text['label-active']['de-at'] = "Aktiv";
$text['label-active']['de-ch'] = "Aktiv";
$text['label-active']['de-de'] = "Aktiv";
$text['label-active']['el-gr'] = "Ενεργός";
$text['label-active']['el-gr'] = "Ενεργός";
$text['label-active']['es-cl'] = "Activo";
$text['label-active']['es-mx'] = "Activo";
$text['label-active']['fr-ca'] = "Actif";
$text['label-active']['fr-fr'] = "Actif";
$text['label-active']['he-il'] = "פָּעִיל";
$text['label-active']['it-it'] = "Attivo";
$text['label-active']['ka-ge'] = "აქტიური";
$text['label-active']['nl-nl'] = "Actief";
$text['label-active']['pl-pl'] = "Aktywny";
$text['label-active']['pt-br'] = "Ativo";
@@ -727,19 +813,21 @@ $text['description-on-busy']['ar-eg'] = "إذا تم تمكينه ، فإنه ي
$text['description-on-busy']['de-at'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['de-ch'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['de-de'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['el-gr'] = "Εάν είναι ενεργοποιημένο, παρακάμπτει την τιμή της ενεργοποίησης του τηλεφωνητή στην επέκταση.";
$text['description-on-busy']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['es-mx'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['fr-ca'] = "Remplace la messagerie vocale si activé.";
$text['description-on-busy']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-on-busy']['he-il'] = "אם מופעל, הוא עוקף את הערך של הפעלת הדואר הקולי בהרחבה.";
$text['description-on-busy']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-on-busy']['ka-ge'] = "თუ ჩართულია, ის გადაფარავს შიდა ნომრის პარამეტრებში აღწერილ ხმოვანი ფოსტის მნიშვნელობას.";
$text['description-on-busy']['nl-nl'] = "Indien aangezet, wordt de het antwoordapparaat bij het toestel genegeerd.";
$text['description-on-busy']['pl-pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo algum ramal atender quando estiver ocupado.";
$text['description-on-busy']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-on-busy']['ro-ro'] = "Dacă este activată, suprascrie valoarea de activare a mesageriei vocale în extensie.";
$text['description-on-busy']['ru-ru'] = "Если включено, этот параметр переопределяет голосовую почту в настройках внутренного номера";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen.";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så åsidosätter den röstbrevlådan för anknytningen.";
$text['description-on-busy']['uk-ua'] = "Якщо цей параметр включений, то вона перекриває значення голосової пошти, що дозволяє в розширенні.";
$text['description-on-busy']['zh-cn'] = "如果启用,它会覆盖分机中启用语音邮件的值。";
$text['description-on-busy']['ja-jp'] = "有効にすると、内線番号で有効になっているボイスメールの値が上書きされます。";
@@ -751,19 +839,21 @@ $text['description-no_answer']['ar-eg'] = "إذا تم تمكينه ، فإنه
$text['description-no_answer']['de-at'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['de-ch'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['de-de'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['el-gr'] = "Εάν είναι ενεργοποιημένο, παρακάμπτει την τιμή της ενεργοποίησης του τηλεφωνητή στην επέκταση.";
$text['description-no_answer']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['es-mx'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['fr-ca'] = "Remplace la messagerie vocale si activé.";
$text['description-no_answer']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-no_answer']['he-il'] = "אם מופעל, הוא עוקף את הערך של הפעלת הדואר הקולי בהרחבה.";
$text['description-no_answer']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-no_answer']['ka-ge'] = "თუ ჩართულია, ის გადაფარავს შიდა ნომრის პარამეტრებში აღწერილ ხმოვანი ფოსტის მნიშვნელობას.";
$text['description-no_answer']['nl-nl'] = "Indien aangezet, wordt de het antwoordapparaat bij het toestel genegeerd.";
$text['description-no_answer']['pl-pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-no_answer']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver chamando";
$text['description-no_answer']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-no_answer']['ro-ro'] = "Dacă este activată, suprascrie valoarea de activare a mesageriei vocale în extensie.";
$text['description-no_answer']['ru-ru'] = "Если включено, этот параметр переопределяет голосовую почту в настройках внутренного номера.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så åsidosätter den röstbrevlådan för anknytningen.";
$text['description-no_answer']['uk-ua'] = "Якщо цей параметр включений, то вона перекриває значення голосової пошти, що дозволяє в розширенні.";
$text['description-no_answer']['zh-cn'] = "如果启用,它会覆盖分机中启用语音邮件的值。";
$text['description-no_answer']['ja-jp'] = "有効にすると、内線番号で有効になっているボイスメールの値が上書きされます。";
@@ -775,19 +865,21 @@ $text['description-not_registered']['ar-eg'] = "إذا كانت نقطة الن
$text['description-not_registered']['de-at'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['de-ch'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['de-de'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['el-gr'] = "Εάν το τελικό σημείο δεν είναι προσβάσιμο, προωθήστε τον σε αυτόν τον προορισμό πριν μεταβείτε στον τηλεφωνητή.";
$text['description-not_registered']['es-cl'] = "Si el punto extremo no es alcanzable, remitir a este destino antes de ir al correo de voz.";
$text['description-not_registered']['es-mx'] = "Si el punto extremo no es alcanzable, remitir a este destino antes de ir al correo de voz.";
$text['description-not_registered']['fr-ca'] = "Si extrémité est pas accessible, transmettre à cette destination avant d'aller à la messagerie vocale.";
$text['description-not_registered']['fr-fr'] = "Si extrémité est pas accessible, transmettre à cette destination avant d'aller à la messagerie vocale.";
$text['description-not_registered']['he-il'] = "אם לא ניתן להגיע לנקודת הקצה, העבר ליעד זה לפני מעבר לתא הקולי.";
$text['description-not_registered']['it-it'] = "Se l'endpoint non è raggiungibile, inoltra la chiamata a questa destinazione prima della voicemail.";
$text['description-not_registered']['ka-ge'] = "თუ ბოლო წერტილი(endpoint) ხელმსაწვდომი არაა, გადამისამართება ამ დანიშნულებაზე, სანამ ხმოვან ფოსტაზე გადავა.";
$text['description-not_registered']['nl-nl'] = "Als het eindpunt niet bereikbaar is, fordt dit de bestemming voordat het antwoordapparaat geactiveerd wordt.";
$text['description-not_registered']['pl-pl'] = "Jeśli punkt końcowy nie jest osiągalny, przekazania do tego celu przed udaniem się na pocztę głosową.";
$text['description-not_registered']['pt-br'] = "Se o destino não for alcançável, desvia a chamata para este destino antes de enviar para o correio de voz. ";
$text['description-not_registered']['pt-pt'] = "Se endpoint não está acessível, encaminhar para este destino antes de ir para a caixa postal.";
$text['description-not_registered']['ro-ro'] = "Dacă punctul final nu este accesibil, redirecționați către această destinație înainte de a merge la mesageria vocală.";
$text['description-not_registered']['ru-ru'] = "Если номер недоступен, переадресовать на это направление до голосовой почты.";
$text['description-not_registered']['sv-se'] = "Om endpoint är inte nås, vidarebefordra till denna destination innan du går till röstbrevlådan.";
$text['description-not_registered']['sv-se'] = "Om enheten är inte nås, vidarebefordra till denna destination innan det går till röstbrevlådan.";
$text['description-not_registered']['uk-ua'] = "Якщо кінцева точка не можна досягти, вперед до цієї мети, перш ніж йти на голосову пошту.";
$text['description-not_registered']['zh-cn'] = "如果无法访问端点,请在转到语音邮件之前转发到此目的地。";
$text['description-not_registered']['ja-jp'] = "エンドポイントに到達できない場合は、ボイスメールに移動する前にこの宛先に転送します。";
@@ -799,12 +891,14 @@ $text['description-ignore_busy']['ar-eg'] = "مقاطعة المكالمة إذ
$text['description-ignore_busy']['de-at'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['de-ch'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['de-de'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['el-gr'] = "Διακόψτε την κλήση εάν ένας προορισμός είναι απασχολημένος.";
$text['description-ignore_busy']['es-cl'] = "Interrumpir la llamada si un destino está ocupado.";
$text['description-ignore_busy']['es-mx'] = "Interrumpir la llamada si un destino está ocupado.";
$text['description-ignore_busy']['fr-ca'] = "Interrompez l'appel si une destination est occupé.";
$text['description-ignore_busy']['fr-fr'] = "Interrompez l'appel si une destination est occupé.";
$text['description-ignore_busy']['he-il'] = "קטע את השיחה אם יעד תפוס.";
$text['description-ignore_busy']['it-it'] = "Interrompe la chiamata se la destinazione è occupata.";
$text['description-ignore_busy']['ka-ge'] = "ზარის შეწყვეტა, თუ დანიშნულების ნომერი დაკავებულია.";
$text['description-ignore_busy']['nl-nl'] = "Onderbreek de oproep indien de bestemming bezet is.";
$text['description-ignore_busy']['pl-pl'] = "Przerwanie połączenia, jeśli docelowy jest zajęty.";
$text['description-ignore_busy']['pt-br'] = "Interromper a chamada, se um destino está ocupado.";
@@ -823,12 +917,14 @@ $text['description-cid-number-prefix']['ar-eg'] = "قم بتعيين بادئة
$text['description-cid-number-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['de-ch'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['de-de'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['el-gr'] = "Ορίστε το πρόθεμα του αριθμού αναγνώρισης καλούντος.";
$text['description-cid-number-prefix']['es-cl'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['es-mx'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['fr-ca'] = "Définir un préfixe sur le nombre d'ID d'appelant.";
$text['description-cid-number-prefix']['fr-fr'] = "Définir un préfixe sur le nombre d'ID d'appelant.";
$text['description-cid-number-prefix']['he-il'] = "הגדר את קידומת מספר המתקשר.";
$text['description-cid-number-prefix']['it-it'] = "Imposta il prefisso per il numero chiamante.";
$text['description-cid-number-prefix']['ka-ge'] = "დააყენეთ პრეფიქსი Caller ID ნომერი.";
$text['description-cid-number-prefix']['nl-nl'] = "Stel het CID voorloopnummer in";
$text['description-cid-number-prefix']['pl-pl'] = "Prefiks prezentacji numeru dzwoniącego.";
$text['description-cid-number-prefix']['pt-br'] = "Defina o número do prefixo.";
@@ -847,12 +943,14 @@ $text['description-cid-number']['ar-eg'] = "حدد رقمًا لتجاوز رق
$text['description-cid-number']['de-at'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['de-ch'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['de-de'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['el-gr'] = "Επιλέξτε έναν αριθμό για να αντικαταστήσετε τον αρχικό αριθμό αναγνώρισης καλούντος.";
$text['description-cid-number']['es-cl'] = "Seleccionar un número para anular el número de ID de llamada original.";
$text['description-cid-number']['es-mx'] = "Seleccionar un número para anular el número de ID de llamada original.";
$text['description-cid-number']['fr-ca'] = "Sélectionnez un numéro pour remplacer le numéro d'origine identification de l'appelant.";
$text['description-cid-number']['fr-fr'] = "Sélectionnez un numéro pour remplacer le numéro d'origine identification de l'appelant.";
$text['description-cid-number']['he-il'] = "בחר מספר כדי לעקוף את מספר זיהוי המתקשר המקורי.";
$text['description-cid-number']['it-it'] = "Seleziona un numero per sovrascrivere il numero Caller ID originale.";
$text['description-cid-number']['ka-ge'] = "აირჩიეთ ნომერი საწყისი Caller ID ნომრის გადასაფარად.";
$text['description-cid-number']['nl-nl'] = "Selecteer een nummer dat het originele CID nummer moet vervangen.";
$text['description-cid-number']['pl-pl'] = "Wybierz numer, aby zastąpić oryginalny numer ID.";
$text['description-cid-number']['pt-br'] = "Selecione um número para substituir o número de identificação de chamada inicial.";
@@ -871,18 +969,20 @@ $text['description-cid-name-prefix']['ar-eg'] = "قم بتعيين بادئة ا
$text['description-cid-name-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['de-ch'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['de-de'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['el-gr'] = "Ορίστε το πρόθεμα ονόματος καλούντος.";
$text['description-cid-name-prefix']['es-cl'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['es-mx'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['fr-ca'] = "Choisir le péfixe du nom d'appelant.";
$text['description-cid-name-prefix']['fr-fr'] = "Choisir le péfixe du nom d'appelant.";
$text['description-cid-name-prefix']['he-il'] = "הגדר את הקידומת של שם המתקשר.";
$text['description-cid-name-prefix']['it-it'] = "Imposta il prefisso per il nome chiamante.";
$text['description-cid-name-prefix']['ka-ge'] = "დააყენეთ Caller ID სახელის პრეფიქსი.";
$text['description-cid-name-prefix']['nl-nl'] = "Stel de CID naam prefix in.";
$text['description-cid-name-prefix']['pl-pl'] = "Prefiks prezentacji nazwy dzwoniącego.";
$text['description-cid-name-prefix']['pt-br'] = "Defina o nome (ID) do discador.";
$text['description-cid-name-prefix']['pt-pt'] = "Defina o nome do Chamador";
$text['description-cid-name-prefix']['ro-ro'] = "Setați prefixul numelui ID apelantului.";
$text['description-cid-name-prefix']['ru-ru'] = "ВЗадайте префикс Caller ID Имя.";
$text['description-cid-name-prefix']['ru-ru'] = "Задайте префикс Caller ID Имя.";
$text['description-cid-name-prefix']['sv-se'] = "Ange namnpresentation prefix.";
$text['description-cid-name-prefix']['uk-ua'] = "Встановіть префікс ідентифікаційного імені абонента.";
$text['description-cid-name-prefix']['zh-cn'] = "设置来电显示名称前缀。";
@@ -895,12 +995,14 @@ $text['description-call-prompt']['ar-eg'] = "موجه لقبول المكالم
$text['description-call-prompt']['de-at'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['de-ch'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['de-de'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['el-gr'] = "Προτροπή για αποδοχή της κλήσης για εξωτερικούς προορισμούς.";
$text['description-call-prompt']['es-cl'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['es-mx'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['fr-ca'] = "Annonce pour accepter l'appel venant de destinations externes.";
$text['description-call-prompt']['fr-fr'] = "Annonce pour accepter l'appel venant de destinations externes.";
$text['description-call-prompt']['he-il'] = "הנחיה לקבל את השיחה ליעדים חיצוניים.";
$text['description-call-prompt']['it-it'] = "Prompt per accettare le chiamate per le destinazioni esterne.";
$text['description-call-prompt']['ka-ge'] = "შეტყობინება ზარის გარე დანიშულებებისგან მიღებისას.";
$text['description-call-prompt']['nl-nl'] = "Navragen of de oproep voor externe verbindingen acceptabel is.";
$text['description-call-prompt']['pl-pl'] = "Zapytaj czy akceptować rozmowę do zewnętrznych destynacji.";
$text['description-call-prompt']['pt-br'] = "Perguntar para aceitar chamados de destinatários externos.";
@@ -919,19 +1021,21 @@ $text['description-call_routing']['ar-eg'] = "حدد معالجة بديلة ل
$text['description-call_routing']['de-at'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['de-ch'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['de-de'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['el-gr'] = "Ορίστε εναλλακτικό χειρισμό εισερχόμενων κλήσεων για τις ακόλουθες επεκτάσεις.";
$text['description-call_routing']['es-cl'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['es-mx'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['fr-ca'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
$text['description-call_routing']['fr-fr'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
$text['description-call_routing']['he-il'] = "הגדר טיפול חלופי בשיחות נכנסות עבור השלוחות הבאות.";
$text['description-call_routing']['it-it'] = "Definisce gestione alternativa per le chiamate in ingresso per i seguenti interni.";
$text['description-call_routing']['ka-ge'] = "აღწერს ალტერნატიულ შემომავალი გზის დამუშავებას შემდეგი გაფართოებებისთვის(extensions).";
$text['description-call_routing']['nl-nl'] = "Deinieer alternatief inkomend gesprek afhandeling in voor de volgende toestellen.";
$text['description-call_routing']['pl-pl'] = "Definiowanie alternatywnego połączenia przychodzącego obsługi dla następujących numerów wewnętrznych.";
$text['description-call_routing']['pt-br'] = "Defina o tratamento de entradas alternativas para os seguintes ramais. ";
$text['description-call_routing']['pt-pt'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['ro-ro'] = "Definiți gestionarea alternativă a apelurilor de intrare pentru următoarele extensii.";
$text['description-call_routing']['ru-ru'] = "Установливает альтернативный вариант приема входящих для следующих внутренних номеров.";
$text['description-call_routing']['sv-se'] = "Definiera alternativa inkommande samtalshantering för följande tillägg.";
$text['description-call_routing']['sv-se'] = "Definiera alternativ hantering av inkommande samtal för följande anknytningar.";
$text['description-call_routing']['uk-ua'] = "Визначити обробку для наступних розширень альтернативного вхідного дзвінка.";
$text['description-call_routing']['zh-cn'] = "为以下分机定义备用入站呼叫处理。";
$text['description-call_routing']['ja-jp'] = "次の内線番号の代替インバウンド コール処理を定義します。";
@@ -943,12 +1047,14 @@ $text['description-call_forward']['ar-eg'] = "إعادة توجيه جميع ا
$text['description-call_forward']['de-at'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['de-ch'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['de-de'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['el-gr'] = "Προώθηση όλων των κλήσεων στον καθορισμένο προορισμό.";
$text['description-call_forward']['es-cl'] = "Desviar todas las llamadas al destino especificado.";
$text['description-call_forward']['es-mx'] = "Desviar todas las llamadas al destino especificado.";
$text['description-call_forward']['fr-ca'] = "Transférer tous les appels vers la destination spécifiée.";
$text['description-call_forward']['fr-fr'] = "Transférer tous les appels vers la destination spécifiée.";
$text['description-call_forward']['he-il'] = "העבר את כל השיחות ליעד שצוין.";
$text['description-call_forward']['it-it'] = "Inoltra tutte le chiamate ad una destinazione specifica.";
$text['description-call_forward']['ka-ge'] = "ყველა ზარის გადამისამართება მითითებულ დანიშნულებაზე.";
$text['description-call_forward']['nl-nl'] = "Stuur all oproepen naar de ingestelde bestemming.";
$text['description-call_forward']['pl-pl'] = "Przekazywanie wszystkich połączeń do określonego przeznaczenia.";
$text['description-call_forward']['pt-br'] = "Encaminhar todas as chamadas para o destino especificado.";
@@ -967,12 +1073,14 @@ $text['description']['ar-eg'] = "يوجه المكالمات الواردة لل
$text['description']['de-at'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['de-ch'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['de-de'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['el-gr'] = "Κατευθύνει τις εισερχόμενες κλήσεις για επέκταση:";
$text['description']['es-cl'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['es-mx'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['fr-ca'] = "Rediriger les appels entrant pour l'extension:";
$text['description']['fr-fr'] = "Rediriger les appels entrant pour l'extension:";
$text['description']['he-il'] = "מפנה שיחות נכנסות לשלוחה:";
$text['description']['it-it'] = "Dirotta le chiamate in ingresso per l'interno:";
$text['description']['ka-ge'] = "პირდაპირი შემომავალი ზარები შიდა ნომრისთვის:";
$text['description']['nl-nl'] = "Verwijs inkomende oproepen voor toestel: ";
$text['description']['pl-pl'] = "Kieruj rozmowy przychodzące na numer wewnętrzny:";
$text['description']['pt-br'] = "Direciona as chamadas que estão entrando para um ramal.";
@@ -991,12 +1099,14 @@ $text['confirm-update']['ar-eg'] = "تحديث كاملة";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-de'] = "Aktualisierung durchgeführt";
$text['confirm-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['es-mx'] = "Actualización Completa";
$text['confirm-update']['fr-ca'] = "Mis à jour";
$text['confirm-update']['fr-fr'] = "Mis à jour";
$text['confirm-update']['he-il'] = "העדכון הושלם";
$text['confirm-update']['it-it'] = "Aggiornamento Completato";
$text['confirm-update']['ka-ge'] = "განახლება დასრულდა";
$text['confirm-update']['nl-nl'] = "Bijwerken gereed";
$text['confirm-update']['pl-pl'] = "Zaktualizowano pomyślnie";
$text['confirm-update']['pt-br'] = "Atualização Efetuada";
@@ -1015,12 +1125,14 @@ $text['check-true']['ar-eg'] = "حقيقي";
$text['check-true']['de-at'] = "An";
$text['check-true']['de-ch'] = "An";
$text['check-true']['de-de'] = "An";
$text['check-true']['el-gr'] = "Αληθής";
$text['check-true']['es-cl'] = "Verdadero";
$text['check-true']['es-mx'] = "Verdadero";
$text['check-true']['fr-ca'] = "Oui";
$text['check-true']['fr-fr'] = "Oui";
$text['check-true']['he-il'] = "נָכוֹן";
$text['check-true']['it-it'] = "Vero";
$text['check-true']['ka-ge'] = "ჭეშმარიტი";
$text['check-true']['nl-nl'] = "Ja";
$text['check-true']['pl-pl'] = "Tak";
$text['check-true']['pt-br'] = "Sim";
@@ -1039,12 +1151,14 @@ $text['check-simultaneous']['ar-eg'] = "متزامنة";
$text['check-simultaneous']['de-at'] = "gleichzeitig";
$text['check-simultaneous']['de-ch'] = "gleichzeitig";
$text['check-simultaneous']['de-de'] = "gleichzeitig";
$text['check-simultaneous']['el-gr'] = "ταυτόχρονος";
$text['check-simultaneous']['es-cl'] = "simultaneo";
$text['check-simultaneous']['es-mx'] = "simultaneo";
$text['check-simultaneous']['fr-ca'] = "simultanément";
$text['check-simultaneous']['fr-fr'] = "simultanément";
$text['check-simultaneous']['he-il'] = "סִימוּלטָנִי";
$text['check-simultaneous']['it-it'] = "Simultaneo";
$text['check-simultaneous']['ka-ge'] = "ერთდროული";
$text['check-simultaneous']['nl-nl'] = "Gelijktijdig";
$text['check-simultaneous']['pl-pl'] = "jednoczesne";
$text['check-simultaneous']['pt-br'] = "Simultâneo";
@@ -1063,12 +1177,14 @@ $text['check-sequence']['ar-eg'] = "تسلسل";
$text['check-sequence']['de-at'] = "sequenziell";
$text['check-sequence']['de-ch'] = "sequenziell";
$text['check-sequence']['de-de'] = "sequenziell";
$text['check-sequence']['el-gr'] = "αλληλουχία";
$text['check-sequence']['es-cl'] = "secuencia";
$text['check-sequence']['es-mx'] = "secuencia";
$text['check-sequence']['fr-ca'] = "séquence";
$text['check-sequence']['fr-fr'] = "séquence";
$text['check-sequence']['he-il'] = "סדר פעולות";
$text['check-sequence']['it-it'] = "Sequenza";
$text['check-sequence']['ka-ge'] = "მიმდევრობით";
$text['check-sequence']['nl-nl'] = "Volgorde";
$text['check-sequence']['pl-pl'] = "kolejność";
$text['check-sequence']['pt-br'] = "Sequência";
@@ -1087,12 +1203,14 @@ $text['check-false']['ar-eg'] = "خطأ شنيع";
$text['check-false']['de-at'] = "Aus";
$text['check-false']['de-ch'] = "Aus";
$text['check-false']['de-de'] = "Aus";
$text['check-false']['el-gr'] = "Ψευδής";
$text['check-false']['es-cl'] = "Falso";
$text['check-false']['es-mx'] = "Falso";
$text['check-false']['fr-ca'] = "Non";
$text['check-false']['fr-fr'] = "Non";
$text['check-false']['he-il'] = "שֶׁקֶר";
$text['check-false']['it-it'] = "Falso";
$text['check-false']['ka-ge'] = "ცრუ";
$text['check-false']['nl-nl'] = "Nee";
$text['check-false']['pl-pl'] = "Nie";
$text['check-false']['pt-br'] = "Não";
@@ -1111,12 +1229,14 @@ $text['button-view_all']['ar-eg'] = "مشاهدة الكل";
$text['button-view_all']['de-at'] = "Alle anzeigen";
$text['button-view_all']['de-ch'] = "Alle anzeigen";
$text['button-view_all']['de-de'] = "Alle anzeigen";
$text['button-view_all']['el-gr'] = "Προβολή όλων";
$text['button-view_all']['es-cl'] = "Mostrar Todos";
$text['button-view_all']['es-mx'] = "Mostrar Todos";
$text['button-view_all']['fr-ca'] = "Tout Montrer";
$text['button-view_all']['fr-fr'] = "Tout Montrer";
$text['button-view_all']['he-il'] = "הצג הכל";
$text['button-view_all']['it-it'] = "Mostra Tutto";
$text['button-view_all']['ka-ge'] = "ყველაფრის ნახვა";
$text['button-view_all']['nl-nl'] = "Toon alles";
$text['button-view_all']['pl-pl'] = "Pokaż wszystkie";
$text['button-view_all']['pt-br'] = "Mostrar Todos";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Renvoi d'appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "העבר שיחה";
$apps[$x]['menu'][$y]['title']['it-it'] = "Inoltro";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ზარის გადამისამართება";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep doorsturen";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Przekierowanie";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Encaminhamento de chamadas";
+23 -14
View File
@@ -18,7 +18,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2021
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -36,7 +36,8 @@
//check permissions
if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
//access granted
} else {
}
else {
echo "access denied";
exit;
}
@@ -78,8 +79,9 @@
}
//get order and order by
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$order_by = $_GET["order_by"] ?? 'extension';
$order = $_GET["order"] ?? 'asc';
$sort = $order_by == 'extension' ? 'natural' : null;
//get the search
$search = strtolower($_GET["search"] ?? '');
@@ -91,7 +93,8 @@
$sql = "select count(*) from v_extensions ";
if ($show === "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
} else {
}
else {
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
@@ -154,7 +157,8 @@
$sql = "select * from v_extensions ";
if ($show == "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
} else {
}
else {
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
@@ -178,19 +182,20 @@
$x++;
}
$sql .= ")";
} else {
}
else {
//used to hide any results when a user has not been assigned an extension
$sql .= "and extension = 'disabled' ";
}
}
$sql .= order_by($order_by, $order, 'extension', 'asc');
$sql .= order_by($order_by, $order, 'extension', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$extensions = $database->select($sql, $parameters ?? null, 'all');
unset($parameters);
//if there are no extensions then set to empty array
if($extensions === false) {
if ($extensions === false) {
$extensions = [];
}
@@ -200,7 +205,7 @@
//include header
if (!$is_included) {
$document['title'] = $text['title-call_forward'];
$document['title'] = $text['title-call_forward'];
}
require_once "resources/header.php";
@@ -210,14 +215,15 @@
echo " <div class='heading'><b>" . $text['header-call_forward'] . "</b></div>\n";
echo " <div class='actions'>\n";
if ($num_rows > 10) {
echo button::create(['type' => 'button', 'label' => $text['button-view_all'], 'icon' => 'project-diagram', 'collapse' => false, 'link' => PROJECT_PATH . '/app/call_forward/call_forward.php']);
echo button::create(['type' => 'button', 'label' => $text['button-view_all'], 'icon' => 'diagram-project', 'collapse' => false, 'link' => PROJECT_PATH . '/app/call_forward/call_forward.php']);
}
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
} else {
}
else {
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>" . $text['header-call_forward'] . " (" . $num_rows . ")</b></div>\n";
echo " <div class='heading'><b>" . $text['header-call_forward'] . "</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (count($extensions) > 0) {
@@ -264,6 +270,7 @@
echo "<input type='hidden' name='search' value=\"" . escape($search) . "\">\n";
}
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (!$is_included) {
@@ -274,7 +281,8 @@
echo "<th>" . $text['label-domain'] . "</th>\n";
}
}
echo " <th>" . $text['label-extension'] . "</th>\n";
echo th_order_by('extension', $text['label-extension'], $order_by, $order);
// echo " <th>" . $text['label-extension'] . "</th>\n";
if (permission_exists('call_forward')) {
echo " <th>" . $text['label-call_forward'] . "</th>\n";
}
@@ -400,6 +408,7 @@
}
echo "</table>\n";
echo "</div>\n";
if (!$is_included) {
echo "<br />\n";
+9 -16
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2022
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -165,11 +165,6 @@
return;
}
//include the classes
include "resources/classes/call_forward.php";
include "resources/classes/follow_me.php";
include "resources/classes/do_not_disturb.php";
//call forward config
if (permission_exists('call_forward')) {
//sanitize the destinations
@@ -253,7 +248,7 @@
}
//add the dialplan permission
$p = new permissions;
$p = permissions::new();
$p->add("extension_edit", "temp");
//save the data
@@ -399,9 +394,7 @@
$cmd .= "answer-state: confirmed\n";
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
unset($fp);
$switch_result = event_socket::command($cmd);
}
else {
$presence = new presence;
@@ -421,9 +414,7 @@
$cmd .= "answer-state: terminated\n";
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
unset($fp);
$switch_result = event_socket::command($cmd);
}
}
}
@@ -477,7 +468,7 @@
$result = $database->select($sql, $parameters, 'all');
unset($destinations);
foreach ($result as $x => &$row) {
foreach ($result as $x => $row) {
$destinations[$x]['uuid'] = $row["follow_me_destination_uuid"];
$destinations[$x]['destination'] = $row["follow_me_destination"];
$destinations[$x]['delay'] = $row["follow_me_delay"];
@@ -519,7 +510,7 @@
echo "<script type=\"text/javascript\">\n";
echo "\$(function() {\n";
echo " var extensions = [\n";
foreach ($extensions as &$row) {
foreach ($extensions as $row) {
if (empty($number_alias)) {
echo " \"".escape($row["extension"])."\",\n";
}
@@ -548,7 +539,7 @@
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_forward']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'call_forward.php']);
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','onclick'=>'history.back();']);
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
@@ -557,6 +548,7 @@
echo $text['description']." <strong>".escape($extension)."</strong>\n";
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -748,6 +740,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br /><br />";
if (!empty($action) && $action == "update") {
@@ -89,7 +89,7 @@
}
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_add', 'temp');
//execute update
@@ -214,7 +214,7 @@
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_edit', 'temp');
//save the array
@@ -39,10 +39,10 @@
if ($this->enabled == "true") {
//update the call center status
$user_status = "Logged Out";
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
$switch_cmd .= "callcenter_config agent set status ".$_SESSION['username']."@".$this->domain_name." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
//update the database user_status
@@ -95,7 +95,7 @@
$array['extensions'][0]['do_not_disturb'] = $this->enabled;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_edit', 'temp');
//execute update
@@ -226,7 +226,7 @@
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_edit', 'temp');
//save the array
@@ -245,7 +245,7 @@
$feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name'];
$feature_event_notify->extension = $extension['extension'];
$feature_event_notify->do_not_disturb = $extension['do_not_disturb'];
$feature_event_notify->do_not_disturb = $extension['do_not_disturb'] == "true" ? "false" : "true";
$feature_event_notify->ring_count = ceil($extension['call_timeout'] / 6);
$feature_event_notify->forward_all_enabled = $extension['forward_all_enabled'];
$feature_event_notify->forward_busy_enabled = $extension['forward_busy_enabled'];
@@ -289,4 +289,4 @@
} //class
?>
?>
@@ -42,11 +42,11 @@
//feature_event method
public function send_notify() {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
// Get the SIP profiles for the extension
$command = "sofia_contact */{$this->extension}@{$this->domain_name}";
$contact_string = event_socket_request($fp, "api ".$command);
$contact_string = event_socket::api($command);
// The first value in the array will be full matching text, the second one will be the array of profile matches
preg_match_all('/sofia\/([^,]+)\/(?:[^,]+)/', $contact_string, $matches);
if (sizeof($matches) != 2 || sizeof($matches[1]) < 1) {
@@ -72,12 +72,11 @@
$event .= "forward_no_answer: " . $this->forward_no_answer_destination . "\n";
$event .= "doNotDisturbOn: " . $this->do_not_disturb . "\n";
$event .= "ringCount: " . $this->ring_count . "\n";
event_socket_request($fp, $event);
event_socket::command($event);
}
fclose($fp);
}
} //function
} //class
?>
@@ -91,7 +91,7 @@
$array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled;
$array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('follow_me_add', 'temp');
//execute insert
$database = new database;
@@ -115,7 +115,7 @@
$array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled;
$array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('follow_me_add', 'temp');
//execute update
$database = new database;
@@ -135,7 +135,7 @@
//delete related follow me destinations
$array['follow_me_destinations'][0]['follow_me_uuid'] = $this->follow_me_uuid;
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('follow_me_destination_delete', 'temp');
//execute delete
$database = new database;
@@ -210,7 +210,7 @@
}
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('follow_me_destination_add', 'temp');
//execute insert
$database = new database;
@@ -234,7 +234,7 @@
$extension_uuid = $result[0]['extension_uuid'];
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add("follow_me_edit", 'temp');
$p->add("extension_edit", 'temp');
@@ -389,7 +389,7 @@
if (is_array($array) && @sizeof($array) != 0) {
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('extension_edit', 'temp');
$p->add('follow_me_edit', 'temp');
@@ -22,23 +22,29 @@
$language = new text;
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_forward');
//extensions link
$extension_link = '#';
if (permission_exists('extension_view')) {
$extension_link = PROJECT_PATH."/app/extensions/extensions.php";
}
$call_forward_link = PROJECT_PATH."/app/call_forward/call_forward.php";
//set the row style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//get data
$sql = "
select
extension_uuid,
extension,
forward_all_enabled,
forward_all_destination,
follow_me_enabled,
follow_me_uuid,
do_not_disturb
from
v_extensions ";
$sql = "select ";
$sql .= "extension_uuid,";
$sql .= "extension, ";
$sql .= "forward_all_enabled, ";
$sql .= "forward_all_destination, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_uuid, ";
$sql .= "do_not_disturb ";
$sql .= "from ";
$sql .= "v_extensions ";
if (!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
}
@@ -96,141 +102,154 @@
//begin widget
echo "<div class='hud_box'>\n";
//doughnut chart
echo "<div style='display: flex; flex-wrap: wrap; justify-content: center; padding-bottom: 20px;' onclick=\"$('#hud_call_forward_details').slideToggle('fast');\">\n";
echo " <div style='width: 275px; height: 175px;'><canvas id='call_forward_chart'></canvas></div>\n";
echo "</div>\n";
echo " <div class='hud_content' ".($dashboard_details_state == "disabled" ?: "onclick=\"$('#hud_call_forward_details').slideToggle('fast'); toggle_grid_row_end('".$dashboard_name."')\"").">\n";
echo " <span class='hud_title'>".$text['header-call_forward']."</span>\n";
echo "<script>\n";
echo " const call_forward_chart = new Chart(\n";
echo " document.getElementById('call_forward_chart').getContext('2d'),\n";
echo " {\n";
echo " type: 'doughnut',\n";
echo " data: {\n";
echo " labels: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".$text['label-dnd'].": ".$stats['dnd']."',\n";
//doughnut chart
if (!isset($dashboard_chart_type) || $dashboard_chart_type == "doughnut") {
echo "<div class='hud_chart' style='width: 275px;'><canvas id='call_forward_chart'></canvas></div>\n";
echo "<script>\n";
echo " const call_forward_chart = new Chart(\n";
echo " document.getElementById('call_forward_chart').getContext('2d'),\n";
echo " {\n";
echo " type: 'doughnut',\n";
echo " data: {\n";
echo " labels: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".$text['label-dnd'].": ".$stats['dnd']."',\n";
}
if (permission_exists('follow_me')) {
echo " '".$text['label-follow_me'].": ".$stats['follow_me']."',\n";
}
if (permission_exists('call_forward')) {
echo " '".$text['label-call_forward'].": ".$stats['call_forward']."',\n";
}
echo " '".$text['label-active'].": ".$stats['active']."',\n";
echo " ],\n";
echo " datasets: [{\n";
echo " data: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".$stats['dnd']."',\n";
}
if (permission_exists('follow_me')) {
echo " '".$stats['follow_me']."',\n";
}
if (permission_exists('call_forward')) {
echo " '".$stats['call_forward']."',\n";
}
echo " '".$stats['active']."',\n";
echo " 0.00001,\n";
echo " ],\n";
echo " backgroundColor: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".($settings->get('theme', 'dashboard_call_forward_chart_color_do_not_disturb') ?? '#ea4c46')."',\n";
}
if (permission_exists('follow_me')) {
echo " '".($settings->get('theme', 'dashboard_call_forward_chart_color_follow_me') ?? '#03c04a')."',\n";
}
if (permission_exists('call_forward')) {
echo " '".($settings->get('theme', 'dashboard_call_forward_chart_color_call_forward') ?? '#2a9df4')."',\n";
}
echo " '".($settings->get('theme', 'dashboard_call_forward_chart_color_active') ?? '#d4d4d4')."',\n";
echo " '".($settings->get('theme', 'dashboard_call_forward_chart_color_active') ?? '#d4d4d4')."'\n";
echo " ],\n";
echo " borderColor: '".$settings->get('theme', 'dashboard_chart_border_color')."',\n";
echo " borderWidth: '".$settings->get('theme', 'dashboard_chart_border_width')."'\n";
echo " }]\n";
echo " },\n";
echo " options: {\n";
echo " plugins: {\n";
echo " chart_number: {\n";
echo " text: '".$stats['call_forward']."'\n";
echo " },\n";
echo " legend: {\n";
echo " display: true,\n";
echo " position: 'right',\n";
echo " reverse: true,\n";
echo " labels: {\n";
echo " usePointStyle: true,\n";
echo " pointStyle: 'rect',\n";
echo " color: '".$dashboard_label_text_color."'\n";
echo " }\n";
echo " }\n";
echo " }\n";
echo " },\n";
echo " plugins: [{\n";
echo " id: 'chart_number',\n";
echo " beforeDraw(chart, args, options){\n";
echo " const {ctx, chartArea: {top, right, bottom, left, width, height} } = chart;\n";
echo " ctx.font = chart_text_size + ' ' + chart_text_font;\n";
echo " ctx.textBaseline = 'middle';\n";
echo " ctx.textAlign = 'center';\n";
echo " ctx.fillStyle = '".$dashboard_number_text_color."';\n";
echo " ctx.fillText(options.text, width / 2, top + (height / 2));\n";
echo " ctx.save();\n";
echo " }\n";
echo " }]\n";
echo " }\n";
echo " );\n";
echo "</script>\n";
}
if (permission_exists('follow_me')) {
echo " '".$text['label-follow_me'].": ".$stats['follow_me']."',\n";
if ($dashboard_chart_type == "number") {
echo " <span class='hud_stat'>".$stats['call_forward']."</span>";
}
if (permission_exists('call_forward')) {
echo " '".$text['label-call_forward'].": ".$stats['call_forward']."',\n";
}
echo " '".$text['label-active'].": ".$stats['active']."',\n";
echo " ],\n";
echo " datasets: [{\n";
echo " data: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".$stats['dnd']."',\n";
}
if (permission_exists('follow_me')) {
echo " '".$stats['follow_me']."',\n";
}
if (permission_exists('call_forward')) {
echo " '".$stats['call_forward']."',\n";
}
echo " '".$stats['active']."',\n";
echo " 0.00001,\n";
echo " ],\n";
echo " backgroundColor: [\n";
if (permission_exists('do_not_disturb')) {
echo " '".$_SESSION['dashboard']['call_forward_chart_color_do_not_disturb']['text']."',\n";
}
if (permission_exists('follow_me')) {
echo " '".$_SESSION['dashboard']['call_forward_chart_color_follow_me']['text']."',\n";
}
if (permission_exists('call_forward')) {
echo " '".$_SESSION['dashboard']['call_forward_chart_color_call_forward']['text']."',\n";
}
echo " '".$_SESSION['dashboard']['call_forward_chart_color_active']['text']."',\n";
echo " '".$_SESSION['dashboard']['call_forward_chart_color_active']['text']."',\n";
echo " ],\n";
echo " borderColor: '".$_SESSION['dashboard']['call_forward_chart_border_color']['text']."',\n";
echo " borderWidth: '".$_SESSION['dashboard']['call_forward_chart_border_width']['text']."',\n";
echo " cutout: chart_cutout,\n";
echo " }]\n";
echo " },\n";
echo " options: {\n";
echo " responsive: true,\n";
echo " maintainAspectRatio: false,\n";
echo " plugins: {\n";
echo " chart_counter: {\n";
echo " chart_text: '".$stats['call_forward']."'\n";
echo " },\n";
echo " legend: {\n";
echo " position: 'right',\n";
echo " reverse: true,\n";
echo " labels: {\n";
echo " usePointStyle: true,\n";
echo " pointStyle: 'rect'\n";
echo " }\n";
echo " },\n";
echo " title: {\n";
echo " display: true,\n";
echo " text: '".$text['header-call_forward']."'\n";
echo " }\n";
echo " }\n";
echo " },\n";
echo " plugins: [chart_counter],\n";
echo " }\n";
echo " );\n";
echo "</script>\n";
echo " </div>\n";
//details
echo "<div class='hud_details hud_box' id='hud_call_forward_details'>";
echo "<table class='tr_hover' width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo "<tr style='position: -webkit-sticky; position: sticky; z-index: 5; top: 0;'>\n";
echo "<th class='hud_heading'>".$text['label-extension']."</th>\n";
if (permission_exists('call_forward')) {
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-call_forward']."</th>\n";
}
if (permission_exists('follow_me')) {
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-follow_me']."</th>\n";
}
if (permission_exists('do_not_disturb')) {
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-dnd']."</th>\n";
}
echo "</tr>\n";
// data
if (is_array($extensions) && @sizeof($extensions) != 0) {
foreach ($extensions as $row) {
$tr_link = PROJECT_PATH."/app/call_forward/call_forward_edit.php?id=".$row['extension_uuid'];
echo "<tr href='".$tr_link."'>\n";
echo " <td valign='top' class='".$row_style[$c]." hud_text'><a href='".$tr_link."' title=\"".$text['button-edit']."\">".escape($row['extension'])."</a></td>\n";
if (permission_exists('call_forward')) {
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['forward_all_enabled'] == 'true' ? escape(format_phone($row['forward_all_destination'])) : '&nbsp;')."</td>\n";
}
if (permission_exists('follow_me')) {
//get destination count
$follow_me_destination_count = 0;
if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) {
$sql = "select count(*) from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = :follow_me_uuid ";
$sql .= "and domain_uuid = :domain_uuid ";
$parameters['follow_me_uuid'] = $row['follow_me_uuid'];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$follow_me_destination_count = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
}
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : '&nbsp;')."</td>\n";
}
if (permission_exists('do_not_disturb')) {
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['do_not_disturb'] == 'true' ? $text['label-enabled'] : '&nbsp;')."</td>\n";
}
echo "</tr>\n";
$c = ($c) ? 0 : 1;
if ($dashboard_details_state != 'disabled') {
echo "<div class='hud_details hud_box' id='hud_call_forward_details'>";
echo "<table class='tr_hover' width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo "<tr style='position: -webkit-sticky; position: sticky; z-index: 5; top: 0;'>\n";
echo "<th class='hud_heading'><a href='".$extension_link."'>".$text['label-extension']."</a></th>\n";
if (permission_exists('call_forward')) {
echo " <th class='hud_heading' style='text-align: center;'><a href='".$call_forward_link."'>".$text['label-call_forward']."</a></th>\n";
}
unset($extensions);
if (permission_exists('follow_me')) {
echo " <th class='hud_heading' style='text-align: center;'><a href='".$call_forward_link."'>".$text['label-follow_me']."</a></th>\n";
}
if (permission_exists('do_not_disturb')) {
echo " <th class='hud_heading' style='text-align: center;'><a href='".$call_forward_link."'>".$text['label-dnd']."</a></th>\n";
}
echo "</tr>\n";
if (is_array($extensions) && @sizeof($extensions) != 0) {
foreach ($extensions as $row) {
$tr_link = PROJECT_PATH."/app/call_forward/call_forward_edit.php?id=".$row['extension_uuid'];
echo "<tr href='".$tr_link."'>\n";
echo " <td valign='top' class='".$row_style[$c]." hud_text'><a href='".$tr_link."' title=\"".$text['button-edit']."\">".escape($row['extension'])."</a></td>\n";
if (permission_exists('call_forward')) {
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['forward_all_enabled'] == 'true' ? escape(format_phone($row['forward_all_destination'])) : '&nbsp;')."</td>\n";
}
if (permission_exists('follow_me')) {
//get destination count
$follow_me_destination_count = 0;
if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) {
$sql = "select count(*) from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = :follow_me_uuid ";
$sql .= "and domain_uuid = :domain_uuid ";
$parameters['follow_me_uuid'] = $row['follow_me_uuid'];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$follow_me_destination_count = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
}
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : '&nbsp;')."</td>\n";
}
if (permission_exists('do_not_disturb')) {
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['do_not_disturb'] == 'true' ? $text['label-enabled'] : '&nbsp;')."</td>\n";
}
echo "</tr>\n";
$c = ($c) ? 0 : 1;
}
unset($extensions);
}
echo "</table>\n";
echo "</div>";
//$n++;
echo "<span class='hud_expander' onclick=\"$('#hud_call_forward_details').slideToggle('fast'); toggle_grid_row_end('".$dashboard_name."')\"><span class='fas fa-ellipsis-h'></span></span>\n";
}
echo "</table>\n";
echo "</div>";
//$n++;
echo "<span class='hud_expander' onclick=\"$('#hud_call_forward_details').slideToggle('fast');\"><span class='fas fa-ellipsis-h'></span></span>\n";
echo "</div>\n";
?>
?>
@@ -1,9 +1,32 @@
<?php
$x++;
//call forward
$array['dashboard'][$x]['dashboard_uuid'] = 'ba60799a-1c40-44a8-80ef-c2be4f4692fb';
$array['dashboard'][$x]['dashboard_name'] = 'Call Forward';
$array['dashboard'][$x]['dashboard_path'] = 'app/call_forward/resources/dashboard/call_forward.php';
$array['dashboard'][$x]['dashboard_path'] = 'call_forward/call_forward';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-forward';
$array['dashboard'][$x]['dashboard_url'] = '/app/call_forward/call_forward.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
$array['dashboard'][$x]['dashboard_height'] = '';
$array['dashboard'][$x]['dashboard_content'] = '';
$array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
$array['dashboard'][$x]['dashboard_row_span'] = '2';
$array['dashboard'][$x]['dashboard_details_state'] = 'hidden';
$array['dashboard'][$x]['dashboard_order'] = '130';
$array['dashboard'][$x]['dashboard_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_description'] = 'Call routing for extension using Call forward, Follow Me and Do Not Disturb.';
@@ -19,5 +42,42 @@ $y++;
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '6d04646f-54cf-49f4-a3ce-a16e7adda2b9';
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = 'ba60799a-1c40-44a8-80ef-c2be4f4692fb';
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'user';
$x++;
//follow me icon
$array['dashboard'][$x]['dashboard_uuid'] = '714e513d-be78-4c63-8f8d-951d48a7fc0e';
$array['dashboard'][$x]['dashboard_name'] = 'Follow Me';
$array['dashboard'][$x]['dashboard_path'] = 'core/dashboard/resources/dashboard/icon.php';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-forward';
$array['dashboard'][$x]['dashboard_url'] = '/app/call_forward/call_forward.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
$array['dashboard'][$x]['dashboard_height'] = '';
$array['dashboard'][$x]['dashboard_content'] = '';
$array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '#0292ff';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
$array['dashboard'][$x]['dashboard_row_span'] = '1';
$array['dashboard'][$x]['dashboard_details_state'] = 'disabled';
$array['dashboard'][$x]['dashboard_order'] = '50';
$array['dashboard'][$x]['dashboard_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_description'] = '';
$y = 0;
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '57a49ce1-6985-4c9e-b59c-38ecd1d6bf7f';
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = '714e513d-be78-4c63-8f8d-951d48a7fc0e';
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'user';
$y++;
?>
+54 -45
View File
@@ -3,7 +3,7 @@
//check the permission
if (defined('STDIN')) {
//includes files
require_once dirname(__DIR__, 4) . "/resources/require.php";
require_once dirname(__DIR__, 4) . "/resources/require.php";
}
else {
exit;
@@ -31,54 +31,63 @@
exit;
}
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//use global conf created from require.php
global $conf;
//get the list
$sql = "select domain_name, extension, user_context, do_not_disturb, description ";
$sql .= "from v_extensions as e, v_domains as d ";
$sql .= "where do_not_disturb = 'true' ";
$sql .= "and e.domain_uuid = d.domain_uuid ";
$sql .= "and enabled = 'true' ";
$database = new database;
$results = $database->select($sql, $parameters, 'all');
unset($parameters);
//set the event socket connection settings
$host = $conf['switch.event_socket.host'] ?? $conf['event_socket.ip_address'] ?? '127.0.0.1';
$port = $conf['switch.event_socket.port'] ?? $conf['event_socket.port'] ?? '8021';
$pass = $conf['switch.event_socket.password'] ?? $conf['event_socket.password'] ?? 'ClueCon';
//view_array($results);
foreach($results as $row) {
//connect to event socket using a lower timeout because we are on cli
$esl = event_socket::create($host, $port, $pass, 10000);
//build the event
$cmd = "sendevent PRESENCE_IN\n";
$cmd .= "proto: sip\n";
$cmd .= "login: ".$row['extension']."@".$row['domain_name']."\n";
$cmd .= "from: ".$row['extension']."@".$row['domain_name']."\n";
$cmd .= "status: Active (1 waiting)\n";
$cmd .= "rpid: unknown\n";
$cmd .= "event_type: presence\n";
$cmd .= "alt_event_type: dialog\n";
$cmd .= "event_count: 1\n";
$cmd .= "unique-id: ".uuid()."\n";
$cmd .= "Presence-Call-Direction: outbound\n";
$cmd .= "answer-state: confirmed\n";
//$cmd .= "answer-state: early\n";
//$cmd .= "answer-state: terminated\n";
//ensure we are connected
if ($esl->is_connected()) {
//send message to the console
if (isset($debug)) {
echo "\n";
echo "[presence] dnd ".$row['extension']."@".$row['domain_name']."\n";
//get the list
$sql = "select domain_name, extension, user_context, do_not_disturb, description ";
$sql .= "from v_extensions as e, v_domains as d ";
$sql .= "where do_not_disturb = 'true' ";
$sql .= "and e.domain_uuid = d.domain_uuid ";
$sql .= "and enabled = 'true' ";
$database = new database;
$results = $database->select($sql, $parameters, 'all');
unset($parameters);
foreach ($results as $row) {
//build the event
$cmd = "sendevent PRESENCE_IN\n";
$cmd .= "proto: sip\n";
$cmd .= "login: " . $row['extension'] . "@" . $row['domain_name'] . "\n";
$cmd .= "from: " . $row['extension'] . "@" . $row['domain_name'] . "\n";
$cmd .= "status: Active (1 waiting)\n";
$cmd .= "rpid: unknown\n";
$cmd .= "event_type: presence\n";
$cmd .= "alt_event_type: dialog\n";
$cmd .= "event_count: 1\n";
$cmd .= "unique-id: " . uuid() . "\n";
$cmd .= "Presence-Call-Direction: outbound\n";
$cmd .= "answer-state: confirmed\n";
//$cmd .= "answer-state: early\n";
//$cmd .= "answer-state: terminated\n";
//send message to the console
if (isset($debug)) {
echo "\n";
echo "[presence] dnd " . $row['extension'] . "@" . $row['domain_name'] . "\n";
}
//send the event
$result = event_socket::command($cmd);
if (isset($debug)) {
print_r($result, false);
}
}
//send the event
$result = event_socket_request($fp, $cmd);
if (isset($debug)) {
print_r($result, false);
}
}
else {
trigger_error("Unable to connect to FreeSWITCH using $host, $port, $password", E_USER_ERROR);
}
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_forward/resources/jobs/dnd.php
*/
?>
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_forward/resources/jobs/dnd.php
*/
+19
View File
@@ -34,5 +34,24 @@
$y++;
$apps[$x]['permissions'][$y]['name'] = 'call_recording_download';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'call_recording_transcribe';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y = 0;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "95cb740e-e377-4852-8894-06441c61e78b";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_recordings";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "filesystem_retention_days";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "90";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Number of days to retain the maintenance logs in the database.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "e329db05-2967-422a-a71f-d0175b083828";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_recordings";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "record_extension";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "mp3";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Call recording file format options: wav, mp3";
?>
+3 -4
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2022
Portions created by the Initial Developer are Copyright (C) 2022-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -27,22 +27,21 @@
if ($domains_processed == 1) {
//create the user view combines username, organization, contact first and last name
$database = new database;
$database->execute("DROP VIEW view_call_recordings;", null);
$sql = "CREATE VIEW view_call_recordings AS ( \n";
$sql .= " select domain_uuid, xml_cdr_uuid as call_recording_uuid, \n";
$sql .= " caller_id_name, caller_id_number, caller_destination, destination_number, \n";
$sql .= " record_name as call_recording_name, record_path as call_recording_path, \n";
$sql .= " record_transcription as call_recording_transcription, \n";
$sql .= " duration as call_recording_length, start_stamp as call_recording_date, direction as call_direction \n";
$sql .= " from v_xml_cdr \n";
$sql .= " where record_name is not null \n";
$sql .= " and record_path is not null \n";
$sql .= " order by start_stamp desc \n";
$sql .= "); \n";
$database = new database;
$database->execute($sql, null);
unset($sql);
}
?>
?>
+118 -70
View File
@@ -6,12 +6,14 @@ $text['title-call_recordings']['ar-eg'] = "تسجيلات المكالمات";
$text['title-call_recordings']['de-at'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['de-ch'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['de-de'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['el-gr'] = "Ηχογραφήσεις κλήσεων";
$text['title-call_recordings']['es-cl'] = "Grabaciones de llamadas";
$text['title-call_recordings']['es-mx'] = "Grabaciones de llamadas";
$text['title-call_recordings']['fr-ca'] = "Enregistrements d'appels";
$text['title-call_recordings']['fr-fr'] = "Enregistrements d'appels";
$text['title-call_recordings']['he-il'] = "הקלטות שיחות";
$text['title-call_recordings']['it-it'] = "Grabaciones de llamadas";
$text['title-call_recordings']['ka-ge'] = "ზარის ჩანაწერები";
$text['title-call_recordings']['nl-nl'] = "Gespreksopnamen";
$text['title-call_recordings']['pl-pl'] = "Nagrania Rozmów";
$text['title-call_recordings']['pt-br'] = "Gravações de chamadas";
@@ -30,12 +32,14 @@ $text['title-call_recording']['ar-eg'] = "تسجيل المكالمات";
$text['title-call_recording']['de-at'] = "Anrufaufzeichnung";
$text['title-call_recording']['de-ch'] = "Anrufaufzeichnung";
$text['title-call_recording']['de-de'] = "Anrufaufzeichnung";
$text['title-call_recording']['el-gr'] = "Καταγραφή κλήσεων";
$text['title-call_recording']['es-cl'] = "Grabacion de llamada";
$text['title-call_recording']['es-mx'] = "Grabacion de llamada";
$text['title-call_recording']['fr-ca'] = "Enregistrement d'appel";
$text['title-call_recording']['fr-fr'] = "Enregistrement d'appel";
$text['title-call_recording']['he-il'] = "הקלטת שיחה";
$text['title-call_recording']['it-it'] = "Registrazione delle chiamate";
$text['title-call_recording']['ka-ge'] = "საუბრის ჩაწერა";
$text['title-call_recording']['nl-nl'] = "Gespreksopname";
$text['title-call_recording']['pl-pl'] = "Nagranie rozmowy";
$text['title-call_recording']['pt-br'] = "Gravação de chamadas";
@@ -54,12 +58,14 @@ $text['title_description-call_recordings']['ar-eg'] = "يظهر تسجيلات
$text['title_description-call_recordings']['de-at'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['de-ch'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['de-de'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['el-gr'] = "Εμφανίζει τις εγγραφές κλήσεων με όνομα, διάρκεια, ημερομηνία και ώρα και κατεύθυνση κλήσης.";
$text['title_description-call_recordings']['es-cl'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
$text['title_description-call_recordings']['es-mx'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
$text['title_description-call_recordings']['fr-ca'] = "Affiche les enregistrements d'appel avec nom, durée, date et heure, et direction de l'appel";
$text['title_description-call_recordings']['fr-fr'] = "Affiche les enregistrements d'appel avec nom, durée, date et heure, et direction de l'appel";
$text['title_description-call_recordings']['he-il'] = "מציג את הקלטות השיחה עם שם, אורך, תאריך ושעה וכיוון השיחה.";
$text['title_description-call_recordings']['it-it'] = "Mostra le registrazioni delle chiamate con nome, durata, data e ora e direzione della chiamata.";
$text['title_description-call_recordings']['ka-ge'] = "აჩვენებს ხელმისაწვდომ ზარის ჩანაწერებს სახელით, ხანგრძლივობით, თარიღითა და დროით და ზარის მიმართულებით.";
$text['title_description-call_recordings']['nl-nl'] = "Toont de gespreksopnamen met naam, lengte, datum/tijd en oproep richting.";
$text['title_description-call_recordings']['pl-pl'] = "Wyświetla nagrania połączeń wraz z nazwą, długością, datą i godziną oraz kierunkiem połączenia.";
$text['title_description-call_recordings']['pt-br'] = "Mostra as gravações de chamadas com nome, duração, data e hora e direção da chamada.";
@@ -78,12 +84,14 @@ $text['label-call_recording_name']['ar-eg'] = "اسم";
$text['label-call_recording_name']['de-at'] = "Name";
$text['label-call_recording_name']['de-ch'] = "Name";
$text['label-call_recording_name']['de-de'] = "Name";
$text['label-call_recording_name']['el-gr'] = "Ονομα";
$text['label-call_recording_name']['es-cl'] = "Nombre";
$text['label-call_recording_name']['es-mx'] = "Nombre";
$text['label-call_recording_name']['fr-ca'] = "Nom";
$text['label-call_recording_name']['fr-fr'] = "Nom";
$text['label-call_recording_name']['he-il'] = "שֵׁם";
$text['label-call_recording_name']['it-it'] = "Nome";
$text['label-call_recording_name']['ka-ge'] = "სახელი";
$text['label-call_recording_name']['nl-nl'] = "Naam";
$text['label-call_recording_name']['pl-pl'] = "Nazwa";
$text['label-call_recording_name']['pt-br'] = "Nome";
@@ -102,12 +110,14 @@ $text['label-caller_id_name']['ar-eg'] = "اسم المتصل";
$text['label-caller_id_name']['de-at'] = "Anrufer Name";
$text['label-caller_id_name']['de-ch'] = "Anrufer Name";
$text['label-caller_id_name']['de-de'] = "Anrufer Name";
$text['label-caller_id_name']['el-gr'] = "Όνομα καλούντος";
$text['label-caller_id_name']['es-cl'] = "Nombre CID";
$text['label-caller_id_name']['es-mx'] = "Nombre CID";
$text['label-caller_id_name']['fr-ca'] = "Nom de l'Appelant";
$text['label-caller_id_name']['fr-fr'] = "Nom de l'Appelant";
$text['label-caller_id_name']['he-il'] = "שם המתקשר";
$text['label-caller_id_name']['it-it'] = "Nome CID";
$text['label-caller_id_name']['ka-ge'] = "დამრეკავის სახელი";
$text['label-caller_id_name']['nl-nl'] = "Naam beller";
$text['label-caller_id_name']['pl-pl'] = "Prezentacja nazwy dzwoniącego";
$text['label-caller_id_name']['pt-br'] = "Nome CID";
@@ -126,12 +136,14 @@ $text['label-caller_id_number']['ar-eg'] = "رقم المتصل";
$text['label-caller_id_number']['de-at'] = "Anrufer Nummer";
$text['label-caller_id_number']['de-ch'] = "Anrufer Nummer";
$text['label-caller_id_number']['de-de'] = "Anrufer Nummer";
$text['label-caller_id_number']['el-gr'] = "Αριθμός καλούντος";
$text['label-caller_id_number']['es-cl'] = "Número CID";
$text['label-caller_id_number']['es-mx'] = "Número CID";
$text['label-caller_id_number']['fr-ca'] = "Numéro de l'Appelant";
$text['label-caller_id_number']['fr-fr'] = "Numéro de l'Appelant";
$text['label-caller_id_number']['he-il'] = "מספר מתקשר";
$text['label-caller_id_number']['it-it'] = "Numero CID";
$text['label-caller_id_number']['ka-ge'] = "დამრეკავის ნომერი";
$text['label-caller_id_number']['nl-nl'] = "Beller nummer";
$text['label-caller_id_number']['pl-pl'] = "Prezentacja numeru dzwoniącego";
$text['label-caller_id_number']['pt-br'] = "Número CID";
@@ -150,12 +162,14 @@ $text['label-caller_destination']['ar-eg'] = "وجهة المتصل";
$text['label-caller_destination']['de-at'] = "Rufziel";
$text['label-caller_destination']['de-ch'] = "Rufziel";
$text['label-caller_destination']['de-de'] = "Rufziel";
$text['label-caller_destination']['el-gr'] = "Προορισμός καλούντος";
$text['label-caller_destination']['es-cl'] = "Destino de la persona que llama";
$text['label-caller_destination']['es-mx'] = "Destino de la persona que llama";
$text['label-caller_destination']['fr-ca'] = "Destination de l'appelant";
$text['label-caller_destination']['fr-fr'] = "Destination de l'appelant";
$text['label-caller_destination']['he-il'] = "Destino de la persona que llama";
$text['label-caller_destination']['it-it'] = "Destinazione del chiamante";
$text['label-caller_destination']['ka-ge'] = "დამრეკავის დანიშნულება";
$text['label-caller_destination']['nl-nl'] = "Bestemming van de beller";
$text['label-caller_destination']['pl-pl'] = "Miejsce docelowe dzwoniącego";
$text['label-caller_destination']['pt-br'] = "Destino do chamador";
@@ -174,12 +188,14 @@ $text['label-destination_number']['ar-eg'] = "وجهة";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_number']['de-ch'] = "Ziel";
$text['label-destination_number']['de-de'] = "Ziel";
$text['label-destination_number']['el-gr'] = "Προορισμός";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['es-mx'] = "Destino";
$text['label-destination_number']['fr-ca'] = "Destination";
$text['label-destination_number']['fr-fr'] = "Destination";
$text['label-destination_number']['he-il'] = "יַעַד";
$text['label-destination_number']['it-it'] = "Destinazione";
$text['label-destination_number']['ka-ge'] = "დანიშნულება";
$text['label-destination_number']['nl-nl'] = "Bestemming";
$text['label-destination_number']['pl-pl'] = "Miejsce docelowe";
$text['label-destination_number']['pt-br'] = "Destino";
@@ -198,12 +214,14 @@ $text['description-call_recording_name']['ar-eg'] = "اسم تسجيل المك
$text['description-call_recording_name']['de-at'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['de-ch'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['de-de'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['el-gr'] = "Όνομα εγγραφής κλήσης";
$text['description-call_recording_name']['es-cl'] = "Nombre de grabación de llamada";
$text['description-call_recording_name']['es-mx'] = "Nombre de grabación de llamada";
$text['description-call_recording_name']['fr-ca'] = "Nom de l'enregistrement d'appel";
$text['description-call_recording_name']['fr-fr'] = "Nom de l'enregistrement d'appel";
$text['description-call_recording_name']['he-il'] = "שם הקלטת שיחה";
$text['description-call_recording_name']['it-it'] = "Nome della registrazione della chiamata";
$text['description-call_recording_name']['ka-ge'] = "ზარის ჩანაწერის სახელი";
$text['description-call_recording_name']['nl-nl'] = "Gespreksopname naam";
$text['description-call_recording_name']['pl-pl'] = "Nazwa nagrania rozmowy";
$text['description-call_recording_name']['pt-br'] = "Nome da gravação de chamada";
@@ -222,12 +240,14 @@ $text['label-call_recording_path']['ar-eg'] = "طريق";
$text['label-call_recording_path']['de-at'] = "Weg";
$text['label-call_recording_path']['de-ch'] = "Weg";
$text['label-call_recording_path']['de-de'] = "Weg";
$text['label-call_recording_path']['el-gr'] = "Μονοπάτι";
$text['label-call_recording_path']['es-cl'] = "Camino";
$text['label-call_recording_path']['es-mx'] = "Camino";
$text['label-call_recording_path']['fr-ca'] = "Chemin";
$text['label-call_recording_path']['fr-fr'] = "Chemin";
$text['label-call_recording_path']['he-il'] = "נָתִיב";
$text['label-call_recording_path']['it-it'] = "Sentiero";
$text['label-call_recording_path']['ka-ge'] = "ბილიკი";
$text['label-call_recording_path']['nl-nl'] = "Pad";
$text['label-call_recording_path']['pl-pl'] = "Scieżka";
$text['label-call_recording_path']['pt-br'] = "Caminho";
@@ -240,29 +260,31 @@ $text['label-call_recording_path']['zh-cn'] = "小路";
$text['label-call_recording_path']['ja-jp'] = "道";
$text['label-call_recording_path']['ko-kr'] = "길";
$text['description-call_recording_path']['en-us'] = "";
$text['description-call_recording_path']['en-gb'] = "";
$text['description-call_recording_path']['ar-eg'] = "";
$text['description-call_recording_path']['de-at'] = "";
$text['description-call_recording_path']['de-ch'] = "";
$text['description-call_recording_path']['de-de'] = "";
$text['description-call_recording_path']['es-cl'] = "";
$text['description-call_recording_path']['es-mx'] = "";
$text['description-call_recording_path']['fr-ca'] = "";
$text['description-call_recording_path']['fr-fr'] = "";
$text['description-call_recording_path']['he-il'] = "";
$text['description-call_recording_path']['it-it'] = "";
$text['description-call_recording_path']['en-us'] = "Conversation recording path";
$text['description-call_recording_path']['en-gb'] = "Conversation recording path";
$text['description-call_recording_path']['ar-eg'] = "مسار تسجيل المحادثة";
$text['description-call_recording_path']['de-at'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['de-ch'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['de-de'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['el-gr'] = "Διαδρομή εγγραφής συνομιλίας";
$text['description-call_recording_path']['es-cl'] = "Ruta de grabación de conversaciones";
$text['description-call_recording_path']['es-mx'] = "Ruta de grabación de conversaciones";
$text['description-call_recording_path']['fr-ca'] = "Chemin d'enregistrement des conversations";
$text['description-call_recording_path']['fr-fr'] = "Chemin d'enregistrement des conversations";
$text['description-call_recording_path']['he-il'] = "נתיב הקלטת שיחות";
$text['description-call_recording_path']['it-it'] = "Percorso di registrazione della conversazione";
$text['description-call_recording_path']['ka-ge'] = "საუბრის ჩანაწერის ბილიკი";
$text['description-call_recording_path']['nl-nl'] = "Gespreksopname pad";
$text['description-call_recording_path']['pl-pl'] = "";
$text['description-call_recording_path']['pt-br'] = "";
$text['description-call_recording_path']['pt-pt'] = "";
$text['description-call_recording_path']['ro-ro'] = "";
$text['description-call_recording_path']['ru-ru'] = "";
$text['description-call_recording_path']['sv-se'] = "";
$text['description-call_recording_path']['uk-ua'] = "";
$text['description-call_recording_path']['zh-cn'] = "";
$text['description-call_recording_path']['ja-jp'] = "";
$text['description-call_recording_path']['ko-kr'] = "";
$text['description-call_recording_path']['pl-pl'] = "Ścieżka nagrywania rozmowy";
$text['description-call_recording_path']['pt-br'] = "Caminho de gravação de conversa";
$text['description-call_recording_path']['pt-pt'] = "Caminho de gravação de conversa";
$text['description-call_recording_path']['ro-ro'] = "Calea de înregistrare a conversației";
$text['description-call_recording_path']['ru-ru'] = "Путь записи разговора";
$text['description-call_recording_path']['sv-se'] = "Konversationsinspelningsväg";
$text['description-call_recording_path']['uk-ua'] = "Шлях запису розмови";
$text['description-call_recording_path']['zh-cn'] = "对话录音路径";
$text['description-call_recording_path']['ja-jp'] = "会話録音パス";
$text['description-call_recording_path']['ko-kr'] = "대화 녹음 경로";
$text['label-call_recording_length']['en-us'] = "Length";
$text['label-call_recording_length']['en-gb'] = "Length";
@@ -270,12 +292,14 @@ $text['label-call_recording_length']['ar-eg'] = "طول";
$text['label-call_recording_length']['de-at'] = "Länge";
$text['label-call_recording_length']['de-ch'] = "Länge";
$text['label-call_recording_length']['de-de'] = "Länge";
$text['label-call_recording_length']['el-gr'] = "Μήκος";
$text['label-call_recording_length']['es-cl'] = "Longitud";
$text['label-call_recording_length']['es-mx'] = "Longitud";
$text['label-call_recording_length']['fr-ca'] = "Longueur";
$text['label-call_recording_length']['fr-fr'] = "Longueur";
$text['label-call_recording_length']['he-il'] = "אורך";
$text['label-call_recording_length']['it-it'] = "Lunghezza";
$text['label-call_recording_length']['ka-ge'] = "ხანგრძლივობა";
$text['label-call_recording_length']['nl-nl'] = "Lengte";
$text['label-call_recording_length']['pl-pl'] = "Długość";
$text['label-call_recording_length']['pt-br'] = "Comprimento";
@@ -294,12 +318,14 @@ $text['description-call_recording_length']['ar-eg'] = "مدة تسجيل الم
$text['description-call_recording_length']['de-at'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['de-ch'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['de-de'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['el-gr'] = "Διάρκεια εγγραφής κλήσης";
$text['description-call_recording_length']['es-cl'] = "Duración de la grabación de llamadas";
$text['description-call_recording_length']['es-mx'] = "Duración de la grabación de llamadas";
$text['description-call_recording_length']['fr-ca'] = "Durée d'enregistrement des appels";
$text['description-call_recording_length']['fr-fr'] = "Durée d'enregistrement des appels";
$text['description-call_recording_length']['he-il'] = "משך הקלטת השיחה";
$text['description-call_recording_length']['it-it'] = "Durata della registrazione delle chiamate";
$text['description-call_recording_length']['ka-ge'] = "ზარის ჩანაწერის ხანგრძლივობა";
$text['description-call_recording_length']['nl-nl'] = "Gespreksopname duur";
$text['description-call_recording_length']['pl-pl'] = "Czas nagrywania rozmowy";
$text['description-call_recording_length']['pt-br'] = "Durata înregistrării apelului";
@@ -318,12 +344,14 @@ $text['label-call_recording_date']['ar-eg'] = "تاريخ";
$text['label-call_recording_date']['de-at'] = "Datum";
$text['label-call_recording_date']['de-ch'] = "Datum";
$text['label-call_recording_date']['de-de'] = "Datum";
$text['label-call_recording_date']['el-gr'] = "Ημερομηνία";
$text['label-call_recording_date']['es-cl'] = "Fecha";
$text['label-call_recording_date']['es-mx'] = "Fecha";
$text['label-call_recording_date']['fr-ca'] = "Date";
$text['label-call_recording_date']['fr-fr'] = "Date";
$text['label-call_recording_date']['he-il'] = "תַאֲרִיך";
$text['label-call_recording_date']['it-it'] = "תַאֲרִיך";
$text['label-call_recording_date']['ka-ge'] = "თარიღი";
$text['label-call_recording_date']['nl-nl'] = "Datum";
$text['label-call_recording_date']['pl-pl'] = "Data";
$text['label-call_recording_date']['pt-br'] = "Data";
@@ -342,12 +370,14 @@ $text['description-call_recording_date']['ar-eg'] = "تاريخ تسجيل ال
$text['description-call_recording_date']['de-at'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['de-ch'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['de-de'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['el-gr'] = "Ημερομηνία εγγραφής κλήσης";
$text['description-call_recording_date']['es-cl'] = "Fecha de grabación de llamadas";
$text['description-call_recording_date']['es-mx'] = "Fecha de grabación de llamadas";
$text['description-call_recording_date']['fr-ca'] = "Date d'enregistrement de l'appel";
$text['description-call_recording_date']['fr-fr'] = "Date d'enregistrement de l'appel";
$text['description-call_recording_date']['he-il'] = "תאריך הקלטת שיחה";
$text['description-call_recording_date']['it-it'] = "Data di registrazione della chiamata";
$text['description-call_recording_date']['ka-ge'] = "ზარის ჩაწერის თარიღი";
$text['description-call_recording_date']['nl-nl'] = "Gespreksopname datum";
$text['description-call_recording_date']['pl-pl'] = "Data nagrania rozmowy";
$text['description-call_recording_date']['pt-br'] = "Data de gravação da chamada";
@@ -366,12 +396,14 @@ $text['label-call_direction']['ar-eg'] = "اتجاه";
$text['label-call_direction']['de-at'] = "Richtung";
$text['label-call_direction']['de-ch'] = "Richtung";
$text['label-call_direction']['de-de'] = "Richtung";
$text['label-call_direction']['el-gr'] = "Κατεύθυνση";
$text['label-call_direction']['es-cl'] = "Dirección";
$text['label-call_direction']['es-mx'] = "Dirección";
$text['label-call_direction']['fr-ca'] = "Direction";
$text['label-call_direction']['fr-fr'] = "Direction";
$text['label-call_direction']['he-il'] = "כיוון";
$text['label-call_direction']['it-it'] = "Direzione";
$text['label-call_direction']['ka-ge'] = "მიმართულება";
$text['label-call_direction']['nl-nl'] = "Richting";
$text['label-call_direction']['pl-pl'] = "Kierunek";
$text['label-call_direction']['pt-br'] = "Direção";
@@ -384,29 +416,31 @@ $text['label-call_direction']['zh-cn'] = "方向";
$text['label-call_direction']['ja-jp'] = "方向";
$text['label-call_direction']['ko-kr'] = "방향";
$text['description-call_direction']['en-us'] = "";
$text['description-call_direction']['en-gb'] = "";
$text['description-call_direction']['ar-eg'] = "";
$text['description-call_direction']['de-at'] = "";
$text['description-call_direction']['de-ch'] = "";
$text['description-call_direction']['de-de'] = "";
$text['description-call_direction']['es-cl'] = "";
$text['description-call_direction']['es-mx'] = "";
$text['description-call_direction']['fr-ca'] = "";
$text['description-call_direction']['fr-fr'] = "";
$text['description-call_direction']['he-il'] = "";
$text['description-call_direction']['it-it'] = "";
$text['description-call_direction']['en-us'] = "Call recording call direction";
$text['description-call_direction']['en-gb'] = "Call recording call direction";
$text['description-call_direction']['ar-eg'] = "تسجيل المكالمات اتجاه المكالمة";
$text['description-call_direction']['de-at'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['de-ch'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['de-de'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['el-gr'] = "Κατεύθυνση κλήσης καταγραφής κλήσης";
$text['description-call_direction']['es-cl'] = "Dirección de llamada de grabación de llamadas.";
$text['description-call_direction']['es-mx'] = "Dirección de llamada de grabación de llamadas.";
$text['description-call_direction']['fr-ca'] = "Direction d'appel d'enregistrement d'appel";
$text['description-call_direction']['fr-fr'] = "Direction d'appel d'enregistrement d'appel";
$text['description-call_direction']['he-il'] = "הקלטת שיחה כיוון שיחה";
$text['description-call_direction']['it-it'] = "Direzione della chiamata per la registrazione delle chiamate";
$text['description-call_direction']['ka-ge'] = "ზარების ჩაწერა. ზარის მიმართულება";
$text['description-call_direction']['nl-nl'] = "Gespreksopname oproeprichting";
$text['description-call_direction']['pl-pl'] = "";
$text['description-call_direction']['pt-br'] = "";
$text['description-call_direction']['pt-pt'] = "";
$text['description-call_direction']['ro-ro'] = "";
$text['description-call_direction']['ru-ru'] = "";
$text['description-call_direction']['sv-se'] = "";
$text['description-call_direction']['uk-ua'] = "";
$text['description-call_direction']['zh-cn'] = "";
$text['description-call_direction']['ja-jp'] = "";
$text['description-call_direction']['ko-kr'] = "";
$text['description-call_direction']['pl-pl'] = "Nagrywanie połączeń Kierunek połączenia";
$text['description-call_direction']['pt-br'] = "Direção de chamada de gravação de chamada";
$text['description-call_direction']['pt-pt'] = "Direção de chamada de gravação de chamada";
$text['description-call_direction']['ro-ro'] = "Înregistrarea apelului direcția apelului";
$text['description-call_direction']['ru-ru'] = "Запись звонков, направление звонка";
$text['description-call_direction']['sv-se'] = "Samtalsinspelning samtalsriktning";
$text['description-call_direction']['uk-ua'] = "Напрямок виклику запису дзвінка";
$text['description-call_direction']['zh-cn'] = "通话录音 通话方向";
$text['description-call_direction']['ja-jp'] = "通話録音の通話方向";
$text['description-call_direction']['ko-kr'] = "통화 녹음 통화 방향";
$text['label-call_recording_description']['en-us'] = "Description";
$text['label-call_recording_description']['en-gb'] = "Description";
@@ -414,12 +448,14 @@ $text['label-call_recording_description']['ar-eg'] = "وصف";
$text['label-call_recording_description']['de-at'] = "Beschreibung";
$text['label-call_recording_description']['de-ch'] = "Beschreibung";
$text['label-call_recording_description']['de-de'] = "Beschreibung";
$text['label-call_recording_description']['el-gr'] = "Περιγραφή";
$text['label-call_recording_description']['es-cl'] = "Descripción";
$text['label-call_recording_description']['es-mx'] = "Descripción";
$text['label-call_recording_description']['fr-ca'] = "Description";
$text['label-call_recording_description']['fr-fr'] = "Description";
$text['label-call_recording_description']['he-il'] = "תיאור";
$text['label-call_recording_description']['it-it'] = "Descrizione";
$text['label-call_recording_description']['ka-ge'] = "აღწერა";
$text['label-call_recording_description']['nl-nl'] = "Omschrijving";
$text['label-call_recording_description']['pl-pl'] = "Opis";
$text['label-call_recording_description']['pt-br'] = "Descrição";
@@ -432,29 +468,31 @@ $text['label-call_recording_description']['zh-cn'] = "描述";
$text['label-call_recording_description']['ja-jp'] = "説明";
$text['label-call_recording_description']['ko-kr'] = "설명";
$text['description-call_recording_description']['en-us'] = "";
$text['description-call_recording_description']['en-gb'] = "";
$text['description-call_recording_description']['ar-eg'] = "";
$text['description-call_recording_description']['de-at'] = "";
$text['description-call_recording_description']['de-ch'] = "";
$text['description-call_recording_description']['de-de'] = "";
$text['description-call_recording_description']['es-cl'] = "";
$text['description-call_recording_description']['es-mx'] = "";
$text['description-call_recording_description']['fr-ca'] = "";
$text['description-call_recording_description']['fr-fr'] = "";
$text['description-call_recording_description']['he-il'] = "";
$text['description-call_recording_description']['it-it'] = "";
$text['description-call_recording_description']['en-us'] = "Call recording direction";
$text['description-call_recording_description']['en-gb'] = "Call recording direction";
$text['description-call_recording_description']['ar-eg'] = "اتجاه تسجيل المكالمات";
$text['description-call_recording_description']['de-at'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['de-ch'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['de-de'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['el-gr'] = "Κατεύθυνση εγγραφής κλήσης";
$text['description-call_recording_description']['es-cl'] = "Dirección de grabación de llamadas";
$text['description-call_recording_description']['es-mx'] = "Dirección de grabación de llamadas";
$text['description-call_recording_description']['fr-ca'] = "Direction d'enregistrement des appels";
$text['description-call_recording_description']['fr-fr'] = "Direction d'enregistrement des appels";
$text['description-call_recording_description']['he-il'] = "כיוון הקלטת שיחות";
$text['description-call_recording_description']['it-it'] = "Direzione di registrazione della chiamata";
$text['description-call_recording_description']['ka-ge'] = "ზარის ჩანაწერების მიმართულება";
$text['description-call_recording_description']['nl-nl'] = "Gespreksopname richting";
$text['description-call_recording_description']['pl-pl'] = "";
$text['description-call_recording_description']['pt-br'] = "";
$text['description-call_recording_description']['pt-pt'] = "";
$text['description-call_recording_description']['ro-ro'] = "";
$text['description-call_recording_description']['ru-ru'] = "";
$text['description-call_recording_description']['sv-se'] = "";
$text['description-call_recording_description']['uk-ua'] = "";
$text['description-call_recording_description']['zh-cn'] = "";
$text['description-call_recording_description']['ja-jp'] = "";
$text['description-call_recording_description']['ko-kr'] = "";
$text['description-call_recording_description']['pl-pl'] = "Kierunek nagrywania połączeń";
$text['description-call_recording_description']['pt-br'] = "Direção de gravação de chamadas";
$text['description-call_recording_description']['pt-pt'] = "Direção de gravação de chamadas";
$text['description-call_recording_description']['ro-ro'] = "Direcția de înregistrare a apelurilor";
$text['description-call_recording_description']['ru-ru'] = "Направление записи звонков";
$text['description-call_recording_description']['sv-se'] = "Riktning för samtalsinspelning";
$text['description-call_recording_description']['uk-ua'] = "Напрямок запису дзвінка";
$text['description-call_recording_description']['zh-cn'] = "通话录音方向";
$text['description-call_recording_description']['ja-jp'] = "通話録音の方向";
$text['description-call_recording_description']['ko-kr'] = "통화 녹음 방향";
$text['label-call_recording_base64']['en-us'] = "Base64";
$text['label-call_recording_base64']['en-gb'] = "Base64";
@@ -462,12 +500,14 @@ $text['label-call_recording_base64']['ar-eg'] = "قاعدة64";
$text['label-call_recording_base64']['de-at'] = "Base64";
$text['label-call_recording_base64']['de-ch'] = "Base64";
$text['label-call_recording_base64']['de-de'] = "Base64";
$text['label-call_recording_base64']['el-gr'] = "Βάση64";
$text['label-call_recording_base64']['es-cl'] = "Base64";
$text['label-call_recording_base64']['es-mx'] = "Base64";
$text['label-call_recording_base64']['fr-ca'] = "Base64";
$text['label-call_recording_base64']['fr-fr'] = "Base64";
$text['label-call_recording_base64']['he-il'] = "64בסיס";
$text['label-call_recording_base64']['it-it'] = "Base64";
$text['label-call_recording_base64']['ka-ge'] = "Base64";
$text['label-call_recording_base64']['nl-nl'] = "Base64";
$text['label-call_recording_base64']['pl-pl'] = "Base64";
$text['label-call_recording_base64']['pt-br'] = "Base64";
@@ -486,19 +526,21 @@ $text['description-call_recording_base64']['ar-eg'] = "قاعدة64";
$text['description-call_recording_base64']['de-at'] = "Base64";
$text['description-call_recording_base64']['de-ch'] = "Base64";
$text['description-call_recording_base64']['de-de'] = "Base64";
$text['description-call_recording_base64']['el-gr'] = "Βάση64";
$text['description-call_recording_base64']['es-cl'] = "Base64";
$text['description-call_recording_base64']['es-mx'] = "Base64";
$text['description-call_recording_base64']['fr-ca'] = "Base64";
$text['description-call_recording_base64']['fr-fr'] = "Base64";
$text['description-call_recording_base64']['he-il'] = "בסיס 64";
$text['description-call_recording_base64']['it-it'] = "Base64";
$text['description-call_recording_base64']['nl-nl'] = "Base64";
$text['description-call_recording_base64']['pl-pl'] = "Base64";
$text['description-call_recording_base64']['ka-ge'] = "Base64";
$text['description-call_recording_base64']['nl-nl'] = "Baseren64";
$text['description-call_recording_base64']['pl-pl'] = "Baza64";
$text['description-call_recording_base64']['pt-br'] = "Base64";
$text['description-call_recording_base64']['pt-pt'] = "Base64";
$text['description-call_recording_base64']['ro-ro'] = "Base64";
$text['description-call_recording_base64']['ro-ro'] = "Baza64";
$text['description-call_recording_base64']['ru-ru'] = "База64";
$text['description-call_recording_base64']['sv-se'] = "Base64";
$text['description-call_recording_base64']['sv-se'] = "Bas64";
$text['description-call_recording_base64']['uk-ua'] = "База64";
$text['description-call_recording_base64']['zh-cn'] = "基地64";
$text['description-call_recording_base64']['ja-jp'] = "ベース64";
@@ -510,12 +552,14 @@ $text['label-inbound']['ar-eg'] = "واردة";
$text['label-inbound']['de-at'] = "Eingehende";
$text['label-inbound']['de-ch'] = "Eingehende";
$text['label-inbound']['de-de'] = "Eingehende";
$text['label-inbound']['el-gr'] = "Εισερχόμενος";
$text['label-inbound']['es-cl'] = "Entrante";
$text['label-inbound']['es-mx'] = "Entrante";
$text['label-inbound']['fr-ca'] = "Entrant";
$text['label-inbound']['fr-fr'] = "Entrant";
$text['label-inbound']['he-il'] = "נכנסת";
$text['label-inbound']['it-it'] = "In entrata";
$text['label-inbound']['ka-ge'] = "შემომავალი";
$text['label-inbound']['nl-nl'] = "Inkomend";
$text['label-inbound']['pl-pl'] = "Przychodzący";
$text['label-inbound']['pt-br'] = "Entrada";
@@ -534,12 +578,14 @@ $text['label-outbound']['ar-eg'] = "الصادرة";
$text['label-outbound']['de-at'] = "Ausgehend";
$text['label-outbound']['de-ch'] = "Ausgehend";
$text['label-outbound']['de-de'] = "Ausgehend";
$text['label-outbound']['el-gr'] = "Εξερχόμενος";
$text['label-outbound']['es-cl'] = "Saliente";
$text['label-outbound']['es-mx'] = "Saliente";
$text['label-outbound']['fr-ca'] = "Sortant";
$text['label-outbound']['fr-fr'] = "Sortant";
$text['label-outbound']['he-il'] = "יוצא";
$text['label-outbound']['it-it'] = "In uscita";
$text['label-outbound']['ka-ge'] = "გამავალი";
$text['label-outbound']['nl-nl'] = "Uitgaand";
$text['label-outbound']['pl-pl'] = "Wychodzący";
$text['label-outbound']['pt-br'] = "Saída";
@@ -558,12 +604,14 @@ $text['label-local']['ar-eg'] = "محلي";
$text['label-local']['de-at'] = "Lokal";
$text['label-local']['de-ch'] = "Lokal";
$text['label-local']['de-de'] = "Lokal";
$text['label-local']['el-gr'] = "Τοπικός";
$text['label-local']['es-cl'] = "Local";
$text['label-local']['es-mx'] = "Local";
$text['label-local']['fr-ca'] = "Local";
$text['label-local']['fr-fr'] = "Local";
$text['label-local']['he-il'] = "מְקוֹמִי";
$text['label-local']['it-it'] = "Locale";
$text['label-local']['ka-ge'] = "ლოკალური";
$text['label-local']['nl-nl'] = "Lokaal";
$text['label-local']['pl-pl'] = "Lokalny";
$text['label-local']['pt-br'] = "Local";
+1
View File
@@ -14,6 +14,7 @@
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Enregistrements d'appels";
$apps[$x]['menu'][$y]['title']['he-il'] = "הקלטות שיחות";
$apps[$x]['menu'][$y]['title']['it-it'] = "Registrazioni delle chiamate";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "ზარის ჩანაწერები";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Gespreksopnamen";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Nagrania Rozmów";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Gravações de chamadas";
+334 -314
View File
@@ -1,314 +1,334 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/paging.php";
//check permissions
if (permission_exists('call_recording_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set additional variables
$search = $_GET["search"] ?? '';
$show = $_GET["show"] ?? '';
//get the http post data
if (!empty($_POST['call_recordings']) && is_array($_POST['call_recordings'])) {
$action = $_POST['action'];
$search = $_POST['search'];
$call_recordings = $_POST['call_recordings'];
}
//process the http post data by action
if (!empty($action) && is_array($call_recordings) && @sizeof($call_recordings) != 0) {
switch ($action) {
case 'delete':
if (permission_exists('call_recording_delete')) {
$obj = new call_recordings;
$obj->delete($call_recordings);
}
break;
}
//redirect the user
header('Location: call_recordings.php'.($search != '' ? '?search='.urlencode($search) : null));
exit;
}
//get order and order by
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
//add the search string
if (!empty($search)) {
$search = strtolower($_GET["search"]);
}
//set the time zone
if (!empty($_SESSION['domain']['time_zone']['name'])) {
$time_zone = $_SESSION['domain']['time_zone']['name'];
}
else {
$time_zone = date_default_timezone_get();
}
$parameters['time_zone'] = $time_zone;
//get the count
//$sql = "select count(*) ";
//$sql .= "from view_call_recordings ";
//$sql .= "where true ";
//if ($_GET['show'] != "all" || !permission_exists('call_recording_all')) {
// $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
// $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
//}
//if (isset($search)) {
// $sql .= "and (";
// $sql .= " lower(call_recording_name) like :search ";
// $sql .= " or lower(call_recording_path) like :search ";
// $sql .= ") ";
// $parameters['search'] = '%'.$search.'%';
//}
//$database = new database;
//$num_rows = $database->select($sql, $parameters, 'column');
//prepare some of the paging values
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
$page = $_GET['page'] ?? '';
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
$offset = $rows_per_page * $page;
//get the list
$sql = "select r.domain_uuid, d.domain_name, r.call_recording_uuid, r.call_direction, ";
$sql .= "r.call_recording_name, r.call_recording_path, r.call_recording_length, ";
$sql .= "r.caller_id_name, r.caller_id_number, r.caller_destination, r.destination_number, ";
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'DD Mon YYYY') as call_recording_date_formatted, \n";
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'HH12:MI:SS am') as call_recording_time_formatted \n";
$sql .= "from view_call_recordings as r, v_domains as d ";
//$sql .= "from v_call_recordings as r, v_domains as d ";
$sql .= "where true ";
if ($show != "all" || !permission_exists('call_recording_all')) {
$sql .= "and (r.domain_uuid = :domain_uuid or r.domain_uuid is null) ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$sql .= "and r.domain_uuid = d.domain_uuid ";
if (!empty($search)) {
$sql .= "and (";
$sql .= " lower(r.call_direction) like :search ";
$sql .= " or lower(r.caller_id_name) like :search ";
$sql .= " or lower(r.caller_id_number) like :search ";
$sql .= " or lower(r.caller_destination) like :search ";
$sql .= " or lower(r.destination_number) like :search ";
$sql .= " or lower(r.call_recording_name) like :search ";
$sql .= " or lower(r.call_recording_path) like :search ";
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$sql .= order_by($order_by, $order, 'r.call_recording_date', 'desc');
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$call_recordings = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//count the results
$result_count = is_array($call_recordings) ? sizeof($call_recordings) : 0;
//limit the number of results
if (!empty($_SESSION['cdr']['limit']['numeric']) && $_SESSION['cdr']['limit']['numeric'] > 0) {
$num_rows = $_SESSION['cdr']['limit']['numeric'];
}
//prepare to page the results
$param = "&search=".urlencode($search);
if ($show == "all" && permission_exists('call_recording_all')) {
$param .= "&show=all";
}
list($paging_controls_mini, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, true, $result_count); //top
list($paging_controls, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, false, $result_count); //bottom
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['title-call_recordings'];
require_once "resources/header.php";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_recordings']." </b></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_recording_download_add') && $call_recordings) {
echo button::create(['type'=>'button','label'=>$text['button-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'collapse'=>'hide-xs','onclick'=>"list_action_set('download'); list_form_submit('form_list');"]);
}
if (permission_exists('call_recording_delete') && $call_recordings) {
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-left: 15px;','collapse'=>'hide-xs','onclick'=>"modal_open('modal-delete','btn_delete');"]);
}
echo "<form id='form_search' class='inline' method='get'>\n";
if (permission_exists('call_recording_all')) {
if ($show == 'all') {
echo " <input type='hidden' name='show' value='all'>";
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type ?? '').'&show=all'.(!empty($search) ? "&search=".urlencode($search) : null)]);
}
}
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=\"$('#btn_reset').hide(); $('#btn_search').show();\">";
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>(!empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_recordings.php','style'=>(empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
if (!empty($paging_controls_mini)) {
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
}
echo " </form>\n";
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_recording_delete') && $call_recordings) {
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
}
echo $text['title_description-call_recordings']."\n";
echo "<br /><br />\n";
echo "<form id='form_list' method='post'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
$col_count = 8;
if ($show == "all" && permission_exists('call_recording_all')) {
$col_count++;
}
if (permission_exists('call_recording_delete')) {
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(empty($call_recordings) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
$col_count++;
}
if ($show == "all" && permission_exists('call_recording_all')) {
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
}
echo th_order_by('caller_id_name', $text['label-caller_id_name'], $order_by, $order, null, "class='hide-sm-dn shrink'");
echo th_order_by('caller_id_number', $text['label-caller_id_number'], $order_by, $order, null, "class='pct-10'");
echo th_order_by('caller_destination', $text['label-caller_destination'], $order_by, $order, null, "class='hide-sm-dn shrink'");
echo th_order_by('destination_number', $text['label-destination_number'], $order_by, $order, null, "class='hide-sm-dn shrink'");
echo th_order_by('call_recording_name', $text['label-call_recording_name'], $order_by, $order, null, "class='pct-40 hide-sm-dn'");
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
echo "<th class='shrink center'>".$text['label-recording']."</th>\n";
$col_count++;
}
echo th_order_by('call_recording_length', $text['label-call_recording_length'], $order_by, $order, null, "class='right hide-sm-dn shrink'");
echo th_order_by('call_recording_date', $text['label-call_recording_date'], $order_by, $order, null, "class='center'");
echo th_order_by('call_direction', $text['label-call_direction'], $order_by, $order, null, "class='hide-sm-dn shrink'");
if (permission_exists('xml_cdr_details')) {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
if (is_array($call_recordings) && @sizeof($call_recordings) != 0) {
$x = 0;
foreach ($call_recordings as $row) {
//add padding to the call recording length
$call_recording_length_padding = (!empty($row['call_recording_length'])) ? str_pad($row['call_recording_length'], 2, '0', STR_PAD_LEFT) : '';
//playback progress bar
if (permission_exists('call_recording_play')) {
echo "<tr class='list-row' id='recording_progress_bar_".escape($row['call_recording_uuid'])."' style='display: none;'><td class='playback_progress_bar_background' style='padding: 0; border: none;' colspan='".$col_count."'><span class='playback_progress_bar' id='recording_progress_".escape($row['call_recording_uuid'])."'></span></td>".(permission_exists('xml_cdr_details') ? "<td class='action-button' style='border-bottom: none !important;'></td>" : null)."</tr>\n";
echo "<tr class='list-row' style='display: none;'><td></td></tr>\n"; // dummy row to maintain alternating background color
}
if (permission_exists('call_recording_play')) {
$list_row_url = "javascript:recording_play('".escape($row['call_recording_uuid'])."');";
}
echo "<tr class='list-row' href=\"".$list_row_url."\">\n";
if (permission_exists('call_recording_delete')) {
echo " <td class='checkbox'>\n";
echo " <input type='checkbox' name='call_recordings[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
echo " <input type='hidden' name='call_recordings[$x][uuid]' value='".escape($row['call_recording_uuid'])."' />\n";
echo " </td>\n";
}
if ($show == "all" && permission_exists('call_recording_all')) {
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['domain_name'])."</td>\n";
}
echo " <td class='hide-sm-dn shrink'>".escape($row['caller_id_name'])."</td>\n";
echo " <td class='overflow'>".escape($row['caller_id_number'])."</td>\n";
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['caller_destination'])."</td>\n";
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['destination_number'])."</td>\n";
echo " <td class='hide-sm-dn nowrap'>".escape($row['call_recording_name'])."</td>\n";
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
echo " <td class='middle button center no-link no-wrap'>";
if (file_exists($row['call_recording_path'].'/'.$row['call_recording_name'])) {
if (permission_exists('call_recording_play')) {
$recording_file_ext = pathinfo($row['call_recording_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;
}
echo "<audio id='recording_audio_".escape($row['call_recording_uuid'])."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".escape($row['call_recording_uuid'])."')\" onended=\"recording_reset('".escape($row['call_recording_uuid'])."');\" src='download.php?id=".urlencode($row['call_recording_uuid'])."' type='".$recording_type."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.escape($row['call_recording_uuid']),'onclick'=>"recording_play('".escape($row['call_recording_uuid'])."')"]);
}
if (permission_exists('call_recording_download')) {
echo button::create(['type'=>'button','title'=>$text['label-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'link'=>'download.php?id='.urlencode($row['call_recording_uuid']).'&binary']);
}
}
echo " </td>\n";
}
echo " <td class='right overflow hide-sm-dn shrink'>".($row['call_recording_length'] <= 59 ? '0:' : null).escape($call_recording_length_padding)."</td>\n";
echo " <td class='center no-wrap'>".escape($row['call_recording_date_formatted'])." <span class='hide-sm-dn'>".escape($row['call_recording_time_formatted'])."</span></td>\n";
echo " <td class='left hide-sm-dn shrink'>".($row['call_direction'] != '' ? escape($text['label-'.$row['call_direction']]) : null)."</td>\n";
if (permission_exists('xml_cdr_details')) {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>PROJECT_PATH.'/app/xml_cdr/xml_cdr_details.php?id='.urlencode($row['call_recording_uuid'])]);
echo " </td>\n";
}
echo "</tr>\n";
$x++;
}
unset($call_recordings);
}
echo "</table>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
//include the footer
require_once "resources/footer.php";
?>
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/paging.php";
//check permissions
if (permission_exists('call_recording_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//create the database connection
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
//add the settings object
$settings = new settings(["domain_uuid" => $_SESSION['domain_uuid'], "user_uuid" => $_SESSION['user_uuid']]);
$transcribe_enabled = $settings->get('transcribe', 'enabled', false);
$transcribe_engine = $settings->get('transcribe', 'engine', '');
//set additional variables
$search = $_GET["search"] ?? '';
$show = $_GET["show"] ?? '';
//get the http post data
if (!empty($_POST['call_recordings']) && is_array($_POST['call_recordings'])) {
$action = $_POST['action'];
$search = $_POST['search'];
$call_recordings = $_POST['call_recordings'];
}
//process the http post data by action
if (!empty($action) && is_array($call_recordings) && @sizeof($call_recordings) != 0) {
switch ($action) {
case 'download':
if (permission_exists('call_recording_download')) {
$obj = new call_recordings;
$obj->download($call_recordings);
}
break;
case 'transcribe':
if (permission_exists('call_recording_transcribe')) {
$obj = new call_recordings;
$obj->transcribe($call_recordings);
}
break;
case 'delete':
if (permission_exists('call_recording_delete')) {
$obj = new call_recordings;
$obj->delete($call_recordings);
}
break;
}
//redirect the user
header('Location: call_recordings.php'.($search != '' ? '?search='.urlencode($search) : null));
exit;
}
//get order and order by
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
//add the search string
if (!empty($search)) {
$search = strtolower($_GET["search"]);
}
//set the time zone
if (!empty($_SESSION['domain']['time_zone']['name'])) {
$time_zone = $_SESSION['domain']['time_zone']['name'];
}
else {
$time_zone = date_default_timezone_get();
}
$parameters['time_zone'] = $time_zone;
//prepare some of the paging values
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
$page = $_GET['page'] ?? '';
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
$offset = $rows_per_page * $page;
//get the list
$sql = "select r.domain_uuid, d.domain_name, r.call_recording_uuid, r.call_direction, ";
$sql .= "r.call_recording_name, r.call_recording_path, r.call_recording_transcription, r.call_recording_length, ";
$sql .= "r.caller_id_name, r.caller_id_number, r.caller_destination, r.destination_number, ";
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'DD Mon YYYY') as call_recording_date_formatted, \n";
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'HH12:MI:SS am') as call_recording_time_formatted \n";
$sql .= "from view_call_recordings as r, v_domains as d ";
//$sql .= "from v_call_recordings as r, v_domains as d ";
$sql .= "where true ";
if ($show != "all" || !permission_exists('call_recording_all')) {
$sql .= "and r.domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$sql .= "and r.domain_uuid = d.domain_uuid ";
if (!empty($search)) {
$sql .= "and (";
$sql .= " lower(r.call_direction) like :search ";
$sql .= " or lower(r.caller_id_name) like :search ";
$sql .= " or lower(r.caller_id_number) like :search ";
$sql .= " or lower(r.caller_destination) like :search ";
$sql .= " or lower(r.destination_number) like :search ";
$sql .= " or lower(r.call_recording_name) like :search ";
$sql .= " or lower(r.call_recording_path) like :search ";
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$sql .= order_by($order_by, $order, 'r.call_recording_date', 'desc');
$sql .= limit_offset($rows_per_page, $offset);
$call_recordings = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//detect if any transcriptions available
if ($transcribe_enabled && !empty($transcribe_engine) && !empty($call_recordings) && is_array($call_recordings)) {
$transcriptions_exists = false;
foreach ($call_recordings as $row) {
if (!empty($row['call_recording_transcription'])) { $transcriptions_exists = true; }
}
}
//limit the number of results
if (!empty($_SESSION['cdr']['limit']['numeric']) && $_SESSION['cdr']['limit']['numeric'] > 0) {
$num_rows = $_SESSION['cdr']['limit']['numeric'];
}
//prepare to page the results
$param = "&search=".urlencode($search);
if ($show == "all" && permission_exists('call_recording_all')) {
$param .= "&show=all";
}
list($paging_controls_mini, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, true, $result_count); //top
list($paging_controls, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, false, $result_count); //bottom
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['title-call_recordings'];
require_once "resources/header.php";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_recordings']." </b></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_recording_download') && !empty($call_recordings)) {
echo button::create(['type'=>'button','label'=>$text['button-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'id'=>'btn_download','name'=>'btn_download','style'=>'display: none;','collapse'=>'hide-xs','onclick'=>"list_action_set('download'); list_form_submit('form_list');"]);
}
if (permission_exists('call_recording_transcribe') && $transcribe_enabled && !empty($transcribe_engine) && !empty($call_recordings)) {
echo button::create(['type'=>'button','label'=>$text['button-transcribe'],'icon'=>'quote-right','id'=>'btn_transcribe','name'=>'btn_transcribe','style'=>'display: none;','collapse'=>'hide-xs','onclick'=>"list_action_set('transcribe'); list_form_submit('form_list');"]);
}
if (permission_exists('call_recording_delete') && !empty($call_recordings)) {
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-right: 15px;','collapse'=>'hide-xs','onclick'=>"modal_open('modal-delete','btn_delete');"]);
}
echo "<form id='form_search' class='inline' method='get'>\n";
if (permission_exists('call_recording_all')) {
if ($show == 'all') {
echo " <input type='hidden' name='show' value='all'>";
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type ?? '').'&show=all'.(!empty($search) ? "&search=".urlencode($search) : null)]);
}
}
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=\"$('#btn_reset').hide(); $('#btn_search').show();\">";
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>(!empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_recordings.php','style'=>(empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
if (!empty($paging_controls_mini)) {
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
}
echo " </form>\n";
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_recording_delete') && !empty($call_recordings)) {
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
}
echo $text['title_description-call_recordings']."\n";
echo "<br /><br />\n";
echo "<form id='form_list' method='post'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
$col_count = 8;
if ($show == "all" && permission_exists('call_recording_all')) {
$col_count++;
}
if (permission_exists('call_recording_delete')) {
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(empty($call_recordings) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
$col_count++;
}
if ($show == "all" && permission_exists('call_recording_all')) {
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='hide-sm-dn shrink'");
}
echo th_order_by('caller_id_name', $text['label-caller_id_name'], $order_by, $order, null, "class='hide-sm-dn'");
echo th_order_by('caller_id_number', $text['label-caller_id_number'], $order_by, $order, null, "class='pct-15'");
echo th_order_by('caller_destination', $text['label-caller_destination'], $order_by, $order, null, "class='pct-10 hide-sm-dn'");
echo th_order_by('destination_number', $text['label-destination_number'], $order_by, $order, null, "class='pct-10'");
echo th_order_by('call_recording_name', $text['label-call_recording_name'], $order_by, $order, null, "class='pct-20 hide-sm-dn'");
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
echo "<th class='shrink center'>".$text['label-recording']."</th>\n";
$col_count++;
}
echo th_order_by('call_recording_length', $text['label-call_recording_length'], $order_by, $order, null, "class='right hide-sm-dn shrink'");
echo th_order_by('call_recording_date', $text['label-call_recording_date'], $order_by, $order, null, "class='pct-20 center'");
echo th_order_by('call_direction', $text['label-call_direction'], $order_by, $order, null, "class='hide-sm-dn shrink'");
if (permission_exists('xml_cdr_details')) {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
if (is_array($call_recordings) && @sizeof($call_recordings) != 0) {
$x = 0;
foreach ($call_recordings as $row) {
//playback progress bar
if (permission_exists('call_recording_play')) {
echo "<tr class='list-row' id='recording_progress_bar_".escape($row['call_recording_uuid'])."' style='display: none;' onclick=\"recording_seek(event,'".escape($row['call_recording_uuid'])."')\"><td id='playback_progress_bar_background_".escape($row['call_recording_uuid'])."' class='playback_progress_bar_background' colspan='".$col_count."'><span class='playback_progress_bar' id='recording_progress_".escape($row['call_recording_uuid'])."'></span></td>".(permission_exists('xml_cdr_details') ? "<td class='action-button' style='border-bottom: none !important;'></td>" : null)."</tr>\n";
echo "<tr class='list-row' style='display: none;'><td></td></tr>\n"; // dummy row to maintain alternating background color
}
if (permission_exists('call_recording_play')) {
$list_row_url = "javascript:recording_play('".escape($row['call_recording_uuid'])."');";
}
echo "<tr class='list-row' href=\"".$list_row_url."\">\n";
if (permission_exists('call_recording_delete')) {
echo " <td class='checkbox'>\n";
echo " <input type='checkbox' name='call_recordings[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
echo " <input type='hidden' name='call_recordings[$x][uuid]' value='".escape($row['call_recording_uuid'])."' />\n";
echo " </td>\n";
}
if ($show == "all" && permission_exists('call_recording_all')) {
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['domain_name'])."</td>\n";
}
echo " <td class='hide-sm-dn shrink'>".escape($row['caller_id_name'])."</td>\n";
echo " <td class='shrink'>".escape(format_phone(substr($row['caller_id_number'], 0, 20)))."</td>\n";
echo " <td class='hide-sm-dn shrink'>".escape(format_phone(substr($row['caller_destination'], 0, 20)))."</td>\n";
echo " <td class='shrink'>".escape(format_phone(substr($row['destination_number'], 0, 20)))."</td>\n";
echo " <td class='overflow hide-sm-dn nowrap'>".escape($row['call_recording_name'])."</td>\n";
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
echo " <td class='middle button center no-link no-wrap'>";
if (file_exists($row['call_recording_path'].'/'.$row['call_recording_name'])) {
if (permission_exists('call_recording_play')) {
$recording_file_ext = pathinfo($row['call_recording_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;
}
echo "<audio id='recording_audio_".escape($row['call_recording_uuid'])."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".escape($row['call_recording_uuid'])."')\" onended=\"recording_reset('".escape($row['call_recording_uuid'])."');\" src='download.php?id=".urlencode($row['call_recording_uuid'])."' type='".$recording_type."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.escape($row['call_recording_uuid']),'onclick'=>"recording_play('".escape($row['call_recording_uuid'])."')"]);
}
if (permission_exists('call_recording_download')) {
echo button::create(['type'=>'button','title'=>$text['label-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'link'=>'download.php?id='.urlencode($row['call_recording_uuid']).'&binary']);
}
if (permission_exists('call_recording_transcribe') && $transcribe_enabled && !empty($transcribe_engine) && $transcriptions_exists === true) {
echo button::create(['type'=>'button','title'=>$text['label-transcription'],'icon'=>'quote-right','style'=>(empty($row['call_recording_transcription']) ? 'visibility:hidden;' : null),'onclick'=>"document.getElementById('transcription_".$row['call_recording_uuid']."').style.display = document.getElementById('transcription_".$row['call_recording_uuid']."').style.display == 'none' ? 'table-row' : 'none'; this.blur(); return false;"]);
}
}
echo " </td>\n";
}
echo " <td class='right overflow hide-sm-dn shrink'>".escape(gmdate("G:i:s", $row['call_recording_length']))."</td>\n";
echo " <td class='overflow center no-wrap'>".escape($row['call_recording_date_formatted'])." <span class='hide-sm-dn'>".escape($row['call_recording_time_formatted'])."</span></td>\n";
echo " <td class='left hide-sm-dn shrink'>".($row['call_direction'] != '' ? escape($text['label-'.$row['call_direction']]) : null)."</td>\n";
if (permission_exists('xml_cdr_details')) {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>PROJECT_PATH.'/app/xml_cdr/xml_cdr_details.php?id='.urlencode($row['call_recording_uuid'])]);
echo " </td>\n";
}
echo "</tr>\n";
if (permission_exists('call_recording_transcribe') && $transcribe_enabled && !empty($transcribe_engine) && !empty($row['call_recording_transcription'])) {
echo "<tr style='display: none;'><td></td></tr>\n"; // dummy row to maintain same background color for transcription row
echo "<tr id='transcription_".$row['call_recording_uuid']."' class='list-row' style='display: none;'>\n";
echo " <td style='padding: 10px 20px 15px 20px;' colspan='".$col_count."'>\n";
echo " <strong style='display: inline-block; font-size: 90%; margin-bottom: 10px;'>".$text['label-transcription']."...</strong><br />\n";
echo escape($row['call_recording_transcription'])."\n";
echo " </td>\n";
echo "</tr>\n";
}
$x++;
}
unset($call_recordings);
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
//include the footer
require_once "resources/footer.php";
?>
+47 -47
View File
@@ -1,48 +1,48 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2016-2020
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
//check permisions
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//access granted
}
else {
echo "access denied";
exit;
}
//download
if (is_uuid($_GET['id'])) {
$obj = new call_recordings;
$obj->recording_uuid = $_GET['id'];
$obj->binary = isset($_GET['binary']) ? true : false;
$obj->download();
}
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2016-2020
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
//check permisions
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//access granted
}
else {
echo "access denied";
exit;
}
//download
if (is_uuid($_GET['id'])) {
$obj = new call_recordings;
$obj->recording_uuid = $_GET['id'];
$obj->binary = isset($_GET['binary']) ? true : false;
$obj->download();
}
?>
@@ -1,304 +1,529 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* call_recordings class
*
* @method null download
*/
if (!class_exists('call_recordings')) {
class call_recordings {
/**
* declare the variables
*/
private $app_name;
private $app_uuid;
private $name;
private $table;
private $description_field;
private $location;
public $recording_uuid;
public $binary;
/**
* called when the object is created
*/
public function __construct() {
//assign the variables
$this->app_name = 'call_recordings';
$this->app_uuid = '56165644-598d-4ed8-be01-d960bcb8ffed';
$this->name = 'call_recording';
$this->table = 'call_recordings';
$this->description_field = 'call_recording_description';
$this->location = 'call_recordings.php';
}
/**
* delete rows from the database
*/
public function delete($records) {
if (permission_exists($this->name.'_delete')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
//delete multiple records
if (is_array($records) && @sizeof($records) != 0) {
//build the delete array
$x = 0;
foreach ($records as $record) {
//add to the array
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
//get the information to delete
$sql = "select call_recording_name, call_recording_path ";
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$parameters['call_recording_uuid'] = $record['uuid'];
$database = new database;
$field = $database->select($sql, $parameters, 'row');
if (is_array($field) && @sizeof($field) != 0) {
//delete the file on the file system
if (file_exists($field['call_recording_path'].'/'.$field['call_recording_name'])) {
unlink($field['call_recording_path'].'/'.$field['call_recording_name']);
}
//build call recording delete array
$array['xml_cdr'][$x]['xml_cdr_uuid'] = $record['uuid'];
$array['xml_cdr'][$x]['record_path'] = null;
$array['xml_cdr'][$x]['record_name'] = null;
$array['xml_cdr'][$x]['record_length'] = null;
//increment the id
$x++;
}
unset($sql, $parameters, $field);
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//add temporary permissions
$p = new permissions;
$p->add('xml_cdr_edit', 'temp');
//remove record_path, record_name and record_length
$database = new database;
$database->app_name = 'xml_cdr';
$database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
$database->save($array, false);
$message = $database->message;
unset($array);
//remove the temporary permissions
$p->delete('xml_cdr_edit', 'temp');
//set message
message::add($text['message-delete']);
}
unset($records);
}
}
}
/**
* download the recordings
*/
public function download() {
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//get call recording from database
if (is_uuid($this->recording_uuid)) {
$sql = "select call_recording_name, call_recording_path ";
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
$sql = ", call_recording_base64 ";
}
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$parameters['call_recording_uuid'] = $this->recording_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$call_recording_name = $row['call_recording_name'];
$call_recording_path = $row['call_recording_path'];
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
file_put_contents($path.'/'.$call_recording_name, base64_decode($row['call_recording_base64']));
}
}
unset($sql, $parameters, $row);
}
//build full path
$full_recording_path = $call_recording_path.'/'.$call_recording_name;
//download the file
if ($full_recording_path != '/' && file_exists($full_recording_path)) {
ob_clean();
$fd = fopen($full_recording_path, "rb");
if ($this->binary) {
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
}
else {
$file_ext = pathinfo($call_recording_name, PATHINFO_EXTENSION);
switch ($file_ext) {
case "wav" : header("Content-Type: audio/x-wav"); break;
case "mp3" : header("Content-Type: audio/mpeg"); break;
case "ogg" : header("Content-Type: audio/ogg"); break;
}
}
header('Content-Disposition: attachment; filename="'.$call_recording_name.'"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
if ($this->binary) {
header("Content-Length: ".filesize($full_recording_path));
}
ob_clean();
//content-range
if (isset($_SERVER['HTTP_RANGE']) && !$this->binary) {
$this->range_download($full_recording_path);
}
fpassthru($fd);
}
//if base64, remove temp recording file
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
@unlink($full_recording_path);
}
}
} //method
/*
* range download method (helps safari play audio sources)
*/
private function range_download($file) {
$fp = @fopen($file, 'rb');
$size = filesize($file); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
// Now that we've gotten so far without errors we send the accept range header
/* At the moment we only support single ranges.
* Multiple ranges requires some more work to ensure it works correctly
* and comply with the spesifications: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
*
* Multirange support annouces itself with:
* header('Accept-Ranges: bytes');
*
* Multirange content must be sent with multipart/byteranges mediatype,
* (mediatype = mimetype)
* as well as a boundry header to indicate the various chunks of data.
*/
header("Accept-Ranges: 0-".$length);
// header('Accept-Ranges: bytes');
// multipart/byteranges
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
if (isset($_SERVER['HTTP_RANGE'])) {
$c_start = $start;
$c_end = $end;
// Extract the range string
list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
// Make sure the client hasn't sent us a multibyte range
if (strpos($range, ',') !== false) {
// (?) Shoud this be issued here, or should the first
// range be used? Or should the header be ignored and
// we output the whole content?
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header("Content-Range: bytes $start-$end/$size");
// (?) Echo some info to the client?
exit;
}
// If the range starts with an '-' we start from the beginning
// If not, we forward the file pointer
// And make sure to get the end byte if spesified
if ($range[0] == '-') {
// The n-number of the last bytes is requested
$c_start = $size - substr($range, 1);
}
else {
$range = explode('-', $range);
$c_start = $range[0];
$c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size;
}
/* Check the range and make sure it's treated according to the specs.
* http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
*/
// End bytes can not be larger than $end.
$c_end = ($c_end > $end) ? $end : $c_end;
// Validate the requested range and return an error if it's not correct.
if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) {
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header("Content-Range: bytes $start-$end/$size");
// (?) Echo some info to the client?
exit;
}
$start = $c_start;
$end = $c_end;
$length = $end - $start + 1; // Calculate new content length
fseek($fp, $start);
header('HTTP/1.1 206 Partial Content');
}
// Notify the client the byte range we'll be outputting
header("Content-Range: bytes $start-$end/$size");
header("Content-Length: $length");
// Start buffered download
$buffer = 1024 * 8;
while(!feof($fp) && ($p = ftell($fp)) <= $end) {
if ($p + $buffer > $end) {
// In case we're only outputtin a chunk, make sure we don't
// read past the length
$buffer = $end - $p + 1;
}
set_time_limit(0); // Reset time limit for big files
echo fread($fp, $buffer);
flush(); // Free up memory. Otherwise large files will trigger PHP's memory limit.
}
fclose($fp);
}
} //class
}
?>
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* call_recordings class
*
* @method null download
*/
if (!class_exists('call_recordings')) {
class call_recordings {
/**
* declare the variables
*/
private $app_name;
private $app_uuid;
private $name;
private $table;
private $description_field;
private $location;
public $recording_uuid;
public $binary;
/**
* called when the object is created
*/
public function __construct() {
//assign the variables
$this->app_name = 'call_recordings';
$this->app_uuid = '56165644-598d-4ed8-be01-d960bcb8ffed';
$this->name = 'call_recording';
$this->table = 'call_recordings';
$this->description_field = 'call_recording_description';
$this->location = 'call_recordings.php';
}
/**
* delete rows from the database
*/
public function delete($records) {
if (permission_exists($this->name.'_delete')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
//delete multiple records
if (is_array($records) && @sizeof($records) != 0) {
//build the delete array
$x = 0;
foreach ($records as $record) {
//add to the array
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
//get the information to delete
$sql = "select call_recording_name, call_recording_path ";
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$parameters['call_recording_uuid'] = $record['uuid'];
$database = new database;
$field = $database->select($sql, $parameters, 'row');
if (is_array($field) && @sizeof($field) != 0) {
//delete the file on the file system
if (file_exists($field['call_recording_path'].'/'.$field['call_recording_name'])) {
unlink($field['call_recording_path'].'/'.$field['call_recording_name']);
}
//build call recording delete array
$array['xml_cdr'][$x]['xml_cdr_uuid'] = $record['uuid'];
$array['xml_cdr'][$x]['record_path'] = null;
$array['xml_cdr'][$x]['record_name'] = null;
$array['xml_cdr'][$x]['record_length'] = null;
//increment the id
$x++;
}
unset($sql, $parameters, $field);
}
}
//delete the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//add temporary permissions
$p = permissions::new();
$p->add('xml_cdr_edit', 'temp');
//remove record_path, record_name and record_length
$database = new database;
$database->app_name = 'xml_cdr';
$database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
$database->save($array, false);
$message = $database->message;
unset($array);
//remove the temporary permissions
$p->delete('xml_cdr_edit', 'temp');
//set message
message::add($text['message-delete']);
}
unset($records);
}
}
}
/**
* transcribe call recordings
*/
public function transcribe($records) {
if (permission_exists($this->name.'_view')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
//add the settings object
$settings = new settings(["domain_uuid" => $_SESSION['domain_uuid'], "user_uuid" => $_SESSION['user_uuid']]);
$transcribe_enabled = $settings->get('transcribe', 'enabled', false);
$transcribe_engine = $settings->get('transcribe', 'engine', '');
//transcribe multiple recordings
if ($transcribe_enabled && !empty($transcribe_engine) && is_array($records) && @sizeof($records) != 0) {
//add the transcribe object
$transcribe = new transcribe($settings);
//build the array
$x = 0;
foreach ($records as $record) {
//add to the array
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
//get the call recording file name and path
$sql = "select call_recording_name, call_recording_path ";
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$sql .= "and call_recording_transcription is null ";
$parameters['call_recording_uuid'] = $record['uuid'];
$database = new database;
$field = $database->select($sql, $parameters, 'row');
if (
is_array($field) &&
@sizeof($field) != 0 &&
file_exists($field['call_recording_path'].'/'.$field['call_recording_name'])
) {
//audio to text - get the transcription from the audio file
$transcribe->audio_path = $field['call_recording_path'];
$transcribe->audio_filename = $field['call_recording_name'];
$record_transcription = $transcribe->transcribe();
//build call recording data array
if (!empty($record_transcription)) {
$array['xml_cdr'][$x]['xml_cdr_uuid'] = $record['uuid'];
$array['xml_cdr'][$x]['record_transcription'] = $record_transcription;
}
//increment the id
$x++;
}
unset($sql, $parameters, $field);
}
}
//update the checked rows
if (is_array($array) && @sizeof($array) != 0) {
//add temporary permissions
$p = permissions::new();
$p->add('xml_cdr_edit', 'temp');
//remove record_path, record_name and record_length
$database = new database;
$database->app_name = 'xml_cdr';
$database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
$database->save($array, false);
$message = $database->message;
unset($array);
//remove the temporary permissions
$p->delete('xml_cdr_edit', 'temp');
//set message
message::add($text['message-audio_transcribed']);
}
unset($records);
}
}
}
/**
* download the recordings
*/
public function download($records = null) {
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//single recording
if (empty($records) || !is_array($records) || @sizeof($records) == 0) {
//get call recording from database
if (is_uuid($this->recording_uuid)) {
$sql = "select call_recording_name, call_recording_path ";
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
$sql = ", call_recording_base64 ";
}
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$parameters['call_recording_uuid'] = $this->recording_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$call_recording_name = $row['call_recording_name'];
$call_recording_path = $row['call_recording_path'];
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
file_put_contents($call_recording_path.'/'.$call_recording_name, base64_decode($row['call_recording_base64']));
}
}
unset($sql, $parameters, $row);
}
//build full path
$full_recording_path = $call_recording_path.'/'.$call_recording_name;
//download the file
if ($full_recording_path != '/' && file_exists($full_recording_path)) {
ob_clean();
$fd = fopen($full_recording_path, "rb");
if ($this->binary) {
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
}
else {
$file_ext = pathinfo($call_recording_name, PATHINFO_EXTENSION);
switch ($file_ext) {
case "wav" : header("Content-Type: audio/x-wav"); break;
case "mp3" : header("Content-Type: audio/mpeg"); break;
case "ogg" : header("Content-Type: audio/ogg"); break;
}
}
header('Content-Disposition: attachment; filename="'.$call_recording_name.'"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
if ($this->binary) {
header("Content-Length: ".filesize($full_recording_path));
}
ob_clean();
//content-range
if (isset($_SERVER['HTTP_RANGE']) && !$this->binary) {
$this->range_download($full_recording_path);
}
fpassthru($fd);
}
//if base64, remove temp recording file
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
@unlink($full_recording_path);
}
}
//multiple recordings
else {
//add multi-lingual support
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
//drop unchecked records
foreach ($records as $i => $record) {
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
$uuids[] = $record['uuid'];
}
}
unset($records, $record);
//get data for recordings
if (!empty($uuids) && is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select call_recording_name, call_recording_path ";
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
$sql = ", call_recording_base64 ";
}
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid in ('".implode("','", $uuids)."') ";
$database = new database;
$rows = $database->select($sql, null, 'all');
if (!empty($rows) && is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $row) {
$call_recording_name = $row['call_recording_name'];
$call_recording_path = $row['call_recording_path'];
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
file_put_contents($call_recording_path.'/'.$call_recording_name, base64_decode($row['call_recording_base64']));
}
if (file_exists($call_recording_path.'/'.$call_recording_name)) {
$full_recording_paths[] = $call_recording_path.'/'.$call_recording_name;
}
}
}
unset($sql, $rows, $row);
}
//compress the recordings
if (!empty($full_recording_paths) && is_array($full_recording_paths) && @sizeof($full_recording_paths) != 0) {
header("Content-Type: application/x-zip");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="call_recordings.zip"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
passthru("zip -qj - ".implode(' ', $full_recording_paths));
}
//if base64, remove temp recording file
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
foreach ($full_recording_paths as $full_recording_path) {
@unlink($full_recording_path);
}
}
exit;
}
}
} //method
/*
* range download method (helps safari play audio sources)
*/
private function range_download($file) {
$fp = @fopen($file, 'rb');
$size = filesize($file); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
// Now that we've gotten so far without errors we send the accept range header
/* At the moment we only support single ranges.
* Multiple ranges requires some more work to ensure it works correctly
* and comply with the spesifications: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
*
* Multirange support annouces itself with:
* header('Accept-Ranges: bytes');
*
* Multirange content must be sent with multipart/byteranges mediatype,
* (mediatype = mimetype)
* as well as a boundry header to indicate the various chunks of data.
*/
header("Accept-Ranges: 0-".$length);
// header('Accept-Ranges: bytes');
// multipart/byteranges
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
if (isset($_SERVER['HTTP_RANGE'])) {
$c_start = $start;
$c_end = $end;
// Extract the range string
list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
// Make sure the client hasn't sent us a multibyte range
if (strpos($range, ',') !== false) {
// (?) Shoud this be issued here, or should the first
// range be used? Or should the header be ignored and
// we output the whole content?
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header("Content-Range: bytes $start-$end/$size");
// (?) Echo some info to the client?
exit;
}
// If the range starts with an '-' we start from the beginning
// If not, we forward the file pointer
// And make sure to get the end byte if spesified
if ($range[0] == '-') {
// The n-number of the last bytes is requested
$c_start = $size - substr($range, 1);
}
else {
$range = explode('-', $range);
$c_start = $range[0];
$c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size;
}
/* Check the range and make sure it's treated according to the specs.
* http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
*/
// End bytes can not be larger than $end.
$c_end = ($c_end > $end) ? $end : $c_end;
// Validate the requested range and return an error if it's not correct.
if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) {
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header("Content-Range: bytes $start-$end/$size");
// (?) Echo some info to the client?
exit;
}
$start = $c_start;
$end = $c_end;
$length = $end - $start + 1; // Calculate new content length
fseek($fp, $start);
header('HTTP/1.1 206 Partial Content');
}
// Notify the client the byte range we'll be outputting
header("Content-Range: bytes $start-$end/$size");
header("Content-Length: $length");
// Start buffered download
$buffer = 1024 * 8;
while(!feof($fp) && ($p = ftell($fp)) <= $end) {
if ($p + $buffer > $end) {
// In case we're only outputtin a chunk, make sure we don't
// read past the length
$buffer = $end - $p + 1;
}
set_time_limit(0); // Reset time limit for big files
echo fread($fp, $buffer);
flush(); // Free up memory. Otherwise large files will trigger PHP's memory limit.
}
fclose($fp);
}
/**
* Called by the maintenance service to clean out old call recordings
* @param settings $settings
* @return void
*/
public static function filesystem_maintenance(settings $settings): void {
//get the database connection object
$database = $settings->database();
//get an associative array of domain_uuid => domain_names
$domains = maintenance::get_domains($database);
//loop over each domain
foreach ($domains as $domain_uuid => $domain_name) {
//get the settings for this domain
$domain_settings = new settings(['database' => $database, 'domain_uuid' => $domain_uuid]);
//get the recording location for this domain
$call_recording_location = $domain_settings->get('switch', 'recordings', '/var/lib/freeswitch/recordings');
//get the retention days for this domain
$retention_days = $domain_settings->get('call_recordings', 'filesystem_retention_days', '');
//ensure retention days are not empty
if (!empty($retention_days) && is_numeric($retention_days)) {
$retention_days = intval($retention_days);
//get list of mp3 and wav files
$mp3_files = glob("$call_recording_location/$domain_name/archive/*/*/*/*.mp3");
$wav_files = glob("$call_recording_location/$domain_name/archive/*/*/*/*.wav");
//combine to single array
$domain_call_recording_files = array_merge($mp3_files, $wav_files);
//loop over each call recording mp3 or wav file
foreach ($domain_call_recording_files as $file) {
//use the maintenance service class helper function to get the modified date and see if it is older
if (maintenance_service::days_since_modified($file) > $retention_days) {
//remove the file when it is older
if (unlink($file)) {
//log success
maintenance_service::log_write(self::class, "Removed $file from call_recordings older than $retention_days days", $domain_uuid);
} else {
//log failure
maintenance_service::log_write(self::class, "Unable to remove $file", $domain_uuid, maintenance_service::LOG_ERROR);
}
} else {
//file is not older - do nothing
}
}
}
else {
//report the retention days is not set correctly
maintenance_service::log_write(self::class, "Retention days not set or not a valid number", $domain_uuid, maintenance_service::LOG_ERROR);
}
}
}
} //class
}
?>
+126
View File
@@ -0,0 +1,126 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
//check permisions
if (permission_exists('call_recording_play')) {
//access granted
}
else {
echo "access denied";
exit;
}
//create the waveform file
if (is_uuid($_GET['id'])) {
//get call recording details from database
$sql = "select call_recording_name, call_recording_path ";
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
$sql = ", call_recording_base64 ";
}
$sql .= "from view_call_recordings ";
$sql .= "where call_recording_uuid = :call_recording_uuid ";
$parameters['call_recording_uuid'] = $_GET['id'];
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$call_recording_name = $row['call_recording_name'];
$call_recording_path = $row['call_recording_path'];
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
file_put_contents($call_recording_path.'/'.$call_recording_name, base64_decode($row['call_recording_base64']));
}
}
unset($sql, $parameters);
//build full path
$full_recording_path = $call_recording_path.'/'.$call_recording_name;
//stream waveform file
if ($full_recording_path != '/' && file_exists($full_recording_path)) {
//temporary waveform image filename
$temp_filename = 'waveform_'.$_GET['id'].'_'.rand(0000,9999).'.png';
//create temporary waveform image, if doesn't exist
if (file_exists($temp_filename)) {
$wf = true;
}
else {
//create temporary waveform image
$waveform = new Waveform($full_recording_path);
Waveform::$linesPerPixel = 1; // default: 8
Waveform::$samplesPerLine = 512; // default: 512
Waveform::$colorA = !empty($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_a_leg']['text']) : [32,134,37,0.6]; // array rgba, left (a-leg) wave color
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
//stream image to browser
if ($wf === true && file_exists($temp_filename)) {
ob_clean();
$fd = fopen($temp_filename, 'rb');
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Type: image/png");
header('Content-Disposition: attachment; filename="'.$temp_filename.'"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".filesize($temp_filename));
ob_clean();
fpassthru($fd);
}
}
//if base64, remove temp recording file
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && !empty($row['call_recording_base64'])) {
@unlink($full_recording_path);
}
unset($row);
//delete temp waveform image
@unlink($temp_filename);
}
?>
+22 -17
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Channels actifs sur le système";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "აქტიური არხები სისტემაში.";
$apps[$x]['description']['nl-nl'] = "Aktieve kanalen in het systeem";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Canais ativos no sistema.";
@@ -31,25 +32,29 @@
//permission details
$y=0;
$apps[$x]['permissions'][0]['name'] = "call_active_view";
$apps[$x]['permissions'][0]['menu']['uuid'] = "eba3d07f-dd5c-6b7b-6880-493b44113ade";
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
$apps[$x]['permissions'][0]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['name'] = "call_active_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "eba3d07f-dd5c-6b7b-6880-493b44113ade";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][1]['name'] = "call_active_transfer";
//$apps[$x]['permissions'][1]['groups'][] = "superadmin";
//$apps[$x]['permissions'][$y]['name'] = "call_active_transfer";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][2]['name'] = "call_active_hangup";
$apps[$x]['permissions'][2]['groups'][] = "superadmin";
$apps[$x]['permissions'][2]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][3]['name'] = "call_active_park";
//$apps[$x]['permissions'][3]['groups'][] = "superadmin";
//$y++;
//$apps[$x]['permissions'][4]['name'] = "call_active_rec";
//$apps[$x]['permissions'][4]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['name'] = "call_active_eavesdrop";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][5]['name'] = "call_active_all";
$apps[$x]['permissions'][5]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['name'] = "call_active_hangup";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][$y]['name'] = "call_active_park";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
//$y++;
//$apps[$x]['permissions'][$y]['name'] = "call_active_rec";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
?>
+183 -6
View File
@@ -6,12 +6,14 @@ $text['title-2']['ar-eg'] = "ملحقات نشطة";
$text['title-2']['de-at'] = "Aktive Nebenstellen";
$text['title-2']['de-ch'] = "Aktive Nebenstellen";
$text['title-2']['de-de'] = "Aktive Nebenstellen";
$text['title-2']['el-gr'] = "Ενεργές επεκτάσεις";
$text['title-2']['es-cl'] = "Extensiones Activas";
$text['title-2']['es-mx'] = "Extensiones Activas";
$text['title-2']['fr-ca'] = "Extensions Actives";
$text['title-2']['fr-fr'] = "Extensions Actives";
$text['title-2']['he-il'] = "שלוחה פעילה";
$text['title-2']['it-it'] = "Interni Attivi";
$text['title-2']['ka-ge'] = "აქტიური გაფართოებები";
$text['title-2']['nl-nl'] = "Aktieve toestellen";
$text['title-2']['pl-pl'] = "Aktywne numery wewnętrzne";
$text['title-2']['pt-br'] = "Ramais ativos";
@@ -30,12 +32,14 @@ $text['title']['ar-eg'] = "المكالمات النشطة";
$text['title']['de-at'] = "Aktive Gespräche";
$text['title']['de-ch'] = "Aktive Gespräche";
$text['title']['de-de'] = "Aktive Gespräche";
$text['title']['el-gr'] = "Ενεργές κλήσεις";
$text['title']['es-cl'] = "Llamadas Activas";
$text['title']['es-mx'] = "Llamadas Activas";
$text['title']['fr-ca'] = "Communications Actives";
$text['title']['fr-fr'] = "Communications Actives";
$text['title']['he-il'] = "הגדרת חשבון";
$text['title']['it-it'] = "Chiamate Attive";
$text['title']['ka-ge'] = "აქტიური ზარები";
$text['title']['nl-nl'] = "Aktieve gesprekken";
$text['title']['pl-pl'] = "Aktywne Rozmowy";
$text['title']['pt-br'] = "Configurações da Conta";
@@ -54,12 +58,14 @@ $text['label-time']['ar-eg'] = "وقت";
$text['label-time']['de-at'] = "Zeit";
$text['label-time']['de-ch'] = "Zeit";
$text['label-time']['de-de'] = "Zeit";
$text['label-time']['el-gr'] = "χρόνος";
$text['label-time']['es-cl'] = "Tiempo";
$text['label-time']['es-mx'] = "Tiempo";
$text['label-time']['fr-ca'] = "Temps";
$text['label-time']['fr-fr'] = "Temps";
$text['label-time']['he-il'] = "אזור זמן";
$text['label-time']['it-it'] = "Tempo";
$text['label-time']['ka-ge'] = "დრო";
$text['label-time']['nl-nl'] = "Tijd";
$text['label-time']['pl-pl'] = "Czas";
$text['label-time']['pt-br'] = "Fuso Horário";
@@ -78,12 +84,14 @@ $text['label-stop']['ar-eg'] = "توقف السجل";
$text['label-stop']['de-at'] = "Stoppe Aufnahme";
$text['label-stop']['de-ch'] = "Stoppe Aufnahme";
$text['label-stop']['de-de'] = "Stoppe Aufnahme";
$text['label-stop']['el-gr'] = "διακοπή εγγραφής";
$text['label-stop']['es-cl'] = "terminar grabación";
$text['label-stop']['es-mx'] = "terminar grabación";
$text['label-stop']['fr-ca'] = "arrêter l'enregistrement";
$text['label-stop']['fr-fr'] = "arrêter l'enregistrement";
$text['label-stop']['he-il'] = "הפסק הקלטה";
$text['label-stop']['it-it'] = "stop registra";
$text['label-stop']['ka-ge'] = "ჩაწერის გაჩერება";
$text['label-stop']['nl-nl'] = "Stop opname";
$text['label-stop']['pl-pl'] = "zatrzymaj nagrywanie";
$text['label-stop']['pt-br'] = "Parar";
@@ -102,12 +110,14 @@ $text['label-status']['ar-eg'] = "حالة";
$text['label-status']['de-at'] = "Status";
$text['label-status']['de-ch'] = "Status";
$text['label-status']['de-de'] = "Status";
$text['label-status']['el-gr'] = "Κατάσταση";
$text['label-status']['es-cl'] = "Estado";
$text['label-status']['es-mx'] = "Estado";
$text['label-status']['fr-ca'] = "Etat";
$text['label-status']['fr-fr'] = "Etat";
$text['label-status']['he-il'] = "סטטוס";
$text['label-status']['it-it'] = "Stato";
$text['label-status']['ka-ge'] = "სტატუსი";
$text['label-status']['nl-nl'] = "Status";
$text['label-status']['pl-pl'] = "Status";
$text['label-status']['pt-br'] = "Estado";
@@ -126,12 +136,14 @@ $text['label-start']['ar-eg'] = "بدء التسجيل";
$text['label-start']['de-at'] = "Starte Aufnahme";
$text['label-start']['de-ch'] = "Starte Aufnahme";
$text['label-start']['de-de'] = "Starte Aufnahme";
$text['label-start']['el-gr'] = "έναρξη εγγραφής";
$text['label-start']['es-cl'] = "iniciar grabación";
$text['label-start']['es-mx'] = "iniciar grabación";
$text['label-start']['fr-ca'] = "Commencer l'enregistrement";
$text['label-start']['fr-fr'] = "Commencer l'enregistrement";
$text['label-start']['he-il'] = "התחל הקלטה";
$text['label-start']['it-it'] = "registra";
$text['label-start']['ka-ge'] = "ჩაწერის დაწყება";
$text['label-start']['nl-nl'] = "Start opname";
$text['label-start']['pl-pl'] = "rozpocznij nagrywanie";
$text['label-start']['pt-br'] = "Iniciar";
@@ -150,12 +162,14 @@ $text['label-secure']['ar-eg'] = "يؤمن";
$text['label-secure']['de-at'] = "Sicher";
$text['label-secure']['de-ch'] = "Sicher";
$text['label-secure']['de-de'] = "Sicher";
$text['label-secure']['el-gr'] = "Ασφαλής";
$text['label-secure']['es-cl'] = "Seguro";
$text['label-secure']['es-mx'] = "Seguro";
$text['label-secure']['fr-ca'] = "Securisé";
$text['label-secure']['fr-fr'] = "Securisé";
$text['label-secure']['he-il'] = "מאובטח";
$text['label-secure']['it-it'] = "Sicura";
$text['label-secure']['ka-ge'] = "უსაფრთხო";
$text['label-secure']['nl-nl'] = "Veilig";
$text['label-secure']['pl-pl'] = "Bezpieczny";
$text['label-secure']['pt-br'] = "Seguro";
@@ -174,12 +188,14 @@ $text['label-refresh_pause']['ar-eg'] = "وقفة التحديث";
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-de'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['el-gr'] = "Παύση ανανέωσης";
$text['label-refresh_pause']['es-cl'] = "Actualizar Pausa";
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa";
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser";
$text['label-refresh_pause']['fr-fr'] = "Pause Actualiser";
$text['label-refresh_pause']['he-il'] = "עצור רענון";
$text['label-refresh_pause']['it-it'] = "Pausa";
$text['label-refresh_pause']['ka-ge'] = "განახლების შეჩერება";
$text['label-refresh_pause']['nl-nl'] = "Stop pagina verversen";
$text['label-refresh_pause']['pl-pl'] = "Pauzuj Odświeżanie";
$text['label-refresh_pause']['pt-br'] = "Pausar atualização";
@@ -198,12 +214,14 @@ $text['label-refresh_enable']['ar-eg'] = "تمكين التحديث";
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-de'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['el-gr'] = "Ενεργοποίηση Ανανέωσης";
$text['label-refresh_enable']['es-cl'] = "Activar Actualizar";
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar";
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser";
$text['label-refresh_enable']['fr-fr'] = "Activer Actualiser";
$text['label-refresh_enable']['he-il'] = "אפשר רענון";
$text['label-refresh_enable']['it-it'] = "Riprendi";
$text['label-refresh_enable']['ka-ge'] = "განახლების ჩართვა";
$text['label-refresh_enable']['nl-nl'] = "Zet pagina verversen aan";
$text['label-refresh_enable']['pl-pl'] = "Włącz odświeżanie";
$text['label-refresh_enable']['pt-br'] = "Habilitar atualização";
@@ -222,12 +240,14 @@ $text['label-profile']['ar-eg'] = "حساب تعريفي";
$text['label-profile']['de-at'] = "Profil";
$text['label-profile']['de-ch'] = "Profil";
$text['label-profile']['de-de'] = "Profil";
$text['label-profile']['el-gr'] = "Προφίλ";
$text['label-profile']['es-cl'] = "Perfil";
$text['label-profile']['es-mx'] = "Perfil";
$text['label-profile']['fr-ca'] = "Profil";
$text['label-profile']['fr-fr'] = "Profil";
$text['label-profile']['he-il'] = "פרופיל";
$text['label-profile']['it-it'] = "Profilo";
$text['label-profile']['ka-ge'] = "პროფილი";
$text['label-profile']['nl-nl'] = "Profiel";
$text['label-profile']['pl-pl'] = "Profil";
$text['label-profile']['pt-br'] = "Perfil";
@@ -246,12 +266,14 @@ $text['label-park-extension']['ar-eg'] = "حديقة";
$text['label-park-extension']['de-at'] = "Parken";
$text['label-park-extension']['de-ch'] = "Parken";
$text['label-park-extension']['de-de'] = "Parken";
$text['label-park-extension']['el-gr'] = "Πάρκο";
$text['label-park-extension']['es-cl'] = "Parquear Extensión";
$text['label-park-extension']['es-mx'] = "Parquear Extensión";
$text['label-park-extension']['fr-ca'] = "Parquer";
$text['label-park-extension']['fr-fr'] = "Parquer";
$text['label-park-extension']['he-il'] = "חניה";
$text['label-park-extension']['it-it'] = "Parcheggia";
$text['label-park-extension']['ka-ge'] = "პარკინგი";
$text['label-park-extension']['nl-nl'] = "Parkeer";
$text['label-park-extension']['pl-pl'] = "Parkowanie";
$text['label-park-extension']['pt-br'] = "Extensão estacionamento";
@@ -270,12 +292,14 @@ $text['label-park']['ar-eg'] = "حديقة";
$text['label-park']['de-at'] = "parken";
$text['label-park']['de-ch'] = "parken";
$text['label-park']['de-de'] = "parken";
$text['label-park']['el-gr'] = "πάρκο";
$text['label-park']['es-cl'] = "parquear";
$text['label-park']['es-mx'] = "parquear";
$text['label-park']['fr-ca'] = "Parquer";
$text['label-park']['fr-fr'] = "Parquer";
$text['label-park']['he-il'] = "חניה";
$text['label-park']['it-it'] = "parcheggia";
$text['label-park']['ka-ge'] = "პარკინგი";
$text['label-park']['nl-nl'] = "parkeer";
$text['label-park']['pl-pl'] = "parkowanie";
$text['label-park']['pt-br'] = "Estacionamento";
@@ -294,12 +318,14 @@ $text['label-opt']['ar-eg'] = "خيارات";
$text['label-opt']['de-at'] = "Optionen";
$text['label-opt']['de-ch'] = "Optionen";
$text['label-opt']['de-de'] = "Optionen";
$text['label-opt']['el-gr'] = "Επιλογές";
$text['label-opt']['es-cl'] = "Opciones";
$text['label-opt']['es-mx'] = "Opciones";
$text['label-opt']['fr-ca'] = "Options";
$text['label-opt']['fr-fr'] = "Options";
$text['label-opt']['he-il'] = "אפשרויות";
$text['label-opt']['it-it'] = "Opzioni";
$text['label-opt']['ka-ge'] = "პარამეტრები";
$text['label-opt']['nl-nl'] = "Opties";
$text['label-opt']['pl-pl'] = "Opcje";
$text['label-opt']['pt-br'] = "Opções";
@@ -318,12 +344,14 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Αριθμός";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['he-il'] = "מספר";
$text['label-number']['it-it'] = "Numero";
$text['label-number']['ka-ge'] = "ნომერი";
$text['label-number']['nl-nl'] = "Nummer";
$text['label-number']['pl-pl'] = "Numer";
$text['label-number']['pt-br'] = "Número";
@@ -342,12 +370,14 @@ $text['label-message']['ar-eg'] = "رسالة";
$text['label-message']['de-at'] = "Nachricht";
$text['label-message']['de-ch'] = "Nachricht";
$text['label-message']['de-de'] = "Nachricht";
$text['label-message']['el-gr'] = "Μήνυμα";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['es-mx'] = "Mensaje";
$text['label-message']['fr-ca'] = "Message";
$text['label-message']['fr-fr'] = "Message";
$text['label-message']['he-il'] = "הודעה";
$text['label-message']['it-it'] = "Messaggio";
$text['label-message']['ka-ge'] = "შეტყობინება";
$text['label-message']['nl-nl'] = "Boodschap";
$text['label-message']['pl-pl'] = "Wiadomość";
$text['label-message']['pt-br'] = "Mensagem";
@@ -366,12 +396,14 @@ $text['label-hangup']['ar-eg'] = "تشبث";
$text['label-hangup']['de-at'] = "Auflegen";
$text['label-hangup']['de-ch'] = "Auflegen";
$text['label-hangup']['de-de'] = "Auflegen";
$text['label-hangup']['el-gr'] = "Περιμένω";
$text['label-hangup']['es-cl'] = "Terminar";
$text['label-hangup']['es-mx'] = "Terminar";
$text['label-hangup']['fr-ca'] = "Raccrocher";
$text['label-hangup']['fr-fr'] = "Raccrocher";
$text['label-hangup']['he-il'] = "ניתוק";
$text['label-hangup']['it-it'] = "Chiudi";
$text['label-hangup']['ka-ge'] = "გათიშვა";
$text['label-hangup']['nl-nl'] = "Ophangen";
$text['label-hangup']['pl-pl'] = "Zakończ rozmowę";
$text['label-hangup']['pt-br'] = "Desligar";
@@ -390,12 +422,14 @@ $text['label-ext']['ar-eg'] = "تحويلة";
$text['label-ext']['de-at'] = "Nst";
$text['label-ext']['de-ch'] = "Nst";
$text['label-ext']['de-de'] = "Nst";
$text['label-ext']['el-gr'] = "Εξωτ";
$text['label-ext']['es-cl'] = "Extensión";
$text['label-ext']['es-mx'] = "Extensión";
$text['label-ext']['fr-ca'] = "extension";
$text['label-ext']['fr-fr'] = "extension";
$text['label-ext']['he-il'] = "שלוחה";
$text['label-ext']['it-it'] = "Int.";
$text['label-ext']['ka-ge'] = "შიდა";
$text['label-ext']['nl-nl'] = "Tst.";
$text['label-ext']['pl-pl'] = "Numer wewnętrzny";
$text['label-ext']['pt-br'] = "Extensão";
@@ -414,12 +448,14 @@ $text['label-domain']['ar-eg'] = "اِختِصاص";
$text['label-domain']['de-at'] = "Domäne";
$text['label-domain']['de-ch'] = "Domäne";
$text['label-domain']['de-de'] = "Domäne";
$text['label-domain']['el-gr'] = "Τομέα";
$text['label-domain']['es-cl'] = "Dominio";
$text['label-domain']['es-mx'] = "Dominio";
$text['label-domain']['fr-ca'] = "Domaine";
$text['label-domain']['fr-fr'] = "Domaine";
$text['label-domain']['he-il'] = "תחום";
$text['label-domain']['it-it'] = "Dominio";
$text['label-domain']['ka-ge'] = "დომენი";
$text['label-domain']['nl-nl'] = "Domein";
$text['label-domain']['pl-pl'] = "Domena";
$text['label-domain']['pt-br'] = "Dominio";
@@ -432,18 +468,20 @@ $text['label-domain']['zh-cn'] = "领域";
$text['label-domain']['ja-jp'] = "ドメイン";
$text['label-domain']['ko-kr'] = "도메인";
$text['label-destination']['en-us'] = "Dest";
$text['label-destination']['en-gb'] = "Dest";
$text['label-destination']['en-us'] = "Destination";
$text['label-destination']['en-gb'] = "Destination";
$text['label-destination']['ar-eg'] = "الوجهة";
$text['label-destination']['de-at'] = "Ziel";
$text['label-destination']['de-ch'] = "Ziel";
$text['label-destination']['de-de'] = "Ziel";
$text['label-destination']['el-gr'] = "προορισμός";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['es-mx'] = "Destino";
$text['label-destination']['fr-ca'] = "Dest";
$text['label-destination']['fr-fr'] = "Dest";
$text['label-destination']['he-il'] = "יעד";
$text['label-destination']['it-it'] = "Dest";
$text['label-destination']['ka-ge'] = "დანიშნ.";
$text['label-destination']['nl-nl'] = "Doel";
$text['label-destination']['pl-pl'] = "Destynacja";
$text['label-destination']['pt-br'] = "Número de destino";
@@ -462,12 +500,14 @@ $text['label-created']['ar-eg'] = "Creată";
$text['label-created']['de-at'] = "Erstellt";
$text['label-created']['de-ch'] = "Erstellt";
$text['label-created']['de-de'] = "Erstellt";
$text['label-created']['el-gr'] = "Δημιουργήθηκε";
$text['label-created']['es-cl'] = "Creado";
$text['label-created']['es-mx'] = "Creado";
$text['label-created']['fr-ca'] = "Créé";
$text['label-created']['fr-fr'] = "Créé";
$text['label-created']['he-il'] = "נוצר";
$text['label-created']['it-it'] = "Creata";
$text['label-created']['ka-ge'] = "შექმნილია";
$text['label-created']['nl-nl'] = "Gemaakt";
$text['label-created']['pl-pl'] = "Utworzno";
$text['label-created']['pt-br'] = "Criado";
@@ -486,12 +526,14 @@ $text['label-codec']['ar-eg'] = "قراءة / كتابة برنامج الترم
$text['label-codec']['de-at'] = "Lese / Schreib Codec";
$text['label-codec']['de-ch'] = "Lese / Schreib Codec";
$text['label-codec']['de-de'] = "Lese / Schreib Codec";
$text['label-codec']['el-gr'] = "Διαβάστε / Γράψτε Codec";
$text['label-codec']['es-cl'] = "Codec de Lectura / Escritura ";
$text['label-codec']['es-mx'] = "Codec de Lectura / Escritura ";
$text['label-codec']['fr-ca'] = "décode/encode";
$text['label-codec']['fr-fr'] = "décode/encode";
$text['label-codec']['he-il'] = "קריאה / כתיבה codec";
$text['label-codec']['it-it'] = "Codec Lett./Scrit.";
$text['label-codec']['ka-ge'] = "ჩაწერა / წაკითხვის კოდეკი";
$text['label-codec']['nl-nl'] = "Lees / Schrijf codec";
$text['label-codec']['pl-pl'] = "Kodek read/write";
$text['label-codec']['pt-br'] = "Codec da leitura / escrita";
@@ -504,18 +546,20 @@ $text['label-codec']['zh-cn'] = "读/写编解码器";
$text['label-codec']['ja-jp'] = "読み取り/書き込みコーデック";
$text['label-codec']['ko-kr'] = "읽기/쓰기 코덱";
$text['label-cid-number']['en-us'] = "CID Number";
$text['label-cid-number']['en-gb'] = "CID Number";
$text['label-cid-number']['en-us'] = "Caller Number";
$text['label-cid-number']['en-gb'] = "Caller Number";
$text['label-cid-number']['ar-eg'] = "رقم CID";
$text['label-cid-number']['de-at'] = "Anrufer Nummer";
$text['label-cid-number']['de-ch'] = "Anrufer Nummer";
$text['label-cid-number']['de-de'] = "Anrufer Nummer";
$text['label-cid-number']['el-gr'] = "Αριθμός CID";
$text['label-cid-number']['es-cl'] = "Número CID";
$text['label-cid-number']['es-mx'] = "Número CID";
$text['label-cid-number']['fr-ca'] = "Numéro Appelant";
$text['label-cid-number']['fr-fr'] = "Numéro Appelant";
$text['label-cid-number']['he-il'] = "זהוי מספר";
$text['label-cid-number']['it-it'] = "Numero CID";
$text['label-cid-number']['ka-ge'] = "CID ნომერი";
$text['label-cid-number']['nl-nl'] = "CID Nummer";
$text['label-cid-number']['pl-pl'] = "Prezentacja numeru dzwoniącego";
$text['label-cid-number']['pt-br'] = "Número CID";
@@ -528,18 +572,20 @@ $text['label-cid-number']['zh-cn'] = "来电号码";
$text['label-cid-number']['ja-jp'] = "CID番号";
$text['label-cid-number']['ko-kr'] = "CID 번호";
$text['label-cid-name']['en-us'] = "CID Name";
$text['label-cid-name']['en-gb'] = "CID Name";
$text['label-cid-name']['en-us'] = "Caller Name";
$text['label-cid-name']['en-gb'] = "Caller Name";
$text['label-cid-name']['ar-eg'] = "اسم CID";
$text['label-cid-name']['de-at'] = "Anrufer Name";
$text['label-cid-name']['de-ch'] = "Anrufer Name";
$text['label-cid-name']['de-de'] = "Anrufer Name";
$text['label-cid-name']['el-gr'] = "Όνομα CID";
$text['label-cid-name']['es-cl'] = "Nombre CID";
$text['label-cid-name']['es-mx'] = "Nombre CID";
$text['label-cid-name']['fr-ca'] = "Nom Appelant";
$text['label-cid-name']['fr-fr'] = "Nom Appelant";
$text['label-cid-name']['he-il'] = "זהוי שם";
$text['label-cid-name']['it-it'] = "Nome CID";
$text['label-cid-name']['ka-ge'] = "CID სახელი";
$text['label-cid-name']['nl-nl'] = "CID Naam";
$text['label-cid-name']['pl-pl'] = "Prezentacja nazwy dzwoniącego";
$text['label-cid-name']['pt-br'] = "Nome CID";
@@ -558,12 +604,14 @@ $text['label-app']['ar-eg'] = "طلب";
$text['label-app']['de-at'] = "Anwendung";
$text['label-app']['de-ch'] = "Anwendung";
$text['label-app']['de-de'] = "Anwendung";
$text['label-app']['el-gr'] = "Εφαρμογή";
$text['label-app']['es-cl'] = "Aplicación";
$text['label-app']['es-mx'] = "Aplicación";
$text['label-app']['fr-ca'] = "Application";
$text['label-app']['fr-fr'] = "Application";
$text['label-app']['he-il'] = "אפליקציה";
$text['label-app']['it-it'] = "Applicazione";
$text['label-app']['ka-ge'] = "აპლიკაცია";
$text['label-app']['nl-nl'] = "Toepassing";
$text['label-app']['pl-pl'] = "Aplikacja";
$text['label-app']['pt-br'] = "Aplicação";
@@ -576,18 +624,73 @@ $text['label-app']['zh-cn'] = "应用";
$text['label-app']['ja-jp'] = "応用";
$text['label-app']['ko-kr'] = "애플리케이션";
$text['label-eavesdrop']['en-us'] = "Eavesdrop";
$text['label-eavesdrop']['en-gb'] = "Eavesdrop";
$text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionner";
$text['label-eavesdrop']['fr-fr'] = "Espionner";
$text['label-eavesdrop']['he-il'] = "לְצוֹתֵת";
$text['label-eavesdrop']['it-it'] = "Ascolta";
$text['label-eavesdrop']['ka-ge'] = "მოსმენა";
$text['label-eavesdrop']['nl-nl'] = "Afluisteren";
$text['label-eavesdrop']['pl-pl'] = "Podsłuchiwanie";
$text['label-eavesdrop']['pt-br'] = "Investigar";
$text['label-eavesdrop']['pt-pt'] = "Bisbilhotar";
$text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
$text['label-eavesdrop']['ru-ru'] = "Подслушивать";
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
$text['label-eavesdrop']['uk-ua'] = "підслуховувати";
$text['label-eavesdrop']['zh-cn'] = "窃听";
$text['label-eavesdrop']['ja-jp'] = "盗聴";
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
$text['label-duration']['en-us'] = "Duration";
$text['label-duration']['en-gb'] = "Duration";
$text['label-duration']['ar-eg'] = "المدة";
$text['label-duration']['de-at'] = "Dauer";
$text['label-duration']['de-ch'] = "Dauer";
$text['label-duration']['de-de'] = "Dauer";
$text['label-duration']['el-gr'] = "Διάρκεια";
$text['label-duration']['es-cl'] = "Duración";
$text['label-duration']['es-mx'] = "Duración";
$text['label-duration']['fr-ca'] = "Durée";
$text['label-duration']['fr-fr'] = "Durée";
$text['label-duration']['he-il'] = "משך השיחה";
$text['label-duration']['it-it'] = "Durata";
$text['label-duration']['ka-ge'] = "ხანგრძლივობა";
$text['label-duration']['nl-nl'] = "Duur";
$text['label-duration']['pl-pl'] = "Czas trwania";
$text['label-duration']['pt-br'] = "Duração";
$text['label-duration']['pt-pt'] = "Duração";
$text['label-duration']['ro-ro'] = "Durată";
$text['label-duration']['ru-ru'] = "Продолжительность";
$text['label-duration']['sv-se'] = "Samtalstid";
$text['label-duration']['uk-ua'] = "Тривалість";
$text['label-duration']['tr-tr'] = "Süre";
$text['label-duration']['zh-cn'] = "期间";
$text['label-duration']['ja-jp'] = "間隔";
$text['label-duration']['ko-kr'] = "지속";
$text['description-2']['en-us'] = "Use this to view all extensions and monitor and interact with active calls.";
$text['description-2']['en-gb'] = "Use this to view all extensions and monitor and interact with active calls.";
$text['description-2']['ar-eg'] = "استخدم هذا لعرض جميع الملحقات ومراقبة المكالمات النشطة والتفاعل معها.";
$text['description-2']['de-at'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['de-ch'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['de-de'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['el-gr'] = "Χρησιμοποιήστε το για να προβάλετε όλες τις επεκτάσεις και να παρακολουθείτε και να αλληλεπιδράτε με ενεργές κλήσεις.";
$text['description-2']['es-cl'] = "Utilice este menú para ver todas las extensiones, monitorear e interactuar con las llamadas activas.";
$text['description-2']['es-mx'] = "Utilice este menú para ver todas las extensiones, monitorear e interactuar con las llamadas activas.";
$text['description-2']['fr-ca'] = "Voir toutes les extensions, superviser et interagir avec les Communications Actives.";
$text['description-2']['fr-fr'] = "Voir toutes les extensions, superviser et interagir avec les Communications Actives.";
$text['description-2']['he-il'] = "השתמש בזה כדי להציג את כל התוספים ולפקח ולקיים אינטראקציה עם שיחות פעילות.";
$text['description-2']['it-it'] = "Usa questo servizio per vedere lo stato degli interni, monitorare e interagire con le chiamate.";
$text['description-2']['ka-ge'] = "გამოიყენეთ ეს, რომ იხილოთ ყველა გაფართოება და თვალყური ადევნოთ და ჩაერიოთ აქტიურ ზარებში.";
$text['description-2']['nl-nl'] = "Gebruik dit overzicht om alle toestellen te bekijken en reageer op aktieve gesprekken.";
$text['description-2']['pl-pl'] = "Użyj tej opcji, aby zobaczyć wszystkie numery wewnętrzne i monitorować interakcję z aktywnymi rozmowami.";
$text['description-2']['pt-br'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada.";
@@ -606,12 +709,14 @@ $text['description']['ar-eg'] = "استخدم هذا لمراقبة المكال
$text['description']['de-at'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['de-ch'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['de-de'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['el-gr'] = "Χρησιμοποιήστε το για να παρακολουθείτε και να αλληλεπιδράτε με τις ενεργές κλήσεις.";
$text['description']['es-cl'] = "Utilice este menú para monitorear e interactuar con las llamadas activas.";
$text['description']['es-mx'] = "Utilice este menú para monitorear e interactuar con las llamadas activas.";
$text['description']['fr-ca'] = "Superviser et interagir avec les Communications Actives.";
$text['description']['fr-fr'] = "Superviser et interagir avec les Communications Actives.";
$text['description']['he-il'] = "השתמש בזה כדי לנטר ולקיים אינטראקציה עם השיחות הפעילות.";
$text['description']['it-it'] = "Usa questo servizio per monitorare e interagire con le chiamate attive.";
$text['description']['ka-ge'] = "გამოიყენეთ ეს აქტიური ზარების მონიტორინგისთვის და მათში ჩასარევად.";
$text['description']['nl-nl'] = "Gebruik deze functie om te reageren op gesprekken.";
$text['description']['pl-pl'] = "Użyć tej opcji do monitorowania i interakcji z aktywnymi rozmowami.";
$text['description']['pt-br'] = "Editar informações da conta.";
@@ -624,18 +729,46 @@ $text['description']['zh-cn'] = "使用它来监视活动呼叫并与之交互
$text['description']['ja-jp'] = "これを使用して、アクティブな通話を監視し、対話します。";
$text['description']['ko-kr'] = "이를 사용하여 활성 통화를 모니터링하고 상호 작용합니다.";
$text['description-eavesdrop_destination']['en-us'] = "Select the Eavesdrop Destination";
$text['description-eavesdrop_destination']['en-gb'] = "Select the Eavesdrop Destination";
$text['description-eavesdrop_destination']['ar-eg'] = "حدد وجهة Eavesdrop";
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-de'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['el-gr'] = "Επιλέξτε τον προορισμό EAVESDROP";
$text['description-eavesdrop_destination']['es-cl'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['fr-fr'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['he-il'] = "בחר ביעד האזנת סתר";
$text['description-eavesdrop_destination']['it-it'] = "Seleziona la Destinazione d'Ascolto";
$text['description-eavesdrop_destination']['ka-ge'] = "აირჩიეთ დანიშნულების პუნქტის მიყურადება";
$text['description-eavesdrop_destination']['nl-nl'] = "Kies afluister bestemming";
$text['description-eavesdrop_destination']['pl-pl'] = "Wybierz destynację podsłuchiwanych rozmów";
$text['description-eavesdrop_destination']['pt-br'] = "Selecione o eavesdrop de destino";
$text['description-eavesdrop_destination']['pt-pt'] = "Selecione o Eavesdrop Destino";
$text['description-eavesdrop_destination']['ro-ro'] = "Selectați Destinația Eavesdrop";
$text['description-eavesdrop_destination']['ru-ru'] = "Выберите подслушивание пункта назначения";
$text['description-eavesdrop_destination']['sv-se'] = "Välj Medlyssning Destination";
$text['description-eavesdrop_destination']['uk-ua'] = "Виберіть пункт призначення підслуховувати";
$text['description-eavesdrop_destination']['zh-cn'] = "选择窃听目的地";
$text['description-eavesdrop_destination']['ja-jp'] = "盗聴先を選択";
$text['description-eavesdrop_destination']['ko-kr'] = "도청 대상 선택";
$text['confirm-socket']['en-us'] = "Connection to Event Socket failed.";
$text['confirm-socket']['en-gb'] = "Connection to Event Socket failed.";
$text['confirm-socket']['ar-eg'] = "فشل الاتصال بـ Event Socket.";
$text['confirm-socket']['de-at'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['de-ch'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['de-de'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['el-gr'] = "Η σύνδεση στο Event Socket απέτυχε.";
$text['confirm-socket']['es-cl'] = "Conexión con socket fallida.";
$text['confirm-socket']['es-mx'] = "Conexión con socket fallida.";
$text['confirm-socket']['fr-ca'] = "la Connexion au Event Socket a échoué.";
$text['confirm-socket']['fr-fr'] = "la Connexion au Event Socket a échoué.";
$text['confirm-socket']['he-il'] = "החיבור ל-Event Socket נכשל.";
$text['confirm-socket']['it-it'] = "Connessione alla Event Socket fallita.";
$text['confirm-socket']['ka-ge'] = "მოვლენების სოკეტთან მიერთება ჩავარდა.";
$text['confirm-socket']['nl-nl'] = "Verbinding met 'Event-Socket' mislukt";
$text['confirm-socket']['pl-pl'] = "Połączenie do 'Event Socket' nie powiodło się";
$text['confirm-socket']['pt-br'] = "A conexão ao evento socket falhou";
@@ -654,12 +787,14 @@ $text['confirm-hangup']['ar-eg'] = "هل تريد حقًا إنهاء المكا
$text['confirm-hangup']['de-at'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['de-ch'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['de-de'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['el-gr'] = "Θέλετε πραγματικά να τερματίσετε αυτήν την κλήση;";
$text['confirm-hangup']['es-cl'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangup']['es-mx'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangup']['fr-ca'] = "Voulez-vous vraiment raccrocher cette communication?";
$text['confirm-hangup']['fr-fr'] = "Voulez-vous vraiment raccrocher cette communication?";
$text['confirm-hangup']['he-il'] = "האם אתה באמת רוצה לנתק את השיחה הזו?";
$text['confirm-hangup']['it-it'] = "Vuoi veramente chiudere questa chiamata?";
$text['confirm-hangup']['ka-ge'] = "მართლა გნებავთ ამ ზარის დასრულება?";
$text['confirm-hangup']['nl-nl'] = "Wil je dit gesprek werkelijk verbreken?";
$text['confirm-hangup']['pl-pl'] = "Czy na pewno chcesz rozłączyć tę rozmowę?";
$text['confirm-hangup']['pt-br'] = "Deseja realmente finalizar essa chamada?";
@@ -672,18 +807,46 @@ $text['confirm-hangup']['zh-cn'] = "你真的要挂断这个电话吗?";
$text['confirm-hangup']['ja-jp'] = "本当にこの電話を切りますか?";
$text['confirm-hangup']['ko-kr'] = "이 전화를 끊으시겠습니까?";
$text['confirm-eavesdrop']['en-us'] = "Do you really want to eavesdrop on this call?";
$text['confirm-eavesdrop']['en-gb'] = "Do you really want to eavesdrop on this call?";
$text['confirm-eavesdrop']['ar-eg'] = "هل تريد حقًا التنصت على هذه المكالمة؟";
$text['confirm-eavesdrop']['de-at'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['de-ch'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['de-de'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['el-gr'] = "Θέλετε πραγματικά να κρυφακούσετε αυτήν την κλήση;";
$text['confirm-eavesdrop']['es-cl'] = "¿De verdad quieres escuchar esta llamada?";
$text['confirm-eavesdrop']['es-mx'] = "¿De verdad quieres escuchar esta llamada?";
$text['confirm-eavesdrop']['fr-ca'] = "Voulez-vous vraiment écouter cet appel ?";
$text['confirm-eavesdrop']['fr-fr'] = "Voulez-vous vraiment écouter cet appel ?";
$text['confirm-eavesdrop']['he-il'] = "האם אתה באמת רוצה לצותת לשיחה הזו?";
$text['confirm-eavesdrop']['it-it'] = "Vuoi davvero origliare questa chiamata?";
$text['confirm-eavesdrop']['ka-ge'] = "მართლა გნებავთ ამ ზარზე მიყურადება?";
$text['confirm-eavesdrop']['nl-nl'] = "Wilt u dit gesprek echt afluisteren?";
$text['confirm-eavesdrop']['pl-pl'] = "Czy na pewno chcesz podsłuchiwać tę rozmowę?";
$text['confirm-eavesdrop']['pt-br'] = "Você realmente quer escutar esta chamada?";
$text['confirm-eavesdrop']['pt-pt'] = "Você realmente quer escutar esta chamada?";
$text['confirm-eavesdrop']['ro-ro'] = "Chiar vrei să asculti cu urechea la acest apel?";
$text['confirm-eavesdrop']['ru-ru'] = "Вы действительно хотите подслушать этот звонок?";
$text['confirm-eavesdrop']['sv-se'] = "Vill du verkligen avlyssna det här samtalet?";
$text['confirm-eavesdrop']['uk-ua'] = "Ви дійсно хочете підслухати цей дзвінок?";
$text['confirm-eavesdrop']['zh-cn'] = "你真的想窃听这个电话吗?";
$text['confirm-eavesdrop']['ja-jp'] = "本当にこの通話を盗聴したいですか?";
$text['confirm-eavesdrop']['ko-kr'] = "정말로 이 통화를 엿듣고 싶으신가요?";
$text['confirm-hangups']['en-us'] = "Do you really want to hangup these calls?";
$text['confirm-hangups']['en-gb'] = "Do you really want to hangup these calls?";
$text['confirm-hangups']['ar-eg'] = "هل تريد حقًا إنهاء هذه المكالمات؟";
$text['confirm-hangups']['de-at'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['de-ch'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['de-de'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['el-gr'] = "Θέλετε πραγματικά να τερματίσετε αυτές τις κλήσεις;";
$text['confirm-hangups']['es-cl'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangups']['es-mx'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangups']['fr-ca'] = "Voulez-vous vraiment raccrocher cette communication?";
$text['confirm-hangups']['fr-fr'] = "Voulez-vous vraiment raccrocher cette communication?";
$text['confirm-hangups']['he-il'] = "האם אתה באמת רוצה לנתק את השיחות האלה?";
$text['confirm-hangups']['it-it'] = "Vuoi veramente chiudere questa chiamata?";
$text['confirm-hangups']['ka-ge'] = "მართლა გნებავთ ამ ზარების დასრულება?";
$text['confirm-hangups']['nl-nl'] = "Wil je deze gesprekken werkelijk verbreken?";
$text['confirm-hangups']['pl-pl'] = "Czy na pewno chcesz rozłączyć te rozmowy?";
$text['confirm-hangups']['pt-br'] = "Deseja realmente finalizar essa chamada?";
@@ -702,12 +865,14 @@ $text['check-onbreak-status']['ar-eg'] = "في استراحة";
$text['check-onbreak-status']['de-at'] = "Auf Pause";
$text['check-onbreak-status']['de-ch'] = "Auf Pause";
$text['check-onbreak-status']['de-de'] = "Auf Pause";
$text['check-onbreak-status']['el-gr'] = "Σε διάλειμμα";
$text['check-onbreak-status']['es-cl'] = "En Pausa";
$text['check-onbreak-status']['es-mx'] = "En Pausa";
$text['check-onbreak-status']['fr-ca'] = "En Pause";
$text['check-onbreak-status']['fr-fr'] = "En Pause";
$text['check-onbreak-status']['he-il'] = "בהפסקה";
$text['check-onbreak-status']['it-it'] = "In Pausa";
$text['check-onbreak-status']['ka-ge'] = "შესვენებაზე";
$text['check-onbreak-status']['nl-nl'] = "Onderbroken";
$text['check-onbreak-status']['pl-pl'] = "Na przerwie";
$text['check-onbreak-status']['pt-br'] = "Em Pausa";
@@ -726,12 +891,14 @@ $text['check-loggedout-status']['ar-eg'] = "تسجيل الخروج";
$text['check-loggedout-status']['de-at'] = "Abgemeldet";
$text['check-loggedout-status']['de-ch'] = "Abgemeldet";
$text['check-loggedout-status']['de-de'] = "Abgemeldet";
$text['check-loggedout-status']['el-gr'] = "Αποσυνδέθηκα";
$text['check-loggedout-status']['es-cl'] = "Desconectado";
$text['check-loggedout-status']['es-mx'] = "Desconectado";
$text['check-loggedout-status']['fr-ca'] = "Déconnecté";
$text['check-loggedout-status']['fr-fr'] = "Déconnecté";
$text['check-loggedout-status']['he-il'] = "התנתק";
$text['check-loggedout-status']['it-it'] = "Sloggato";
$text['check-loggedout-status']['ka-ge'] = "გასულია";
$text['check-loggedout-status']['nl-nl'] = "Afgelogd";
$text['check-loggedout-status']['pl-pl'] = "Wylogowany";
$text['check-loggedout-status']['pt-br'] = "Desligado";
@@ -750,12 +917,14 @@ $text['check-do-not-disturb-status']['ar-eg'] = "للا تخل";
$text['check-do-not-disturb-status']['de-at'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['de-ch'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['de-de'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['el-gr'] = "Μην ενοχλείτε";
$text['check-do-not-disturb-status']['es-cl'] = "No molestar";
$text['check-do-not-disturb-status']['es-mx'] = "No molestar";
$text['check-do-not-disturb-status']['fr-ca'] = "Ne Pas Déranger";
$text['check-do-not-disturb-status']['fr-fr'] = "Ne Pas Déranger";
$text['check-do-not-disturb-status']['he-il'] = "לא להפריע";
$text['check-do-not-disturb-status']['it-it'] = "Non Disturbare";
$text['check-do-not-disturb-status']['ka-ge'] = "არ შემაწუხოთ";
$text['check-do-not-disturb-status']['nl-nl'] = "Niet Storen";
$text['check-do-not-disturb-status']['pl-pl'] = "Nie przeszkadzaj (DND)";
$text['check-do-not-disturb-status']['pt-br'] = "Não Pertube";
@@ -774,12 +943,14 @@ $text['check-available-status']['ar-eg'] = "متاح";
$text['check-available-status']['de-at'] = "Erreichbar";
$text['check-available-status']['de-ch'] = "Erreichbar";
$text['check-available-status']['de-de'] = "Erreichbar";
$text['check-available-status']['el-gr'] = "Διαθέσιμος";
$text['check-available-status']['es-cl'] = "Disponible";
$text['check-available-status']['es-mx'] = "Disponible";
$text['check-available-status']['fr-ca'] = "Disponible";
$text['check-available-status']['fr-fr'] = "Disponible";
$text['check-available-status']['he-il'] = "זמין";
$text['check-available-status']['it-it'] = "Disponibile";
$text['check-available-status']['ka-ge'] = "ხელმისაწვდომია";
$text['check-available-status']['nl-nl'] = "Beschikbaar";
$text['check-available-status']['pl-pl'] = "Dostępny";
$text['check-available-status']['pt-br'] = "Disponível";
@@ -798,12 +969,14 @@ $text['check-available-on-demand-status']['ar-eg'] = "متاح (عند الطل
$text['check-available-on-demand-status']['de-at'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['de-ch'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['de-de'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['el-gr'] = "Διαθέσιμο (κατ' απαίτηση)";
$text['check-available-on-demand-status']['es-cl'] = "Disponible (On Demand)";
$text['check-available-on-demand-status']['es-mx'] = "Disponible (On Demand)";
$text['check-available-on-demand-status']['fr-ca'] = "Disponible (Sur Demande)";
$text['check-available-on-demand-status']['fr-fr'] = "Disponible (Sur Demande)";
$text['check-available-on-demand-status']['he-il'] = "זמין (לפי דרישה)";
$text['check-available-on-demand-status']['it-it'] = "Disponibile (Su Richiesta)";
$text['check-available-on-demand-status']['ka-ge'] = "ხელმისაწვდომია (საჭიროებისამებრ)";
$text['check-available-on-demand-status']['nl-nl'] = "Beschikbaar (op verzoek)";
$text['check-available-on-demand-status']['pl-pl'] = "Dostępny (na żądanie)";
$text['check-available-on-demand-status']['pt-br'] = "Disponível (A pedido)";
@@ -822,12 +995,14 @@ $text['button-show_all']['ar-eg'] = "عرض الكل";
$text['button-show_all']['de-at'] = "Alle anzeigen";
$text['button-show_all']['de-ch'] = "Alle anzeigen";
$text['button-show_all']['de-de'] = "Alle anzeigen";
$text['button-show_all']['el-gr'] = "Προβολή όλων";
$text['button-show_all']['es-cl'] = "Mostrar Todos";
$text['button-show_all']['es-mx'] = "Mostrar Todos";
$text['button-show_all']['fr-ca'] = "Montrer Tout";
$text['button-show_all']['fr-fr'] = "Montrer Tout";
$text['button-show_all']['he-il'] = "הצג הכול";
$text['button-show_all']['it-it'] = "Mostra Tutto";
$text['button-show_all']['ka-ge'] = "ყველაფრის ჩვენება";
$text['button-show_all']['nl-nl'] = "Alles tonen";
$text['button-show_all']['pl-pl'] = "Pokaż Wszystkie";
$text['button-show_all']['pt-br'] = "Mostrar Todos";
@@ -846,12 +1021,14 @@ $text['message-calls_ended']['ar-eg'] = "انتهت المكالمات";
$text['message-calls_ended']['de-at'] = "Anrufe beendet";
$text['message-calls_ended']['de-ch'] = "Anrufe beendet";
$text['message-calls_ended']['de-de'] = "Anrufe beendet";
$text['message-calls_ended']['el-gr'] = "Τελειώθηκαν οι κλήσεις";
$text['message-calls_ended']['es-cl'] = "Llamadas finalizadas";
$text['message-calls_ended']['es-mx'] = "Llamadas finalizadas";
$text['message-calls_ended']['fr-ca'] = "Appels terminés";
$text['message-calls_ended']['fr-fr'] = "Appels terminés";
$text['message-calls_ended']['he-il'] = "שיחות הסתיימו";
$text['message-calls_ended']['it-it'] = "Chiamate terminate";
$text['message-calls_ended']['ka-ge'] = "ზარები დასრულდა";
$text['message-calls_ended']['nl-nl'] = "Beeindigde gesprekken";
$text['message-calls_ended']['pl-pl'] = "Rozmowy Zakończone";
$text['message-calls_ended']['pt-br'] = "Chiamate terminate";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Appels en cours";
$apps[$x]['menu'][$y]['title']['he-il'] = "שיחות פעילות";
$apps[$x]['menu'][$y]['title']['it-it'] = "Chiamate Attive";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "აქტიური ზარები";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Aktieve gesprekken";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Aktywne połączenia";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Chamadas ativas";
+46 -4
View File
@@ -61,9 +61,10 @@
?>
<script type="text/javascript">
//define refresh function, initial start
var refresh = 1980;
var refresh = 1980;
var source_url = 'calls_active_inc.php?';
var timer_id;
<?php
if ($show == 'all') {
echo "source_url = source_url + '&show=all';";
@@ -72,9 +73,11 @@
echo "source_url = source_url + '&debug';";
}
?>
var ajax_get = function () {
function ajax_get() {
url = source_url + '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
$.ajax({
url: source_url, success: function(response){
url: url,
success: function(response){
$("#ajax_reponse").html(response);
}
});
@@ -87,7 +90,7 @@
function refresh_stop() {
clearTimeout(timer_id);
//document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; margin-right: 20px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">";
document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>";
document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_enable'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>";
}
function refresh_start() {
@@ -96,10 +99,48 @@
ajax_get();
}
//eavesdrop call
function eavesdrop_call(ext, chan_uuid) {
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid, document.getElementById('eavesdrop_dest').value);
if (cmd != '') {
send_cmd(cmd);
}
}
}
function get_eavesdrop_cmd(ext, chan_uuid, destination) {
url = "calls_exec.php?action=eavesdrop&ext=" + ext + "&chan_uuid=" + chan_uuid + "&destination=" + destination;
return url;
}
//used by eavesdrop function
function send_cmd(url) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
}
</script>
<?php
//create simple array of users own extensions
unset($_SESSION['user']['extensions']);
if (is_array($_SESSION['user']['extension'])) {
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
}
}
echo "<div id='ajax_reponse'></div>\n";
echo "<div id='cmd_response' style='display: none;'></div>\n";
echo "<div id='time_stamp' style='visibility:hidden'>".date('Y-m-d-s')."</div>\n";
echo "<br><br><br>";
@@ -118,4 +159,5 @@ require_once "resources/footer.php";
return escape(cmd);
}
*/
?>
+196 -149
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2019
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -52,50 +52,44 @@
$switch_cmd = 'show channels as json';
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$event_socket = event_socket::create();
//send the event socket command and get the array
if ($fp) {
$json = trim(event_socket_request($fp, 'api '.$switch_cmd));
if ($event_socket->is_connected()) {
$json = trim(event_socket::api($switch_cmd));
$results = json_decode($json, "true");
}
//build a new array with domain_name
$rows = array();
if (isset($results["rows"])) {
foreach ($results["rows"] as &$row) {
foreach ($results["rows"] as $row) {
//get the domain
if (!empty($row['context']) && $row['context'] != "public" && $row['context'] != "default") {
if (substr_count($row['context'], '@') > 0) {
$context_array = explode('@', $row['context']);
$row['domain_name'] = $context_array[1];
$row['domain_name'] = explode('@', $row['context'])[1];
}
else {
$row['domain_name'] = $row['context'];
}
}
else if (substr_count($row['presence_id'], '@') > 0) {
$presence_id_array = explode('@', $row['presence_id']);
$row['domain_name'] = $presence_id_array[1];
$row['domain_name'] = explode('@', $row['presence_id'])[1];
}
//add the row to the array
if (($show == 'all' && permission_exists('call_active_all'))) {
$rows[] = $row;
}
else {
if ($row['domain_name'] == $_SESSION['domain_name']) {
$rows[] = $row;
}
elseif ($row['domain_name'] == $_SESSION['domain_name']) {
$rows[] = $row;
}
}
unset($results);
}
$num_rows = @sizeof($rows);
//if the connnection is available then run it and return the results
if (!$fp) {
if (!$event_socket) {
$msg = "<div align='center'>".$text['confirm-socket']."<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -107,144 +101,197 @@
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
return;
}
else {
//create token
$object = new token;
$token = $object->create('/app/calls_active/calls_active_inc.php');
//create token
$object = new token;
$token = $object->create('/app/calls_active/calls_active_inc.php');
//show content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title']." (".$num_rows.")</b></div>\n";
echo " <div class='actions'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
if (permission_exists('call_active_hangup') && $rows) {
echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','id'=>'btn_delete','onclick'=>"refresh_stop(); modal_open('modal-hangup','btn_hangup');"]);
}
if (permission_exists('call_active_all')) {
if ($show == "all") {
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'link'=>'calls_active.php','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'calls_active.php?show=all','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
//add the style
echo "<style>\n";
echo " /* Small screens: Hide columns with class 'hide-small' */\n";
echo " @media (max-width: 600px) {\n";
echo " .hide-small {\n";
echo " display: none;\n";
echo " }\n";
echo " }\n";
echo "\n";
echo " /* Medium screens: Hide columns with class 'hide-medium' */\n";
echo "@media (max-width: 1023px) and (min-width: 601px) {\n";
echo " .hide-medium {\n";
echo " display: none;\n";
echo " }\n";
echo " }\n";
echo "\n";
echo "</style>\n";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
if (permission_exists('call_active_eavesdrop') && !empty($_SESSION['user']['extensions'])) {
if (sizeof($_SESSION['user']['extensions']) > 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : escape($_REQUEST['eavesdrop_dest']))."\">\n";
echo " <i class='fas fa-headphones' style='margin-left: 15px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'></i>\n";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
if (is_array($_SESSION['user']['extensions'])) {
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
}
}
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_active_hangup') && $rows) {
echo modal::create(['id'=>'modal-hangup','type'=>'general','message'=>$text['confirm-hangups'],'actions'=>button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'check','id'=>'btn_hangup','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('hangup'); list_form_submit('form_list');"])]);
}
echo $text['description']."\n";
echo "<br /><br />\n";
//show the results
echo "<div id='cmd_reponse'></div>\n";
echo "<form id='form_list' method='post' action='calls_exec.php'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('call_active_hangup')) {
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
}
echo " <th>".$text['label-profile']."</th>\n";
echo " <th>".$text['label-created']."</th>\n";
if ($show == 'all') {
echo " <th>".$text['label-domain']."</th>\n";
}
echo " <th>".$text['label-number']."</th>\n";
echo " <th>".$text['label-cid-name']."</th>\n";
echo " <th>".$text['label-cid-number']."</th>\n";
echo " <th>".$text['label-destination']."</th>\n";
echo " <th>".$text['label-app']."</th>\n";
echo " <th>".$text['label-codec']."</th>\n";
echo " <th>".$text['label-secure']."</th>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
if (is_array($rows)) {
$x = 0;
foreach ($rows as &$row) {
//set the php variables
foreach ($row as $key => $value) {
$$key = $value;
}
//get the sip profile
$name_array = explode("/", $name);
$sip_profile = $name_array[1];
$sip_uri = $name_array[2];
//get the number
$temp_array = explode("@", $sip_uri);
$tmp_number = $temp_array[0];
$tmp_number = str_replace("sip:", "", $tmp_number);
//remove the '+' because it breaks the call recording
$cid_num = str_replace("+", "", $cid_num);
//replace gateway uuid with name
if (is_array($_SESSION['gateways']) && sizeof($_SESSION['gateways']) > 0) {
foreach ($_SESSION['gateways'] as $gateway_uuid => $gateway_name) {
$application_data = str_replace($gateway_uuid, $gateway_name, $application_data);
}
}
// reduce too long app data
if(strlen($application_data) > 512) {
$application_data = substr($application_data, 0, 512) . '...';
}
//send the html
echo "<tr class='list-row'>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='checkbox'>\n";
echo " <input type='checkbox' name='calls[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"if (this.checked) { refresh_stop(); } else { document.getElementById('checkbox_all').checked = false; }\">\n";
echo " <input type='hidden' name='calls[$x][uuid]' value='".escape($uuid)."' />\n";
echo " </td>\n";
}
echo " <td>".escape($sip_profile)."&nbsp;</td>\n";
echo " <td>".escape($created)."&nbsp;</td>\n";
if ($show == 'all') {
echo " <td>".escape($domain_name)."&nbsp;</td>\n";
}
echo " <td>".escape($tmp_number)."&nbsp;</td>\n";
echo " <td>".escape($cid_name)."&nbsp;</td>\n";
echo " <td>".escape($cid_num)."&nbsp;</td>\n";
echo " <td>".escape($dest)."&nbsp;</td>\n";
echo " <td>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
echo " <td>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
echo " <td>".escape($secure)."&nbsp;</td>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['label-hangup'],'icon'=>'phone-slash','onclick'=>"if (confirm('".$text['confirm-hangup']."')) { list_self_check('checkbox_".$x."'); list_action_set('hangup'); list_form_submit('form_list'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
echo " </td>\n";
}
echo "</tr>\n";
//increment counter
$x++;
}
unset($rows);
}
echo "</table>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
echo " </select>\n";
}
else if (sizeof($_SESSION['user']['extensions']) == 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".escape($_SESSION['user']['extension'][0]['destination'])."\">\n";
}
}
if (permission_exists('call_active_hangup') && $rows) {
echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','id'=>'btn_delete','onclick'=>"refresh_stop(); modal_open('modal-hangup','btn_hangup');"]);
}
if (permission_exists('call_active_all')) {
if ($show == "all") {
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'link'=>'calls_active.php','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'calls_active.php?show=all','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
}
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_active_hangup') && $rows) {
echo modal::create(['id'=>'modal-hangup','type'=>'general','message'=>$text['confirm-hangups'],'actions'=>button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'check','id'=>'btn_hangup','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('hangup'); list_form_submit('form_list');"])]);
}
echo $text['description']."\n";
echo "<br /><br />\n";
//show the results
echo "<div id='cmd_reponse'></div>\n";
echo "<form id='form_list' method='post' action='calls_exec.php'>\n";
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<div class='card'>\n";
echo " <table class='list'>\n";
echo " <tr class='list-header'>\n";
if (permission_exists('call_active_hangup')) {
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
}
echo " <th class='hide-small'>".$text['label-profile']."</th>\n";
//echo" <th>".$text['label-created']."</th>\n";
echo " <th>".$text['label-duration']."</th>\n";
if ($show == 'all') {
echo " <th>".$text['label-domain']."</th>\n";
}
//echo " <th>".$text['label-number']."</th>\n";
echo " <th class='hide-small'>".$text['label-cid-name']."</th>\n";
echo " <th>".$text['label-cid-number']."</th>\n";
echo " <th>".$text['label-destination']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-app']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-codec']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-secure']."</th>\n";
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <th>&nbsp;</th>\n";
}
echo " </tr>\n";
if (is_array($rows)) {
$x = 0;
foreach ($rows as $row) {
//set the php variables
foreach ($row as $key => $value) {
$$key = $value;
}
//get the sip profile
$name_array = explode("/", $name);
$sip_profile = $name_array[1];
$sip_uri = $name_array[2];
//get the number
//$temp_array = explode("@", $sip_uri);
//$tmp_number = $temp_array[0];
//$tmp_number = str_replace("sip:", "", $tmp_number);
//remove the '+' because it breaks the call recording
$cid_num = str_replace("+", "", $cid_num);
//replace gateway uuid with name
if (is_array($_SESSION['gateways']) && sizeof($_SESSION['gateways']) > 0) {
foreach ($_SESSION['gateways'] as $gateway_uuid => $gateway_name) {
$application_data = str_replace($gateway_uuid, $gateway_name, $application_data);
}
}
//calculate elapsed seconds
$elapsed_seconds = time() - $created_epoch;
//convert seconds to hours, minutes, and seconds
$hours = floor($elapsed_seconds / 3600);
$minutes = floor(($elapsed_seconds % 3600) / 60);
$seconds = $elapsed_seconds % 60;
//format the elapsed time as HH:MM:SS
$elapsed_time = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
//reduce too long app data
if(strlen($application_data) > 80) {
$application_data = substr($application_data, 0, 80) . '...';
}
//send the html
echo " <tr class='list-row'>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='checkbox'>\n";
echo " <input type='checkbox' name='calls[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"if (this.checked) { refresh_stop(); } else { document.getElementById('checkbox_all').checked = false; }\">\n";
echo " <input type='hidden' name='calls[$x][uuid]' value='".escape($uuid)."' />\n";
echo " </td>\n";
}
echo " <td class='hide-small'>".escape($sip_profile)."&nbsp;</td>\n";
//echo " <td>".escape($created)."&nbsp;</td>\n";
echo " <td>".escape($elapsed_time)."</td>\n";
if ($show == 'all') {
echo " <td>".escape($domain_name)."&nbsp;</td>\n";
}
//echo " <td>".escape($tmp_number)."&nbsp;</td>\n";
echo " <td class='hide-small'>".escape($cid_name)."&nbsp;</td>\n";
echo " <td>".escape($cid_num)."&nbsp;</td>\n";
echo " <td>".escape($dest)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium' style='max-width: 200px; word-wrap: break-word;'>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium'>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium'>".escape($secure)."&nbsp;</td>\n";
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <td class='button right' style='padding-right: 0;'>\n";
//eavesdrop
if (permission_exists('call_active_eavesdrop') && $callstate == 'ACTIVE' && !empty($_SESSION['user']['extensions']) && !in_array($cid_num, $_SESSION['user']['extensions'])) {
echo button::create(['type'=>'button','label'=>$text['label-eavesdrop'],'icon'=>'headphones','collapse'=>'hide-lg-dn','onclick'=>"if (confirm('".$text['confirm-eavesdrop']."')) { eavesdrop_call('".escape($cid_num)."','".escape($uuid)."'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
//hangup
if (permission_exists('call_active_hangup')) {
echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','collapse'=>'hide-lg-dn','onclick'=>"if (confirm('".$text['confirm-hangup']."')) { list_self_check('checkbox_".$x."'); list_action_set('hangup'); list_form_submit('form_list'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
echo " </td>\n";
}
echo " </tr>\n";
//unset the domain name
unset($domain_name);
//increment counter
$x++;
}
}
echo " </table>\n";
echo "</div>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
?>
+22 -6
View File
@@ -59,6 +59,7 @@
}
//verify submitted call uuids
$calls = [];
if (is_array($_POST['calls']) && @sizeof($_POST['calls']) != 0) {
foreach ($_POST['calls'] as $call) {
if ($call['checked'] == 'true' && is_uuid($call['uuid'])) {
@@ -71,18 +72,18 @@
}
//iterate through calls
if (is_array($calls) && @sizeof($calls) != 0) {
if (count($calls) > 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$event_socket = event_socket::create();
//execute hangup command
foreach ($calls as $call_uuid) {
$switch_result = event_socket_request($fp, 'api uuid_kill '.$call_uuid);
if ($event_socket->is_connected()) foreach ($calls as $call_uuid) {
event_socket::async("uuid_kill ".$call_uuid);
}
//set message
message::add($text['message-calls_ended'].': '.@sizeof($calls),'positive');
message::add($text['message-calls_ended'].': '.count($calls),'positive');
}
@@ -90,10 +91,25 @@
header('Location: calls_active.php');
exit;
}
else if ($_REQUEST['action'] == 'eavesdrop' && permission_exists('call_active_eavesdrop')) {
$uuid_pattern = '/[^-A-Fa-f0-9]/';
$number_pattern = '/[^-A-Za-z0-9()*#]/';
$channnel_uuid = preg_replace($uuid_pattern,'',$_GET['chan_uuid']);
$extension = preg_replace($number_pattern,'',$_GET['ext']);
$destination = preg_replace($number_pattern,'',$_GET['destination']);
$api_cmd = 'bgapi originate {origination_caller_id_name='.$text['label-eavesdrop'].',origination_caller_id_number='.$extension.'}user/'.$destination.'@'.$_SESSION['domain_name'].' &eavesdrop('.$channnel_uuid.')';
//run the command
$switch_result = event_socket::api($api_cmd);
}
else {
echo "access denied";
exit;
}
?>
?>
+1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "";
$apps[$x]['description']['nl-nl'] = "";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "";
+1
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Appeler à partir d'une URL";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "გამავალი ზარების შექმნა URL-ის გამოძახებით.";
$apps[$x]['description']['nl-nl'] = "Start oproepen met een URL";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "Gera chamadas a partir de um URL";
+64
View File
@@ -6,12 +6,14 @@ $text['label-click2call']['ar-eg'] = "اضغط للاتصال";
$text['label-click2call']['de-at'] = "Click to Call";
$text['label-click2call']['de-ch'] = "Click to Call";
$text['label-click2call']['de-de'] = "Click to Call";
$text['label-click2call']['el-gr'] = "Κάντε κλικ για κλήση";
$text['label-click2call']['es-cl'] = "Pulse para Llamar";
$text['label-click2call']['es-mx'] = "Pulse para Llamar";
$text['label-click2call']['fr-ca'] = "Cliquez pour appeler";
$text['label-click2call']['fr-fr'] = "Cliquez pour appeler";
$text['label-click2call']['he-il'] = "לחץ כדי להתקשר";
$text['label-click2call']['it-it'] = "Clicca per Chiamare";
$text['label-click2call']['ka-ge'] = "დარეკვა დაწკაპუნებით";
$text['label-click2call']['nl-nl'] = "Klik voor oproep";
$text['label-click2call']['pl-pl'] = "Kliknij by zadzwonić";
$text['label-click2call']['pt-br'] = "Clique para chamar";
@@ -30,12 +32,14 @@ $text['desc-click2call']['ar-eg'] = "قم بتوفير المعلومات الت
$text['desc-click2call']['de-at'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['de-ch'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['de-de'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['el-gr'] = "Δώστε τις ακόλουθες πληροφορίες για να πραγματοποιήσετε μια κλήση από τον αριθμό προέλευσης στον αριθμό προορισμού.";
$text['desc-click2call']['es-cl'] = "Ingrese la siguiente información para realizar una llamada desde un número de origen a un número de destino.";
$text['desc-click2call']['es-mx'] = "Ingrese la siguiente información para realizar una llamada desde un número de origen a un número de destino.";
$text['desc-click2call']['fr-ca'] = "Fournissez les informations suivantes afin de lancer un appel d'un numéro vers un autre.";
$text['desc-click2call']['fr-fr'] = "Fournissez les informations suivantes afin de lancer un appel d'un numéro vers un autre.";
$text['desc-click2call']['he-il'] = "ספק את המידע הבא כדי לבצע שיחה ממספר המקור למספר היעד.";
$text['desc-click2call']['it-it'] = "Inserisci le seguenti informazioni per eseguire una chiamata dal numero sorgente al numero destinatario.";
$text['desc-click2call']['ka-ge'] = "შეიყვანეთ შემდეგი ინფორმაცია, რომ დარეკოთ საწყისი ნომრიდან დანიშნულების ნომერზე.";
$text['desc-click2call']['nl-nl'] = "Geef de volgende informatie om een oproep van een bronnummer naar een bestemmingsnummer in te stellen";
$text['desc-click2call']['pl-pl'] = "Podaj następujące informacje, aby wykonać połączenie z numeru źródłowego na numer docelowy.";
$text['desc-click2call']['pt-br'] = "Forneça as seguintes informações para realizar uma chamada do telefone originário para o telefone de destino.";
@@ -54,12 +58,14 @@ $text['label-src-caller-id-nam']['ar-eg'] = "اسم معرف المتصل الم
$text['label-src-caller-id-nam']['de-at'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['de-ch'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['de-de'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['el-gr'] = "Πηγή Όνομα αναγνώρισης καλούντος";
$text['label-src-caller-id-nam']['es-cl'] = "Nombre de Caller ID de origen";
$text['label-src-caller-id-nam']['es-mx'] = "Nombre de Caller ID de origen";
$text['label-src-caller-id-nam']['fr-ca'] = "Nom de l'appelant";
$text['label-src-caller-id-nam']['fr-fr'] = "Nom de l'appelant";
$text['label-src-caller-id-nam']['he-il'] = "שם מקור המתקשר";
$text['label-src-caller-id-nam']['it-it'] = "Nome Chiamante";
$text['label-src-caller-id-nam']['ka-ge'] = "წყაროს Caller ID სახელი";
$text['label-src-caller-id-nam']['nl-nl'] = "Bron CID Naam";
$text['label-src-caller-id-nam']['pl-pl'] = "Źródłowa nazwa dzwoniącego";
$text['label-src-caller-id-nam']['pt-br'] = "Nome de origem";
@@ -78,12 +84,14 @@ $text['desc-src-caller-id-nam']['ar-eg'] = "أدخل اسم معرف المتص
$text['desc-src-caller-id-nam']['de-at'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['de-ch'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['de-de'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['el-gr'] = "Εισαγάγετε το όνομα αναγνώρισης καλούντος για αποστολή στο τηλέφωνό σας.";
$text['desc-src-caller-id-nam']['es-cl'] = "Ingrese el nombre del Caller ID para enviar a su teléfono.";
$text['desc-src-caller-id-nam']['es-mx'] = "Ingrese el nombre del Caller ID para enviar a su teléfono.";
$text['desc-src-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émettre à votre téléphone.";
$text['desc-src-caller-id-nam']['fr-fr'] = "Choisir le nom d'appelant à émettre à votre téléphone.";
$text['desc-src-caller-id-nam']['he-il'] = "הזן את שם המתקשר כדי לשלוח לטלפון שלך.";
$text['desc-src-caller-id-nam']['it-it'] = "Inserisci il nome del chiamante per inviare al tuo telefono.";
$text['desc-src-caller-id-nam']['ka-ge'] = "შეიყვანეთ Caller ID სახელი, რომ თქვენს ტელეფონზე გავაგზავნოთ.";
$text['desc-src-caller-id-nam']['nl-nl'] = "Voer de CID naam in om naar je telefoon te sturen";
$text['desc-src-caller-id-nam']['pl-pl'] = "Wprowadź nazwę identyfikatora dzwoniącego, który ma zostać wysłany na Twój telefon.";
$text['desc-src-caller-id-nam']['pt-br'] = "Entre com o ID do número de origem para ser enviado para seu telefone.";
@@ -102,12 +110,14 @@ $text['label-src-caller-id-num']['ar-eg'] = "رقم هوية المتصل الم
$text['label-src-caller-id-num']['de-at'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['de-ch'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['de-de'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['el-gr'] = "Αριθμός αναγνώρισης κλήσης πηγής";
$text['label-src-caller-id-num']['es-cl'] = "Número de Caller ID de origen";
$text['label-src-caller-id-num']['es-mx'] = "Número de Caller ID de origen";
$text['label-src-caller-id-num']['fr-ca'] = "Numéro de l'appelant";
$text['label-src-caller-id-num']['fr-fr'] = "Numéro de l'appelant";
$text['label-src-caller-id-num']['he-il'] = "מקור מספר זיהוי מתקשר";
$text['label-src-caller-id-num']['it-it'] = "Numero Sorgente";
$text['label-src-caller-id-num']['ka-ge'] = "წყარო Caller ID ნომერი";
$text['label-src-caller-id-num']['nl-nl'] = "Bron CID nummer";
$text['label-src-caller-id-num']['pl-pl'] = "Źródłowy numer identyfikacyjny dzwoniącego";
$text['label-src-caller-id-num']['pt-br'] = "Número de origem";
@@ -126,12 +136,14 @@ $text['desc-src-caller-id-num']['ar-eg'] = "أدخل رقم معرف المتص
$text['desc-src-caller-id-num']['de-at'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['de-de'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['el-gr'] = "Εισαγάγετε τον αριθμό αναγνώρισης καλούντος για αποστολή στο τηλέφωνό σας (πιθανότατα θέλετε να είναι ο ίδιος με τον αριθμό προορισμού).";
$text['desc-src-caller-id-num']['es-cl'] = "Ingrese el número del Caller ID para enviar a su teléfono (probablemente desee que sea el mismo que el número de destino).";
$text['desc-src-caller-id-num']['es-mx'] = "Ingrese el número del Caller ID para enviar a su teléfono (probablemente desee que sea el mismo que el número de destino).";
$text['desc-src-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à émettre à votre téléphone (Il est en général le même que le numéro de destination).";
$text['desc-src-caller-id-num']['fr-fr'] = "Choisir le numéro d'appelant à émettre à votre téléphone (Il est en général le même que le numéro de destination).";
$text['desc-src-caller-id-num']['he-il'] = "הזן את מספר זיהוי המתקשר לשליחת הטלפון שלך (אתה כנראה רוצה שזה יהיה זהה למספר היעד).";
$text['desc-src-caller-id-num']['it-it'] = "Inserisci il numero Sorgente per inviare al tuo telefono (probabilmente è lo stesso del numero destintario).";
$text['desc-src-caller-id-num']['ka-ge'] = "შეიყვანეთ Caller ID ნომერი თქვენს ტელეფონზე გასაგზავნად (ალბათ, ეს იგივეა, რაც დანიშნულების ნომერი).";
$text['desc-src-caller-id-num']['nl-nl'] = "Voer het CID nummer in om naar te telefoon te sturen (mogelijk wil he dit hetzelfde als het bestemmingsnummer laten zijn).";
$text['desc-src-caller-id-num']['pl-pl'] = "Wprowadź numer identyfikacyjny dzwoniącego, który ma zostać wysłany na Twój telefon (prawdopodobnie chcesz, aby był taki sam jak numer docelowy).";
$text['desc-src-caller-id-num']['pt-br'] = "Entre com o ID do número de origem para ser enviado para seu telefone (Orientamos colocar este número sendo o mesmo número que 'número de destino'";
@@ -150,12 +162,14 @@ $text['label-dest-caller-id-nam']['ar-eg'] = "اسم هوية المتصل ال
$text['label-dest-caller-id-nam']['de-at'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['de-ch'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['de-de'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['el-gr'] = "Όνομα ταυτότητας καλούντος προορισμού";
$text['label-dest-caller-id-nam']['es-cl'] = "Nombre de Caller ID de destino";
$text['label-dest-caller-id-nam']['es-mx'] = "Nombre de Caller ID de destino";
$text['label-dest-caller-id-nam']['fr-ca'] = "Nom de l'appelant de destination";
$text['label-dest-caller-id-nam']['fr-fr'] = "Nom de l'appelant de destination";
$text['label-dest-caller-id-nam']['he-il'] = "Destination Caller ID Name";
$text['label-dest-caller-id-nam']['it-it'] = "Nome Destinatario";
$text['label-dest-caller-id-nam']['ka-ge'] = "დანიშნულების Caller ID სახელი";
$text['label-dest-caller-id-nam']['nl-nl'] = "Bestemming CID Naam";
$text['label-dest-caller-id-nam']['pl-pl'] = "Identyfikator dzwoniącego miejsca docelowego";
$text['label-dest-caller-id-nam']['pt-br'] = "Identificação do destino";
@@ -174,12 +188,14 @@ $text['desc-dest-caller-id-nam']['ar-eg'] = "أدخل اسم معرف المتص
$text['desc-dest-caller-id-nam']['de-at'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['de-ch'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['de-de'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['el-gr'] = "Εισαγάγετε το όνομα αναγνώρισης καλούντος για αποστολή στον αριθμό προορισμού.";
$text['desc-dest-caller-id-nam']['es-cl'] = "Ingrese el nombre de Caller ID para enviar al número de destino.";
$text['desc-dest-caller-id-nam']['es-mx'] = "Ingrese el nombre de Caller ID para enviar al número de destino.";
$text['desc-dest-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émettre à la destination";
$text['desc-dest-caller-id-nam']['fr-fr'] = "Choisir le nom d'appelant à émettre à la destination";
$text['desc-dest-caller-id-nam']['he-il'] = "הזן את שם המתקשר כדי לשלוח למספר היעד.";
$text['desc-dest-caller-id-nam']['it-it'] = "Inserisci il nome del chiamante per inviare la chiamata al numero destinatario.";
$text['desc-dest-caller-id-nam']['ka-ge'] = "შეიყვანეთ Caller ID სახელი დანიშნულების ნომერზე გასაგზავნად.";
$text['desc-dest-caller-id-nam']['nl-nl'] = "Voer de CID naam in die naar het bestemmings nummber verzonden moet worden.";
$text['desc-dest-caller-id-nam']['pl-pl'] = "Wprowadź identyfikator dzwoniącego, który ma zostać wysłany na numer docelowy.";
$text['desc-dest-caller-id-nam']['pt-br'] = "Entre com a identificação a ser enviada para o número de destino.";
@@ -198,12 +214,14 @@ $text['label-dest-caller-id-num']['ar-eg'] = "رقم هوية المتصل ال
$text['label-dest-caller-id-num']['de-at'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['de-ch'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['de-de'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['el-gr'] = "Αριθμός αναγνώρισης καλούντος προορισμού";
$text['label-dest-caller-id-num']['es-cl'] = "Número de Caller ID de destino";
$text['label-dest-caller-id-num']['es-mx'] = "Número de Caller ID de destino";
$text['label-dest-caller-id-num']['fr-ca'] = "Numéro de l'appelant de destination";
$text['label-dest-caller-id-num']['fr-fr'] = "Numéro de l'appelant de destination";
$text['label-dest-caller-id-num']['he-il'] = "מספר זיהוי מתקשר ביעד";
$text['label-dest-caller-id-num']['it-it'] = "Numero Destinatario";
$text['label-dest-caller-id-num']['ka-ge'] = "დანიშნულების Caller ID ნომერი";
$text['label-dest-caller-id-num']['nl-nl'] = "Bestemmings CID nummer";
$text['label-dest-caller-id-num']['pl-pl'] = "Numer identyfikacyjny rozmówcy docelowego";
$text['label-dest-caller-id-num']['pt-br'] = "Número de destino";
@@ -222,12 +240,14 @@ $text['desc-dest-caller-id-num']['ar-eg'] = "أدخل رقم معرف المتص
$text['desc-dest-caller-id-num']['de-at'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['de-de'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['el-gr'] = "Εισαγάγετε τον αριθμό αναγνώρισης καλούντος για αποστολή στον αριθμό προορισμού (πιθανότατα θέλετε να είναι ο αριθμός τηλεφώνου σας).";
$text['desc-dest-caller-id-num']['es-cl'] = "Ingrese número de Caller ID para enviar al número de destino (probablemente desee que sea su número de teléfono).";
$text['desc-dest-caller-id-num']['es-mx'] = "Ingrese número de Caller ID para enviar al número de destino (probablemente desee que sea su número de teléfono).";
$text['desc-dest-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à émettre au téléphone destination (Il est en général le même que votre numéro.)";
$text['desc-dest-caller-id-num']['fr-fr'] = "Choisir le numéro d'appelant à émettre au téléphone destination (Il est en général le même que votre numéro.)";
$text['desc-dest-caller-id-num']['he-il'] = "הזן את מספר זיהוי המתקשר כדי לשלוח למספר היעד (כנראה אתה רוצה שזה יהיה מספר הטלפון שלך).";
$text['desc-dest-caller-id-num']['it-it'] = "Inserisci il numero ID chiamante da inviare al numero di destinazione (probabilmente vuoi che questo sia il tuo numero di telefono).";
$text['desc-dest-caller-id-num']['ka-ge'] = "შეიყვანეთ Caller ID ნომერი დანიშნულების ნომერზე გასაგზავნად (ალბათ, იგივე, რაც თქვენი ტელეფონის ნომერია).";
$text['desc-dest-caller-id-num']['nl-nl'] = "Voer het CID nummer in dat naar bestemming gestuurd moet worden (vermoedelijk wil je dit je toestel nummer laten zijn).";
$text['desc-dest-caller-id-num']['pl-pl'] = "Wprowadź numer identyfikacyjny dzwoniącego, który ma zostać wysłany na numer docelowy (prawdopodobnie chcesz, aby był to Twój numer telefonu).";
$text['desc-dest-caller-id-num']['pt-br'] = "Entre com o número de identificação a ser mandado para o número de destino (geralmente é o mesmo que o número de telefone).";
@@ -246,12 +266,14 @@ $text['label-src-num']['ar-eg'] = "رقم المصدر";
$text['label-src-num']['de-at'] = "Quell Rufnummer";
$text['label-src-num']['de-ch'] = "Quell Rufnummer";
$text['label-src-num']['de-de'] = "Quell Rufnummer";
$text['label-src-num']['el-gr'] = "Αριθμός πηγής";
$text['label-src-num']['es-cl'] = "Número de origen";
$text['label-src-num']['es-mx'] = "Número de origen";
$text['label-src-num']['fr-ca'] = "Numéro de source";
$text['label-src-num']['fr-fr'] = "Numéro de source";
$text['label-src-num']['he-il'] = "מספר מקור";
$text['label-src-num']['it-it'] = "Numero Sorgente";
$text['label-src-num']['ka-ge'] = "წყარო ნომერი";
$text['label-src-num']['nl-nl'] = "Bron nummer";
$text['label-src-num']['pl-pl'] = "Numer źródła";
$text['label-src-num']['pt-br'] = "Número de origem";
@@ -270,12 +292,14 @@ $text['desc-src-num']['ar-eg'] = "أدخل رقم هاتفك. يمكن أن يك
$text['desc-src-num']['de-at'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['de-ch'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['de-de'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['el-gr'] = "Πληκτρολόγησε τον αριθμό του τηλεφώνου σου. Αυτό μπορεί να είναι μια επέκταση στο σύστημα ή ένας άλλος αριθμός (π.χ.: κινητό τηλέφωνο).";
$text['desc-src-num']['es-cl'] = "Ingrese su número de teléfono. Este puede ser una extesión en el sistema, u otro número (ej. teléfono movil).";
$text['desc-src-num']['es-mx'] = "Ingrese su número de teléfono. Este puede ser una extesión en el sistema, u otro número (ej. teléfono movil).";
$text['desc-src-num']['fr-ca'] = "Choisir votre numéro de téléphone. Il peut être une extension du système, ou tout autre numéro (eg: un mobile).";
$text['desc-src-num']['fr-fr'] = "Choisir votre numéro de téléphone. Il peut être une extension du système, ou tout autre numéro (eg: un mobile).";
$text['desc-src-num']['he-il'] = "תכניס את מספר הטלפון שלך. זה יכול להיות שלוחה במערכת, או מספר אחר (למשל: טלפון נייד).";
$text['desc-src-num']['it-it'] = "Inserisci il tuo numero di telefono. Può essere un interno del centralino o un altro numero (es. numero di cellulare).";
$text['desc-src-num']['ka-ge'] = "შეიყვანეთ თქვენი ტელეფონის ნომერი. ეს, შეიძლება, გაფართოება იყოს, ან სხვა (მაგ: მობილური ტელეფონი).";
$text['desc-src-num']['nl-nl'] = "Voer he telefoonnummer in. Dit kan een toestel op het systeem of een willkeurig ander nummer (bv. Mobiel nummer) zijn.";
$text['desc-src-num']['pl-pl'] = "Wprowadź swój numer telefonu. Może to być numer wewnętrzny w systemie lub inny numer (np. telefon komórkowy).";
$text['desc-src-num']['pt-br'] = "Entre com seu númerop de telefone. Pode ser um ramal ou outro número (ex: número de celular).";
@@ -294,12 +318,14 @@ $text['label-dest-num']['ar-eg'] = "رقم الوجهة";
$text['label-dest-num']['de-at'] = "Ziel Rufnummer";
$text['label-dest-num']['de-ch'] = "Ziel Rufnummer";
$text['label-dest-num']['de-de'] = "Ziel Rufnummer";
$text['label-dest-num']['el-gr'] = "Αριθμός προορισμού";
$text['label-dest-num']['es-cl'] = "Número de destino";
$text['label-dest-num']['es-mx'] = "Número de destino";
$text['label-dest-num']['fr-ca'] = "Numéro du destination";
$text['label-dest-num']['fr-fr'] = "Numéro du destination";
$text['label-dest-num']['he-il'] = "מספר יעד";
$text['label-dest-num']['it-it'] = "Numero Destinazione";
$text['label-dest-num']['ka-ge'] = "დანიშნულების ნომერი";
$text['label-dest-num']['nl-nl'] = "Bestemmingsnummer";
$text['label-dest-num']['pl-pl'] = "Numer docelowy";
$text['label-dest-num']['pt-br'] = "Número do Destino";
@@ -318,12 +344,14 @@ $text['desc-dest-num']['ar-eg'] = "أدخل الرقم للاتصال. يمكن
$text['desc-dest-num']['de-at'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['de-ch'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['de-de'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['el-gr'] = "Εισαγάγετε τον αριθμό που θέλετε να καλέσετε. Αυτό μπορεί να είναι μια επέκταση στο σύστημα, ένας άλλος αριθμός ή μια γουλιά. Τα Sip URI είναι της μορφής 5551234567@voip.example.com:5080 (5080 για freeswitch ή 5060 για άλλα συστήματα).";
$text['desc-dest-num']['es-cl'] = "Ingrese el número a llamar. Este puede ser una extensión en el sistema, otro número o un uri sip. Uri's sip son de la forma 5551234567@voip.example.com:5080 (5080 para freeswitch, o 5060 para otros sistemas).";
$text['desc-dest-num']['es-mx'] = "Ingrese el número a llamar. Este puede ser una extensión en el sistema, otro número o un uri sip. Uri's sip son de la forma 5551234567@voip.example.com:5080 (5080 para freeswitch, o 5060 para otros sistemas).";
$text['desc-dest-num']['fr-ca'] = "Choisir un numéro à appeler. Il peut être une extension du système, un autre numéro, une URI SIP. les URI SIP sont de la forme : 5551234567@voip.example.com:5080 (5080 pour freeswitch, ou 5060 pour d'autre système).";
$text['desc-dest-num']['fr-fr'] = "Choisir un numéro à appeler. Il peut être une extension du système, un autre numéro, une URI SIP. les URI SIP sont de la forme : 5551234567@voip.example.com:5080 (5080 pour freeswitch, ou 5060 pour d'autre système).";
$text['desc-dest-num']['he-il'] = "הזן את המספר להתקשרות. זה יכול להיות שלוחה במערכת, מספר אחר או לגימה אורי. URI של Sip הם בצורה 5551234567@voip.example.com:5080 (5080 עבור freeswitch, או 5060 עבור מערכות אחרות).";
$text['desc-dest-num']['it-it'] = "Inserisci il numero da chiamare. Può essere un interno del centralino, un altro numero o un uri sip. Gli uri SIP sono nella forma 5551234567@voip.example.com:5080 (5080 per freeswitch, or 5060 per altri sistemi).";
$text['desc-dest-num']['ka-ge'] = "შეიყვანეთ ნომერი, რომელზეც გნებავთ, დარეკოთ. შეიძლება იყოს გაფართოება, სხვა ნომერი ან SIP URI. SIP URI-ის სწორი ფორმატია 5551234567@voip.example.com:5080 (5080 freeswitch-სთვის, ან 5060 სხვა სისტემებისთვის).";
$text['desc-dest-num']['nl-nl'] = "Voer het te bellen nummer in. Dit kan een toestelnummer, een ander nummer of een SIP URI zijn.";
$text['desc-dest-num']['pl-pl'] = "Wprowadź numer, pod który chcesz zadzwonić. Może to być numer wewnętrzny w systemie, inny numer lub identyfikator sip uri. Sip URI mają postać 5551234567@voip.example.com:5080 (5080 dla Freeswitch lub 5060 dla innych systemów).";
$text['desc-dest-num']['pt-br'] = "Entre com o número a ser ligado. Pode ser um ramal, outro número, ou SIP URI. Exemplo de SIP URI: 12345678@voip.example.com:5080, sendo 5080 para o freeswitch ou 5060 para outros sistemas.";
@@ -342,12 +370,14 @@ $text['label-auto-answer']['ar-eg'] = "رد ألي";
$text['label-auto-answer']['de-at'] = "Automatische Rufannahme";
$text['label-auto-answer']['de-ch'] = "Automatische Rufannahme";
$text['label-auto-answer']['de-de'] = "Automatische Rufannahme";
$text['label-auto-answer']['el-gr'] = "Αυτόματη απάντηση";
$text['label-auto-answer']['es-cl'] = "respuesta automática";
$text['label-auto-answer']['es-mx'] = "respuesta automática";
$text['label-auto-answer']['fr-ca'] = "Réponse automatique";
$text['label-auto-answer']['fr-fr'] = "Réponse automatique";
$text['label-auto-answer']['he-il'] = "תשובה אוטומטית";
$text['label-auto-answer']['it-it'] = "Risposta Automatica";
$text['label-auto-answer']['ka-ge'] = "ავტომატური პასუხი(ავტომოპასუხე)";
$text['label-auto-answer']['nl-nl'] = "Automatisch beantwoorden";
$text['label-auto-answer']['pl-pl'] = "Automatyczna odpowiedź";
$text['label-auto-answer']['pt-br'] = "Resposta Automática";
@@ -366,12 +396,14 @@ $text['desc-auto-answer']['ar-eg'] = "حدد ما إذا كنت تريد تمك
$text['desc-auto-answer']['de-at'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['de-ch'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['de-de'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιηθεί η αυτόματη απάντηση.";
$text['desc-auto-answer']['es-cl'] = "Indique si desea activar la respuesta automática.";
$text['desc-auto-answer']['es-mx'] = "Indique si desea activar la respuesta automática.";
$text['desc-auto-answer']['fr-ca'] = "Activer ou non la réponse automatique.";
$text['desc-auto-answer']['fr-fr'] = "Activer ou non la réponse automatique.";
$text['desc-auto-answer']['he-il'] = "בחר אם לאפשר מענה אוטומטי.";
$text['desc-auto-answer']['it-it'] = "Seleziona per abilitare la risposta automatica.";
$text['desc-auto-answer']['ka-ge'] = "აირჩიეთ ავტომოპასუხის ჩასართავად.";
$text['desc-auto-answer']['nl-nl'] = "Selecteer of deze automatisch beantwoord moet worden.";
$text['desc-auto-answer']['pl-pl'] = "Wybierz, czy włączyć automatyczną odpowiedź.";
$text['desc-auto-answer']['pt-br'] = "Ativar ou desativar a resposta automática.";
@@ -390,12 +422,14 @@ $text['label-record']['ar-eg'] = "سِجِلّ";
$text['label-record']['de-at'] = "Aufzeichnen";
$text['label-record']['de-ch'] = "Aufzeichnen";
$text['label-record']['de-de'] = "Aufzeichnen";
$text['label-record']['el-gr'] = "Ρεκόρ";
$text['label-record']['es-cl'] = "Grabar";
$text['label-record']['es-mx'] = "Grabar";
$text['label-record']['fr-ca'] = "Enregistrer";
$text['label-record']['fr-fr'] = "Enregistrer";
$text['label-record']['he-il'] = "תקליט";
$text['label-record']['it-it'] = "Registra";
$text['label-record']['ka-ge'] = "ჩაწერა";
$text['label-record']['nl-nl'] = "Opnemen";
$text['label-record']['pl-pl'] = "Nagrywać";
$text['label-record']['pt-br'] = "Gravar";
@@ -414,12 +448,14 @@ $text['label-true']['ar-eg'] = "حقيقي";
$text['label-true']['de-at'] = "ein";
$text['label-true']['de-ch'] = "ein";
$text['label-true']['de-de'] = "ein";
$text['label-true']['el-gr'] = "αληθής";
$text['label-true']['es-cl'] = "verdadero";
$text['label-true']['es-mx'] = "verdadero";
$text['label-true']['fr-ca'] = "oui";
$text['label-true']['fr-fr'] = "oui";
$text['label-true']['he-il'] = "נָכוֹן";
$text['label-true']['it-it'] = "vero";
$text['label-true']['ka-ge'] = "ჭეშმარიტი";
$text['label-true']['nl-nl'] = "aan";
$text['label-true']['pl-pl'] = "PRAWDA";
$text['label-true']['pt-br'] = "sim";
@@ -438,12 +474,14 @@ $text['label-false']['ar-eg'] = "خطأ شنيع";
$text['label-false']['de-at'] = "aus";
$text['label-false']['de-ch'] = "aus";
$text['label-false']['de-de'] = "aus";
$text['label-false']['el-gr'] = "ψευδής";
$text['label-false']['es-cl'] = "falso";
$text['label-false']['es-mx'] = "falso";
$text['label-false']['fr-ca'] = "non";
$text['label-false']['fr-fr'] = "non";
$text['label-false']['he-il'] = "שֶׁקֶר";
$text['label-false']['it-it'] = "falso";
$text['label-false']['ka-ge'] = "ცრუ";
$text['label-false']['nl-nl'] = "uit";
$text['label-false']['pl-pl'] = "FAŁSZ";
$text['label-false']['pt-br'] = "não";
@@ -462,12 +500,14 @@ $text['desc-record']['ar-eg'] = "حدد ما إذا كنت تريد تسجيل
$text['desc-record']['de-at'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['de-ch'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['de-de'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['el-gr'] = "Επιλέξτε εάν θα ηχογραφήσετε την κλήση.";
$text['desc-record']['es-cl'] = "Indique si desea grabar la llamada.";
$text['desc-record']['es-mx'] = "Indique si desea grabar la llamada.";
$text['desc-record']['fr-ca'] = "Choisir si vous voulez enregistrer l'appel.";
$text['desc-record']['fr-fr'] = "Choisir si vous voulez enregistrer l'appel.";
$text['desc-record']['he-il'] = "בחר אם להקליט את השיחה.";
$text['desc-record']['it-it'] = "Seleziona per registrare la telefonata.";
$text['desc-record']['ka-ge'] = "აირჩიეთ, მოხდება თუ არა ზარის ჩაწერა.";
$text['desc-record']['nl-nl'] = "Kies of the gesprek moet worden opgenomen.";
$text['desc-record']['pl-pl'] = "Wybierz, czy chcesz nagrać rozmowę.";
$text['desc-record']['pt-br'] = "Escolha se quer gravar chamada.";
@@ -486,12 +526,14 @@ $text['label-ringback']['ar-eg'] = "رنين مرة أخرى";
$text['label-ringback']['de-at'] = "Rufton";
$text['label-ringback']['de-ch'] = "Rufton";
$text['label-ringback']['de-de'] = "Rufton";
$text['label-ringback']['el-gr'] = "Καλώ πίσω";
$text['label-ringback']['es-cl'] = "Regresar tono";
$text['label-ringback']['es-mx'] = "Regresar tono";
$text['label-ringback']['fr-ca'] = "Retour de sonnerie";
$text['label-ringback']['fr-fr'] = "Retour de sonnerie";
$text['label-ringback']['he-il'] = "לצלצל בחזרה";
$text['label-ringback']['it-it'] = "Tono";
$text['label-ringback']['ka-ge'] = "გადარეკვა";
$text['label-ringback']['nl-nl'] = "Terugbellen";
$text['label-ringback']['pl-pl'] = "Oddzwonienie";
$text['label-ringback']['pt-br'] = "Tocar de volta (Ring Back)";
@@ -510,12 +552,14 @@ $text['desc-ringback']['ar-eg'] = "يحدد ما سوف تسمعه أثناء ا
$text['desc-ringback']['de-at'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['de-ch'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['de-de'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['el-gr'] = "Καθορίζει τι θα ακούτε ενώ καλείται ο προορισμός. Οι επιλογές είναι μουσική (μουσική σε αναμονή) κουδούνισμα (ήχος κλήσης).";
$text['desc-ringback']['es-cl'] = "Defina qué desea escuchar mientras se llama al destinatario. Las opciones son música (música en espera) o tono de marcado";
$text['desc-ringback']['es-mx'] = "Defina qué desea escuchar mientras se llama al destinatario. Las opciones son música (música en espera) o tono de marcado";
$text['desc-ringback']['fr-ca'] = "Défini ce vous entendrez pendant que la destination sera appelée. Les choix sont musique (musique d'attente) sonnerie.";
$text['desc-ringback']['fr-fr'] = "Défini ce vous entendrez pendant que la destination sera appelée. Les choix sont musique (musique d'attente) sonnerie.";
$text['desc-ringback']['he-il'] = "מגדיר מה תשמע בזמן שהיעד נקרא. האפשרויות הן מוזיקה (מוזיקה בהמתנה) צלצול (צלצול).";
$text['desc-ringback']['it-it'] = "Definisce cosa sentirai mentre il destinatario è chiamato. Le scelte sono musica (music on hold) o tono (ring tone).";
$text['desc-ringback']['ka-ge'] = "აღწერს, რას გაიგებთ, სანამ დანიშნულებას ვურეკავთ. არჩევანია მუსიკა (მოლოდინის) ან ზარი (ზარის ხმა).";
$text['desc-ringback']['nl-nl'] = "Kies wachtmuziek terwijl de bestemming gebeld wordt. De keuze is wachtmuziek of beltoon.";
$text['desc-ringback']['pl-pl'] = "Określa, co będziesz słyszeć podczas wywoływania miejsca docelowego. Dostępne opcje to muzyka (muzyka wstrzymana) dzwonek (dzwonek).";
$text['desc-ringback']['pt-br'] = "Definir o que deseja escutar enquanto o destino não atende. As escolhas são música (música em espera) ring (tom de chamada).";
@@ -534,12 +578,14 @@ $text['opt-usring']['ar-eg'] = "us-ring";
$text['opt-usring']['de-at'] = "us-ring";
$text['opt-usring']['de-ch'] = "us-ring";
$text['opt-usring']['de-de'] = "us-ring";
$text['opt-usring']['el-gr'] = "us-ring";
$text['opt-usring']['es-cl'] = "us-ring";
$text['opt-usring']['es-mx'] = "us-ring";
$text['opt-usring']['fr-ca'] = "us-ring";
$text['opt-usring']['fr-fr'] = "us-ring";
$text['opt-usring']['he-il'] = "us-ring";
$text['opt-usring']['it-it'] = "us-ring";
$text['opt-usring']['ka-ge'] = "us-ring";
$text['opt-usring']['nl-nl'] = "us-ring";
$text['opt-usring']['pl-pl'] = "us-ring";
$text['opt-usring']['pt-br'] = "us-ring";
@@ -558,12 +604,14 @@ $text['opt-frring']['ar-eg'] = "fr-ring";
$text['opt-frring']['de-at'] = "fr-ring";
$text['opt-frring']['de-ch'] = "fr-ring";
$text['opt-frring']['de-de'] = "fr-ring";
$text['opt-frring']['el-gr'] = "fr-ring";
$text['opt-frring']['es-cl'] = "fr-ring";
$text['opt-frring']['es-mx'] = "fr-ring";
$text['opt-frring']['fr-ca'] = "fr-ring";
$text['opt-frring']['fr-fr'] = "fr-ring";
$text['opt-frring']['he-il'] = "fr-ring";
$text['opt-frring']['it-it'] = "fr-ring";
$text['opt-frring']['ka-ge'] = "fr-ring";
$text['opt-frring']['nl-nl'] = "fr-ring";
$text['opt-frring']['pl-pl'] = "fr-ring";
$text['opt-frring']['pt-br'] = "fr-ring";
@@ -582,12 +630,14 @@ $text['opt-ptring']['ar-eg'] = "pt-ring";
$text['opt-ptring']['de-at'] = "pt-ring";
$text['opt-ptring']['de-ch'] = "pt-ring";
$text['opt-ptring']['de-de'] = "pt-ring";
$text['opt-ptring']['el-gr'] = "pt-ring";
$text['opt-ptring']['es-cl'] = "pt-ring";
$text['opt-ptring']['es-mx'] = "pt-ring";
$text['opt-ptring']['fr-ca'] = "pt-ring";
$text['opt-ptring']['fr-fr'] = "pt-ring";
$text['opt-ptring']['he-il'] = "pt-ring";
$text['opt-ptring']['it-it'] = "pt-ring";
$text['opt-ptring']['ka-ge'] = "pt-ring";
$text['opt-ptring']['nl-nl'] = "pt-ring";
$text['opt-ptring']['pl-pl'] = "pt-ring";
$text['opt-ptring']['pt-br'] = "pt-ring";
@@ -606,12 +656,14 @@ $text['opt-ukring']['ar-eg'] = "uk-ring";
$text['opt-ukring']['de-at'] = "uk-ring";
$text['opt-ukring']['de-ch'] = "uk-ring";
$text['opt-ukring']['de-de'] = "uk-ring";
$text['opt-ukring']['el-gr'] = "uk-ring";
$text['opt-ukring']['es-cl'] = "uk-ring";
$text['opt-ukring']['es-mx'] = "uk-ring";
$text['opt-ukring']['fr-ca'] = "uk-ring";
$text['opt-ukring']['fr-fr'] = "uk-ring";
$text['opt-ukring']['he-il'] = "uk-ring";
$text['opt-ukring']['it-it'] = "uk-ring";
$text['opt-ukring']['ka-ge'] = "uk-ring";
$text['opt-ukring']['nl-nl'] = "uk-ring";
$text['opt-ukring']['pl-pl'] = "uk-ring";
$text['opt-ukring']['pt-br'] = "uk-ring";
@@ -630,12 +682,14 @@ $text['opt-rsring']['ar-eg'] = "rs-ring";
$text['opt-rsring']['de-at'] = "rs-ring";
$text['opt-rsring']['de-ch'] = "rs-ring";
$text['opt-rsring']['de-de'] = "rs-ring";
$text['opt-rsring']['el-gr'] = "rs-ring";
$text['opt-rsring']['es-cl'] = "rs-ring";
$text['opt-rsring']['es-mx'] = "rs-ring";
$text['opt-rsring']['fr-ca'] = "rs-ring";
$text['opt-rsring']['fr-fr'] = "rs-ring";
$text['opt-rsring']['he-il'] = "rs-ring";
$text['opt-rsring']['it-it'] = "rs-ring";
$text['opt-rsring']['ka-ge'] = "rs-ring";
$text['opt-rsring']['nl-nl'] = "rs-ring";
$text['opt-rsring']['pl-pl'] = "rs-ring";
$text['opt-rsring']['pt-br'] = "rs-ring";
@@ -654,12 +708,14 @@ $text['opt-ruring']['ar-eg'] = "ru-ring";
$text['opt-ruring']['de-at'] = "ru-ring";
$text['opt-ruring']['de-ch'] = "ru-ring";
$text['opt-ruring']['de-de'] = "ru-ring";
$text['opt-ruring']['el-gr'] = "ru-ring";
$text['opt-ruring']['es-cl'] = "ru-ring";
$text['opt-ruring']['es-mx'] = "ru-ring";
$text['opt-ruring']['fr-ca'] = "ru-ring";
$text['opt-ruring']['fr-fr'] = "ru-ring";
$text['opt-ruring']['he-il'] = "ru-ring";
$text['opt-ruring']['it-it'] = "ru-ring";
$text['opt-ruring']['ka-ge'] = "ru-ring";
$text['opt-ruring']['nl-nl'] = "ru-ring";
$text['opt-ruring']['pl-pl'] = "ru-ring";
$text['opt-ruring']['pt-br'] = "ru-ring";
@@ -678,12 +734,14 @@ $text['opt-itring']['ar-eg'] = "it-ring";
$text['opt-itring']['de-at'] = "it-ring";
$text['opt-itring']['de-ch'] = "it-ring";
$text['opt-itring']['de-de'] = "it-ring";
$text['opt-itring']['el-gr'] = "it-ring";
$text['opt-itring']['es-cl'] = "it-ring";
$text['opt-itring']['es-mx'] = "it-ring";
$text['opt-itring']['fr-ca'] = "it-ring";
$text['opt-itring']['fr-fr'] = "it-ring";
$text['opt-itring']['he-il'] = "it-ring";
$text['opt-itring']['it-it'] = "it-ring";
$text['opt-itring']['ka-ge'] = "it-ring";
$text['opt-itring']['nl-nl'] = "it-ring";
$text['opt-itring']['pl-pl'] = "it-ring";
$text['opt-itring']['pt-br'] = "it-ring";
@@ -702,12 +760,14 @@ $text['opt-dering']['ar-eg'] = "de-ring";
$text['opt-dering']['de-at'] = "de-ring";
$text['opt-dering']['de-ch'] = "de-ring";
$text['opt-dering']['de-de'] = "de-ring";
$text['opt-dering']['el-gr'] = "de-ring";
$text['opt-dering']['es-cl'] = "de-ring";
$text['opt-dering']['es-mx'] = "de-ring";
$text['opt-dering']['fr-ca'] = "de-ring";
$text['opt-dering']['fr-fr'] = "de-ring";
$text['opt-dering']['he-il'] = "de-ring";
$text['opt-dering']['it-it'] = "de-ring";
$text['opt-dering']['ka-ge'] = "de-ring";
$text['opt-dering']['nl-nl'] = "de-ring";
$text['opt-dering']['pl-pl'] = "de-ring";
$text['opt-dering']['pt-br'] = "de-ring";
@@ -726,12 +786,14 @@ $text['opt-moh']['ar-eg'] = "موسيقى";
$text['opt-moh']['de-at'] = "Musik";
$text['opt-moh']['de-ch'] = "Musik";
$text['opt-moh']['de-de'] = "Musik";
$text['opt-moh']['el-gr'] = "ΜΟΥΣΙΚΗ";
$text['opt-moh']['es-cl'] = "musica";
$text['opt-moh']['es-mx'] = "musica";
$text['opt-moh']['fr-ca'] = "musique";
$text['opt-moh']['fr-fr'] = "musique";
$text['opt-moh']['he-il'] = "מוּסִיקָה";
$text['opt-moh']['it-it'] = "musica";
$text['opt-moh']['ka-ge'] = "მუსიკა";
$text['opt-moh']['nl-nl'] = "muziek";
$text['opt-moh']['pl-pl'] = "muzyka";
$text['opt-moh']['pt-br'] = "música";
@@ -750,12 +812,14 @@ $text['button-call']['ar-eg'] = "يتصل";
$text['button-call']['de-at'] = "Anrufen";
$text['button-call']['de-ch'] = "Anrufen";
$text['button-call']['de-de'] = "Anrufen";
$text['button-call']['el-gr'] = "Κλήση";
$text['button-call']['es-cl'] = "Llamar";
$text['button-call']['es-mx'] = "Llamar";
$text['button-call']['fr-ca'] = "appel";
$text['button-call']['fr-fr'] = "appel";
$text['button-call']['he-il'] = "שִׂיחָה";
$text['button-call']['it-it'] = "Chiama";
$text['button-call']['ka-ge'] = "დარეკვა";
$text['button-call']['nl-nl'] = "Bel";
$text['button-call']['pl-pl'] = "Dzwonić";
$text['button-call']['pt-br'] = "Chamada";

Some files were not shown because too many files have changed in this diff Show More