1034 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
3648 changed files with 391853 additions and 97566 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'] = "";
+54 -13
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.
*/
@@ -151,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])) {
@@ -169,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
@@ -320,6 +359,7 @@
}
}
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -434,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";
+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'] = "";
+2 -10
View File
@@ -29,7 +29,6 @@
//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) {
@@ -75,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);
@@ -108,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);
@@ -133,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);
@@ -147,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);
@@ -165,7 +159,6 @@
//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) {
@@ -184,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);
+44
View File
@@ -13,6 +13,7 @@ $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";
@@ -21,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'] = "액세스 제어";
@@ -38,6 +40,7 @@ $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";
@@ -46,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'] = "노드";
@@ -63,6 +67,7 @@ $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ó";
@@ -71,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'] = "마디";
@@ -88,6 +94,7 @@ $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";
@@ -96,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'] = "액세스 제어";
@@ -113,6 +121,7 @@ $text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'acc
$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.";
@@ -121,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 주소 범위를 허용하거나 거부할 수 있습니다.";
@@ -138,6 +148,7 @@ $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";
@@ -146,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'] = "유형";
@@ -163,6 +175,7 @@ $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";
@@ -171,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'] = "도메인";
@@ -188,6 +202,7 @@ $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";
@@ -196,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'] = "설명";
@@ -213,6 +229,7 @@ $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";
@@ -221,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";
@@ -238,6 +256,7 @@ $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";
@@ -246,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'] = "부인하다";
@@ -263,6 +283,7 @@ $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";
@@ -271,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'] = "허용하다";
@@ -288,6 +310,7 @@ $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";
@@ -296,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'] = "이름";
@@ -313,6 +337,7 @@ $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";
@@ -321,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'] = "기본";
@@ -338,6 +364,7 @@ $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";
@@ -346,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'] = "노드";
@@ -363,6 +391,7 @@ $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";
@@ -371,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'] = "설명";
@@ -388,6 +418,7 @@ $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.";
@@ -396,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'] = "유형을 선택합니다.";
@@ -413,6 +445,7 @@ $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.";
@@ -421,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'] = "도메인 이름을 입력합니다.";
@@ -438,6 +472,7 @@ $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.";
@@ -446,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'] = "설명을 입력합니다.";
@@ -463,6 +499,7 @@ $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.";
@@ -471,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 범위를 입력합니다.";
@@ -488,6 +526,7 @@ $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.";
@@ -496,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'] = "이름을 입력하세요.";
@@ -513,6 +553,7 @@ $text['description-access_control_description']['fr-ca'] = "Entrez la descriptio
$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.";
@@ -521,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'] = "설명을 입력하세요";
@@ -538,6 +580,7 @@ $text['description-access_control_default']['fr-ca'] = "Sélectionnez le type de
$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.";
@@ -546,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,120 +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
event_socket::async("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
event_socket::async("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);
}
}
}
@@ -159,115 +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
event_socket::async("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";
@@ -13,6 +13,7 @@ $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";
@@ -21,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'] = "운영자 패널";
@@ -38,6 +40,7 @@ $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";
@@ -46,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'] = "주문형";
@@ -63,6 +67,7 @@ $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";
@@ -71,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'] = "쉬는 중";
@@ -88,6 +94,7 @@ $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";
@@ -96,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'] = "로그아웃됨/알 수 없음";
@@ -113,6 +121,7 @@ $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";
@@ -121,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'] = "로그아웃됨";
@@ -138,6 +148,7 @@ $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";
@@ -146,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'] = "방해하지 마";
@@ -163,6 +175,7 @@ $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)";
@@ -171,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'] = "사용 가능(주문형)";
@@ -188,6 +202,7 @@ $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";
@@ -196,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'] = "사용 가능";
@@ -213,6 +229,7 @@ $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";
@@ -221,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'] = "새로고침 일시중지";
@@ -238,6 +256,7 @@ $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";
@@ -246,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'] = "새로 고침 활성화";
@@ -263,6 +283,7 @@ $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";
@@ -271,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'] = "녹음";
@@ -288,6 +310,7 @@ $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";
@@ -296,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'] = "기록";
@@ -313,6 +337,7 @@ $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";
@@ -321,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'] = "기타 확장";
@@ -338,6 +364,7 @@ $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";
@@ -346,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'] = "확장 프로그램이 없습니다.";
@@ -363,6 +391,7 @@ $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";
@@ -371,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'] = "잠깐만";
@@ -388,6 +418,7 @@ $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";
@@ -396,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'] = "엿듣다";
@@ -413,6 +445,7 @@ $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";
@@ -421,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'] = "통화 그룹";
@@ -438,6 +472,7 @@ $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";
@@ -446,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'] = "통화 방향";
@@ -463,6 +499,7 @@ $text['label-filter']['fr-ca'] = "Filtre...";
$text['label-filter']['fr-fr'] = "Filtre...";
$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...";
@@ -471,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'] = "필터";
@@ -488,6 +526,7 @@ $text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destinat
$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";
@@ -496,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'] = "도청 대상 선택";
@@ -513,6 +553,7 @@ $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";
@@ -521,6 +562,7 @@ $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";
+7 -7
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
@@ -98,7 +98,7 @@
//update the user_status
if (is_uuid($call_center_agent_uuid)) {
$esl = event_socket::create();
$switch_cmd .= "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
$switch_cmd = "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
$switch_result = event_socket::api($switch_cmd);
}
@@ -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();
}
@@ -369,7 +369,7 @@ unset($refresh_default);
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
new loadXmlHttp(url, 'ajax_response');
}, refresh);
}
@@ -588,7 +588,7 @@ if (is_array($_SESSION['user']['extension'])) {
}
}
echo "<div id='ajax_reponse'></div>\n";
echo "<div id='ajax_response'></div>\n";
echo "<div id='cmd_response' style='display: none;'></div>\n";
echo "<br><br>\n";
@@ -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']);
@@ -97,7 +97,7 @@ if (!class_exists('basic_operator_panel')) {
//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'];
@@ -143,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];
+38 -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):
@@ -60,7 +60,7 @@ if (is_array($activity)) {
}
if (!empty($groups)) {
$groups = array_unique($groups);
sort($groups);
sort($groups);
}
//get the valet info
@@ -229,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'])) {
@@ -242,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;
@@ -293,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') {
@@ -319,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 {
@@ -336,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);
@@ -349,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 {
@@ -430,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";
}
@@ -475,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 {
@@ -554,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";
}
@@ -642,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;
@@ -657,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;
+68 -22
View File
@@ -13,6 +13,7 @@ $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";
@@ -21,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'] = "교량";
@@ -38,6 +40,7 @@ $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";
@@ -46,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'] = "다리";
@@ -63,6 +67,7 @@ $text['title_description-bridge']['fr-ca'] = "Ajouter des déclarations de pont
$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.";
@@ -71,34 +76,37 @@ $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'] = "";
$text['label-bridge_import']['de-ch'] = "";
$text['label-bridge_import']['de-de'] = "";
$text['label-bridge_import']['el-gr'] = "";
$text['label-bridge_import']['es-cl'] = "";
$text['label-bridge_import']['es-mx'] = "";
$text['label-bridge_import']['fr-ca'] = "";
$text['label-bridge_import']['fr-fr'] = "";
$text['label-bridge_import']['he-il'] = "";
$text['label-bridge_import']['it-it'] = "";
$text['label-bridge_import']['nl-nl'] = "";
$text['label-bridge_import']['pl-pl'] = "";
$text['label-bridge_import']['pt-br'] = "";
$text['label-bridge_import']['pt-pt'] = "";
$text['label-bridge_import']['ro-ro'] = "";
$text['label-bridge_import']['ru-ru'] = "";
$text['label-bridge_import']['sv-se'] = "";
$text['label-bridge_import']['uk-ua'] = "";
$text['label-bridge_import']['zh-cn'] = "";
$text['label-bridge_import']['ja-jp'] = "";
$text['label-bridge_import']['ko-kr'] = "";
$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";
@@ -113,6 +121,7 @@ $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";
@@ -121,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'] = "이름";
@@ -138,6 +148,7 @@ $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.";
@@ -146,6 +157,7 @@ $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'] = "이름을 입력하세요.";
@@ -163,6 +175,7 @@ $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";
@@ -171,6 +184,7 @@ $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'] = "행동";
@@ -188,6 +202,7 @@ $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.";
@@ -196,6 +211,7 @@ $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'] = "브리지 작업을 선택합니다.";
@@ -213,6 +229,7 @@ $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";
@@ -221,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'] = "목적지";
@@ -238,6 +256,7 @@ $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.";
@@ -246,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'] = "목적지를 입력하세요.";
@@ -263,6 +283,7 @@ $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";
@@ -271,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'] = "사용";
@@ -288,6 +310,7 @@ $text['description-bridge_enabled']['fr-ca'] = "Sélectionnez pour activer ou d
$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.";
@@ -296,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'] = "활성화 또는 비활성화를 선택합니다.";
@@ -313,6 +337,7 @@ $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";
@@ -322,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'] = "설명";
@@ -339,6 +365,7 @@ $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.";
@@ -347,6 +374,7 @@ $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'] = "설명을 입력합니다.";
@@ -364,6 +392,7 @@ $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";
@@ -372,6 +401,7 @@ $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'] = "프로필";
@@ -389,6 +419,7 @@ $text['description-bridge_profile']['fr-ca'] = "Sélectionnez le profil à utili
$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";
@@ -397,6 +428,7 @@ $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'] = "여기에 프로필을 입력하세요.";
@@ -414,6 +446,7 @@ $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";
@@ -422,6 +455,7 @@ $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'] = "변수";
@@ -439,6 +473,7 @@ $text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la
$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.";
@@ -447,6 +482,7 @@ $text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru varia
$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'] = "변수의 값을 설정합니다.";
@@ -464,6 +500,7 @@ $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";
@@ -472,6 +509,7 @@ $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'] = "게이트웨이";
@@ -489,6 +527,7 @@ $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.";
@@ -497,6 +536,7 @@ $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'] = "게이트웨이를 선택합니다.";
@@ -514,6 +554,7 @@ $text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la
$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.";
@@ -522,6 +563,7 @@ $text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru varia
$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'] = "변수의 값을 설정합니다.";
@@ -539,6 +581,7 @@ $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";
@@ -547,6 +590,7 @@ $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'] = "대상 번호";
@@ -564,6 +608,7 @@ $text['description-destination_number']['fr-ca'] = "Définissez le numéro de de
$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.";
@@ -572,6 +617,7 @@ $text['description-destination_number']['ro-ro'] = "Setați numărul de destina
$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";
+3 -1
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.
*/
@@ -420,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";
@@ -600,6 +601,7 @@
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
if (!empty($bridge_uuid)) {
+5 -1
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) 2019-2023
Portions created by the Initial Developer are Copyright (C) 2019-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -156,6 +156,7 @@
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
@@ -192,6 +193,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br /><br />\n";
echo "<input name='action' type='hidden' value='import'>\n";
@@ -353,6 +355,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";
@@ -423,6 +426,7 @@
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<br><br>";
echo "<input name='type' type='hidden' value='csv'>\n";
+20 -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,7 +157,7 @@
//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']);
@@ -193,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";
@@ -230,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')) {
@@ -267,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";
+11 -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";
@@ -194,4 +202,4 @@
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>
?>
-4
View File
@@ -27,7 +27,6 @@
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";
@@ -37,17 +36,14 @@ if ($domains_processed == 1) {
$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);
}
?>
+114 -24
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,6 +1137,7 @@ $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.";
@@ -1061,6 +1146,7 @@ $text['description-action']['ro-ro'] = "Setați o acțiune pentru apelurile de l
$text['description-action']['ru-ru'] = "Установите действие для вызовов с данного номера.";
$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";
+8 -7
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):
@@ -103,8 +103,7 @@
$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 ( ";
@@ -115,7 +114,7 @@
$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) {
@@ -181,7 +180,7 @@
$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) {
@@ -222,12 +221,12 @@
$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']);
@@ -278,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')) {
@@ -393,6 +393,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+23 -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):
@@ -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 = '';
@@ -75,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 ?? '');
@@ -155,7 +158,6 @@
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$parameters['domain_uuid'] = $domain_uuid;
}
$database = new database;
$rows = $database->select($sql, $parameters);
if (!empty($rows)) {
@@ -164,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);
@@ -175,7 +176,7 @@
}
}
//if user doesn't have call block extension then use the assigned extension_uuid
//if user doesn't have call block all then use the assigned extension_uuid
if (!permission_exists('call_block_extension')) {
$extension_uuid = $_SESSION['user']['extension'][0]['extension_uuid'];
}
@@ -198,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']);
@@ -225,7 +224,6 @@
$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
@@ -252,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']);
@@ -279,7 +275,6 @@
$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"];
@@ -311,7 +306,6 @@
$sql .= "and enabled = 'true' ";
$sql .= "order by extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$extensions = $database->select($sql, $parameters);
}
@@ -327,7 +321,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ivr'))
// $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);
}
@@ -343,7 +336,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
// $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);
}
@@ -359,7 +351,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
$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
@@ -367,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
@@ -405,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";
@@ -500,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";
}
@@ -510,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";
}
@@ -520,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";
}
@@ -530,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";
}
@@ -599,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") {
@@ -612,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'];
}
@@ -630,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' ";
@@ -638,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";
@@ -656,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";
@@ -678,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');"])]);
}
@@ -691,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."\"";
@@ -761,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";
+79 -49
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';
@@ -84,8 +88,7 @@ if (!class_exists('call_block')) {
$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'];
@@ -108,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
@@ -160,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'];
@@ -183,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
@@ -238,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) {
@@ -259,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
@@ -303,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;
@@ -325,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"]);
}
@@ -351,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"]);
}
@@ -393,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'];
@@ -404,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
@@ -431,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
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.";
+85 -7
View File
@@ -13,6 +13,7 @@ $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";
@@ -21,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'] = "통화 방송";
@@ -38,6 +40,7 @@ $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";
@@ -46,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'] = "통화 브로드캐스트";
@@ -63,6 +67,7 @@ $text['title_description-call_broadcast']['fr-ca'] = "Gérez la livraison de mes
$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.";
@@ -71,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'] = "대량 수신자에게 미리 녹음된 메시지 전달을 관리합니다.";
@@ -88,6 +94,7 @@ $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";
@@ -96,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'] = "진실";
@@ -113,6 +121,7 @@ $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";
@@ -121,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'] = "거짓";
@@ -138,6 +148,7 @@ $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";
@@ -146,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'] = "통화 보기";
@@ -163,6 +175,7 @@ $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";
@@ -171,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'] = "시작 시간";
@@ -188,6 +202,7 @@ $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";
@@ -196,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'] = "타임아웃";
@@ -213,6 +229,7 @@ $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";
@@ -221,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'] = "전화 번호";
@@ -238,6 +256,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'] = "Boodschappen";
$text['label-message']['pl-pl'] = "Wiadomość";
$text['label-message']['pt-br'] = "Mensagem";
@@ -246,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'] = "메시지";
@@ -263,6 +283,7 @@ $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";
@@ -271,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'] = "시작되었습니다";
@@ -288,6 +310,7 @@ $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";
@@ -296,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'] = "목적지 번호";
@@ -313,6 +337,7 @@ $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";
@@ -321,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'] = "동시 제한";
@@ -338,14 +364,16 @@ $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 번호";
@@ -363,14 +391,16 @@ $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 이름";
@@ -388,6 +418,7 @@ $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";
@@ -396,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'] = "통화 방송";
@@ -413,6 +445,7 @@ $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";
@@ -421,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'] = "통화 브로드캐스트";
@@ -438,6 +472,7 @@ $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";
@@ -446,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'] = "음성 메일 감지";
@@ -463,6 +499,7 @@ $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";
@@ -471,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'] = "통행료 허용";
@@ -488,6 +526,7 @@ $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";
@@ -496,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'] = "계정 코드";
@@ -513,6 +553,7 @@ $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";
@@ -521,6 +562,7 @@ $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 파일";
@@ -538,6 +580,7 @@ $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...";
@@ -546,6 +589,7 @@ $text['label-list_example']['ro-ro'] = "Număr|Primul,UltimulNumăr|Primul,Ultim
$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'] = "번호|이름, 성번호|이름, 성...";
@@ -563,6 +607,7 @@ $text['description-start_time']['fr-ca'] = "La date et l'heure auxquelles commen
$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.";
@@ -571,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'] = "통화 전송을 시작할 날짜 및 시간입니다.";
@@ -588,6 +634,7 @@ $text['description-accountcode']['fr-ca'] = "Utilisé le plus souvent pour les s
$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.";
@@ -596,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'] = "청구 시스템에 가장 자주 사용됩니다.";
@@ -613,6 +661,7 @@ $text['description-timeout']['fr-ca'] = "Spécifiez le délai d'expiration absol
$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.";
@@ -621,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'] = "절대 제한 시간을 초 단위로 지정합니다.";
@@ -638,6 +688,7 @@ $text['description-phone']['fr-ca'] = "Optionnel, Insérer une liste de numéros
$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.";
@@ -646,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 파일을 선택하거나 위에 표시된 형식으로 한 줄에 하나씩 전화번호를 입력합니다.";
@@ -663,6 +715,7 @@ $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.";
@@ -671,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'] = "여기에 이름을 입력합니다.";
@@ -688,6 +742,7 @@ $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";
@@ -696,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'] = "여기에 설명을 입력합니다.";
@@ -713,6 +769,7 @@ $text['description-destination']['fr-ca'] = "Emettre l'appel vers un SVI, salle
$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. ";
@@ -721,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 메뉴, 회의실 또는 기타 번호로 통화를 보냅니다.";
@@ -738,6 +796,7 @@ $text['description-concurrent-limit']['fr-ca'] = "Limite le nombre d'appels conc
$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.";
@@ -746,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'] = "대략적인 동시 호출 수를 제한합니다. 제한 없이 비워 둡니다.";
@@ -763,6 +823,7 @@ $text['description-caller-id-number']['fr-ca'] = "Applicable uniquement si le fo
$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.";
@@ -771,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";
@@ -788,6 +850,7 @@ $text['description-caller-id-name']['fr-ca'] = "Applicable uniquement si le four
$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).";
@@ -796,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 이름 설정을 허용하는 경우에 적용됩니다. 기본값: 익명";
@@ -813,14 +877,16 @@ $text['description-avmd']['fr-ca'] = "Indiquez si vous souhaitez activer ou dés
$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'] = "음성 메일 메시징 및 자동 응답기 시스템 감지를 활성화할지 비활성화할지 선택합니다.";
@@ -838,6 +904,7 @@ $text['description-broadcast_toll_allow']['fr-ca'] = "Insérer les droits d'acc
$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)";
@@ -846,6 +913,7 @@ $text['description-broadcast_toll_allow']['ro-ro'] = "Introduceți valoarea taxe
$text['description-broadcast_toll_allow']['ru-ru'] = "Введите здесь доступные значения. (Примеры: 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'] = "여기에 통행료 허용 값을 입력합니다. (예: 국내, 국제, 지역)";
@@ -863,6 +931,7 @@ $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";
@@ -871,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'] = "업데이트 완료";
@@ -888,6 +958,7 @@ $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";
@@ -896,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'] = "제공하십시오: 이름";
@@ -913,6 +985,7 @@ $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?";
@@ -921,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'] = "정말 삭제하시겠습니까?";
@@ -938,6 +1012,7 @@ $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";
@@ -946,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'] = "추가완료";
@@ -963,6 +1039,7 @@ $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";
@@ -971,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";
?>
?>
+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.";
+44
View File
@@ -13,6 +13,7 @@ $text['title-call_center_queue_activity']['fr-ca'] = "Activité des files d'atte
$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";
@@ -39,6 +40,7 @@ $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";
@@ -65,6 +67,7 @@ $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?";
@@ -91,6 +94,7 @@ $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";
@@ -117,6 +121,7 @@ $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";
@@ -143,6 +148,7 @@ $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";
@@ -169,6 +175,7 @@ $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";
@@ -195,6 +202,7 @@ $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";
@@ -221,6 +229,7 @@ $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";
@@ -247,6 +256,7 @@ $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";
@@ -273,6 +283,7 @@ $text['label-tier_rule_wait_second']['fr-ca'] = "Attente en secondes de la règl
$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";
@@ -299,6 +310,7 @@ $text['label-tier_rule_wait_multiply_level']['fr-ca'] = "Règle d'attente multip
$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";
@@ -325,6 +337,7 @@ $text['label-tier_rule_no_agent_no_wait']['fr-ca'] = "Règle du Niveau Pas d'age
$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";
@@ -351,6 +364,7 @@ $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";
@@ -377,6 +391,7 @@ $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";
@@ -403,6 +418,7 @@ $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";
@@ -429,6 +445,7 @@ $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";
@@ -455,6 +472,7 @@ $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";
@@ -481,6 +499,7 @@ $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";
@@ -507,6 +526,7 @@ $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";
@@ -533,6 +553,7 @@ $text['description-status']['fr-ca'] = "Déconnecté - Impossible de recevoir le
$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.";
@@ -559,6 +580,7 @@ $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";
@@ -585,6 +607,7 @@ $text['description-state']['fr-ca'] = "Inactif : ne fait rien, aucun appel n'es
$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.";
@@ -611,6 +634,7 @@ $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";
@@ -637,6 +661,7 @@ $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";
@@ -663,6 +688,7 @@ $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";
@@ -689,6 +715,7 @@ $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";
@@ -715,6 +742,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";
@@ -741,6 +769,7 @@ $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";
@@ -767,6 +796,7 @@ $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";
@@ -793,6 +823,7 @@ $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";
@@ -819,6 +850,7 @@ $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";
@@ -845,6 +877,7 @@ $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";
@@ -871,6 +904,7 @@ $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";
@@ -897,6 +931,7 @@ $text['label-discard_abandoned_after']['fr-ca'] = "Ecarter les appels abandonné
$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";
@@ -923,6 +958,7 @@ $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";
@@ -949,6 +985,7 @@ $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";
@@ -975,6 +1012,7 @@ $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";
@@ -1001,6 +1039,7 @@ $text['label-abandoned_resume_allowed']['fr-ca'] = "Authoriser la reprise des ab
$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";
@@ -1027,6 +1066,7 @@ $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";
@@ -1053,6 +1093,7 @@ $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";
@@ -1079,6 +1120,7 @@ $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.";
@@ -1105,6 +1147,7 @@ $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.";
@@ -1131,6 +1174,7 @@ $text['description-active_call_center']['fr-ca'] = "Choisir une file d'attente d
$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.";
+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";
@@ -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');
}
@@ -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";
@@ -269,6 +271,7 @@
} //foreach
} //if
echo "</table>\n\n";
echo "</div>\n";
//add vertical spacing
echo "<br /><br /><br />";
@@ -309,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";
@@ -381,7 +385,8 @@
}
}
echo "</table>\n";
echo "</div>\n";
}
?>
?>
+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";
?>
?>
+10 -1
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.";
@@ -215,9 +216,17 @@
$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)}.\${record_ext}";
$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}";
+3 -8
View File
@@ -33,7 +33,6 @@ if ($domains_processed == 1) {
$sql .= " WHERE d.domain_uuid = c.domain_uuid ";
$sql .= ") ";
$sql .= "WHERE queue_context is null; ";
$database = new database;
$database->execute($sql);
unset($sql);
@@ -44,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'];
}
@@ -60,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);
@@ -83,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)) {
@@ -172,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
+2
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "מוקדים טלפוניים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato Agenti";
$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";
@@ -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";
+17 -92
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();
@@ -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") {
@@ -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):
@@ -172,7 +172,7 @@
$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;
@@ -228,7 +228,7 @@
}
}
}
}
//echo $command."\n";
@@ -348,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";
@@ -436,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";
+78 -66
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;
}
@@ -121,7 +128,7 @@
$queue_context = $_POST["queue_context"];
}
else if ($action == 'add') {
$queue_context = $_SESSION['domain_name'];
$queue_context = $domain_name;
}
//remove invalid characters
@@ -144,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"];
@@ -165,7 +171,7 @@
if ($esl->is_connected()) {
//callcenter_config tier del [queue_name] [agent_name]
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid)) {
$cmd = "callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
$cmd = "callcenter_config tier del ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid;
$response = event_socket::api($cmd);
}
}
@@ -173,12 +179,11 @@
//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);
@@ -196,6 +201,24 @@
$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'])) {
@@ -239,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();
@@ -260,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"])) {
@@ -279,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);
@@ -344,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++;
}
@@ -352,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;
}
}
@@ -394,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";
}
@@ -402,13 +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;
if (isset($queue_context)) {
$array['dialplans'][0]["dialplan_context"] = $queue_context;
}
$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";
@@ -417,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);
@@ -440,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'])) {
@@ -479,19 +496,19 @@
*/
//add the agent
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid) && is_numeric($tier_level) && is_numeric($tier_position)) {
$cmd = "callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
$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 = "callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
$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 = "callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
$cmd = "callcenter_config tier set position ".$queue_extension."@".$domain_name." ".$tier_position;
$response = event_socket::api($cmd);
}
usleep(200);
@@ -519,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"];
@@ -568,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++) {
@@ -597,8 +612,7 @@
$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);
@@ -607,6 +621,7 @@
$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'];
@@ -629,7 +644,7 @@
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 = $_SESSION['domain_name']; }
if (empty($queue_context)) { $queue_context = $domain_name; }
//create token
$object = new token;
@@ -650,12 +665,8 @@
}
//set the record_template
if (empty($_SESSION['call_center']['record_name']['text'])) {
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}";
}
else {
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".$_SESSION['call_center']['record_name']['text'];
}
$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')) {
@@ -740,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')) {
@@ -748,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";
@@ -773,7 +785,7 @@
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";
@@ -786,7 +798,7 @@
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."' 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 "<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";
@@ -800,8 +812,8 @@
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))
($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);
@@ -844,7 +856,7 @@
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."')"]);
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";
@@ -1286,7 +1298,7 @@
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."' 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 "<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";
@@ -1300,8 +1312,8 @@
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))
($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);
@@ -1344,7 +1356,7 @@
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."')"]);
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";
@@ -1415,6 +1427,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br><br>";
if ($action == "update") {
@@ -1429,4 +1442,3 @@
require_once "resources/footer.php";
?>
+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-2020
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -134,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']);
@@ -192,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')) {
@@ -280,6 +281,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
+19 -17
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,10 +58,22 @@
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)) {
$esl = event_socket::create();
if ($esl->is_connected()) {
$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']);
}
@@ -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
@@ -349,7 +349,7 @@
}
//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');
@@ -446,7 +446,7 @@
}
//grant temporary permissions
$p = new permissions;
$p = permissions::new();
$p->add('call_center_tier_delete', 'temp');
//execute delete
@@ -578,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');
@@ -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)) {
@@ -119,7 +119,7 @@
$cmd = "callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
$response = event_socket::api($cmd);
}
//small sleep
usleep(200);
}
@@ -164,8 +164,8 @@
}
//get the agent details from event socket
$switch_cmd = 'callcenter_config agent list '.$agent['call_center_agent_uuid'];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$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
@@ -173,7 +173,7 @@
//update the queue status
$x = 0;
if (is_array($call_center_queues)) {
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) {
@@ -228,7 +228,7 @@
//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 " 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";
@@ -236,7 +236,7 @@
//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 " 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";
@@ -259,7 +259,7 @@
//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'=>"document.getElementById('form_list_call_center_agent_dashboard').submit();"]);
echo " </div>\n";
@@ -274,7 +274,7 @@
echo " <th class='shrink'>".$text['label-status']."</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]');\"";
@@ -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.';
+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);
}
?>
+11
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'] = "";
@@ -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);
+72 -2
View File
@@ -13,6 +13,7 @@ $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";
@@ -21,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'] = "통화 흐름";
@@ -38,6 +40,7 @@ $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";
@@ -46,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'] = "통화 흐름";
@@ -63,6 +67,7 @@ $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";
@@ -71,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'] = "통화 흐름 - 내선";
@@ -88,6 +94,7 @@ $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";
@@ -96,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'] = "통화 흐름 - 기능";
@@ -113,6 +121,7 @@ $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";
@@ -121,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'] = "이름";
@@ -138,6 +148,7 @@ $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";
@@ -146,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'] = "상태";
@@ -163,6 +175,7 @@ $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";
@@ -171,6 +184,7 @@ $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'] = "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'] = "핀 번호";
@@ -188,6 +202,7 @@ $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";
@@ -196,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'] = "기능 코드";
@@ -213,6 +229,7 @@ $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";
@@ -221,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'] = "확대";
@@ -238,6 +256,7 @@ $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";
@@ -246,6 +265,7 @@ $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'] = "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'] = "목적지 라벨";
@@ -263,6 +283,7 @@ $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";
@@ -271,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'] = "목적지";
@@ -288,6 +310,7 @@ $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";
@@ -296,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'] = "문맥";
@@ -313,6 +337,7 @@ $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";
@@ -321,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'] = "대체 레이블";
@@ -338,6 +364,7 @@ $text['label-call_flow_alternate_destination']['fr-ca'] = "Destination alternati
$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";
@@ -346,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'] = "대체 목적지";
@@ -363,6 +391,7 @@ $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";
@@ -371,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'] = "소리";
@@ -388,6 +418,7 @@ $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";
@@ -396,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'] = "대체 사운드";
@@ -413,6 +445,7 @@ $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";
@@ -421,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'] = "설명";
@@ -438,6 +472,7 @@ $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";
@@ -446,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'] = "통화 흐름";
@@ -463,6 +499,7 @@ $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";
@@ -471,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'] = "통화 흐름";
@@ -488,6 +526,7 @@ $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.";
@@ -496,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'] = "상태를 선택합니다.";
@@ -513,6 +553,7 @@ $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.";
@@ -521,6 +562,7 @@ $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 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'] = "핀번호를 입력하세요.";
@@ -538,6 +580,7 @@ $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.";
@@ -546,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'] = "이름을 입력하세요.";
@@ -563,6 +607,7 @@ $text['description-call_flow_feature_code']['fr-ca'] = "Choisir le code la fonct
$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.";
@@ -571,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'] = "기능 코드를 입력합니다.";
@@ -588,14 +634,16 @@ $text['description-call_flow_extension']['fr-ca'] = "Choisir le numéro d'extens
$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'] = "내선번호를 입력하세요.";
@@ -613,6 +661,7 @@ $text['description-call_flow_destination_label']['fr-ca'] = "Choisir le label de
$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.";
@@ -621,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'] = "대상 라벨을 입력합니다.";
@@ -638,6 +688,7 @@ $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.";
@@ -645,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'] = "목적지를 선택합니다.";
@@ -663,6 +715,7 @@ $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.";
@@ -671,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'] = "컨텍스트를 입력하십시오.";
@@ -688,6 +742,7 @@ $text['description-call_flows']['fr-ca'] = "Appels directs entre deux destinatio
$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.";
@@ -696,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'] = "기능 코드를 호출하여 두 대상 간에 직접 호출합니다.";
@@ -713,6 +769,7 @@ $text['description-call_flow_alternate_label']['fr-ca'] = "Choisir le label de l
$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.";
@@ -721,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'] = "대체 대상 레이블을 입력합니다.";
@@ -738,6 +796,7 @@ $text['description-call_flow_alternate_destination']['fr-ca'] = "Choisir la dest
$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.";
@@ -746,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'] = "대체 대상을 선택합니다.";
@@ -763,6 +823,7 @@ $text['description-call_flow_sound']['fr-ca'] = "Sélectionnez le son à jouer l
$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.";
@@ -771,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'] = "상태가 목적지로 설정되었을 때 재생할 사운드를 선택합니다.";
@@ -788,6 +850,7 @@ $text['description-call_flow_alternate_sound']['fr-ca'] = "Sélectionnez le son
$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.";
@@ -796,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'] = "상태가 대체 대상으로 설정된 경우 재생할 사운드를 선택합니다.";
@@ -813,6 +877,7 @@ $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";
@@ -821,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'] = "녹음";
@@ -838,6 +904,7 @@ $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";
@@ -846,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'] = "여러 가지 잡다한";
@@ -863,6 +931,7 @@ $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";
@@ -871,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'] = "소리";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "cinématiques d'Appel";
$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";
+9 -7
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):
@@ -237,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");
@@ -458,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";
@@ -476,7 +477,7 @@
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";
@@ -567,7 +568,7 @@
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."' 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 "<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";
@@ -625,7 +626,7 @@
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."')"]);
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";
@@ -669,7 +670,7 @@
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."' 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 "<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";
@@ -727,7 +728,7 @@
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."')"]);
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";
@@ -793,6 +794,7 @@
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br /><br />";
if ($action == "update") {
+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):
@@ -158,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']);
@@ -215,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')) {
@@ -298,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
@@ -374,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'] = "";
?>
+74 -1
View File
@@ -13,6 +13,7 @@ $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";
@@ -25,6 +26,32 @@ $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'] = "دعوة إلى الأمام";
@@ -38,6 +65,7 @@ $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";
@@ -63,6 +91,7 @@ $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";
@@ -88,6 +117,7 @@ $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";
@@ -113,6 +143,7 @@ $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";
@@ -138,6 +169,7 @@ $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";
@@ -163,6 +195,7 @@ $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";
@@ -188,6 +221,7 @@ $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";
@@ -213,6 +247,7 @@ $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";
@@ -238,6 +273,7 @@ $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";
@@ -263,6 +299,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";
@@ -288,6 +325,7 @@ $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";
@@ -313,6 +351,7 @@ $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";
@@ -338,6 +377,7 @@ $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";
@@ -363,6 +403,7 @@ $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";
@@ -388,6 +429,7 @@ $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)";
@@ -413,6 +455,7 @@ $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";
@@ -438,6 +481,7 @@ $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";
@@ -463,6 +507,7 @@ $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";
@@ -488,6 +533,7 @@ $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";
@@ -513,6 +559,7 @@ $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";
@@ -538,6 +585,7 @@ $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";
@@ -563,6 +611,7 @@ $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";
@@ -588,6 +637,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'] = "Destynacja";
$text['label-destination']['pt-br'] = "Número de destino";
@@ -613,6 +663,7 @@ $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";
@@ -638,6 +689,7 @@ $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";
@@ -663,6 +715,7 @@ $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";
@@ -688,6 +741,7 @@ $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";
@@ -713,6 +767,7 @@ $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";
@@ -739,6 +794,7 @@ $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";
@@ -764,6 +820,7 @@ $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.";
@@ -789,6 +846,7 @@ $text['description-no_answer']['fr-ca'] = "Remplace la messagerie vocale si acti
$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";
@@ -814,6 +872,7 @@ $text['description-not_registered']['fr-ca'] = "Si extrémité est pas accessibl
$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. ";
@@ -839,6 +898,7 @@ $text['description-ignore_busy']['fr-ca'] = "Interrompez l'appel si une destinat
$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.";
@@ -864,6 +924,7 @@ $text['description-cid-number-prefix']['fr-ca'] = "Définir un préfixe sur le n
$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.";
@@ -889,6 +950,7 @@ $text['description-cid-number']['fr-ca'] = "Sélectionnez un numéro pour rempla
$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.";
@@ -914,12 +976,13 @@ $text['description-cid-name-prefix']['fr-ca'] = "Choisir le péfixe du nom d'app
$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'] = "设置来电显示名称前缀。";
@@ -939,6 +1002,7 @@ $text['description-call-prompt']['fr-ca'] = "Annonce pour accepter l'appel venan
$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.";
@@ -964,6 +1028,7 @@ $text['description-call_routing']['fr-ca'] = "Définir la manipulation pour les
$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. ";
@@ -989,6 +1054,7 @@ $text['description-call_forward']['fr-ca'] = "Transférer tous les appels vers l
$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.";
@@ -1014,6 +1080,7 @@ $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.";
@@ -1039,6 +1106,7 @@ $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";
@@ -1064,6 +1132,7 @@ $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";
@@ -1089,6 +1158,7 @@ $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";
@@ -1114,6 +1184,7 @@ $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";
@@ -1139,6 +1210,7 @@ $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";
@@ -1164,6 +1236,7 @@ $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";
+6 -4
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-2023
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -215,7 +215,7 @@
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";
@@ -223,7 +223,7 @@
}
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) {
@@ -270,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) {
@@ -407,6 +408,7 @@
}
echo "</table>\n";
echo "</div>\n";
if (!$is_included) {
echo "<br />\n";
@@ -418,4 +420,4 @@
require_once "resources/footer.php";
}
?>
?>
+6 -9
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
@@ -473,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"];
@@ -515,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";
}
@@ -553,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";
@@ -744,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
@@ -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
?>
?>
@@ -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');
@@ -102,139 +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'><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";
}
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;
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++;
?>
+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);
}
?>
?>
+24
View File
@@ -13,6 +13,7 @@ $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";
@@ -38,6 +39,7 @@ $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";
@@ -63,6 +65,7 @@ $text['title_description-call_recordings']['fr-ca'] = "Affiche les enregistremen
$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.";
@@ -88,6 +91,7 @@ $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";
@@ -113,6 +117,7 @@ $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";
@@ -138,6 +143,7 @@ $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";
@@ -163,6 +169,7 @@ $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";
@@ -188,6 +195,7 @@ $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";
@@ -213,6 +221,7 @@ $text['description-call_recording_name']['fr-ca'] = "Nom de l'enregistrement d'a
$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";
@@ -238,6 +247,7 @@ $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";
@@ -263,6 +273,7 @@ $text['description-call_recording_path']['fr-ca'] = "Chemin d'enregistrement des
$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'] = "Ścieżka nagrywania rozmowy";
$text['description-call_recording_path']['pt-br'] = "Caminho de gravação de conversa";
@@ -288,6 +299,7 @@ $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";
@@ -313,6 +325,7 @@ $text['description-call_recording_length']['fr-ca'] = "Durée d'enregistrement d
$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";
@@ -338,6 +351,7 @@ $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";
@@ -363,6 +377,7 @@ $text['description-call_recording_date']['fr-ca'] = "Date d'enregistrement de l'
$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";
@@ -388,6 +403,7 @@ $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";
@@ -413,6 +429,7 @@ $text['description-call_direction']['fr-ca'] = "Direction d'appel d'enregistreme
$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'] = "Nagrywanie połączeń Kierunek połączenia";
$text['description-call_direction']['pt-br'] = "Direção de chamada de gravação de chamada";
@@ -438,6 +455,7 @@ $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";
@@ -463,6 +481,7 @@ $text['description-call_recording_description']['fr-ca'] = "Direction d'enregist
$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'] = "Kierunek nagrywania połączeń";
$text['description-call_recording_description']['pt-br'] = "Direção de gravação de chamadas";
@@ -488,6 +507,7 @@ $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";
@@ -513,6 +533,7 @@ $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']['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";
@@ -538,6 +559,7 @@ $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";
@@ -563,6 +585,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'] = "Uitgaand";
$text['label-outbound']['pl-pl'] = "Wychodzący";
$text['label-outbound']['pt-br'] = "Saída";
@@ -588,6 +611,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";
+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 -320
View File
@@ -1,320 +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 'download':
if (permission_exists('call_recording_download')) {
$obj = new call_recordings;
$obj->download($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;
//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') && $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_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-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') && $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,380 +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($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);
}
} //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);
}
?>
+1
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.";
+72 -6
View File
@@ -13,6 +13,7 @@ $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";
@@ -38,6 +39,7 @@ $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";
@@ -63,6 +65,7 @@ $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";
@@ -88,6 +91,7 @@ $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";
@@ -113,6 +117,7 @@ $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";
@@ -138,6 +143,7 @@ $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";
@@ -163,6 +169,7 @@ $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";
@@ -188,6 +195,7 @@ $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";
@@ -213,6 +221,7 @@ $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";
@@ -238,6 +247,7 @@ $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";
@@ -263,6 +273,7 @@ $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";
@@ -288,6 +299,7 @@ $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";
@@ -313,6 +325,7 @@ $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";
@@ -338,6 +351,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";
@@ -363,6 +377,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'] = "Boodschap";
$text['label-message']['pl-pl'] = "Wiadomość";
$text['label-message']['pt-br'] = "Mensagem";
@@ -388,6 +403,7 @@ $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";
@@ -413,6 +429,7 @@ $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";
@@ -438,6 +455,7 @@ $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";
@@ -450,8 +468,8 @@ $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";
@@ -463,6 +481,7 @@ $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";
@@ -488,6 +507,7 @@ $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";
@@ -513,6 +533,7 @@ $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";
@@ -525,8 +546,8 @@ $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";
@@ -538,6 +559,7 @@ $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";
@@ -550,8 +572,8 @@ $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";
@@ -563,6 +585,7 @@ $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";
@@ -588,6 +611,7 @@ $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";
@@ -613,6 +637,7 @@ $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";
@@ -625,6 +650,33 @@ $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'] = "استخدم هذا لعرض جميع الملحقات ومراقبة المكالمات النشطة والتفاعل معها.";
@@ -638,6 +690,7 @@ $text['description-2']['fr-ca'] = "Voir toutes les extensions, superviser et int
$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.";
@@ -663,6 +716,7 @@ $text['description']['fr-ca'] = "Superviser et interagir avec les Communications
$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.";
@@ -688,6 +742,7 @@ $text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destinat
$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";
@@ -713,6 +768,7 @@ $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";
@@ -738,6 +794,7 @@ $text['confirm-hangup']['fr-ca'] = "Voulez-vous vraiment raccrocher cette commun
$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?";
@@ -763,6 +820,7 @@ $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?";
@@ -788,6 +846,7 @@ $text['confirm-hangups']['fr-ca'] = "Voulez-vous vraiment raccrocher cette commu
$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?";
@@ -813,6 +872,7 @@ $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";
@@ -838,6 +898,7 @@ $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";
@@ -863,6 +924,7 @@ $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";
@@ -888,6 +950,7 @@ $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";
@@ -913,6 +976,7 @@ $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)";
@@ -938,6 +1002,7 @@ $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";
@@ -963,6 +1028,7 @@ $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";
+184 -160
View File
@@ -52,10 +52,10 @@
$switch_cmd = 'show channels as json';
//create the event socket connection
$esl = event_socket::create();
$event_socket = event_socket::create();
//send the event socket command and get the array
if ($esl->is_connected()) {
if ($event_socket->is_connected()) {
$json = trim(event_socket::api($switch_cmd));
$results = json_decode($json, "true");
}
@@ -63,7 +63,7 @@
//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) {
@@ -88,10 +88,8 @@
}
$num_rows = @sizeof($rows);
//if the connnection is available then run it and return the results
if (!$esl) {
if (!$event_socket) {
$msg = "<div align='center'>".$text['confirm-socket']."<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -103,171 +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_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";
}
//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 " </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);
}
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";
//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) . '...';
}
}
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()']);
//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";
}
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 " <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 " </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_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);
}
}
// 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_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 " <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";
}
unset($rows);
}
echo " </tr>\n";
echo "</table>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\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";
?>
+10 -10
View File
@@ -58,8 +58,8 @@
exit;
}
$calls = [];
//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'])) {
@@ -75,11 +75,11 @@
if (count($calls) > 0) {
//setup the event socket connection
$esl = event_socket::create();
$event_socket = event_socket::create();
//execute hangup command
if ($esl->is_connected()) foreach ($calls as $call_uuid) {
event_socket::async("uuid_kill $call_uuid");
if ($event_socket->is_connected()) foreach ($calls as $call_uuid) {
event_socket::async("uuid_kill ".$call_uuid);
}
//set message
@@ -95,13 +95,13 @@
else if ($_REQUEST['action'] == 'eavesdrop' && permission_exists('call_active_eavesdrop')) {
$uuid_pattern = '/[^-A-Fa-f0-9]/';
$num_pattern = '/[^-A-Za-z0-9()*#]/';
$number_pattern = '/[^-A-Za-z0-9()*#]/';
$chan_uuid = preg_replace($uuid_pattern,'',$_GET['chan_uuid']);
$ext = preg_replace($num_pattern,'',$_GET['ext']);
$destination = preg_replace($num_pattern,'',$_GET['destination']);
$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='.$ext.'}user/'.$destination.'@'.$_SESSION['domain_name'].' &eavesdrop('.$chan_uuid.')';
$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);
@@ -112,4 +112,4 @@
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";
+32
View File
@@ -13,6 +13,7 @@ $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";
@@ -38,6 +39,7 @@ $text['desc-click2call']['fr-ca'] = "Fournissez les informations suivantes afin
$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.";
@@ -63,6 +65,7 @@ $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";
@@ -88,6 +91,7 @@ $text['desc-src-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émettr
$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.";
@@ -113,6 +117,7 @@ $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";
@@ -138,6 +143,7 @@ $text['desc-src-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à ém
$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'";
@@ -163,6 +169,7 @@ $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";
@@ -188,6 +195,7 @@ $text['desc-dest-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émett
$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.";
@@ -213,6 +221,7 @@ $text['label-dest-caller-id-num']['fr-ca'] = "Numéro de l'appelant de destinati
$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";
@@ -238,6 +247,7 @@ $text['desc-dest-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à é
$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).";
@@ -263,6 +273,7 @@ $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";
@@ -288,6 +299,7 @@ $text['desc-src-num']['fr-ca'] = "Choisir votre numéro de téléphone. Il peut
$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).";
@@ -313,6 +325,7 @@ $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";
@@ -338,6 +351,7 @@ $text['desc-dest-num']['fr-ca'] = "Choisir un numéro à appeler. Il peut être
$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.";
@@ -363,6 +377,7 @@ $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";
@@ -388,6 +403,7 @@ $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.";
@@ -413,6 +429,7 @@ $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";
@@ -438,6 +455,7 @@ $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";
@@ -463,6 +481,7 @@ $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";
@@ -488,6 +507,7 @@ $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.";
@@ -513,6 +533,7 @@ $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)";
@@ -538,6 +559,7 @@ $text['desc-ringback']['fr-ca'] = "Défini ce vous entendrez pendant que la dest
$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).";
@@ -563,6 +585,7 @@ $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";
@@ -588,6 +611,7 @@ $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";
@@ -613,6 +637,7 @@ $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";
@@ -638,6 +663,7 @@ $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";
@@ -663,6 +689,7 @@ $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";
@@ -688,6 +715,7 @@ $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";
@@ -713,6 +741,7 @@ $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";
@@ -738,6 +767,7 @@ $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";
@@ -763,6 +793,7 @@ $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";
@@ -788,6 +819,7 @@ $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";
+1
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Cliquez pour Appeller";
$apps[$x]['menu'][$y]['title']['he-il'] = "לחצו על Call";
$apps[$x]['menu'][$y]['title']['it-it'] = "Clicca e Chiama";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "რეკვა წკაპით";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Klik voor oproep";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Click to Call";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Clique para ligar";
+1 -1
View File
@@ -177,7 +177,7 @@
$parameters['src'] = $src;
$database = new database;
$result = $database->select($sql, $parameters, 'all');
foreach ($result as &$row) {
foreach ($result as $row) {
$dest_cid_name = $row["outbound_caller_id_name"];
$dest_cid_number = $row["outbound_caller_id_number"];
break; //limit to 1 row
+9
View File
@@ -20,6 +20,7 @@
$apps[$x]['description']['fr-fr'] = "Centre de Conférences permet une ou plus conferences audio ou vidéo.";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['ka-ge'] = "კონფერენციის ცენტრები საშუალებას გაძლევთ, ერთი ან მეტი აუდიო ან ვიდეო კონფერენციის ოთახები გქონდეთ.";
$apps[$x]['description']['nl-nl'] = "Conferentie centra maakt instellen van een of meer audio en video conferenties mogelijk.";
$apps[$x]['description']['pl-pl'] = "";
$apps[$x]['description']['pt-br'] = "O centro de conferências permite gerir uma ou mais salas de conferência de audio e vídeo.";
@@ -217,6 +218,14 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Request the account ID.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d93351de-8446-47ee-acdb-05cf340b8803";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "conference_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'] = "200-299";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the suggested extension range(s) for conference centers";
//cache details
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
-6
View File
@@ -30,12 +30,10 @@ if ($domains_processed == 1) {
//get the conference room count
$sql = "select count(*) from v_conference_rooms; ";
$database = new database;
$conference_room_count = $database->select($sql, null, 'column');
//get the count of moderator and participant pins that are null
$sql = "select count(*) from v_conference_rooms where moderator_pin is null and participant_pin is null; ";
$database = new database;
$pin_null_count = $database->select($sql, null, 'column');
//if missing move pin numbers from meetings table to the conference rooms table
@@ -50,14 +48,12 @@ if ($domains_processed == 1) {
$sql .= "WHERE r.meeting_uuid = m.meeting_uuid ";
$sql .= " ) AS subquery ";
$sql .= "WHERE v_conference_rooms.conference_room_uuid = subquery.conference_room_uuid; ";
$database = new database;
$database->execute($sql);
unset($sql);
}
//get the count of moderator and participant pins that are null
$sql = "select count(*) from v_conference_room_users; ";
$database = new database;
$conference_room_user_count = $database->select($sql, null, 'column');
//check if meeting_users table exists
@@ -66,7 +62,6 @@ if ($domains_processed == 1) {
//count the meeting users table
if ($table_exists) {
$sql = "select count(*) from v_meeting_users; ";
$database = new database;
$meeting_user_count = $database->select($sql, null, 'column');
}
@@ -78,7 +73,6 @@ if ($domains_processed == 1) {
$sql .= "SELECT r.domain_uuid, m.meeting_user_uuid as conference_room_user_uuid, r.conference_room_uuid, m.user_uuid ";
$sql .= "FROM v_conference_rooms as r, v_meeting_users as m ";
$sql .= "WHERE r.meeting_uuid = m.meeting_uuid; ";
$database = new database;
$database->execute($sql);
unset($sql);
}
+83
View File
@@ -13,6 +13,7 @@ $text['title-conference_centers']['fr-ca'] = "Centre de conférence";
$text['title-conference_centers']['fr-fr'] = "Centre de conférence";
$text['title-conference_centers']['he-il'] = "מרכזי ועידה";
$text['title-conference_centers']['it-it'] = "Centri Conferenza";
$text['title-conference_centers']['ka-ge'] = "კონფერენც-ცენტრები";
$text['title-conference_centers']['nl-nl'] = "Cenferentie centra";
$text['title-conference_centers']['pl-pl'] = "Centra Konferencyjne";
$text['title-conference_centers']['pt-br'] = "Centros de conferência";
@@ -38,6 +39,7 @@ $text['title-conference_center']['fr-ca'] = "Centre de conférence";
$text['title-conference_center']['fr-fr'] = "Centre de conférence";
$text['title-conference_center']['he-il'] = "מרכז כנסים";
$text['title-conference_center']['it-it'] = "Centro Conferenza";
$text['title-conference_center']['ka-ge'] = "კონფერენც-ცენტრი";
$text['title-conference_center']['nl-nl'] = "Conferentie centrum";
$text['title-conference_center']['pl-pl'] = "Centrum Konferencyjne";
$text['title-conference_center']['pt-br'] = "Centro de conferência";
@@ -63,6 +65,7 @@ $text['title_description-conference_centers']['fr-ca'] = "Ce sont des groupes de
$text['title_description-conference_centers']['fr-fr'] = "Ce sont des groupes de salles de conférences. Pouvant être organisés par centre de coût, lieu géographique, ou tout autre critère.";
$text['title_description-conference_centers']['he-il'] = "מרכזי כנסים הם קבוצה של חדרי ישיבות. הם יכולים להיות מאורגנים לפי מרכז עלות, גיאוגרפית או קריטריונים אחרים.";
$text['title_description-conference_centers']['it-it'] = "I centri congressi sono un gruppo di sale conferenze. Possono essere organizzati per centro di costo, geograficamente o altri criteri.";
$text['title_description-conference_centers']['ka-ge'] = "კონფერენც-ცენტრი კონფერენციის ოთახების ჯგუფია. შეიძლება იყოს ორგანიზებული დატვირთვის, გეოგრაფიული მდებარეობის ან სხვა პირობის მიხედვით.";
$text['title_description-conference_centers']['nl-nl'] = "Conferentie centra zijn een groep van gespreksruimten. Ze kunnen aan de hand van kostenplaatsen, geografisch or andere criteria georganiseerd worden.";
$text['title_description-conference_centers']['pl-pl'] = "'Centra konferencyjne składają się z pokoi konferencyjnych. Mogą one być przypisane do konkretnych centrów kosztów, rejonów geograficznych lub do innych grup.";
$text['title_description-conference_centers']['pt-br'] = "Centros de conferência são um grupo de salas de conferência. Podem ser organizadas por custo, por localização ou por outro critétio.";
@@ -88,6 +91,7 @@ $text['title_description-conference_rooms']['fr-ca'] = "Les salles de conférenc
$text['title_description-conference_rooms']['fr-fr'] = "Les salles de conférence sont des lieux de réunion individuels au sein d'un centre de conférence.";
$text['title_description-conference_rooms']['he-il'] = "חדרי ישיבות הם מקומות מפגש בודדים בתוך מרכז כנסים.";
$text['title_description-conference_rooms']['it-it'] = "Le sale conferenze sono luoghi di incontro individuali all'interno di un centro conferenze.";
$text['title_description-conference_rooms']['ka-ge'] = "კონფერენც-დარბაზები ინდივიდუალური შეხვედრის ადგილებია კონფერენც-ცენტრში.";
$text['title_description-conference_rooms']['nl-nl'] = "Conference Rooms zijn individuele ontmoetingsplekken binnen een Conference Center.";
$text['title_description-conference_rooms']['pl-pl'] = "Sale Konferencyjne to indywidualne miejsca spotkań w ramach Centrum Konferencyjnego.";
$text['title_description-conference_rooms']['pt-br'] = "Sale Konferencyjne to indywidualne miejsca spotkań w ramach Centrum Konferencyjnego.";
@@ -113,6 +117,7 @@ $text['label-conference_center_name']['fr-ca'] = "Nom";
$text['label-conference_center_name']['fr-fr'] = "Nom";
$text['label-conference_center_name']['he-il'] = "שֵׁם";
$text['label-conference_center_name']['it-it'] = "Nome";
$text['label-conference_center_name']['ka-ge'] = "სახელი";
$text['label-conference_center_name']['nl-nl'] = "Naam";
$text['label-conference_center_name']['pl-pl'] = "Nazwa";
$text['label-conference_center_name']['pt-br'] = "Nome";
@@ -138,6 +143,7 @@ $text['description-conference_center_name']['fr-ca'] = "Entrez le nom du centre
$text['description-conference_center_name']['fr-fr'] = "Entrez le nom du centre de conférence.";
$text['description-conference_center_name']['he-il'] = "הזן את שם מרכז הכנסים.";
$text['description-conference_center_name']['it-it'] = "Immettere il nome del centro conferenze.";
$text['description-conference_center_name']['ka-ge'] = "შეიყვანეთ კონფერენც-ცენტრის სახელი.";
$text['description-conference_center_name']['nl-nl'] = "Voer de conferentie centrum naam in.";
$text['description-conference_center_name']['pl-pl'] = "Wprowadź nazwę";
$text['description-conference_center_name']['pt-br'] = "Insira o nome do centro de conferência.";
@@ -163,6 +169,7 @@ $text['label-conference_center_extension']['fr-ca'] = "Extension";
$text['label-conference_center_extension']['fr-fr'] = "Extension";
$text['label-conference_center_extension']['he-il'] = "סיומת";
$text['label-conference_center_extension']['it-it'] = "Estensione";
$text['label-conference_center_extension']['ka-ge'] = "გაფართოება";
$text['label-conference_center_extension']['nl-nl'] = "Toestel";
$text['label-conference_center_extension']['pl-pl'] = "Numer wewnętrzny";
$text['label-conference_center_extension']['pt-br'] = "Ramal";
@@ -188,6 +195,7 @@ $text['description-conference_center_extension']['fr-ca'] = "Entrez le numéro d
$text['description-conference_center_extension']['fr-fr'] = "Entrez le numéro de poste du centre de conférence.";
$text['description-conference_center_extension']['he-il'] = "Immettere il numero dell'interno del centro conferenze.";
$text['description-conference_center_extension']['it-it'] = "Immettere il numero dell'interno del centro conferenze.";
$text['description-conference_center_extension']['ka-ge'] = "შეიყვანეთ კონფერენც-ცენტრის გაფართოების ნომერი.";
$text['description-conference_center_extension']['nl-nl'] = "Voer de conferentie centrum toestelnummer in.";
$text['description-conference_center_extension']['pl-pl'] = "Wprowadź alfanumeryczny numer wewnętrzny. Domyślna konfiguracja pozwala na 2-7 cyfrowe numery wewnętrzne";
$text['description-conference_center_extension']['pt-br'] = "Entre com o ramal do centro de conferência.";
@@ -213,6 +221,7 @@ $text['label-conference_center_pin_length']['fr-ca'] = "longueur du code PIN";
$text['label-conference_center_pin_length']['fr-fr'] = "longueur du code PIN";
$text['label-conference_center_pin_length']['he-il'] = "אורך PIN";
$text['label-conference_center_pin_length']['it-it'] = "PIN Lunghezza";
$text['label-conference_center_pin_length']['ka-ge'] = "PIN-კოდის სიგრძე";
$text['label-conference_center_pin_length']['nl-nl'] = "PIN lengte";
$text['label-conference_center_pin_length']['pl-pl'] = "Długość kodu PIN";
$text['label-conference_center_pin_length']['pt-br'] = "Tamanho do PIN";
@@ -238,6 +247,7 @@ $text['description-conference_center_pin_length']['fr-ca'] = "Choisir la longueu
$text['description-conference_center_pin_length']['fr-fr'] = "Choisir la longueur requise pour le code d'authentification.";
$text['description-conference_center_pin_length']['he-il'] = "הזן את אורך ה-PIN המינימלי.";
$text['description-conference_center_pin_length']['it-it'] = "Immettere la lunghezza minima del PIN.";
$text['description-conference_center_pin_length']['ka-ge'] = "შეიყვანეთ PIN-კოდის მინიმალური სიგრძე.";
$text['description-conference_center_pin_length']['nl-nl'] = "Voer de minimum PIN lengte in";
$text['description-conference_center_pin_length']['pl-pl'] = "Wprowadź minimalną długość numeru PIN";
$text['description-conference_center_pin_length']['pt-br'] = "Insira o tamanho mínimo do código PIN.";
@@ -263,6 +273,7 @@ $text['label-email_address']['fr-ca'] = "Courriel";
$text['label-email_address']['fr-fr'] = "Courriel";
$text['label-email_address']['he-il'] = "אימייל";
$text['label-email_address']['it-it'] = "Indirizzo e-mail";
$text['label-email_address']['ka-ge'] = "ელფოსტის მისამართი";
$text['label-email_address']['nl-nl'] = "E-mail Address";
$text['label-email_address']['pl-pl'] = "Adres e-mail";
$text['label-email_address']['pt-br'] = "Endereço de email";
@@ -288,6 +299,7 @@ $text['description-email_address']['fr-ca'] = "Adresse e-mail de la conférence
$text['description-email_address']['fr-fr'] = "Adresse e-mail de la conférence facultative.";
$text['description-email_address']['he-il'] = "אימייל";
$text['description-email_address']['it-it'] = "Indirizzo e-mail facoltativo della conferenza.";
$text['description-email_address']['ka-ge'] = "კონფერენციის (არასავალდებულო) ელფოსტის მისამართი.";
$text['description-email_address']['nl-nl'] = "Optional conference E-mail Address";
$text['description-email_address']['pl-pl'] = "Opcjonalny konferencyjny adres e-mail.";
$text['description-email_address']['pt-br'] = "Endereço de e-mail de conferência opcional.";
@@ -313,6 +325,7 @@ $text['label-conference_center_greeting']['fr-ca'] = "Message";
$text['label-conference_center_greeting']['fr-fr'] = "Message";
$text['label-conference_center_greeting']['he-il'] = "בְּרָכָה";
$text['label-conference_center_greeting']['it-it'] = "Saluto";
$text['label-conference_center_greeting']['ka-ge'] = "მისალმება";
$text['label-conference_center_greeting']['nl-nl'] = "Begroeting";
$text['label-conference_center_greeting']['pl-pl'] = "Powitanie";
$text['label-conference_center_greeting']['pt-br'] = "Saudação";
@@ -338,6 +351,7 @@ $text['description-conference_center_greeting']['fr-ca'] = "Sélectionnez le mes
$text['description-conference_center_greeting']['fr-fr'] = "Sélectionnez le message qui a joué avant de rejoindre la salle de conférence.";
$text['description-conference_center_greeting']['he-il'] = "בחר את הברכה שתושמע לפני ההצטרפות לחדר הישיבות. הערה: לא תושמע בקשת PIN.";
$text['description-conference_center_greeting']['it-it'] = "Selezionare il messaggio di saluto riprodotto prima di entrare nella sala riunioni. Nota: non verrà riprodotta alcuna richiesta di PIN.";
$text['description-conference_center_greeting']['ka-ge'] = "აირჩიეთ მისალმება, რომელიც კონფერენციაში შესვლამდე იქნება დაკრული. შენიშვნა: PIN-კოდის კითხვისას დაკვრა არ მოხდება.";
$text['description-conference_center_greeting']['nl-nl'] = "Kies de begroeting die voor het betreden van de gesprekruimte afgespeeld wordt.";
$text['description-conference_center_greeting']['pl-pl'] = "Wybierz powitanie odtwarzane przed wejściem do pokoju konferencyjnego.";
$text['description-conference_center_greeting']['pt-br'] = "Selecione a mensagem de boas-vindas que será exibida antes de entrar na sala de conferência.";
@@ -363,6 +377,7 @@ $text['label-account_code']['fr-ca'] = "Centre de frais";
$text['label-account_code']['fr-fr'] = "Centre de frais";
$text['label-account_code']['he-il'] = "קוד חשבון";
$text['label-account_code']['it-it'] = "Account Code";
$text['label-account_code']['ka-ge'] = "ანგარიშის კოდი";
$text['label-account_code']['nl-nl'] = "Account code";
$text['label-account_code']['pl-pl'] = "Numer konta billingowego";
$text['label-account_code']['pt-br'] = "Código de conta";
@@ -388,6 +403,7 @@ $text['description-account_code']['fr-ca'] = "Entrez le code de compte ici.";
$text['description-account_code']['fr-fr'] = "Entrez le code de compte ici.";
$text['description-account_code']['he-il'] = "הזן את קוד החשבון כאן.";
$text['description-account_code']['it-it'] = "Inserire qui l'account code.";
$text['description-account_code']['ka-ge'] = "შეიყვანეთ ანგარიშის კოდი აქ.";
$text['description-account_code']['nl-nl'] = "Voer de account code hier in.";
$text['description-account_code']['pl-pl'] = "Wpisz numer billingowy (nagłówek dodany do SIP INVITE).";
$text['description-account_code']['pt-br'] = "Insira o código de conta aqui.";
@@ -413,6 +429,7 @@ $text['label-conference_center_enabled']['fr-ca'] = "Actif";
$text['label-conference_center_enabled']['fr-fr'] = "Actif";
$text['label-conference_center_enabled']['he-il'] = "מופעל";
$text['label-conference_center_enabled']['it-it'] = "Abilitato";
$text['label-conference_center_enabled']['ka-ge'] = "ჩართულია";
$text['label-conference_center_enabled']['nl-nl'] = "Aan";
$text['label-conference_center_enabled']['pl-pl'] = "Włączony";
$text['label-conference_center_enabled']['pt-br'] = "Habilitado";
@@ -438,6 +455,7 @@ $text['description-conference_center_enabled']['fr-ca'] = "Choisir d'activer ou
$text['description-conference_center_enabled']['fr-fr'] = "Choisir d'activer ou non la conférence.";
$text['description-conference_center_enabled']['he-il'] = "Seleziona se abilitare o disabilitare il centro conferenze.";
$text['description-conference_center_enabled']['it-it'] = "Seleziona se abilitare o disabilitare il centro conferenze.";
$text['description-conference_center_enabled']['ka-ge'] = "აირჩიეთ, ჩართოთ თუ არა კონფერენც-ცენტრი.";
$text['description-conference_center_enabled']['nl-nl'] = "Kies of de conferentie centrum aan/uit staat.";
$text['description-conference_center_enabled']['pl-pl'] = "Ustaw status numeru wewnętrznego.";
$text['description-conference_center_enabled']['pt-br'] = "Escolhe se deseja habilitar ou desabilitar o centro de conferência.";
@@ -463,6 +481,7 @@ $text['label-conference_center_description']['fr-ca'] = "Description";
$text['label-conference_center_description']['fr-fr'] = "Description";
$text['label-conference_center_description']['he-il'] = "תיאור";
$text['label-conference_center_description']['it-it'] = "Descrizione";
$text['label-conference_center_description']['ka-ge'] = "აღწერა";
$text['label-conference_center_description']['nl-nl'] = "Omschrijving";
$text['label-conference_center_description']['pl-pl'] = "Opis";
$text['label-conference_center_description']['pt-br'] = "Descrição";
@@ -488,6 +507,7 @@ $text['title-conference_sessions']['fr-ca'] = "Sessions de conférences";
$text['title-conference_sessions']['fr-fr'] = "Sessions de conférences";
$text['title-conference_sessions']['he-il'] = "מפגשי ועידה";
$text['title-conference_sessions']['it-it'] = "Sessioni Conferenze";
$text['title-conference_sessions']['ka-ge'] = "კონფერენციის სესიები";
$text['title-conference_sessions']['nl-nl'] = "Concerentie zittingen";
$text['title-conference_sessions']['pl-pl'] = "Sesje Konferencyjne";
$text['title-conference_sessions']['pt-br'] = "Sessões";
@@ -513,6 +533,7 @@ $text['title-conference_session_details']['fr-ca'] = "Détails de Sessions de Co
$text['title-conference_session_details']['fr-fr'] = "Détails de Sessions de Conference";
$text['title-conference_session_details']['he-il'] = "פרטי מושב הכנס";
$text['title-conference_session_details']['it-it'] = "Dettagli Sessione di Conferenza";
$text['title-conference_session_details']['ka-ge'] = "კონფერენციის სესიის დეტალები";
$text['title-conference_session_details']['nl-nl'] = "Conferentie zitting details";
$text['title-conference_session_details']['pl-pl'] = "Szczególy sesji konferencyjnej";
$text['title-conference_session_details']['pt-br'] = "Detalhes da sessão de conferência";
@@ -538,6 +559,7 @@ $text['title-conference_rooms']['fr-ca'] = "Salles de conférence";
$text['title-conference_rooms']['fr-fr'] = "Salles de conférence";
$text['title-conference_rooms']['he-il'] = "חדרי ישיבות";
$text['title-conference_rooms']['it-it'] = "Stanze di Conferenza";
$text['title-conference_rooms']['ka-ge'] = "კონფერენც-დარბაზები";
$text['title-conference_rooms']['nl-nl'] = "Conferentieruimten";
$text['title-conference_rooms']['pl-pl'] = "Pokoje konferencynje";
$text['title-conference_rooms']['pt-br'] = "Salas de conferência";
@@ -563,6 +585,7 @@ $text['title-conference_room']['fr-ca'] = "Salle de conférence";
$text['title-conference_room']['fr-fr'] = "Salle de conférence";
$text['title-conference_room']['he-il'] = "חדר ישיבות";
$text['title-conference_room']['it-it'] = "Stanza Conferenza";
$text['title-conference_room']['ka-ge'] = "კონფერენც-დარბაზი";
$text['title-conference_room']['nl-nl'] = "Conferentieruimte";
$text['title-conference_room']['pl-pl'] = "Pokoje konferencynje";
$text['title-conference_room']['pt-br'] = "Sala de conferência";
@@ -588,6 +611,7 @@ $text['message-unique_participant_pin']['fr-ca'] = "S'il vous plaît fournir un
$text['message-unique_participant_pin']['fr-fr'] = "S'il vous plaît fournir un numéro unique PIN de participant.";
$text['message-unique_participant_pin']['he-il'] = "אנא ספק מספר PIN ייחודי למשתתף.";
$text['message-unique_participant_pin']['it-it'] = "Fornire un PIN Partecipante unico.";
$text['message-unique_participant_pin']['ka-ge'] = "შეიყვანეთ მონაწილის უნიკალური PIN-კოდი.";
$text['message-unique_participant_pin']['nl-nl'] = "Geef aub.: een unieke deelnemers PIN code.";
$text['message-unique_participant_pin']['pl-pl'] = "Wprowadź unikalny numer PIN uczestnika";
$text['message-unique_participant_pin']['pt-br'] = "Por favor, forneça um PIN único de participante.";
@@ -613,6 +637,7 @@ $text['message-unique_moderator_pin']['fr-ca'] = "S'il vous plaît fournir un nu
$text['message-unique_moderator_pin']['fr-fr'] = "S'il vous plaît fournir un numéro unique Modérateur PIN.";
$text['message-unique_moderator_pin']['he-il'] = "אנא ספק מספר PIN ייחודי של מנחה.";
$text['message-unique_moderator_pin']['it-it'] = "Fornire un PIN Moderatore unico.";
$text['message-unique_moderator_pin']['ka-ge'] = "შეიყვანეთ მოდერატორის უნიკალური PIN-კოდი.";
$text['message-unique_moderator_pin']['nl-nl'] = "Geef aub. een unieke moderator PIN code.";
$text['message-unique_moderator_pin']['pl-pl'] = "Wprowadź unikalny numer PIN moderatora";
$text['message-unique_moderator_pin']['pt-br'] = "Por favor, forneça um número PIN do administrador";
@@ -638,6 +663,7 @@ $text['message-non_unique_pin']['fr-ca'] = "Numéros de modérateur et de PIN de
$text['message-non_unique_pin']['fr-fr'] = "Numéros de modérateur et de PIN de participant doivent être uniques.";
$text['message-non_unique_pin']['he-il'] = "מספרי ה-PIN של המנחה והמשתתפים חייבים להיות ייחודיים.";
$text['message-non_unique_pin']['it-it'] = "I PIN del Partecipante e del Moderatore devono essere unici, perché identificano la stanza.";
$text['message-non_unique_pin']['ka-ge'] = "მოდერატორის და მონაწილის PIN-კოდები უნიკალური უნდა იყოს.";
$text['message-non_unique_pin']['nl-nl'] = "Moderator en Deelnemer PIN code moeten uniek zijn.";
$text['message-non_unique_pin']['pl-pl'] = "Numery PIN uczestnika i moderatora muszą buć unikalne.";
$text['message-non_unique_pin']['pt-br'] = "O número do PIN de participante deve ser único";
@@ -663,6 +689,7 @@ $text['message-minimum_pin_length']['fr-ca'] = "Longueur de PIN minimum requis:"
$text['message-minimum_pin_length']['fr-fr'] = "Longueur de PIN minimum requis:";
$text['message-minimum_pin_length']['he-il'] = "אורך PIN מינימלי נדרש:";
$text['message-minimum_pin_length']['it-it'] = "Lunghezza minima richiesta per il PIN:";
$text['message-minimum_pin_length']['ka-ge'] = "PIN-კოდის მინიმალური სიგრძე:";
$text['message-minimum_pin_length']['nl-nl'] = "Minimaal vereiste PIN lengte:";
$text['message-minimum_pin_length']['pl-pl'] = "Minimalna długość kodu PIN:";
$text['message-minimum_pin_length']['pt-br'] = "Tamanho mínimo do PIN:";
@@ -688,6 +715,7 @@ $text['label-wait_moderator']['fr-ca'] = "Assurer";
$text['label-wait_moderator']['fr-fr'] = "Assurer";
$text['label-wait_moderator']['he-il'] = "לבטח";
$text['label-wait_moderator']['it-it'] = "Sicura";
$text['label-wait_moderator']['ka-ge'] = "დაცული";
$text['label-wait_moderator']['nl-nl'] = "Beveiligd";
$text['label-wait_moderator']['pl-pl'] = "Zabezpieczenie";
$text['label-wait_moderator']['pt-br'] = "Seguro";
@@ -713,6 +741,7 @@ $text['label-wait_for_moderator']['fr-ca'] = "Attente du Modérateur";
$text['label-wait_for_moderator']['fr-fr'] = "Attente du Modérateur";
$text['label-wait_for_moderator']['he-il'] = "חכה למנחה";
$text['label-wait_for_moderator']['it-it'] = "Attendi il Moderatore";
$text['label-wait_for_moderator']['ka-ge'] = "დაელოდეთ მოდერატორს";
$text['label-wait_for_moderator']['nl-nl'] = "Wacht op moderator";
$text['label-wait_for_moderator']['pl-pl'] = "Zaczekaj na moderatora";
$text['label-wait_for_moderator']['pt-br'] = "Esperar pelo moderador";
@@ -738,6 +767,7 @@ $text['label-moderator_endconf']['fr-ca'] = "Endconf du modérateur";
$text['label-moderator_endconf']['fr-fr'] = "Endconf du modérateur";
$text['label-moderator_endconf']['he-il'] = "מנחה endconf";
$text['label-moderator_endconf']['it-it'] = "Moderatore endconf";
$text['label-moderator_endconf']['ka-ge'] = "endconf-ის მოდერატორი";
$text['label-moderator_endconf']['nl-nl'] = "Moderator eindconf";
$text['label-moderator_endconf']['pl-pl'] = "Konf.końc.moderatora";
$text['label-moderator_endconf']['pt-br'] = "Konf.końc.moderatora";
@@ -763,6 +793,7 @@ $text['label-view']['fr-ca'] = "Vue";
$text['label-view']['fr-fr'] = "Vue";
$text['label-view']['he-il'] = "נוף";
$text['label-view']['it-it'] = "Mostra";
$text['label-view']['ka-ge'] = "ხედი";
$text['label-view']['nl-nl'] = "Bekijken";
$text['label-view']['pl-pl'] = "Widok";
$text['label-view']['pt-br'] = "Visualizar";
@@ -788,6 +819,7 @@ $text['label-uuid']['fr-ca'] = "UUID";
$text['label-uuid']['fr-fr'] = "UUID";
$text['label-uuid']['he-il'] = "UUID";
$text['label-uuid']['it-it'] = "UUID";
$text['label-uuid']['ka-ge'] = "UUID";
$text['label-uuid']['nl-nl'] = "UUID";
$text['label-uuid']['pl-pl'] = "UUID";
$text['label-uuid']['pt-br'] = "UUID (Identificador único)";
@@ -813,6 +845,7 @@ $text['label-users']['fr-ca'] = "Utilisateurs";
$text['label-users']['fr-fr'] = "Utilisateurs";
$text['label-users']['he-il'] = "משתמשים";
$text['label-users']['it-it'] = "Utenti";
$text['label-users']['ka-ge'] = "მომხმარებლები";
$text['label-users']['nl-nl'] = "Gebruikers";
$text['label-users']['pl-pl'] = "Użytkownicy";
$text['label-users']['pt-br'] = "Usuários";
@@ -838,6 +871,7 @@ $text['label-username']['fr-ca'] = "Nom d'Utilisateur";
$text['label-username']['fr-fr'] = "Nom d'Utilisateur";
$text['label-username']['he-il'] = "שם משתמש";
$text['label-username']['it-it'] = "Username";
$text['label-username']['ka-ge'] = "მომხმარებლის სახელი";
$text['label-username']['nl-nl'] = "Gebruikersnaam";
$text['label-username']['pl-pl'] = "Użytkownik";
$text['label-username']['pt-br'] = "Nome do Usuário";
@@ -863,6 +897,7 @@ $text['label-tools']['fr-ca'] = "Outils";
$text['label-tools']['fr-fr'] = "Outils";
$text['label-tools']['he-il'] = "כלים";
$text['label-tools']['it-it'] = "Strumenti";
$text['label-tools']['ka-ge'] = "ხელსაწყოები";
$text['label-tools']['nl-nl'] = "Gereedschappen";
$text['label-tools']['pl-pl'] = "Narzędzia";
$text['label-tools']['pt-br'] = "Ferramentas";
@@ -888,6 +923,7 @@ $text['label-to']['fr-ca'] = "Fin";
$text['label-to']['fr-fr'] = "Fin";
$text['label-to']['he-il'] = "ל";
$text['label-to']['it-it'] = "A";
$text['label-to']['ka-ge'] = "ვის";
$text['label-to']['nl-nl'] = "Aan";
$text['label-to']['pl-pl'] = "Do";
$text['label-to']['pt-br'] = "Até";
@@ -913,6 +949,7 @@ $text['label-time']['fr-ca'] = "Heure";
$text['label-time']['fr-fr'] = "Heure";
$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'] = "Strefa czasowa";
$text['label-time']['pt-br'] = "Hora";
@@ -938,6 +975,7 @@ $text['label-start']['fr-ca'] = "Début";
$text['label-start']['fr-fr'] = "Début";
$text['label-start']['he-il'] = "הַתחָלָה";
$text['label-start']['it-it'] = "Inizia";
$text['label-start']['ka-ge'] = "დაწყება";
$text['label-start']['nl-nl'] = "Start";
$text['label-start']['pl-pl'] = "rozpocznij nagrywanie";
$text['label-start']['pt-br'] = "Iniciar";
@@ -963,6 +1001,7 @@ $text['label-sounds']['fr-ca'] = "Sons";
$text['label-sounds']['fr-fr'] = "Sons";
$text['label-sounds']['he-il'] = "צלילים";
$text['label-sounds']['it-it'] = "Audio";
$text['label-sounds']['ka-ge'] = "ხმები";
$text['label-sounds']['nl-nl'] = "Geluid";
$text['label-sounds']['pl-pl'] = "Dzwięki";
$text['label-sounds']['pt-br'] = "Áudios";
@@ -988,6 +1027,7 @@ $text['label-sessions']['fr-ca'] = "Sessions";
$text['label-sessions']['fr-fr'] = "Sessions";
$text['label-sessions']['he-il'] = "הפעלות";
$text['label-sessions']['it-it'] = "Sessioni";
$text['label-sessions']['ka-ge'] = "სესიები";
$text['label-sessions']['nl-nl'] = "Zittingen";
$text['label-sessions']['pl-pl'] = "Sesje";
$text['label-sessions']['pt-br'] = "Sessões";
@@ -1013,6 +1053,7 @@ $text['label-schedule']['fr-ca'] = "Programme";
$text['label-schedule']['fr-fr'] = "Programme";
$text['label-schedule']['he-il'] = "לוח זמנים";
$text['label-schedule']['it-it'] = "Programma";
$text['label-schedule']['ka-ge'] = "დაგეგმვა";
$text['label-schedule']['nl-nl'] = "Schema";
$text['label-schedule']['pl-pl'] = "Harmonogram";
$text['label-schedule']['pt-br'] = "Cronograma";
@@ -1038,6 +1079,7 @@ $text['label-room-name']['fr-ca'] = "Nom de Chambre";
$text['label-room-name']['fr-fr'] = "Nom de Chambre";
$text['label-room-name']['he-il'] = "שם חדר";
$text['label-room-name']['it-it'] = "Nome Stanza";
$text['label-room-name']['ka-ge'] = "ოთახის სახელი";
$text['label-room-name']['nl-nl'] = "Ruimtenaam";
$text['label-room-name']['pl-pl'] = "Nazwa pokoju";
$text['label-room-name']['pt-br'] = "Nome da sala";
@@ -1063,6 +1105,7 @@ $text['label-recording']['fr-ca'] = "Enregistrement";
$text['label-recording']['fr-fr'] = "Enregistrement";
$text['label-recording']['he-il'] = "הקלטה";
$text['label-recording']['it-it'] = "Registrazione";
$text['label-recording']['ka-ge'] = "ჩაწერა";
$text['label-recording']['nl-nl'] = "Opname";
$text['label-recording']['pl-pl'] = "Nagrywanie";
$text['label-recording']['pt-br'] = "Gravando";
@@ -1088,6 +1131,7 @@ $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'] = "Nagraj";
$text['label-record']['pt-br'] = "Gravar";
@@ -1113,6 +1157,7 @@ $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";
@@ -1138,6 +1183,7 @@ $text['label-play']['fr-ca'] = "Jouer";
$text['label-play']['fr-fr'] = "Jouer";
$text['label-play']['he-il'] = "לְשַׂחֵק";
$text['label-play']['it-it'] = "Suona";
$text['label-play']['ka-ge'] = "დაკვრა";
$text['label-play']['nl-nl'] = "Afspelen";
$text['label-play']['pl-pl'] = "Odtwórz";
$text['label-play']['pt-br'] = "Reproduzir";
@@ -1163,6 +1209,7 @@ $text['label-participant-pin']['fr-ca'] = "Code Participant";
$text['label-participant-pin']['fr-fr'] = "Code Participant";
$text['label-participant-pin']['he-il'] = "מִשׁתַתֵף";
$text['label-participant-pin']['it-it'] = "Partecipante";
$text['label-participant-pin']['ka-ge'] = "მონაწილე";
$text['label-participant-pin']['nl-nl'] = "Deelnemer";
$text['label-participant-pin']['pl-pl'] = "Uczestnik";
$text['label-participant-pin']['pt-br'] = "Participante";
@@ -1188,6 +1235,7 @@ $text['label-network-address']['fr-ca'] = "Adresse Réseau";
$text['label-network-address']['fr-fr'] = "Adresse Réseau";
$text['label-network-address']['he-il'] = "כתובת רשת";
$text['label-network-address']['it-it'] = "Indirizzo di Rete";
$text['label-network-address']['ka-ge'] = "ქსელური მისამართი";
$text['label-network-address']['nl-nl'] = "Netwerk adres";
$text['label-network-address']['pl-pl'] = "Adres sieciowy";
$text['label-network-address']['pt-br'] = "Endereço de rede";
@@ -1213,6 +1261,7 @@ $text['label-mute']['fr-ca'] = "Muet";
$text['label-mute']['fr-fr'] = "Muet";
$text['label-mute']['he-il'] = "לְהַשְׁתִיק";
$text['label-mute']['it-it'] = "Silenzia";
$text['label-mute']['ka-ge'] = "დადუმება";
$text['label-mute']['nl-nl'] = "Stil";
$text['label-mute']['pl-pl'] = "Wycisz";
$text['label-mute']['pt-br'] = "Silenciar";
@@ -1238,6 +1287,7 @@ $text['label-moderator-pin']['fr-ca'] = "Modérateur";
$text['label-moderator-pin']['fr-fr'] = "Modérateur";
$text['label-moderator-pin']['he-il'] = "מַנחֶה";
$text['label-moderator-pin']['it-it'] = "Moderatore";
$text['label-moderator-pin']['ka-ge'] = "მოდერატორი";
$text['label-moderator-pin']['nl-nl'] = "Moderator PIN";
$text['label-moderator-pin']['pl-pl'] = "Moderator";
$text['label-moderator-pin']['pt-br'] = "Administrador";
@@ -1263,6 +1313,7 @@ $text['label-moderator']['fr-ca'] = "Modérateur";
$text['label-moderator']['fr-fr'] = "Modérateur";
$text['label-moderator']['he-il'] = "מַנחֶה";
$text['label-moderator']['it-it'] = "Moderatore";
$text['label-moderator']['ka-ge'] = "მოდერატორი";
$text['label-moderator']['nl-nl'] = "Moderator";
$text['label-moderator']['pl-pl'] = "Moderator";
$text['label-moderator']['pt-br'] = "Administrador";
@@ -1288,6 +1339,7 @@ $text['label-members']['fr-ca'] = "Décompte";
$text['label-members']['fr-fr'] = "Décompte";
$text['label-members']['he-il'] = "לספור";
$text['label-members']['it-it'] = "Conteggio";
$text['label-members']['ka-ge'] = "რაოდენობა";
$text['label-members']['nl-nl'] = "Teller";
$text['label-members']['pl-pl'] = "Liczba";
$text['label-members']['pt-br'] = "Total";
@@ -1313,6 +1365,7 @@ $text['label-member-type-participant']['fr-ca'] = "participant";
$text['label-member-type-participant']['fr-fr'] = "participant";
$text['label-member-type-participant']['he-il'] = "מִשׁתַתֵף";
$text['label-member-type-participant']['it-it'] = "Partecipante";
$text['label-member-type-participant']['ka-ge'] = "მონაწილე";
$text['label-member-type-participant']['nl-nl'] = "deelnemer";
$text['label-member-type-participant']['pl-pl'] = "uczestnik";
$text['label-member-type-participant']['pt-br'] = "Participante";
@@ -1338,6 +1391,7 @@ $text['label-member-type-moderator']['fr-ca'] = "modérateur";
$text['label-member-type-moderator']['fr-fr'] = "modérateur";
$text['label-member-type-moderator']['he-il'] = "מַנחֶה";
$text['label-member-type-moderator']['it-it'] = "Moderatore";
$text['label-member-type-moderator']['ka-ge'] = "მოდერატორი";
$text['label-member-type-moderator']['nl-nl'] = "Moderator";
$text['label-member-type-moderator']['pl-pl'] = "moderator";
$text['label-member-type-moderator']['pt-br'] = "Administrador";
@@ -1363,6 +1417,7 @@ $text['label-member-pin']['fr-ca'] = "Code Membre";
$text['label-member-pin']['fr-fr'] = "Code Membre";
$text['label-member-pin']['he-il'] = "מספרי PIN";
$text['label-member-pin']['it-it'] = "Numeri di PIN";
$text['label-member-pin']['ka-ge'] = "PIN-კოდები";
$text['label-member-pin']['nl-nl'] = "PIN code";
$text['label-member-pin']['pl-pl'] = "Numery PIN";
$text['label-member-pin']['pt-br'] = "Número PIN";
@@ -1388,6 +1443,7 @@ $text['label-max-members']['fr-ca'] = "Membres Max";
$text['label-max-members']['fr-fr'] = "Membres Max";
$text['label-max-members']['he-il'] = "מקסימום חברים";
$text['label-max-members']['it-it'] = "Massimo numero membri";
$text['label-max-members']['ka-ge'] = "მაქს. წევრი";
$text['label-max-members']['nl-nl'] = "Maximaal aantal deelnemers";
$text['label-max-members']['pl-pl'] = "Maksymalna liczba uszestników";
$text['label-max-members']['pt-br'] = "Número máximo de membros";
@@ -1413,6 +1469,7 @@ $text['label-from']['fr-ca'] = "A Partir De";
$text['label-from']['fr-fr'] = "A Partir De";
$text['label-from']['he-il'] = "מ";
$text['label-from']['it-it'] = "Da";
$text['label-from']['ka-ge'] = "საიდან";
$text['label-from']['nl-nl'] = "Van";
$text['label-from']['pl-pl'] = "Od";
$text['label-from']['pt-br'] = "De";
@@ -1438,6 +1495,7 @@ $text['label-exit-sound']['fr-ca'] = "Sons de sortie";
$text['label-exit-sound']['fr-fr'] = "Sons de sortie";
$text['label-exit-sound']['he-il'] = "צא מסאונד";
$text['label-exit-sound']['it-it'] = "Audio Uscita";
$text['label-exit-sound']['ka-ge'] = "გასვლის ხმა";
$text['label-exit-sound']['nl-nl'] = "Geluid bij beeindiging";
$text['label-exit-sound']['pl-pl'] = "Dźwięk przy wyjściu";
$text['label-exit-sound']['pt-br'] = "Som de saída";
@@ -1463,6 +1521,7 @@ $text['label-enter-sound']['fr-ca'] = "Sons d'arrivée";
$text['label-enter-sound']['fr-fr'] = "Sons d'arrivée";
$text['label-enter-sound']['he-il'] = "הכנס לסאונד";
$text['label-enter-sound']['it-it'] = "Audio Ingresso";
$text['label-enter-sound']['ka-ge'] = "შესვლის ხმა";
$text['label-enter-sound']['nl-nl'] = "Aanmeldingsgeluid";
$text['label-enter-sound']['pl-pl'] = "Dźwięk przy wejściu";
$text['label-enter-sound']['pt-br'] = "Insira um som";
@@ -1488,6 +1547,7 @@ $text['label-end']['fr-ca'] = "Fin";
$text['label-end']['fr-fr'] = "Fin";
$text['label-end']['he-il'] = "סוֹף";
$text['label-end']['it-it'] = "Fine";
$text['label-end']['ka-ge'] = "დასრულება";
$text['label-end']['nl-nl'] = "Einde";
$text['label-end']['pl-pl'] = "Koniec";
$text['label-end']['pt-br'] = "Fim";
@@ -1513,6 +1573,7 @@ $text['label-edit']['fr-ca'] = "Modifier";
$text['label-edit']['fr-fr'] = "Modifier";
$text['label-edit']['he-il'] = "לַעֲרוֹך";
$text['label-edit']['it-it'] = "Modifica";
$text['label-edit']['ka-ge'] = "ჩასწორება";
$text['label-edit']['nl-nl'] = "Bewerk";
$text['label-edit']['pl-pl'] = "Edytuj";
$text['label-edit']['pt-br'] = "Editar";
@@ -1538,6 +1599,7 @@ $text['label-download']['fr-ca'] = "Télécharger";
$text['label-download']['fr-fr'] = "Télécharger";
$text['label-download']['he-il'] = "הורד";
$text['label-download']['it-it'] = "Scarica";
$text['label-download']['ka-ge'] = "გადმოწერა";
$text['label-download']['nl-nl'] = "Ophalen";
$text['label-download']['pl-pl'] = "Pobierz";
$text['label-download']['pt-br'] = "Download";
@@ -1563,6 +1625,7 @@ $text['label-details']['fr-ca'] = "Détails";
$text['label-details']['fr-fr'] = "Détails";
$text['label-details']['he-il'] = "פרטים";
$text['label-details']['it-it'] = "Dettagli";
$text['label-details']['ka-ge'] = "დეტალები";
$text['label-details']['nl-nl'] = "Details";
$text['label-details']['pl-pl'] = "Szczegóły";
$text['label-details']['pt-br'] = "Detalhes";
@@ -1588,6 +1651,7 @@ $text['label-conference_name']['fr-ca'] = "Nom de la Conférence";
$text['label-conference_name']['fr-fr'] = "Nom de la Conférence";
$text['label-conference_name']['he-il'] = "שם הוועידה";
$text['label-conference_name']['it-it'] = "Nome Conferenza";
$text['label-conference_name']['ka-ge'] = "კონფერენციის სახელი";
$text['label-conference_name']['nl-nl'] = "Conferentienaam";
$text['label-conference_name']['pl-pl'] = "Nazwa konferencji";
$text['label-conference_name']['pt-br'] = "Nome da conferência";
@@ -1613,6 +1677,7 @@ $text['label-cdr']['fr-ca'] = "Historique d'appels";
$text['label-cdr']['fr-fr'] = "Historique d'appels";
$text['label-cdr']['he-il'] = "CDR";
$text['label-cdr']['it-it'] = "CDR";
$text['label-cdr']['ka-ge'] = "CDR";
$text['label-cdr']['nl-nl'] = "CDR";
$text['label-cdr']['pl-pl'] = "Wykaz rozmów";
$text['label-cdr']['pt-br'] = "Detalhe de chamadas";
@@ -1638,6 +1703,7 @@ $text['label-caller-id-number']['fr-ca'] = "Numéro d'appelant";
$text['label-caller-id-number']['fr-fr'] = "Numéro d'appelant";
$text['label-caller-id-number']['he-il'] = "מספר זיהוי מתקשר";
$text['label-caller-id-number']['it-it'] = "Numero ID Chiamante";
$text['label-caller-id-number']['ka-ge'] = "დამრეკის Caller ID ნომერი";
$text['label-caller-id-number']['nl-nl'] = "CID nummer";
$text['label-caller-id-number']['pl-pl'] = "Prezentacja numeru dzwoniącego";
$text['label-caller-id-number']['pt-br'] = "Número (ID) da pessoa que chama";
@@ -1663,6 +1729,7 @@ $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 ID Chiamante";
$text['label-caller-id-name']['ka-ge'] = "დამრეკის Caller ID სახელი";
$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 de quem chama";
@@ -1688,6 +1755,7 @@ $text['label-announce_name']['fr-ca'] = "Annonce";
$text['label-announce_name']['fr-fr'] = "Annonce";
$text['label-announce_name']['he-il'] = "הכריז על שם";
$text['label-announce_name']['it-it'] = "Annuncio";
$text['label-announce_name']['ka-ge'] = "სახელის გამოცხადება";
$text['label-announce_name']['nl-nl'] = "Aankondiging";
$text['label-announce_name']['pl-pl'] = "Zapowiedz";
$text['label-announce_name']['pt-br'] = "Anunciar";
@@ -1713,6 +1781,7 @@ $text['label-announce_count']['fr-ca'] = "Annonce";
$text['label-announce_count']['fr-fr'] = "Annonce";
$text['label-announce_count']['he-il'] = "הכריז על ספירה";
$text['label-announce_count']['it-it'] = "Annuncio";
$text['label-announce_count']['ka-ge'] = "ნომრის გამოცხადება";
$text['label-announce_count']['nl-nl'] = "Aankondiging";
$text['label-announce_count']['pl-pl'] = "Zapowiedz";
$text['label-announce_count']['pt-br'] = "Anunciar";
@@ -1738,6 +1807,7 @@ $text['label-announce_recording']['fr-ca'] = "Annonce";
$text['label-announce_recording']['fr-fr'] = "Annonce";
$text['label-announce_recording']['he-il'] = "הכריז על הקלטה";
$text['label-announce_recording']['it-it'] = "Annuncio";
$text['label-announce_recording']['ka-ge'] = "ჩაწერის გამოცხადება";
$text['label-announce_recording']['nl-nl'] = "Aankondiging";
$text['label-announce_recording']['pl-pl'] = "Zapowiedz";
$text['label-announce_recording']['pt-br'] = "Anunciar";
@@ -1763,6 +1833,7 @@ $text['description-users']['fr-ca'] = "Ajouter des utilisateurs comme administra
$text['description-users']['fr-fr'] = "Ajouter des utilisateurs comme administrateurs des cette salle de conférence.";
$text['description-users']['he-il'] = "הקצה משתמשים נוספים כמנהלי חדר ישיבות זה.";
$text['description-users']['it-it'] = "Assegna ulteriori utenti come amministratori di questa stanza di conferenza.";
$text['description-users']['ka-ge'] = "ამ კონფერენც-დარბაზისთვის დამატებითი ადმინისტრატორების დანიშვნა.";
$text['description-users']['nl-nl'] = "Wijs extra gebruikers toe als beheerder van deze conferentieruimte.";
$text['description-users']['pl-pl'] = "'Dodaj dodatkowych użytkowników jako administratorów tego pokoju konferencyjnego.";
$text['description-users']['pt-br'] = "Atribuir usuários adicionais como administradores da sala de conferência.";
@@ -1788,6 +1859,7 @@ $text['description-schedule']['fr-ca'] = "Définir un démarrage et d'arrêt de
$text['description-schedule']['fr-fr'] = "Définir un démarrage et d'arrêt de date/heure pour cette chambre.";
$text['description-schedule']['he-il'] = "הגדר תאריך/שעה להתחלה ועצירה עבור החדר הזה.";
$text['description-schedule']['it-it'] = "Imposta un data/ora di inizio e fine per questa stanza.";
$text['description-schedule']['ka-ge'] = "ამ ოთახის დაწყებისა და დასასრულის თარიღის/დროის დაყენება.";
$text['description-schedule']['nl-nl'] = "Stel start en stop datum en tijd voor deze ruimte in.";
$text['description-schedule']['pl-pl'] = "Ustaw czas i datę rozpoczęcia i zakończenia rozmowy w tym pokoju.";
$text['description-schedule']['pt-br'] = "Defnir inicio e fim (Data/Hora) para esta sala.";
@@ -1813,6 +1885,7 @@ $text['description-room-name']['fr-ca'] = "Entrez un nom pour la salle de confé
$text['description-room-name']['fr-fr'] = "Entrez un nom pour la salle de conférence.";
$text['description-room-name']['he-il'] = "הזן שם לחדר הישיבות.";
$text['description-room-name']['it-it'] = "Inserisci un nome per la conferenza.";
$text['description-room-name']['ka-ge'] = "შეიყვანეთ სახელი კონფერენც-დარბაზისთვის.";
$text['description-room-name']['nl-nl'] = "Voer de naam van de conferentieruimte in.";
$text['description-room-name']['pl-pl'] = "Wprowadź nazwę sali konferencyjnej.";
$text['description-room-name']['pt-br'] = "Digite um nome para a sala de conferência";
@@ -1838,6 +1911,7 @@ $text['description-profile']['fr-ca'] = "Le profile de conférence est une liste
$text['description-profile']['fr-fr'] = "Le profile de conférence est une liste de configuration pour les conférences. ";
$text['description-profile']['he-il'] = "פרופיל ועידה הוא אוסף של הגדרות עבור מרכז הכנסים.";
$text['description-profile']['it-it'] = "Il Profilo Conferenza è un insieme di parametri per il centro conferenze.";
$text['description-profile']['ka-ge'] = "კონფერენციის პროფილი კონფერენც-ცენტრის პარამეტრების ნაკრებია.";
$text['description-profile']['nl-nl'] = "Conferentie profiel is een collectie van instellingen voor conferentiesruimtes.";
$text['description-profile']['pl-pl'] = "Zdefiniuj ustawienia tego profilu";
$text['description-profile']['pt-br'] = "Perfil de conferência é uma coleção de configurações para o centro de conferência.";
@@ -1863,6 +1937,7 @@ $text['description-participant-pin']['fr-ca'] = "Code PIN des participants.";
$text['description-participant-pin']['fr-fr'] = "Code PIN des participants.";
$text['description-participant-pin']['he-il'] = "מספר PIN למשתתפים.";
$text['description-participant-pin']['it-it'] = "PIN per i partecipanti.";
$text['description-participant-pin']['ka-ge'] = "PIN-კოდი მონაწილეებისთვის.";
$text['description-participant-pin']['nl-nl'] = "PIN code voor deelnemers.";
$text['description-participant-pin']['pl-pl'] = "Numer PIN dla uczestników";
$text['description-participant-pin']['pt-br'] = "Número PIN para os participantes.";
@@ -1888,6 +1963,7 @@ $text['description-moderator_pin']['fr-ca'] = "Code PIN des modérateurs.";
$text['description-moderator_pin']['fr-fr'] = "Code PIN des modérateurs.";
$text['description-moderator_pin']['he-il'] = "מספר PIN למנחים.";
$text['description-moderator_pin']['it-it'] = "PIN per i moderatori.";
$text['description-moderator_pin']['ka-ge'] = "PIN-კოდ მოდერატორისთვის.";
$text['description-moderator_pin']['nl-nl'] = "PIN code voor moderators.";
$text['description-moderator_pin']['pl-pl'] = "Numer PIN dla moderatorów";
$text['description-moderator_pin']['pt-br'] = "Número PIN para os moderadores.";
@@ -1913,6 +1989,7 @@ $text['description-conference_sessions']['fr-ca'] = "Sessions de conférences so
$text['description-conference_sessions']['fr-fr'] = "Sessions de conférences sont les détails des logs sur les conférences.";
$text['description-conference_sessions']['he-il'] = "מפגשי ועידה הם פרטי יומן על הכנסים.";
$text['description-conference_sessions']['it-it'] = "Sessioni Conferenze sono log di dettaglio sulle conferenze.";
$text['description-conference_sessions']['ka-ge'] = "კონფერენციის სესიები - ეს ჟურნალის დეტალებია კონფერენციის შესახებ.";
$text['description-conference_sessions']['nl-nl'] = "Conferentie zittingen zijn log details over recente conferenties.";
$text['description-conference_sessions']['pl-pl'] = "Sesje Konferencyjne są to logi o rozmowach konferencyjnych.";
$text['description-conference_sessions']['pt-br'] = "Logs das sessões de conferência";
@@ -1938,6 +2015,7 @@ $text['description-conference_session_details']['fr-ca'] = "Sessions de confére
$text['description-conference_session_details']['fr-fr'] = "Sessions de conférences sont les détails des logs sur les conférences.";
$text['description-conference_session_details']['he-il'] = "מפגשי ועידה הם פרטי יומן של שיחות הוועידה.";
$text['description-conference_session_details']['it-it'] = "Sessioni Conferenze sono log di dettaglio sulle conferenze.";
$text['description-conference_session_details']['ka-ge'] = "კონფერენციის სესიები - ეს ჟურნალის დეტალებია კონფერენციის შესახებ.";
$text['description-conference_session_details']['nl-nl'] = "Conferentie zittingen zijn log details over recente conference gesprekken.";
$text['description-conference_session_details']['pl-pl'] = "Sesje Konferencyjne są to logi o rozmowach konferencyjnych.";
$text['description-conference_session_details']['pt-br'] = "Logs das sessões de chamada das conferências";
@@ -1963,6 +2041,7 @@ $text['description-conference_centers']['fr-ca'] = "Ce sont des groupes de salle
$text['description-conference_centers']['fr-fr'] = "Ce sont des groupes de salles de conférences. Pouvant être organisés par centre de coût, lieu géographique, ou tout autre critère.";
$text['description-conference_centers']['he-il'] = "מרכזי כנסים הם קבוצה של חדרי ישיבות. הם יכולים להיות מאורגנים לפי מרכז עלות, גיאוגרפית או קריטריונים אחרים.";
$text['description-conference_centers']['it-it'] = "I Centri Conferenza sono gruppi di stanze di conferenza. Possono essere organizzate per centro di costo, geograficamente, o con altri criteri.";
$text['description-conference_centers']['ka-ge'] = "კონფერენც-ცენტრები კონფერენც-დარბაზების ჯგუფია. ისინი, შეიძლება, დაალაგოთ ფასის, გეოგრაფიული მდებარეობის, ან სხვა პარამეტრების მიხედვით.";
$text['description-conference_centers']['nl-nl'] = "Conferentie centra zijn een groepen van cenferentieruimten die aan de hand van zaken als kostenplaats, geografie or anderekriteria gegroepeerd kunnen worden.";
$text['description-conference_centers']['pl-pl'] = "'Centra konferencyjne składają się z pokoi konferencyjnych. Mogą one być przypisane do konkretnych centrów kosztów, rejonów geograficznych lub do innych grup.";
$text['description-conference_centers']['pt-br'] = "Centros de conferência são um grupo de salas de conferência. Podem ser organizadas por custo, por localização ou por outro critétio.";
@@ -1988,6 +2067,7 @@ $text['description-conference_center']['fr-ca'] = "Il est possible de configurer
$text['description-conference_center']['fr-fr'] = "Il est possible de configurer une ou plusieures salles de conférence avec un nom, un neméro, une taille de code d'identification et une description.";
$text['description-conference_center']['he-il'] = "מרכז הכנסים משמש להגדרת חדר ישיבות אחד או יותר עם שם, מספר שלוחה, אורך מספר PIN נדרש ותיאור.";
$text['description-conference_center']['it-it'] = "Un Centro Conferenza viene usato per configurare una o più stanze di conferenza con un nome, un interno, una lunghezza minima per i PIN e una descrizione.";
$text['description-conference_center']['ka-ge'] = "კონფერენც-ცენტრი გამოიყენება ერთი ან მეტი კონფერენც-დარბაზის მოსარგებად სახელით, შიდა ნომრით, PIN-კოდის სავალდებულო სიგრძით და აღწერით.";
$text['description-conference_center']['nl-nl'] = "Conferentie centrum wordt gebruikt om een of meerder conferentieruimten met een naam, toestelnummer, vereiste pinlengte en een omschrijven vast te leggen.";
$text['description-conference_center']['pl-pl'] = "Centrum Konferencyjne jest używane do tworzenia pokoi konferencyjnych. Każdy z nich otrzymuje numer wewnętrzny, nazwę, numer PIN oraz opis.";
$text['description-conference_center']['pt-br'] = "Centro de conferência é usado para configurar uma ou mais salas de conferência com um nome, número de ramal, tamanho do código PIN e uma descrição.";
@@ -2013,6 +2093,7 @@ $text['button-sessions']['fr-ca'] = "Sessions";
$text['button-sessions']['fr-fr'] = "Sessions";
$text['button-sessions']['he-il'] = "הפעלות";
$text['button-sessions']['it-it'] = "Sessioni";
$text['button-sessions']['ka-ge'] = "სესიები";
$text['button-sessions']['nl-nl'] = "Zittingen";
$text['button-sessions']['pl-pl'] = "Sesje";
$text['button-sessions']['pt-br'] = "Sessões";
@@ -2038,6 +2119,7 @@ $text['button-rooms']['fr-ca'] = "Salles";
$text['button-rooms']['fr-fr'] = "Salles";
$text['button-rooms']['he-il'] = "חדרים";
$text['button-rooms']['it-it'] = "Stanze";
$text['button-rooms']['ka-ge'] = "ოთახები";
$text['button-rooms']['nl-nl'] = "Ruimten";
$text['button-rooms']['pl-pl'] = "Pokoje";
$text['button-rooms']['pt-br'] = "Salas";
@@ -2063,6 +2145,7 @@ $text['button-view_active']['fr-ca'] = "Voir Active";
$text['button-view_active']['fr-fr'] = "Voir Active";
$text['button-view_active']['he-il'] = "View Active";
$text['button-view_active']['it-it'] = "Mostra Attive";
$text['button-view_active']['ka-ge'] = "აქტიურების ნახვა";
$text['button-view_active']['nl-nl'] = "Toon aktieve ruimten";
$text['button-view_active']['pl-pl'] = "Pokaż Aktywne";
$text['button-view_active']['pt-br'] = "Ver Ativo";
+2
View File
@@ -13,6 +13,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre de Conférences";
$apps[$x]['menu'][$y]['title']['he-il'] = "מרכזי כנסים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Centro Conferenze";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "კონფერენც-ცენტრი";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Conferentie centra";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Centrum Konferencyjne";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Centro de Conferência";
@@ -44,6 +45,7 @@
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre de Conférences";
$apps[$x]['menu'][$y]['title']['he-il'] = "מרכזי כנסים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Centro Conferenze";
$apps[$x]['menu'][$y]['title']['ka-ge'] = "კონფერენც-ცენტრები";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Conferentie centra";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Centrum Konferencyjne";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Centro de Conferência";
@@ -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):
@@ -37,6 +37,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -54,6 +57,7 @@
$conference_center_name = '';
$conference_center_extension = '';
$conference_center_description = '';
$conference_center_greeting = '';
//process the user data and save it to the database
if (!empty($_POST) && empty($_POST["persistformvar"])) {
@@ -160,12 +164,11 @@
$array['dialplans'][0]["app_uuid"] = "b81412e8-7253-91f4-e48e-42fc2c9a38d9";
//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 = "conference_centers";
$database->app_uuid = "b81412e8-7253-91f4-e48e-42fc2c9a38d9";
$database->save($array);
@@ -215,7 +218,6 @@
$sql .= "and conference_center_uuid = :conference_center_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['conference_center_uuid'] = $conference_center_uuid;
$database = new database;
$row = $database->select($sql, $parameters ?? null, 'row');
if (!empty($row)) {
$conference_center_uuid = $row["conference_center_uuid"];
@@ -337,6 +339,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";
@@ -355,7 +358,7 @@
echo " ".$text['label-conference_center_extension']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='conference_center_extension' maxlength='255' value=\"".escape($conference_center_extension)."\">\n";
echo " <input class='formfld' type='text' name='conference_center_extension' maxlength='255' value=\"".escape($conference_center_extension)."\" required='required' placeholder=\"".($_SESSION['conference_center']['extension_range']['text'] ?? '')."\">\n";
echo "<br />\n";
echo $text['description-conference_center_extension']."\n";
echo "</td>\n";
@@ -368,7 +371,7 @@
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."' 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 "<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";
@@ -426,7 +429,7 @@
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."')"]);
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";
@@ -478,6 +481,7 @@
echo "</td>\n";
echo "</table>";
echo "</div>\n";
echo "<br /><br />";
if ($action == "update") {
@@ -491,4 +495,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
+22 -8
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):
@@ -38,6 +38,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -109,7 +112,6 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$sql .= $sql_search ?? '';
$database = new database;
$num_rows = $database->select($sql, $parameters ?? null, 'column');
//prepare to page the results
@@ -125,10 +127,15 @@
$offset = $rows_per_page * $page;
//get the list
$sql = str_replace('count(*)', '*', $sql);
$sql = "select * from v_conference_centers ";
$sql .= "where true ";
if ($show != "all" || !permission_exists('conference_center_all')) {
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$sql .= $sql_search ?? '';
$sql .= order_by($order_by, $order, null, null, $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$conference_centers = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
@@ -136,13 +143,19 @@
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//update the array to show only the greeting file name
$x = 0;
foreach ($conference_centers as $row) {
$row['conference_center_greeting'] = basename($row['conference_center_greeting'] ?? '');
}
//include the header
$document['title'] = $text['title-conference_centers'];
require_once "resources/header.php";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-conference_centers']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-conference_centers']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('conference_active_view')) {
echo button::create(['type'=>'button','label'=>$text['button-view_active'],'icon'=>'comments','link'=>PROJECT_PATH.'/app/conferences_active/conferences_active.php']);
@@ -191,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('conference_center_edit') || permission_exists('conference_center_delete')) {
@@ -236,7 +250,7 @@
}
echo " <td><a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['conference_center_name'])."</a>&nbsp;</td>\n";
echo " <td>".escape($row['conference_center_extension'])."&nbsp;</td>\n";
echo " <td>".escape(str_replace($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/','',$row['conference_center_greeting']))."&nbsp;</td>\n";
echo " <td>".escape($row['conference_center_greeting'])."&nbsp;</td>\n";
echo " <td class='center'>".escape($row['conference_center_pin_length'])."&nbsp;</td>\n";
if (permission_exists('conference_center_edit')) {
echo " <td class='no-link center'>\n";
@@ -256,10 +270,10 @@
echo "</tr>\n";
$x++;
}
unset($conference_centers);
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\n";
@@ -270,4 +284,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
+27 -29
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):
@@ -38,6 +38,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -95,7 +98,6 @@
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by conference_center_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$conference_centers = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
@@ -104,7 +106,6 @@
$sql .= "from v_conference_profiles ";
$sql .= "where profile_enabled = 'true' ";
$sql .= "and profile_name <> 'sla' ";
$database = new database;
$conference_profiles = $database->select($sql, null, 'all');
unset ($sql);
@@ -113,16 +114,20 @@
//define fucntion get_conference_pin - used to find a unique pin number
function get_conference_pin($length, $conference_room_uuid) {
//set the variable as global
global $database;
//get the pin number
$pin = generate_password($length,1);
//return an available pin number
$sql = "select count(*) from v_conference_rooms ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and conference_room_uuid <> :conference_room_uuid ";
$sql .= "and (moderator_pin = :pin or participant_pin = :pin) ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['conference_room_uuid'] = $conference_room_uuid;
$parameters['pin'] = $pin;
$database = new database;
$num_rows = $database->select($sql, $parameters, 'column');
if ($num_rows == 0) {
return $pin;
@@ -133,18 +138,19 @@
unset($sql, $parameters);
}
//record announcment
//record the announcement
if (!empty($record) && $record == "true") {
//prepare the values
$default_language = 'en';
$default_dialect = 'us';
$default_voice = 'callie';
$switch_cmd = "conference ".$conference_room_uuid."@".$_SESSION['domain_name']." play ".$_SESSION['switch']['sounds']['dir']."/".$default_language."/".$default_dialect."/".$default_voice."/ivr/ivr-recording_started.wav";
$default_language = 'en';
$default_dialect = 'us';
$default_voice = 'callie';
$switch_cmd = "conference ".$conference_room_uuid."@".$_SESSION['domain_name']." play ".$_SESSION['switch']['sounds']['dir']."/".$default_language."/".$default_dialect."/".$default_voice."/ivr/ivr-recording_started.wav";
//connect to event socket
$esl = event_socket::create();
if ($esl->is_connected()) {
$switch_result = event_socket::api($switch_cmd);
}
$esl = event_socket::create();
if ($esl->is_connected()) {
$switch_result = event_socket::api($switch_cmd);
}
}
//generate the pin number length
@@ -156,7 +162,6 @@
$parameters['conference_center_uuid'] = $conference_center_uuid;
}
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row)) {
$pin_length = $row['conference_center_pin_length'];
@@ -183,15 +188,14 @@
$array['conference_room_users'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
//un-assigne the users from the conference room
$p = new permissions;
$p = permissions::new();
$p->add('conference_room_user_delete', 'temp');
$database = new database;
$database->app_name = 'conference_centers';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->delete($array);
unset($array);
$p->delete('conference_room_user_delete', 'temp');
}
@@ -232,7 +236,6 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['moderator_pin'] = $moderator_pin;
$parameters['conference_room_uuid'] = $conference_room_uuid ?? null;
$database = new database;
$num_rows = $database->select($sql, $parameters, 'column');
if ($num_rows > 0) {
$msg .= $text['message-unique_moderator_pin']."<br />\n";
@@ -342,7 +345,6 @@
$array['conference_rooms'][0]['enabled'] = $enabled;
$array['conference_rooms'][0]['description'] = $description;
$database = new database;
$database->app_name = 'conference_centers';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->save($array);
@@ -356,10 +358,9 @@
$array['conference_room_users'][0]['conference_room_uuid'] = $conference_room_uuid;
$array['conference_room_users'][0]['user_uuid'] = $_SESSION["user_uuid"];
$p = new permissions;
$p = permissions::new();
$p->add('conference_room_user_add', 'temp');
$database = new database;
$database->app_name = 'conference_centers';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->save($array);
@@ -422,7 +423,6 @@
}
$array['conference_rooms'][0]['description'] = $description;
$database = new database;
$database->app_name = 'conference_centers';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->save($array);
@@ -440,10 +440,9 @@
$array['conference_room_users'][0]['conference_room_uuid'] = $conference_room_uuid;
$array['conference_room_users'][0]['user_uuid'] = $user_uuid;
$p = new permissions;
$p = permissions::new();
$p->add('conference_room_user_add', 'temp');
$database = new database;
$database->app_name = 'conference_centers';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->save($array);
@@ -469,7 +468,6 @@
$sql .= "and conference_room_uuid = :conference_room_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['conference_room_uuid'] = $conference_room_uuid;
$database = new database;
$row = $database->select($sql, $parameters ?? null, 'row');
if (!empty($row)) {
$conference_center_uuid = $row["conference_center_uuid"];
@@ -507,7 +505,6 @@
$sql .= "order by u.username asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['conference_room_uuid'] = $conference_room_uuid ?? '';
$database = new database;
$rows = $database->select($sql, $parameters ?? null, 'all');
if (!empty($rows)) {
foreach ($rows as $row) {
@@ -525,7 +522,6 @@
}
$sql .= "order by username asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$users = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
@@ -591,6 +587,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";
@@ -635,7 +632,7 @@
echo " </td>";
echo " </tr>";
if (if_group("superadmin") || if_group("admin")) {
if (permission_exists('conference_room_edit')) {
echo " <tr>";
echo " <td class='vncell' valign='top'>".$text['label-users']."</td>";
echo " <td class='vtable' align='left'>";
@@ -975,6 +972,7 @@
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<br><br>\n";
if ($action == "update") {
+9 -5
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):
@@ -38,6 +38,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -126,7 +129,6 @@
}
//save to the data
$database = new database;
$database->app_name = 'conference_rooms';
$database->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e';
$database->save($array);
@@ -220,7 +222,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-conference_rooms']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-conference_rooms']."</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','style'=>'margin-right: 15px;','link'=>'conference_centers.php']);
if (permission_exists('conference_room_add')) {
@@ -270,6 +272,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('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) {
@@ -454,10 +457,10 @@
else if (permission_exists('conference_active_view')) {
echo " <a href='".PROJECT_PATH."/app/conferences_active/conferences_active.php'>".$text['label-view']."</a>\n";
}
if (permission_exists('conference_cdr_view')) {
if (permission_exists('conference_cdr_view')) {
echo " <a href='/app/conference_cdr/conference_cdr.php?id=".urlencode($row['conference_room_uuid'])."'>".$text['button-cdr']."</a>\n";
}
if (permission_exists('conference_session_view')) {
if (permission_exists('conference_session_view')) {
echo " <a href='conference_sessions.php?id=".urlencode($row['conference_room_uuid'])."'>".$text['label-sessions']."</a>\n";
}
echo " </td>\n";
@@ -495,6 +498,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".!empty($paging_controls)."</div>\n";
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>
Copyright (C) 2008-2019 All Rights Reserved.
Copyright (C) 2008-2024 All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
@@ -37,6 +37,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -60,7 +63,6 @@
$sql .= "and conference_session_uuid = :conference_session_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['conference_session_uuid'] = $_SESSION['meeting']['session_uuid'] ?? '';
$database = new database;
$row = $database->select($sql, $parameters ?? null, 'row');
if (!empty($row)) {
$meeting_uuid = $row["meeting_uuid"];
@@ -109,7 +111,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-conference_session_details']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-conference_session_details']."</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'=>'conference_sessions.php']);
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
@@ -136,6 +138,7 @@
echo $text['description-conference_session_details']."\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('meeting_uuid', 'Meeting UUID', $order_by, $order);
@@ -200,6 +203,7 @@
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<div align='center'>".$paging_controls."</div>\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 - 2019
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -38,6 +38,9 @@
exit;
}
//connect to the database
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -84,7 +87,6 @@
$sql .= "and meeting_uuid = :meeting_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['meeting_uuid'] = $_SESSION['meeting']['uuid'] ?? '';
$database = new database;
$num_rows = $database->select($sql, $parameters ?? null, 'column');
unset($sql, $parameters);
@@ -95,7 +97,6 @@
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_conference_sessions ";
@@ -105,7 +106,6 @@
$sql .= limit_offset($rows_per_page, $offset);
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['meeting_uuid'] = $_SESSION['meeting']['uuid'] ?? '';
$database = new database;
$conference_sessions = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
@@ -134,7 +134,7 @@
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-conference_sessions']." (".$num_rows.")</b></div>\n";
echo " <div class='heading'><b>".$text['title-conference_sessions']."</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'=>'conference_rooms.php']);
if (permission_exists('conference_session_delete') && $conference_sessions) {
@@ -158,6 +158,7 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<input type='hidden' name='meeting_uuid' value=\"".escape($meeting_uuid)."\">\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
if (permission_exists('conference_session_delete')) {
@@ -244,6 +245,7 @@
}
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";

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